@webiny/api-core 6.6.0-alpha.4 → 6.6.0-alpha.5

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.
@@ -12,8 +12,20 @@ const LICENSE_CHECKS = {
12
12
  auditLogs: (l)=>l.canUseAuditLogs(),
13
13
  recordLocking: (l)=>l.canUseRecordLocking(),
14
14
  "fileManager.threatDetection": (l)=>l.canUseFileManagerThreatDetection(),
15
+ aiPowerups: (l)=>l.canUseAiPowerups(),
15
16
  "aiPowerups.fileManager.imageEnrichment": (l)=>l.canUseAiImageEnrichment(),
16
- abTesting: (l)=>l.canUseAbTesting()
17
+ "aiPowerups.websiteBuilder.pageGeneration": (l)=>l.canUseAiPageGeneration(),
18
+ "aiPowerups.websiteBuilder.pageTranslation": (l)=>l.canUseAiPageTranslation(),
19
+ "aiPowerups.lexicalGeneration": (l)=>l.canUseAiLexicalGeneration(),
20
+ "aiPowerups.adminAssistant": (l)=>l.canUseAiAdminAssistant(),
21
+ "aiPowerups.remoteComponents": (l)=>l.canUseRemoteComponents(),
22
+ "aiPowerups.cms.entryGeneration": (l)=>l.canUseAiEntryGeneration(),
23
+ "aiPowerups.cms.entryComparison": (l)=>l.canUseAiEntryComparison(),
24
+ "aiPowerups.cms.entryTranslation": (l)=>l.canUseAiEntryTranslation(),
25
+ abTesting: (l)=>l.canUseAbTesting(),
26
+ collaboration: (l)=>l.canUseCollaboration(),
27
+ "collaboration.comments": (l)=>l.canUseComments(),
28
+ "collaboration.activityLog": (l)=>l.canUseActivityLog()
17
29
  };
18
30
  class LicenseDecoratedFeatureFlags extends feature_flags_FeatureFlags {
19
31
  constructor(base, license){
@@ -1 +1 @@
1
- {"version":3,"file":"features/featureFlags/decorators/FeatureFlagsWithLicenseDecorator.js","sources":["../../../../src/features/featureFlags/decorators/FeatureFlagsWithLicenseDecorator.ts"],"sourcesContent":["import { FeatureFlags } from \"../abstractions.js\";\nimport { FeatureFlags as FeatureFlagsClass } from \"@webiny/feature-flags\";\nimport type { FeatureFlagName } from \"@webiny/feature-flags\";\nimport type { ILicense } from \"@webiny/wcp/types.js\";\nimport { WcpLicenseProvider } from \"~/features/wcp/WcpLicenseProvider.js\";\n\n/*\n * Feature flag resolution (license decorator).\n *\n * Two kinds of flag, and only one of them is Webiny's to sell:\n *\n * LICENSE-GOVERNED (listed in LICENSE_CHECKS) — the license is the authority:\n * 1. No license, or license blocks the flag → false, config ignored\n * 2. License allows + config unset → true (the license grants it)\n * 3. License allows + config=false → false (config may disable, never re-enable)\n *\n * EVERYTHING ELSE — the project's own flags. The config decides, and nothing is assumed:\n * 4. config=true → true\n * 5. config=false or unset → false\n *\n * There is deliberately no third kind. A set of flags used to be enabled by default here, which was\n * a workaround for capabilities the license could not express: rather than gate them properly they\n * were left on for anyone holding any license at all. It also meant EVERY unrecognised name resolved\n * to true, so an undeclared flag and a typo both read as enabled. A feature that should be sold\n * belongs in LICENSE_CHECKS and on the license; anything else is the project's own to switch on.\n */\n\nconst LICENSE_CHECKS: Record<string, (license: ILicense) => boolean> = {\n multiTenancy: l => l.canUseFeature(\"multiTenancy\"),\n advancedPublishingWorkflow: l => l.canUseWorkflows(),\n advancedAccessControlLayer: l => l.canUseAacl(),\n \"advancedAccessControlLayer.teams\": l => l.canUseTeams(),\n \"advancedAccessControlLayer.privateFiles\": l => l.canUsePrivateFiles(),\n \"advancedAccessControlLayer.folderLevelPermissions\": l => l.canUseFolderLevelPermissions(),\n \"advancedAccessControlLayer.hcmsFieldPermissions\": l => l.canUseHcmsFieldPermissions(),\n auditLogs: l => l.canUseAuditLogs(),\n recordLocking: l => l.canUseRecordLocking(),\n \"fileManager.threatDetection\": l => l.canUseFileManagerThreatDetection(),\n \"aiPowerups.fileManager.imageEnrichment\": l => l.canUseAiImageEnrichment(),\n abTesting: l => l.canUseAbTesting()\n};\n\nclass LicenseDecoratedFeatureFlags extends FeatureFlagsClass {\n constructor(\n private base: FeatureFlagsClass,\n private license: ILicense\n ) {\n super(base.toDto());\n }\n\n override isEnabled(name: FeatureFlagName): boolean {\n const check = LICENSE_CHECKS[name];\n if (check) {\n if (!check(this.license)) {\n return false;\n }\n // License allows — config can only disable, not re-enable blocked features.\n return !this.base.isExplicitlyDisabled(name);\n }\n /*\n * Everything else is the project's own, and the config is the only thing that decides. No\n * default: `isEnabled` on the base is true only for an explicitly configured `true`.\n *\n * This branch used to return `!isExplicitlyDisabled(name)` whenever a license existed, which\n * made EVERY unrecognised name true — an undeclared flag, or a typo like `aiPowerupz`. It also\n * returned false outright without a license, so an unlicensed install could not turn on a flag\n * it had declared itself. Neither is the license's business.\n */\n return this.base.isEnabled(name);\n }\n}\n\nclass FeatureFlagsWithLicenseDecoratorImpl implements FeatureFlags.Interface {\n constructor(\n private licenseProvider: WcpLicenseProvider.Interface,\n private decoratee: FeatureFlags.Interface\n ) {}\n\n get(): FeatureFlagsClass {\n const base = this.decoratee.get();\n return new LicenseDecoratedFeatureFlags(base, this.licenseProvider.get());\n }\n}\n\nexport const FeatureFlagsWithLicenseDecorator = FeatureFlags.createDecorator({\n decorator: FeatureFlagsWithLicenseDecoratorImpl,\n dependencies: [WcpLicenseProvider]\n});\n"],"names":["LICENSE_CHECKS","l","LicenseDecoratedFeatureFlags","FeatureFlagsClass","base","license","name","check","FeatureFlagsWithLicenseDecoratorImpl","licenseProvider","decoratee","FeatureFlagsWithLicenseDecorator","FeatureFlags","WcpLicenseProvider"],"mappings":";;;AA2BA,MAAMA,iBAAiE;IACnE,cAAcC,CAAAA,IAAKA,EAAE,aAAa,CAAC;IACnC,4BAA4BA,CAAAA,IAAKA,EAAE,eAAe;IAClD,4BAA4BA,CAAAA,IAAKA,EAAE,UAAU;IAC7C,oCAAoCA,CAAAA,IAAKA,EAAE,WAAW;IACtD,2CAA2CA,CAAAA,IAAKA,EAAE,kBAAkB;IACpE,qDAAqDA,CAAAA,IAAKA,EAAE,4BAA4B;IACxF,mDAAmDA,CAAAA,IAAKA,EAAE,0BAA0B;IACpF,WAAWA,CAAAA,IAAKA,EAAE,eAAe;IACjC,eAAeA,CAAAA,IAAKA,EAAE,mBAAmB;IACzC,+BAA+BA,CAAAA,IAAKA,EAAE,gCAAgC;IACtE,0CAA0CA,CAAAA,IAAKA,EAAE,uBAAuB;IACxE,WAAWA,CAAAA,IAAKA,EAAE,eAAe;AACrC;AAEA,MAAMC,qCAAqCC;IACvC,YACYC,IAAuB,EACvBC,OAAiB,CAC3B;QACE,KAAK,CAACD,KAAK,KAAK,UAHRA,IAAI,GAAJA,MAAAA,IAAAA,CACAC,OAAO,GAAPA;IAGZ;IAES,UAAUC,IAAqB,EAAW;QAC/C,MAAMC,QAAQP,cAAc,CAACM,KAAK;QAClC,IAAIC,OAAO;YACP,IAAI,CAACA,MAAM,IAAI,CAAC,OAAO,GACnB,OAAO;YAGX,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAACD;QAC3C;QAUA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAACA;IAC/B;AACJ;AAEA,MAAME;IACF,YACYC,eAA6C,EAC7CC,SAAiC,CAC3C;aAFUD,eAAe,GAAfA;aACAC,SAAS,GAATA;IACT;IAEH,MAAyB;QACrB,MAAMN,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG;QAC/B,OAAO,IAAIF,6BAA6BE,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG;IAC1E;AACJ;AAEO,MAAMO,mCAAmCC,aAAa,eAAe,CAAC;IACzE,WAAWJ;IACX,cAAc;QAACK;KAAmB;AACtC"}
1
+ {"version":3,"file":"features/featureFlags/decorators/FeatureFlagsWithLicenseDecorator.js","sources":["../../../../src/features/featureFlags/decorators/FeatureFlagsWithLicenseDecorator.ts"],"sourcesContent":["import { FeatureFlags } from \"../abstractions.js\";\nimport { FeatureFlags as FeatureFlagsClass } from \"@webiny/feature-flags\";\nimport type { FeatureFlagName } from \"@webiny/feature-flags\";\nimport type { ILicense } from \"@webiny/wcp/types.js\";\nimport { WcpLicenseProvider } from \"~/features/wcp/WcpLicenseProvider.js\";\n\n/*\n * Feature flag resolution (license decorator).\n *\n * Two kinds of flag, and only one of them is Webiny's to sell:\n *\n * LICENSE-GOVERNED (listed in LICENSE_CHECKS) — the license is the authority:\n * 1. No license, or license blocks the flag → false, config ignored\n * 2. License allows + config unset → true (the license grants it)\n * 3. License allows + config=false → false (config may disable, never re-enable)\n *\n * EVERYTHING ELSE — the project's own flags. The config decides, and nothing is assumed:\n * 4. config=true → true\n * 5. config=false or unset → false\n *\n * There is deliberately no third kind. A set of flags used to be enabled by default here, which was\n * a workaround for capabilities the license could not express: rather than gate them properly they\n * were left on for anyone holding any license at all. It also meant EVERY unrecognised name resolved\n * to true, so an undeclared flag and a typo both read as enabled. A feature that should be sold\n * belongs in LICENSE_CHECKS and on the license; anything else is the project's own to switch on.\n */\n\nconst LICENSE_CHECKS: Record<string, (license: ILicense) => boolean> = {\n multiTenancy: l => l.canUseFeature(\"multiTenancy\"),\n advancedPublishingWorkflow: l => l.canUseWorkflows(),\n advancedAccessControlLayer: l => l.canUseAacl(),\n \"advancedAccessControlLayer.teams\": l => l.canUseTeams(),\n \"advancedAccessControlLayer.privateFiles\": l => l.canUsePrivateFiles(),\n \"advancedAccessControlLayer.folderLevelPermissions\": l => l.canUseFolderLevelPermissions(),\n \"advancedAccessControlLayer.hcmsFieldPermissions\": l => l.canUseHcmsFieldPermissions(),\n auditLogs: l => l.canUseAuditLogs(),\n recordLocking: l => l.canUseRecordLocking(),\n \"fileManager.threatDetection\": l => l.canUseFileManagerThreatDetection(),\n aiPowerups: l => l.canUseAiPowerups(),\n \"aiPowerups.fileManager.imageEnrichment\": l => l.canUseAiImageEnrichment(),\n \"aiPowerups.websiteBuilder.pageGeneration\": l => l.canUseAiPageGeneration(),\n \"aiPowerups.websiteBuilder.pageTranslation\": l => l.canUseAiPageTranslation(),\n \"aiPowerups.lexicalGeneration\": l => l.canUseAiLexicalGeneration(),\n \"aiPowerups.adminAssistant\": l => l.canUseAiAdminAssistant(),\n \"aiPowerups.remoteComponents\": l => l.canUseRemoteComponents(),\n \"aiPowerups.cms.entryGeneration\": l => l.canUseAiEntryGeneration(),\n \"aiPowerups.cms.entryComparison\": l => l.canUseAiEntryComparison(),\n \"aiPowerups.cms.entryTranslation\": l => l.canUseAiEntryTranslation(),\n abTesting: l => l.canUseAbTesting(),\n collaboration: l => l.canUseCollaboration(),\n \"collaboration.comments\": l => l.canUseComments(),\n \"collaboration.activityLog\": l => l.canUseActivityLog()\n};\n\nclass LicenseDecoratedFeatureFlags extends FeatureFlagsClass {\n constructor(\n private base: FeatureFlagsClass,\n private license: ILicense\n ) {\n super(base.toDto());\n }\n\n override isEnabled(name: FeatureFlagName): boolean {\n const check = LICENSE_CHECKS[name];\n if (check) {\n if (!check(this.license)) {\n return false;\n }\n // License allows — config can only disable, not re-enable blocked features.\n return !this.base.isExplicitlyDisabled(name);\n }\n /*\n * Everything else is the project's own, and the config is the only thing that decides. No\n * default: `isEnabled` on the base is true only for an explicitly configured `true`.\n *\n * This branch used to return `!isExplicitlyDisabled(name)` whenever a license existed, which\n * made EVERY unrecognised name true — an undeclared flag, or a typo like `aiPowerupz`. It also\n * returned false outright without a license, so an unlicensed install could not turn on a flag\n * it had declared itself. Neither is the license's business.\n */\n return this.base.isEnabled(name);\n }\n}\n\nclass FeatureFlagsWithLicenseDecoratorImpl implements FeatureFlags.Interface {\n constructor(\n private licenseProvider: WcpLicenseProvider.Interface,\n private decoratee: FeatureFlags.Interface\n ) {}\n\n get(): FeatureFlagsClass {\n const base = this.decoratee.get();\n return new LicenseDecoratedFeatureFlags(base, this.licenseProvider.get());\n }\n}\n\nexport const FeatureFlagsWithLicenseDecorator = FeatureFlags.createDecorator({\n decorator: FeatureFlagsWithLicenseDecoratorImpl,\n dependencies: [WcpLicenseProvider]\n});\n"],"names":["LICENSE_CHECKS","l","LicenseDecoratedFeatureFlags","FeatureFlagsClass","base","license","name","check","FeatureFlagsWithLicenseDecoratorImpl","licenseProvider","decoratee","FeatureFlagsWithLicenseDecorator","FeatureFlags","WcpLicenseProvider"],"mappings":";;;AA2BA,MAAMA,iBAAiE;IACnE,cAAcC,CAAAA,IAAKA,EAAE,aAAa,CAAC;IACnC,4BAA4BA,CAAAA,IAAKA,EAAE,eAAe;IAClD,4BAA4BA,CAAAA,IAAKA,EAAE,UAAU;IAC7C,oCAAoCA,CAAAA,IAAKA,EAAE,WAAW;IACtD,2CAA2CA,CAAAA,IAAKA,EAAE,kBAAkB;IACpE,qDAAqDA,CAAAA,IAAKA,EAAE,4BAA4B;IACxF,mDAAmDA,CAAAA,IAAKA,EAAE,0BAA0B;IACpF,WAAWA,CAAAA,IAAKA,EAAE,eAAe;IACjC,eAAeA,CAAAA,IAAKA,EAAE,mBAAmB;IACzC,+BAA+BA,CAAAA,IAAKA,EAAE,gCAAgC;IACtE,YAAYA,CAAAA,IAAKA,EAAE,gBAAgB;IACnC,0CAA0CA,CAAAA,IAAKA,EAAE,uBAAuB;IACxE,4CAA4CA,CAAAA,IAAKA,EAAE,sBAAsB;IACzE,6CAA6CA,CAAAA,IAAKA,EAAE,uBAAuB;IAC3E,gCAAgCA,CAAAA,IAAKA,EAAE,yBAAyB;IAChE,6BAA6BA,CAAAA,IAAKA,EAAE,sBAAsB;IAC1D,+BAA+BA,CAAAA,IAAKA,EAAE,sBAAsB;IAC5D,kCAAkCA,CAAAA,IAAKA,EAAE,uBAAuB;IAChE,kCAAkCA,CAAAA,IAAKA,EAAE,uBAAuB;IAChE,mCAAmCA,CAAAA,IAAKA,EAAE,wBAAwB;IAClE,WAAWA,CAAAA,IAAKA,EAAE,eAAe;IACjC,eAAeA,CAAAA,IAAKA,EAAE,mBAAmB;IACzC,0BAA0BA,CAAAA,IAAKA,EAAE,cAAc;IAC/C,6BAA6BA,CAAAA,IAAKA,EAAE,iBAAiB;AACzD;AAEA,MAAMC,qCAAqCC;IACvC,YACYC,IAAuB,EACvBC,OAAiB,CAC3B;QACE,KAAK,CAACD,KAAK,KAAK,UAHRA,IAAI,GAAJA,MAAAA,IAAAA,CACAC,OAAO,GAAPA;IAGZ;IAES,UAAUC,IAAqB,EAAW;QAC/C,MAAMC,QAAQP,cAAc,CAACM,KAAK;QAClC,IAAIC,OAAO;YACP,IAAI,CAACA,MAAM,IAAI,CAAC,OAAO,GACnB,OAAO;YAGX,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAACD;QAC3C;QAUA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAACA;IAC/B;AACJ;AAEA,MAAME;IACF,YACYC,eAA6C,EAC7CC,SAAiC,CAC3C;aAFUD,eAAe,GAAfA;aACAC,SAAS,GAATA;IACT;IAEH,MAAyB;QACrB,MAAMN,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG;QAC/B,OAAO,IAAIF,6BAA6BE,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG;IAC1E;AACJ;AAEO,MAAMO,mCAAmCC,aAAa,eAAe,CAAC;IACzE,WAAWJ;IACX,cAAc;QAACK;KAAmB;AACtC"}
@@ -28,11 +28,16 @@ export declare class WcpContextImpl implements WcpContext.Interface {
28
28
  canUseAiPageGeneration(): boolean;
29
29
  canUseAiPageTranslation(): boolean;
30
30
  canUseAiLexicalGeneration(): boolean;
31
+ canUseAiAdminAssistant(): boolean;
31
32
  canUseAiEntryGeneration(): boolean;
32
33
  canUseAiEntryComparison(): boolean;
33
34
  canUseAiEntryTranslation(): boolean;
35
+ canUseAiPowerups(): boolean;
34
36
  canUseAbTesting(): boolean;
35
37
  canUseRemoteComponents(): boolean;
38
+ canUseCollaboration(): boolean;
39
+ canUseComments(): boolean;
40
+ canUseActivityLog(): boolean;
36
41
  ensureCanUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL): void;
37
42
  incrementSeats(): Promise<void>;
38
43
  decrementSeats(): Promise<void>;
@@ -117,6 +117,9 @@ class WcpContextImpl {
117
117
  canUseAiLexicalGeneration() {
118
118
  return this.license.canUseAiLexicalGeneration();
119
119
  }
120
+ canUseAiAdminAssistant() {
121
+ return this.license.canUseAiAdminAssistant();
122
+ }
120
123
  canUseAiEntryGeneration() {
121
124
  return this.license.canUseAiEntryGeneration();
122
125
  }
@@ -126,12 +129,24 @@ class WcpContextImpl {
126
129
  canUseAiEntryTranslation() {
127
130
  return this.license.canUseAiEntryTranslation();
128
131
  }
132
+ canUseAiPowerups() {
133
+ return this.license.canUseAiPowerups();
134
+ }
129
135
  canUseAbTesting() {
130
136
  return this.license.canUseAbTesting();
131
137
  }
132
138
  canUseRemoteComponents() {
133
139
  return this.license.canUseRemoteComponents();
134
140
  }
141
+ canUseCollaboration() {
142
+ return this.license.canUseCollaboration();
143
+ }
144
+ canUseComments() {
145
+ return this.license.canUseComments();
146
+ }
147
+ canUseActivityLog() {
148
+ return this.license.canUseActivityLog();
149
+ }
135
150
  ensureCanUseFeature(wcpFeatureId) {
136
151
  if (this.license.canUseFeature(wcpFeatureId)) return;
137
152
  let message = `The ${wcpFeatureId} Webiny Control Panel feature cannot be used because your project license does not permit it.`;
@@ -1 +1 @@
1
- {"version":3,"file":"features/wcp/WcpContext/WcpContext.js","sources":["../../../../src/features/wcp/WcpContext/WcpContext.ts"],"sourcesContent":["import type { WCP_FEATURE_LABEL } from \"@webiny/wcp\";\nimport { getWcpApiUrl, getWcpAppUrl, getWcpProjectEnvironment } from \"@webiny/wcp\";\nimport WError from \"@webiny/error\";\nimport type {\n DecryptedWcpProjectLicense,\n ILicense,\n WcpProjectEnvironment,\n WcpProject\n} from \"@webiny/wcp/types.js\";\nimport { WcpContext } from \"./abstractions.js\";\nimport { wcpFetch } from \"./utils.js\";\nimport type { WcpLicenseProvider } from \"../WcpLicenseProvider.js\";\n\nconst wcpProjectEnvironment = getWcpProjectEnvironment();\n\nexport class WcpContextImpl implements WcpContext.Interface {\n constructor(private licenseProvider: WcpLicenseProvider.Interface) {}\n\n private get license(): ILicense {\n return this.licenseProvider.get();\n }\n\n private getWcpProjectUrl(path = \"\"): string | null {\n if (!wcpProjectEnvironment) {\n return null;\n }\n\n const orgId = wcpProjectEnvironment.org.id;\n const projectId = wcpProjectEnvironment.project.id;\n const url = [\"/orgs\", orgId, \"projects\", projectId, path].filter(Boolean).join(\"/\");\n return getWcpApiUrl(url);\n }\n\n private async updateSeats(operation: \"increment\" | \"decrement\"): Promise<void> {\n if (!wcpProjectEnvironment) {\n return;\n }\n\n const updateSeatsUrl = this.getWcpProjectUrl(\"package/seats\");\n\n const response = await wcpFetch({\n url: updateSeatsUrl!,\n authorization: wcpProjectEnvironment.apiKey,\n body: { operation },\n meta: {\n action: operation + \"Seats\"\n }\n });\n\n if (response.error) {\n const message = response.message || `Failed to ${operation} user seats.`;\n console.error(message, response.status, response.statusText);\n throw new WError(message, \"WCP_CANNOT_UPDATE_USER_TENANTS\");\n }\n }\n\n private async updateTenants(operation: \"increment\" | \"decrement\"): Promise<void> {\n if (!wcpProjectEnvironment) {\n return;\n }\n\n const updateTenantsUrl = this.getWcpProjectUrl(\"package/tenants\");\n\n const response = await wcpFetch({\n url: updateTenantsUrl!,\n authorization: wcpProjectEnvironment.apiKey,\n body: { operation },\n meta: {\n action: operation + \"Tenants\"\n }\n });\n\n if (response.error) {\n const message = response.message || `Failed to ${operation} tenants.`;\n console.error(message, response.status, response.statusText);\n throw new WError(message, \"WCP_CANNOT_UPDATE_USER_TENANTS\");\n }\n }\n\n getRawLicense(): DecryptedWcpProjectLicense | null {\n return this.license.getRawLicense();\n }\n\n getProject(): WcpProject | null {\n return this.license.getProject();\n }\n\n getProjectWithFeatureFlags(): WcpProject | null {\n return this.getProject();\n }\n\n getProjectEnvironment(): WcpProjectEnvironment | null {\n return wcpProjectEnvironment;\n }\n\n getProjectLicense(): ILicense {\n return this.license;\n }\n\n canUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL): boolean {\n return this.license.canUseFeature(wcpFeatureId);\n }\n\n canUseAacl(): boolean {\n return this.license.canUseAacl();\n }\n\n canUseTeams(): boolean {\n return this.license.canUseTeams();\n }\n\n canUseFolderLevelPermissions(): boolean {\n return this.license.canUseFolderLevelPermissions();\n }\n\n canUsePrivateFiles(): boolean {\n return this.license.canUsePrivateFiles();\n }\n\n canUseAuditLogs(): boolean {\n return this.license.canUseAuditLogs();\n }\n\n canUseRecordLocking(): boolean {\n return this.license.canUseRecordLocking();\n }\n\n canUseFileManagerThreatDetection(): boolean {\n return this.license.canUseFileManagerThreatDetection();\n }\n\n canUseWorkflows(): boolean {\n return this.license.canUseWorkflows();\n }\n\n canUseHcmsFieldPermissions(): boolean {\n return this.license.canUseHcmsFieldPermissions();\n }\n\n canUseAiImageEnrichment(): boolean {\n return this.license.canUseAiImageEnrichment();\n }\n\n canUseAiPageGeneration(): boolean {\n return this.license.canUseAiPageGeneration();\n }\n\n canUseAiPageTranslation(): boolean {\n return this.license.canUseAiPageTranslation();\n }\n\n canUseAiLexicalGeneration(): boolean {\n return this.license.canUseAiLexicalGeneration();\n }\n\n canUseAiEntryGeneration(): boolean {\n return this.license.canUseAiEntryGeneration();\n }\n\n canUseAiEntryComparison(): boolean {\n return this.license.canUseAiEntryComparison();\n }\n\n canUseAiEntryTranslation(): boolean {\n return this.license.canUseAiEntryTranslation();\n }\n\n canUseAbTesting(): boolean {\n return this.license.canUseAbTesting();\n }\n\n canUseRemoteComponents(): boolean {\n return this.license.canUseRemoteComponents();\n }\n\n ensureCanUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL): void {\n if (this.license.canUseFeature(wcpFeatureId)) {\n return;\n }\n\n let message = `The ${wcpFeatureId} Webiny Control Panel feature cannot be used because your project license does not permit it.`;\n if (wcpProjectEnvironment) {\n const { org, project } = wcpProjectEnvironment;\n const upgradeProjectLicenseLink = getWcpAppUrl(`/${org.id}/${project.id}/settings`);\n message += ` To upgrade your project license, please use the following link: ${upgradeProjectLicenseLink}.`;\n }\n\n throw new WError(message, \"WCP_CANNOT_USE_FEATURE\", { wcpFeatureId });\n }\n\n async incrementSeats(): Promise<void> {\n await this.updateSeats(\"increment\");\n }\n\n async decrementSeats(): Promise<void> {\n await this.updateSeats(\"decrement\");\n }\n\n async incrementTenants(): Promise<void> {\n await this.updateTenants(\"increment\");\n }\n\n async decrementTenants(): Promise<void> {\n await this.updateTenants(\"decrement\");\n }\n\n toDto() {\n return this.getRawLicense();\n }\n}\n"],"names":["wcpProjectEnvironment","getWcpProjectEnvironment","WcpContextImpl","licenseProvider","path","orgId","projectId","url","Boolean","getWcpApiUrl","operation","updateSeatsUrl","response","wcpFetch","message","console","WError","updateTenantsUrl","wcpFeatureId","org","project","upgradeProjectLicenseLink","getWcpAppUrl"],"mappings":"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"}
1
+ {"version":3,"file":"features/wcp/WcpContext/WcpContext.js","sources":["../../../../src/features/wcp/WcpContext/WcpContext.ts"],"sourcesContent":["import type { WCP_FEATURE_LABEL } from \"@webiny/wcp\";\nimport { getWcpApiUrl, getWcpAppUrl, getWcpProjectEnvironment } from \"@webiny/wcp\";\nimport WError from \"@webiny/error\";\nimport type {\n DecryptedWcpProjectLicense,\n ILicense,\n WcpProjectEnvironment,\n WcpProject\n} from \"@webiny/wcp/types.js\";\nimport { WcpContext } from \"./abstractions.js\";\nimport { wcpFetch } from \"./utils.js\";\nimport type { WcpLicenseProvider } from \"../WcpLicenseProvider.js\";\n\nconst wcpProjectEnvironment = getWcpProjectEnvironment();\n\nexport class WcpContextImpl implements WcpContext.Interface {\n constructor(private licenseProvider: WcpLicenseProvider.Interface) {}\n\n private get license(): ILicense {\n return this.licenseProvider.get();\n }\n\n private getWcpProjectUrl(path = \"\"): string | null {\n if (!wcpProjectEnvironment) {\n return null;\n }\n\n const orgId = wcpProjectEnvironment.org.id;\n const projectId = wcpProjectEnvironment.project.id;\n const url = [\"/orgs\", orgId, \"projects\", projectId, path].filter(Boolean).join(\"/\");\n return getWcpApiUrl(url);\n }\n\n private async updateSeats(operation: \"increment\" | \"decrement\"): Promise<void> {\n if (!wcpProjectEnvironment) {\n return;\n }\n\n const updateSeatsUrl = this.getWcpProjectUrl(\"package/seats\");\n\n const response = await wcpFetch({\n url: updateSeatsUrl!,\n authorization: wcpProjectEnvironment.apiKey,\n body: { operation },\n meta: {\n action: operation + \"Seats\"\n }\n });\n\n if (response.error) {\n const message = response.message || `Failed to ${operation} user seats.`;\n console.error(message, response.status, response.statusText);\n throw new WError(message, \"WCP_CANNOT_UPDATE_USER_TENANTS\");\n }\n }\n\n private async updateTenants(operation: \"increment\" | \"decrement\"): Promise<void> {\n if (!wcpProjectEnvironment) {\n return;\n }\n\n const updateTenantsUrl = this.getWcpProjectUrl(\"package/tenants\");\n\n const response = await wcpFetch({\n url: updateTenantsUrl!,\n authorization: wcpProjectEnvironment.apiKey,\n body: { operation },\n meta: {\n action: operation + \"Tenants\"\n }\n });\n\n if (response.error) {\n const message = response.message || `Failed to ${operation} tenants.`;\n console.error(message, response.status, response.statusText);\n throw new WError(message, \"WCP_CANNOT_UPDATE_USER_TENANTS\");\n }\n }\n\n getRawLicense(): DecryptedWcpProjectLicense | null {\n return this.license.getRawLicense();\n }\n\n getProject(): WcpProject | null {\n return this.license.getProject();\n }\n\n getProjectWithFeatureFlags(): WcpProject | null {\n return this.getProject();\n }\n\n getProjectEnvironment(): WcpProjectEnvironment | null {\n return wcpProjectEnvironment;\n }\n\n getProjectLicense(): ILicense {\n return this.license;\n }\n\n canUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL): boolean {\n return this.license.canUseFeature(wcpFeatureId);\n }\n\n canUseAacl(): boolean {\n return this.license.canUseAacl();\n }\n\n canUseTeams(): boolean {\n return this.license.canUseTeams();\n }\n\n canUseFolderLevelPermissions(): boolean {\n return this.license.canUseFolderLevelPermissions();\n }\n\n canUsePrivateFiles(): boolean {\n return this.license.canUsePrivateFiles();\n }\n\n canUseAuditLogs(): boolean {\n return this.license.canUseAuditLogs();\n }\n\n canUseRecordLocking(): boolean {\n return this.license.canUseRecordLocking();\n }\n\n canUseFileManagerThreatDetection(): boolean {\n return this.license.canUseFileManagerThreatDetection();\n }\n\n canUseWorkflows(): boolean {\n return this.license.canUseWorkflows();\n }\n\n canUseHcmsFieldPermissions(): boolean {\n return this.license.canUseHcmsFieldPermissions();\n }\n\n canUseAiImageEnrichment(): boolean {\n return this.license.canUseAiImageEnrichment();\n }\n\n canUseAiPageGeneration(): boolean {\n return this.license.canUseAiPageGeneration();\n }\n\n canUseAiPageTranslation(): boolean {\n return this.license.canUseAiPageTranslation();\n }\n\n canUseAiLexicalGeneration(): boolean {\n return this.license.canUseAiLexicalGeneration();\n }\n\n canUseAiAdminAssistant(): boolean {\n return this.license.canUseAiAdminAssistant();\n }\n\n canUseAiEntryGeneration(): boolean {\n return this.license.canUseAiEntryGeneration();\n }\n\n canUseAiEntryComparison(): boolean {\n return this.license.canUseAiEntryComparison();\n }\n\n canUseAiEntryTranslation(): boolean {\n return this.license.canUseAiEntryTranslation();\n }\n\n canUseAiPowerups(): boolean {\n return this.license.canUseAiPowerups();\n }\n\n canUseAbTesting(): boolean {\n return this.license.canUseAbTesting();\n }\n\n canUseRemoteComponents(): boolean {\n return this.license.canUseRemoteComponents();\n }\n\n canUseCollaboration(): boolean {\n return this.license.canUseCollaboration();\n }\n\n canUseComments(): boolean {\n return this.license.canUseComments();\n }\n\n canUseActivityLog(): boolean {\n return this.license.canUseActivityLog();\n }\n\n ensureCanUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL): void {\n if (this.license.canUseFeature(wcpFeatureId)) {\n return;\n }\n\n let message = `The ${wcpFeatureId} Webiny Control Panel feature cannot be used because your project license does not permit it.`;\n if (wcpProjectEnvironment) {\n const { org, project } = wcpProjectEnvironment;\n const upgradeProjectLicenseLink = getWcpAppUrl(`/${org.id}/${project.id}/settings`);\n message += ` To upgrade your project license, please use the following link: ${upgradeProjectLicenseLink}.`;\n }\n\n throw new WError(message, \"WCP_CANNOT_USE_FEATURE\", { wcpFeatureId });\n }\n\n async incrementSeats(): Promise<void> {\n await this.updateSeats(\"increment\");\n }\n\n async decrementSeats(): Promise<void> {\n await this.updateSeats(\"decrement\");\n }\n\n async incrementTenants(): Promise<void> {\n await this.updateTenants(\"increment\");\n }\n\n async decrementTenants(): Promise<void> {\n await this.updateTenants(\"decrement\");\n }\n\n toDto() {\n return this.getRawLicense();\n }\n}\n"],"names":["wcpProjectEnvironment","getWcpProjectEnvironment","WcpContextImpl","licenseProvider","path","orgId","projectId","url","Boolean","getWcpApiUrl","operation","updateSeatsUrl","response","wcpFetch","message","console","WError","updateTenantsUrl","wcpFeatureId","org","project","upgradeProjectLicenseLink","getWcpAppUrl"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { WCP_FEATURE_LABEL } from "@webiny/wcp";
2
+ import type { WcpProject } from "@webiny/wcp/types.js";
2
3
  import { WcpContext } from "../abstractions.js";
3
4
  import { FeatureFlags } from "../../../featureFlags/abstractions.js";
4
5
  declare class WcpContextWithFeatureFlagsDecoratorImpl implements WcpContext.Interface {
@@ -6,78 +7,8 @@ declare class WcpContextWithFeatureFlagsDecoratorImpl implements WcpContext.Inte
6
7
  private decoratee;
7
8
  constructor(featureFlags: FeatureFlags.Interface, decoratee: WcpContext.Interface);
8
9
  getRawLicense(): import("@webiny/wcp/types.js").DecryptedWcpProjectLicense | null;
9
- getProject(): import("@webiny/wcp/types.js").WcpProject | null;
10
- getProjectWithFeatureFlags(): {
11
- orgId: string;
12
- projectId: string;
13
- package: {
14
- features: {
15
- seats: {
16
- enabled: true;
17
- options: {
18
- maxCount: number;
19
- };
20
- };
21
- multiTenancy: {
22
- enabled: true;
23
- options: {
24
- maxCount: {
25
- type: import("@webiny/wcp/types.js").MT_OPTIONS_MAX_COUNT_TYPE;
26
- count?: number;
27
- };
28
- };
29
- };
30
- advancedPublishingWorkflow: {
31
- enabled: boolean;
32
- };
33
- advancedAccessControlLayer: {
34
- enabled: boolean;
35
- options: {
36
- teams: boolean;
37
- privateFiles: boolean;
38
- folderLevelPermissions: boolean;
39
- hcmsFieldPermissions: boolean;
40
- };
41
- };
42
- auditLogs: {
43
- enabled: boolean;
44
- };
45
- recordLocking: {
46
- enabled: boolean;
47
- };
48
- fileManager: {
49
- enabled: boolean;
50
- options: {
51
- threatDetection: boolean;
52
- };
53
- };
54
- aiPowerups: {
55
- enabled: boolean;
56
- options: {
57
- websiteBuilder: {
58
- pageGeneration: boolean | undefined;
59
- pageTranslation: boolean | undefined;
60
- };
61
- fileManager: {
62
- imageEnrichment: boolean | undefined;
63
- };
64
- lexicalGeneration: boolean | undefined;
65
- cms: {
66
- entryGeneration: boolean | undefined;
67
- entryComparison: boolean | undefined;
68
- entryTranslation: boolean | undefined;
69
- };
70
- };
71
- };
72
- abTesting: {
73
- enabled: boolean;
74
- };
75
- remoteComponents: {
76
- enabled: boolean;
77
- };
78
- };
79
- };
80
- } | null;
10
+ getProject(): WcpProject | null;
11
+ getProjectWithFeatureFlags(): WcpProject | null;
81
12
  getProjectEnvironment(): import("@webiny/wcp/types.js").WcpProjectEnvironment | null;
82
13
  getProjectLicense(): import("@webiny/wcp/types.js").ILicense;
83
14
  canUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL): boolean;
@@ -94,11 +25,16 @@ declare class WcpContextWithFeatureFlagsDecoratorImpl implements WcpContext.Inte
94
25
  canUseAiPageGeneration(): boolean;
95
26
  canUseAiPageTranslation(): boolean;
96
27
  canUseAiLexicalGeneration(): boolean;
28
+ canUseAiAdminAssistant(): boolean;
97
29
  canUseAiEntryGeneration(): boolean;
98
30
  canUseAiEntryComparison(): boolean;
99
31
  canUseAiEntryTranslation(): boolean;
32
+ canUseAiPowerups(): boolean;
100
33
  canUseAbTesting(): boolean;
101
34
  canUseRemoteComponents(): boolean;
35
+ canUseCollaboration(): boolean;
36
+ canUseComments(): boolean;
37
+ canUseActivityLog(): boolean;
102
38
  ensureCanUseFeature(featureId: keyof typeof WCP_FEATURE_LABEL): void;
103
39
  incrementSeats(): Promise<void>;
104
40
  decrementSeats(): Promise<void>;
@@ -63,6 +63,8 @@ class WcpContextWithFeatureFlagsDecoratorImpl {
63
63
  imageEnrichment: flags.isEnabled("aiPowerups.fileManager.imageEnrichment") ? project.package.features.aiPowerups?.options?.fileManager?.imageEnrichment : false
64
64
  },
65
65
  lexicalGeneration: flags.isEnabled("aiPowerups.lexicalGeneration") ? project.package.features.aiPowerups?.options?.lexicalGeneration : false,
66
+ adminAssistant: flags.isEnabled("aiPowerups.adminAssistant") ? project.package.features.aiPowerups?.options?.adminAssistant : false,
67
+ remoteComponents: flags.isEnabled("aiPowerups.remoteComponents") ? project.package.features.aiPowerups?.options?.remoteComponents : false,
66
68
  cms: {
67
69
  entryGeneration: flags.isEnabled("aiPowerups.cms.entryGeneration") ? project.package.features.aiPowerups?.options?.cms?.entryGeneration : false,
68
70
  entryComparison: flags.isEnabled("aiPowerups.cms.entryComparison") ? project.package.features.aiPowerups?.options?.cms?.entryComparison : false,
@@ -74,9 +76,13 @@ class WcpContextWithFeatureFlagsDecoratorImpl {
74
76
  ...project.package.features.abTesting,
75
77
  enabled: flags.isEnabled("abTesting") ? project.package.features.abTesting?.enabled : false
76
78
  },
77
- remoteComponents: {
78
- ...project.package.features.remoteComponents,
79
- enabled: flags.isEnabled("remoteComponents") ? project.package.features.remoteComponents?.enabled : false
79
+ collaboration: {
80
+ ...project.package.features.collaboration,
81
+ enabled: flags.isEnabled("collaboration") ? project.package.features.collaboration?.enabled : false,
82
+ options: {
83
+ comments: flags.isEnabled("collaboration.comments") ? project.package.features.collaboration?.options?.comments : false,
84
+ activityLog: flags.isEnabled("collaboration.activityLog") ? project.package.features.collaboration?.options?.activityLog : false
85
+ }
80
86
  }
81
87
  }
82
88
  }
@@ -130,6 +136,9 @@ class WcpContextWithFeatureFlagsDecoratorImpl {
130
136
  canUseAiLexicalGeneration() {
131
137
  return this.decoratee.canUseAiLexicalGeneration() && this.featureFlags.get().isEnabled("aiPowerups.lexicalGeneration");
132
138
  }
139
+ canUseAiAdminAssistant() {
140
+ return this.decoratee.canUseAiAdminAssistant() && this.featureFlags.get().isEnabled("aiPowerups.adminAssistant");
141
+ }
133
142
  canUseAiEntryGeneration() {
134
143
  return this.decoratee.canUseAiEntryGeneration() && this.featureFlags.get().isEnabled("aiPowerups.cms.entryGeneration");
135
144
  }
@@ -139,11 +148,23 @@ class WcpContextWithFeatureFlagsDecoratorImpl {
139
148
  canUseAiEntryTranslation() {
140
149
  return this.decoratee.canUseAiEntryTranslation() && this.featureFlags.get().isEnabled("aiPowerups.cms.entryTranslation");
141
150
  }
151
+ canUseAiPowerups() {
152
+ return this.decoratee.canUseAiPowerups() && this.featureFlags.get().isEnabled("aiPowerups");
153
+ }
142
154
  canUseAbTesting() {
143
155
  return this.decoratee.canUseAbTesting() && this.featureFlags.get().isEnabled("abTesting");
144
156
  }
145
157
  canUseRemoteComponents() {
146
- return this.decoratee.canUseRemoteComponents() && this.featureFlags.get().isEnabled("remoteComponents");
158
+ return this.decoratee.canUseRemoteComponents() && this.featureFlags.get().isEnabled("aiPowerups.remoteComponents");
159
+ }
160
+ canUseCollaboration() {
161
+ return this.decoratee.canUseCollaboration() && this.featureFlags.get().isEnabled("collaboration");
162
+ }
163
+ canUseComments() {
164
+ return this.decoratee.canUseComments() && this.featureFlags.get().isEnabled("collaboration.comments");
165
+ }
166
+ canUseActivityLog() {
167
+ return this.decoratee.canUseActivityLog() && this.featureFlags.get().isEnabled("collaboration.activityLog");
147
168
  }
148
169
  ensureCanUseFeature(featureId) {
149
170
  return this.decoratee.ensureCanUseFeature(featureId);
@@ -1 +1 @@
1
- {"version":3,"file":"features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js","sources":["../../../../../src/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.ts"],"sourcesContent":["import type { WCP_FEATURE_LABEL } from \"@webiny/wcp\";\nimport { WcpContext } from \"../abstractions.js\";\nimport { FeatureFlags } from \"../../../featureFlags/abstractions.js\";\n\nclass WcpContextWithFeatureFlagsDecoratorImpl implements WcpContext.Interface {\n constructor(\n private featureFlags: FeatureFlags.Interface,\n private decoratee: WcpContext.Interface\n ) {}\n\n getRawLicense() {\n return this.decoratee.getRawLicense();\n }\n\n getProject() {\n return this.decoratee.getProject();\n }\n\n getProjectWithFeatureFlags() {\n const project = this.decoratee.getProjectWithFeatureFlags();\n if (!project) {\n return null;\n }\n\n const flags = this.featureFlags.get();\n\n return {\n ...project,\n package: {\n ...project.package,\n features: {\n ...project.package.features,\n multiTenancy: project.package.features.multiTenancy,\n advancedPublishingWorkflow: {\n ...project.package.features.advancedPublishingWorkflow,\n enabled: flags.isEnabled(\"advancedPublishingWorkflow\")\n ? project.package.features.advancedPublishingWorkflow.enabled\n : false\n },\n advancedAccessControlLayer: {\n ...project.package.features.advancedAccessControlLayer,\n enabled: flags.isEnabled(\"advancedAccessControlLayer\")\n ? project.package.features.advancedAccessControlLayer.enabled\n : false,\n options: {\n teams: flags.isEnabled(\"advancedAccessControlLayer.teams\")\n ? project.package.features.advancedAccessControlLayer.options.teams\n : false,\n privateFiles: flags.isEnabled(\"advancedAccessControlLayer.privateFiles\")\n ? project.package.features.advancedAccessControlLayer.options\n .privateFiles\n : false,\n folderLevelPermissions: flags.isEnabled(\n \"advancedAccessControlLayer.folderLevelPermissions\"\n )\n ? project.package.features.advancedAccessControlLayer.options\n .folderLevelPermissions\n : false,\n hcmsFieldPermissions: flags.isEnabled(\n \"advancedAccessControlLayer.hcmsFieldPermissions\"\n )\n ? project.package.features.advancedAccessControlLayer.options\n .hcmsFieldPermissions\n : false\n }\n },\n auditLogs: {\n ...project.package.features.auditLogs,\n enabled: flags.isEnabled(\"auditLogs\")\n ? project.package.features.auditLogs.enabled\n : false\n },\n recordLocking: {\n ...project.package.features.recordLocking,\n enabled: flags.isEnabled(\"recordLocking\")\n ? project.package.features.recordLocking.enabled\n : false\n },\n fileManager: {\n ...project.package.features.fileManager,\n enabled: project.package.features.fileManager.enabled,\n options: {\n threatDetection: flags.isEnabled(\"fileManager.threatDetection\")\n ? project.package.features.fileManager.options.threatDetection\n : false\n }\n },\n aiPowerups: {\n ...project.package.features.aiPowerups,\n enabled: flags.isEnabled(\"aiPowerups\")\n ? project.package.features.aiPowerups?.enabled\n : false,\n options: {\n websiteBuilder: {\n pageGeneration: flags.isEnabled(\n \"aiPowerups.websiteBuilder.pageGeneration\"\n )\n ? project.package.features.aiPowerups?.options?.websiteBuilder\n ?.pageGeneration\n : false,\n pageTranslation: flags.isEnabled(\n \"aiPowerups.websiteBuilder.pageTranslation\"\n )\n ? project.package.features.aiPowerups?.options?.websiteBuilder\n ?.pageTranslation\n : false\n },\n fileManager: {\n imageEnrichment: flags.isEnabled(\n \"aiPowerups.fileManager.imageEnrichment\"\n )\n ? project.package.features.aiPowerups?.options?.fileManager\n ?.imageEnrichment\n : false\n },\n lexicalGeneration: flags.isEnabled(\"aiPowerups.lexicalGeneration\")\n ? project.package.features.aiPowerups?.options?.lexicalGeneration\n : false,\n cms: {\n entryGeneration: flags.isEnabled(\"aiPowerups.cms.entryGeneration\")\n ? project.package.features.aiPowerups?.options?.cms\n ?.entryGeneration\n : false,\n entryComparison: flags.isEnabled(\"aiPowerups.cms.entryComparison\")\n ? project.package.features.aiPowerups?.options?.cms\n ?.entryComparison\n : false,\n entryTranslation: flags.isEnabled(\"aiPowerups.cms.entryTranslation\")\n ? project.package.features.aiPowerups?.options?.cms\n ?.entryTranslation\n : false\n }\n }\n },\n abTesting: {\n ...project.package.features.abTesting,\n enabled: flags.isEnabled(\"abTesting\")\n ? project.package.features.abTesting?.enabled\n : false\n },\n remoteComponents: {\n ...project.package.features.remoteComponents,\n enabled: flags.isEnabled(\"remoteComponents\")\n ? project.package.features.remoteComponents?.enabled\n : false\n }\n }\n }\n };\n }\n\n getProjectEnvironment() {\n return this.decoratee.getProjectEnvironment();\n }\n\n getProjectLicense() {\n return this.decoratee.getProjectLicense();\n }\n\n canUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL) {\n return this.decoratee.canUseFeature(wcpFeatureId);\n }\n\n canUseAacl() {\n return (\n this.decoratee.canUseAacl() &&\n this.featureFlags.get().isEnabled(\"advancedAccessControlLayer\")\n );\n }\n\n canUseTeams() {\n return (\n this.decoratee.canUseTeams() &&\n this.featureFlags.get().isEnabled(\"advancedAccessControlLayer.teams\")\n );\n }\n\n canUseFolderLevelPermissions() {\n return (\n this.decoratee.canUseFolderLevelPermissions() &&\n this.featureFlags.get().isEnabled(\"advancedAccessControlLayer.folderLevelPermissions\")\n );\n }\n\n canUsePrivateFiles() {\n return (\n this.decoratee.canUsePrivateFiles() &&\n this.featureFlags.get().isEnabled(\"advancedAccessControlLayer.privateFiles\")\n );\n }\n\n canUseAuditLogs() {\n return this.decoratee.canUseAuditLogs() && this.featureFlags.get().isEnabled(\"auditLogs\");\n }\n\n canUseRecordLocking() {\n return (\n this.decoratee.canUseRecordLocking() &&\n this.featureFlags.get().isEnabled(\"recordLocking\")\n );\n }\n\n canUseFileManagerThreatDetection() {\n return (\n this.decoratee.canUseFileManagerThreatDetection() &&\n this.featureFlags.get().isEnabled(\"fileManager.threatDetection\")\n );\n }\n\n canUseWorkflows() {\n return (\n this.decoratee.canUseWorkflows() &&\n this.featureFlags.get().isEnabled(\"advancedPublishingWorkflow\")\n );\n }\n\n canUseHcmsFieldPermissions() {\n return (\n this.decoratee.canUseHcmsFieldPermissions() &&\n this.featureFlags.get().isEnabled(\"advancedAccessControlLayer.hcmsFieldPermissions\")\n );\n }\n\n canUseAiImageEnrichment() {\n return (\n this.decoratee.canUseAiImageEnrichment() &&\n this.featureFlags.get().isEnabled(\"aiPowerups.fileManager.imageEnrichment\")\n );\n }\n\n canUseAiPageGeneration() {\n return (\n this.decoratee.canUseAiPageGeneration() &&\n this.featureFlags.get().isEnabled(\"aiPowerups.websiteBuilder.pageGeneration\")\n );\n }\n\n canUseAiPageTranslation() {\n return (\n this.decoratee.canUseAiPageTranslation() &&\n this.featureFlags.get().isEnabled(\"aiPowerups.websiteBuilder.pageTranslation\")\n );\n }\n\n canUseAiLexicalGeneration() {\n return (\n this.decoratee.canUseAiLexicalGeneration() &&\n this.featureFlags.get().isEnabled(\"aiPowerups.lexicalGeneration\")\n );\n }\n\n canUseAiEntryGeneration() {\n return (\n this.decoratee.canUseAiEntryGeneration() &&\n this.featureFlags.get().isEnabled(\"aiPowerups.cms.entryGeneration\")\n );\n }\n\n canUseAiEntryComparison() {\n return (\n this.decoratee.canUseAiEntryComparison() &&\n this.featureFlags.get().isEnabled(\"aiPowerups.cms.entryComparison\")\n );\n }\n\n canUseAiEntryTranslation() {\n return (\n this.decoratee.canUseAiEntryTranslation() &&\n this.featureFlags.get().isEnabled(\"aiPowerups.cms.entryTranslation\")\n );\n }\n\n canUseAbTesting() {\n return this.decoratee.canUseAbTesting() && this.featureFlags.get().isEnabled(\"abTesting\");\n }\n\n canUseRemoteComponents() {\n return (\n this.decoratee.canUseRemoteComponents() &&\n this.featureFlags.get().isEnabled(\"remoteComponents\")\n );\n }\n\n ensureCanUseFeature(featureId: keyof typeof WCP_FEATURE_LABEL) {\n return this.decoratee.ensureCanUseFeature(featureId);\n }\n\n async incrementSeats() {\n return this.decoratee.incrementSeats();\n }\n\n async decrementSeats() {\n return this.decoratee.decrementSeats();\n }\n\n async incrementTenants() {\n return this.decoratee.incrementTenants();\n }\n\n async decrementTenants() {\n return this.decoratee.decrementTenants();\n }\n\n toDto() {\n return this.decoratee.toDto();\n }\n}\n\nexport const WcpContextWithFeatureFlagsDecorator = WcpContext.createDecorator({\n decorator: WcpContextWithFeatureFlagsDecoratorImpl,\n dependencies: [FeatureFlags]\n});\n"],"names":["WcpContextWithFeatureFlagsDecoratorImpl","featureFlags","decoratee","project","flags","wcpFeatureId","featureId","WcpContextWithFeatureFlagsDecorator","WcpContext","FeatureFlags"],"mappings":"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"}
1
+ {"version":3,"file":"features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js","sources":["../../../../../src/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.ts"],"sourcesContent":["import type { WCP_FEATURE_LABEL } from \"@webiny/wcp\";\nimport type { WcpProject } from \"@webiny/wcp/types.js\";\nimport { WcpContext } from \"../abstractions.js\";\nimport { FeatureFlags } from \"../../../featureFlags/abstractions.js\";\n\nclass WcpContextWithFeatureFlagsDecoratorImpl implements WcpContext.Interface {\n constructor(\n private featureFlags: FeatureFlags.Interface,\n private decoratee: WcpContext.Interface\n ) {}\n\n getRawLicense() {\n return this.decoratee.getRawLicense();\n }\n\n getProject() {\n return this.decoratee.getProject();\n }\n\n getProjectWithFeatureFlags(): WcpProject | null {\n const project = this.decoratee.getProjectWithFeatureFlags();\n if (!project) {\n return null;\n }\n\n const flags = this.featureFlags.get();\n\n return {\n ...project,\n package: {\n ...project.package,\n features: {\n ...project.package.features,\n multiTenancy: project.package.features.multiTenancy,\n advancedPublishingWorkflow: {\n ...project.package.features.advancedPublishingWorkflow,\n enabled: flags.isEnabled(\"advancedPublishingWorkflow\")\n ? project.package.features.advancedPublishingWorkflow.enabled\n : false\n },\n advancedAccessControlLayer: {\n ...project.package.features.advancedAccessControlLayer,\n enabled: flags.isEnabled(\"advancedAccessControlLayer\")\n ? project.package.features.advancedAccessControlLayer.enabled\n : false,\n options: {\n teams: flags.isEnabled(\"advancedAccessControlLayer.teams\")\n ? project.package.features.advancedAccessControlLayer.options.teams\n : false,\n privateFiles: flags.isEnabled(\"advancedAccessControlLayer.privateFiles\")\n ? project.package.features.advancedAccessControlLayer.options\n .privateFiles\n : false,\n folderLevelPermissions: flags.isEnabled(\n \"advancedAccessControlLayer.folderLevelPermissions\"\n )\n ? project.package.features.advancedAccessControlLayer.options\n .folderLevelPermissions\n : false,\n hcmsFieldPermissions: flags.isEnabled(\n \"advancedAccessControlLayer.hcmsFieldPermissions\"\n )\n ? project.package.features.advancedAccessControlLayer.options\n .hcmsFieldPermissions\n : false\n }\n },\n auditLogs: {\n ...project.package.features.auditLogs,\n enabled: flags.isEnabled(\"auditLogs\")\n ? project.package.features.auditLogs.enabled\n : false\n },\n recordLocking: {\n ...project.package.features.recordLocking,\n enabled: flags.isEnabled(\"recordLocking\")\n ? project.package.features.recordLocking.enabled\n : false\n },\n fileManager: {\n ...project.package.features.fileManager,\n enabled: project.package.features.fileManager.enabled,\n options: {\n threatDetection: flags.isEnabled(\"fileManager.threatDetection\")\n ? project.package.features.fileManager.options.threatDetection\n : false\n }\n },\n aiPowerups: {\n ...project.package.features.aiPowerups,\n enabled: flags.isEnabled(\"aiPowerups\")\n ? project.package.features.aiPowerups?.enabled\n : false,\n options: {\n websiteBuilder: {\n pageGeneration: flags.isEnabled(\n \"aiPowerups.websiteBuilder.pageGeneration\"\n )\n ? project.package.features.aiPowerups?.options?.websiteBuilder\n ?.pageGeneration\n : false,\n pageTranslation: flags.isEnabled(\n \"aiPowerups.websiteBuilder.pageTranslation\"\n )\n ? project.package.features.aiPowerups?.options?.websiteBuilder\n ?.pageTranslation\n : false\n },\n fileManager: {\n imageEnrichment: flags.isEnabled(\n \"aiPowerups.fileManager.imageEnrichment\"\n )\n ? project.package.features.aiPowerups?.options?.fileManager\n ?.imageEnrichment\n : false\n },\n lexicalGeneration: flags.isEnabled(\"aiPowerups.lexicalGeneration\")\n ? project.package.features.aiPowerups?.options?.lexicalGeneration\n : false,\n adminAssistant: flags.isEnabled(\"aiPowerups.adminAssistant\")\n ? project.package.features.aiPowerups?.options?.adminAssistant\n : false,\n remoteComponents: flags.isEnabled(\"aiPowerups.remoteComponents\")\n ? project.package.features.aiPowerups?.options?.remoteComponents\n : false,\n cms: {\n entryGeneration: flags.isEnabled(\"aiPowerups.cms.entryGeneration\")\n ? project.package.features.aiPowerups?.options?.cms\n ?.entryGeneration\n : false,\n entryComparison: flags.isEnabled(\"aiPowerups.cms.entryComparison\")\n ? project.package.features.aiPowerups?.options?.cms\n ?.entryComparison\n : false,\n entryTranslation: flags.isEnabled(\"aiPowerups.cms.entryTranslation\")\n ? project.package.features.aiPowerups?.options?.cms\n ?.entryTranslation\n : false\n }\n }\n },\n abTesting: {\n ...project.package.features.abTesting,\n enabled: flags.isEnabled(\"abTesting\")\n ? project.package.features.abTesting?.enabled\n : false\n },\n collaboration: {\n ...project.package.features.collaboration,\n enabled: flags.isEnabled(\"collaboration\")\n ? project.package.features.collaboration?.enabled\n : false,\n options: {\n comments: flags.isEnabled(\"collaboration.comments\")\n ? project.package.features.collaboration?.options?.comments\n : false,\n activityLog: flags.isEnabled(\"collaboration.activityLog\")\n ? project.package.features.collaboration?.options?.activityLog\n : false\n }\n }\n }\n }\n };\n }\n\n getProjectEnvironment() {\n return this.decoratee.getProjectEnvironment();\n }\n\n getProjectLicense() {\n return this.decoratee.getProjectLicense();\n }\n\n canUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL) {\n return this.decoratee.canUseFeature(wcpFeatureId);\n }\n\n canUseAacl() {\n return (\n this.decoratee.canUseAacl() &&\n this.featureFlags.get().isEnabled(\"advancedAccessControlLayer\")\n );\n }\n\n canUseTeams() {\n return (\n this.decoratee.canUseTeams() &&\n this.featureFlags.get().isEnabled(\"advancedAccessControlLayer.teams\")\n );\n }\n\n canUseFolderLevelPermissions() {\n return (\n this.decoratee.canUseFolderLevelPermissions() &&\n this.featureFlags.get().isEnabled(\"advancedAccessControlLayer.folderLevelPermissions\")\n );\n }\n\n canUsePrivateFiles() {\n return (\n this.decoratee.canUsePrivateFiles() &&\n this.featureFlags.get().isEnabled(\"advancedAccessControlLayer.privateFiles\")\n );\n }\n\n canUseAuditLogs() {\n return this.decoratee.canUseAuditLogs() && this.featureFlags.get().isEnabled(\"auditLogs\");\n }\n\n canUseRecordLocking() {\n return (\n this.decoratee.canUseRecordLocking() &&\n this.featureFlags.get().isEnabled(\"recordLocking\")\n );\n }\n\n canUseFileManagerThreatDetection() {\n return (\n this.decoratee.canUseFileManagerThreatDetection() &&\n this.featureFlags.get().isEnabled(\"fileManager.threatDetection\")\n );\n }\n\n canUseWorkflows() {\n return (\n this.decoratee.canUseWorkflows() &&\n this.featureFlags.get().isEnabled(\"advancedPublishingWorkflow\")\n );\n }\n\n canUseHcmsFieldPermissions() {\n return (\n this.decoratee.canUseHcmsFieldPermissions() &&\n this.featureFlags.get().isEnabled(\"advancedAccessControlLayer.hcmsFieldPermissions\")\n );\n }\n\n canUseAiImageEnrichment() {\n return (\n this.decoratee.canUseAiImageEnrichment() &&\n this.featureFlags.get().isEnabled(\"aiPowerups.fileManager.imageEnrichment\")\n );\n }\n\n canUseAiPageGeneration() {\n return (\n this.decoratee.canUseAiPageGeneration() &&\n this.featureFlags.get().isEnabled(\"aiPowerups.websiteBuilder.pageGeneration\")\n );\n }\n\n canUseAiPageTranslation() {\n return (\n this.decoratee.canUseAiPageTranslation() &&\n this.featureFlags.get().isEnabled(\"aiPowerups.websiteBuilder.pageTranslation\")\n );\n }\n\n canUseAiLexicalGeneration() {\n return (\n this.decoratee.canUseAiLexicalGeneration() &&\n this.featureFlags.get().isEnabled(\"aiPowerups.lexicalGeneration\")\n );\n }\n\n canUseAiAdminAssistant() {\n return (\n this.decoratee.canUseAiAdminAssistant() &&\n this.featureFlags.get().isEnabled(\"aiPowerups.adminAssistant\")\n );\n }\n\n canUseAiEntryGeneration() {\n return (\n this.decoratee.canUseAiEntryGeneration() &&\n this.featureFlags.get().isEnabled(\"aiPowerups.cms.entryGeneration\")\n );\n }\n\n canUseAiEntryComparison() {\n return (\n this.decoratee.canUseAiEntryComparison() &&\n this.featureFlags.get().isEnabled(\"aiPowerups.cms.entryComparison\")\n );\n }\n\n canUseAiEntryTranslation() {\n return (\n this.decoratee.canUseAiEntryTranslation() &&\n this.featureFlags.get().isEnabled(\"aiPowerups.cms.entryTranslation\")\n );\n }\n\n canUseAiPowerups() {\n return this.decoratee.canUseAiPowerups() && this.featureFlags.get().isEnabled(\"aiPowerups\");\n }\n\n canUseAbTesting() {\n return this.decoratee.canUseAbTesting() && this.featureFlags.get().isEnabled(\"abTesting\");\n }\n\n canUseRemoteComponents() {\n return (\n this.decoratee.canUseRemoteComponents() &&\n this.featureFlags.get().isEnabled(\"aiPowerups.remoteComponents\")\n );\n }\n\n canUseCollaboration() {\n return (\n this.decoratee.canUseCollaboration() &&\n this.featureFlags.get().isEnabled(\"collaboration\")\n );\n }\n\n canUseComments() {\n return (\n this.decoratee.canUseComments() &&\n this.featureFlags.get().isEnabled(\"collaboration.comments\")\n );\n }\n\n canUseActivityLog() {\n return (\n this.decoratee.canUseActivityLog() &&\n this.featureFlags.get().isEnabled(\"collaboration.activityLog\")\n );\n }\n\n ensureCanUseFeature(featureId: keyof typeof WCP_FEATURE_LABEL) {\n return this.decoratee.ensureCanUseFeature(featureId);\n }\n\n async incrementSeats() {\n return this.decoratee.incrementSeats();\n }\n\n async decrementSeats() {\n return this.decoratee.decrementSeats();\n }\n\n async incrementTenants() {\n return this.decoratee.incrementTenants();\n }\n\n async decrementTenants() {\n return this.decoratee.decrementTenants();\n }\n\n toDto() {\n return this.decoratee.toDto();\n }\n}\n\nexport const WcpContextWithFeatureFlagsDecorator = WcpContext.createDecorator({\n decorator: WcpContextWithFeatureFlagsDecoratorImpl,\n dependencies: [FeatureFlags]\n});\n"],"names":["WcpContextWithFeatureFlagsDecoratorImpl","featureFlags","decoratee","project","flags","wcpFeatureId","featureId","WcpContextWithFeatureFlagsDecorator","WcpContext","FeatureFlags"],"mappings":";;AAKA,MAAMA;IACF,YACYC,YAAoC,EACpCC,SAA+B,CACzC;aAFUD,YAAY,GAAZA;aACAC,SAAS,GAATA;IACT;IAEH,gBAAgB;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa;IACvC;IAEA,aAAa;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU;IACpC;IAEA,6BAAgD;QAC5C,MAAMC,UAAU,IAAI,CAAC,SAAS,CAAC,0BAA0B;QACzD,IAAI,CAACA,SACD,OAAO;QAGX,MAAMC,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG;QAEnC,OAAO;YACH,GAAGD,OAAO;YACV,SAAS;gBACL,GAAGA,QAAQ,OAAO;gBAClB,UAAU;oBACN,GAAGA,QAAQ,OAAO,CAAC,QAAQ;oBAC3B,cAAcA,QAAQ,OAAO,CAAC,QAAQ,CAAC,YAAY;oBACnD,4BAA4B;wBACxB,GAAGA,QAAQ,OAAO,CAAC,QAAQ,CAAC,0BAA0B;wBACtD,SAASC,MAAM,SAAS,CAAC,gCACnBD,QAAQ,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,OAAO,GAC3D;oBACV;oBACA,4BAA4B;wBACxB,GAAGA,QAAQ,OAAO,CAAC,QAAQ,CAAC,0BAA0B;wBACtD,SAASC,MAAM,SAAS,CAAC,gCACnBD,QAAQ,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,OAAO,GAC3D;wBACN,SAAS;4BACL,OAAOC,MAAM,SAAS,CAAC,sCACjBD,QAAQ,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,OAAO,CAAC,KAAK,GACjE;4BACN,cAAcC,MAAM,SAAS,CAAC,6CACxBD,QAAQ,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,OAAO,CACtD,YAAY,GACjB;4BACN,wBAAwBC,MAAM,SAAS,CACnC,uDAEED,QAAQ,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,OAAO,CACtD,sBAAsB,GAC3B;4BACN,sBAAsBC,MAAM,SAAS,CACjC,qDAEED,QAAQ,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,OAAO,CACtD,oBAAoB,GACzB;wBACV;oBACJ;oBACA,WAAW;wBACP,GAAGA,QAAQ,OAAO,CAAC,QAAQ,CAAC,SAAS;wBACrC,SAASC,MAAM,SAAS,CAAC,eACnBD,QAAQ,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,GAC1C;oBACV;oBACA,eAAe;wBACX,GAAGA,QAAQ,OAAO,CAAC,QAAQ,CAAC,aAAa;wBACzC,SAASC,MAAM,SAAS,CAAC,mBACnBD,QAAQ,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,GAC9C;oBACV;oBACA,aAAa;wBACT,GAAGA,QAAQ,OAAO,CAAC,QAAQ,CAAC,WAAW;wBACvC,SAASA,QAAQ,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO;wBACrD,SAAS;4BACL,iBAAiBC,MAAM,SAAS,CAAC,iCAC3BD,QAAQ,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,GAC5D;wBACV;oBACJ;oBACA,YAAY;wBACR,GAAGA,QAAQ,OAAO,CAAC,QAAQ,CAAC,UAAU;wBACtC,SAASC,MAAM,SAAS,CAAC,gBACnBD,QAAQ,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,UACrC;wBACN,SAAS;4BACL,gBAAgB;gCACZ,gBAAgBC,MAAM,SAAS,CAC3B,8CAEED,QAAQ,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,gBACxC,iBACN;gCACN,iBAAiBC,MAAM,SAAS,CAC5B,+CAEED,QAAQ,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,gBACxC,kBACN;4BACV;4BACA,aAAa;gCACT,iBAAiBC,MAAM,SAAS,CAC5B,4CAEED,QAAQ,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,aACxC,kBACN;4BACV;4BACA,mBAAmBC,MAAM,SAAS,CAAC,kCAC7BD,QAAQ,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,oBAC9C;4BACN,gBAAgBC,MAAM,SAAS,CAAC,+BAC1BD,QAAQ,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,iBAC9C;4BACN,kBAAkBC,MAAM,SAAS,CAAC,iCAC5BD,QAAQ,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,mBAC9C;4BACN,KAAK;gCACD,iBAAiBC,MAAM,SAAS,CAAC,oCAC3BD,QAAQ,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,KACxC,kBACN;gCACN,iBAAiBC,MAAM,SAAS,CAAC,oCAC3BD,QAAQ,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,KACxC,kBACN;gCACN,kBAAkBC,MAAM,SAAS,CAAC,qCAC5BD,QAAQ,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,KACxC,mBACN;4BACV;wBACJ;oBACJ;oBACA,WAAW;wBACP,GAAGA,QAAQ,OAAO,CAAC,QAAQ,CAAC,SAAS;wBACrC,SAASC,MAAM,SAAS,CAAC,eACnBD,QAAQ,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,UACpC;oBACV;oBACA,eAAe;wBACX,GAAGA,QAAQ,OAAO,CAAC,QAAQ,CAAC,aAAa;wBACzC,SAASC,MAAM,SAAS,CAAC,mBACnBD,QAAQ,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,UACxC;wBACN,SAAS;4BACL,UAAUC,MAAM,SAAS,CAAC,4BACpBD,QAAQ,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,WACjD;4BACN,aAAaC,MAAM,SAAS,CAAC,+BACvBD,QAAQ,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,cACjD;wBACV;oBACJ;gBACJ;YACJ;QACJ;IACJ;IAEA,wBAAwB;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,qBAAqB;IAC/C;IAEA,oBAAoB;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB;IAC3C;IAEA,cAAcE,YAA4C,EAAE;QACxD,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAACA;IACxC;IAEA,aAAa;QACT,OACI,IAAI,CAAC,SAAS,CAAC,UAAU,MACzB,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IAE1C;IAEA,cAAc;QACV,OACI,IAAI,CAAC,SAAS,CAAC,WAAW,MAC1B,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IAE1C;IAEA,+BAA+B;QAC3B,OACI,IAAI,CAAC,SAAS,CAAC,4BAA4B,MAC3C,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IAE1C;IAEA,qBAAqB;QACjB,OACI,IAAI,CAAC,SAAS,CAAC,kBAAkB,MACjC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IAE1C;IAEA,kBAAkB;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IACjF;IAEA,sBAAsB;QAClB,OACI,IAAI,CAAC,SAAS,CAAC,mBAAmB,MAClC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IAE1C;IAEA,mCAAmC;QAC/B,OACI,IAAI,CAAC,SAAS,CAAC,gCAAgC,MAC/C,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IAE1C;IAEA,kBAAkB;QACd,OACI,IAAI,CAAC,SAAS,CAAC,eAAe,MAC9B,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IAE1C;IAEA,6BAA6B;QACzB,OACI,IAAI,CAAC,SAAS,CAAC,0BAA0B,MACzC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IAE1C;IAEA,0BAA0B;QACtB,OACI,IAAI,CAAC,SAAS,CAAC,uBAAuB,MACtC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IAE1C;IAEA,yBAAyB;QACrB,OACI,IAAI,CAAC,SAAS,CAAC,sBAAsB,MACrC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IAE1C;IAEA,0BAA0B;QACtB,OACI,IAAI,CAAC,SAAS,CAAC,uBAAuB,MACtC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IAE1C;IAEA,4BAA4B;QACxB,OACI,IAAI,CAAC,SAAS,CAAC,yBAAyB,MACxC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IAE1C;IAEA,yBAAyB;QACrB,OACI,IAAI,CAAC,SAAS,CAAC,sBAAsB,MACrC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IAE1C;IAEA,0BAA0B;QACtB,OACI,IAAI,CAAC,SAAS,CAAC,uBAAuB,MACtC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IAE1C;IAEA,0BAA0B;QACtB,OACI,IAAI,CAAC,SAAS,CAAC,uBAAuB,MACtC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IAE1C;IAEA,2BAA2B;QACvB,OACI,IAAI,CAAC,SAAS,CAAC,wBAAwB,MACvC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IAE1C;IAEA,mBAAmB;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IAClF;IAEA,kBAAkB;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IACjF;IAEA,yBAAyB;QACrB,OACI,IAAI,CAAC,SAAS,CAAC,sBAAsB,MACrC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IAE1C;IAEA,sBAAsB;QAClB,OACI,IAAI,CAAC,SAAS,CAAC,mBAAmB,MAClC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IAE1C;IAEA,iBAAiB;QACb,OACI,IAAI,CAAC,SAAS,CAAC,cAAc,MAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IAE1C;IAEA,oBAAoB;QAChB,OACI,IAAI,CAAC,SAAS,CAAC,iBAAiB,MAChC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,SAAS,CAAC;IAE1C;IAEA,oBAAoBC,SAAyC,EAAE;QAC3D,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAACA;IAC9C;IAEA,MAAM,iBAAiB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc;IACxC;IAEA,MAAM,iBAAiB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc;IACxC;IAEA,MAAM,mBAAmB;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB;IAC1C;IAEA,MAAM,mBAAmB;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB;IAC1C;IAEA,QAAQ;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK;IAC/B;AACJ;AAEO,MAAMC,sCAAsCC,WAAW,eAAe,CAAC;IAC1E,WAAWR;IACX,cAAc;QAACS;KAAa;AAChC"}
@@ -19,7 +19,7 @@ class WcpSchemaFactoryImpl {
19
19
  fileManager: WcpProjectPackageFeaturesFeature
20
20
  aiPowerups: WcpProjectPackageFeaturesFeature
21
21
  abTesting: WcpProjectPackageFeaturesFeature
22
- remoteComponents: WcpProjectPackageFeaturesFeature
22
+ collaboration: WcpProjectPackageFeaturesFeature
23
23
  }
24
24
 
25
25
  type WcpProjectPackage {
@@ -1 +1 @@
1
- {"version":3,"file":"graphql/wcp/WcpSchemaFactory.js","sources":["../../../src/graphql/wcp/WcpSchemaFactory.ts"],"sourcesContent":["import { CoreGraphQLSchemaFactory } from \"@webiny/api-graphql/graphql/abstractions.js\";\nimport type { IGraphQLSchemaBuilder } from \"@webiny/api-graphql/features/GraphQLSchemaBuilder/abstractions.js\";\nimport { ErrorResponse, Response } from \"@webiny/api-graphql/responses.js\";\nimport { WcpContext } from \"~/features/wcp/WcpContext/index.js\";\n\nclass WcpSchemaFactoryImpl implements CoreGraphQLSchemaFactory.Interface {\n async execute(builder: IGraphQLSchemaBuilder): Promise<IGraphQLSchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n type WcpProjectPackageFeaturesFeature {\n enabled: Boolean\n options: JSON\n }\n\n type WcpProjectPackageFeatures {\n seats: WcpProjectPackageFeaturesFeature\n multiTenancy: WcpProjectPackageFeaturesFeature\n advancedPublishingWorkflow: WcpProjectPackageFeaturesFeature\n advancedAccessControlLayer: WcpProjectPackageFeaturesFeature\n auditLogs: WcpProjectPackageFeaturesFeature\n recordLocking: WcpProjectPackageFeaturesFeature\n fileManager: WcpProjectPackageFeaturesFeature\n aiPowerups: WcpProjectPackageFeaturesFeature\n abTesting: WcpProjectPackageFeaturesFeature\n remoteComponents: WcpProjectPackageFeaturesFeature\n }\n\n type WcpProjectPackage {\n features: WcpProjectPackageFeatures\n }\n\n type WcpProject {\n orgId: ID\n projectId: ID\n package: WcpProjectPackage\n }\n\n type WcpError {\n code: String\n message: String\n data: JSON\n stack: String\n }\n\n type WcpProjectResponse {\n data: WcpProject\n error: WcpError\n }\n\n type WcpQuery {\n getProject: WcpProjectResponse\n }\n\n type WcpMutation {\n updateProject: WcpProjectResponse\n }\n\n extend type Query {\n wcp: WcpQuery\n }\n\n extend type Mutation {\n wcp: WcpMutation\n }\n `);\n\n builder.addResolver({\n path: \"Query.wcp\",\n resolver: () => async () => ({})\n });\n\n builder.addResolver({\n path: \"WcpQuery.getProject\",\n dependencies: [WcpContext],\n resolver: (wcpContext: WcpContext.Interface) => async () => {\n try {\n const project = wcpContext.getProjectWithFeatureFlags();\n\n if (!project) {\n throw Error(`Could not get project!`);\n }\n\n return new Response(project);\n } catch (e) {\n return new ErrorResponse({\n code: \"COULD_NOT_GET_PROJECT\",\n message: e.message,\n data: null,\n stack: e.stack\n });\n }\n }\n });\n\n return builder;\n }\n}\n\nexport const WcpSchemaFactory = CoreGraphQLSchemaFactory.createImplementation({\n implementation: WcpSchemaFactoryImpl,\n dependencies: []\n});\n"],"names":["WcpSchemaFactoryImpl","builder","WcpContext","wcpContext","project","Error","Response","e","ErrorResponse","WcpSchemaFactory","CoreGraphQLSchemaFactory"],"mappings":";;;AAKA,MAAMA;IACF,MAAM,QAAQC,OAA8B,EAAkC;QAC1EA,QAAQ,WAAW,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAwDnC,CAAC;QAEDA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,UAAU,IAAM,UAAa,EAAC;QAClC;QAEAA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,cAAc;gBAACC;aAAW;YAC1B,UAAU,CAACC,aAAqC;oBAC5C,IAAI;wBACA,MAAMC,UAAUD,WAAW,0BAA0B;wBAErD,IAAI,CAACC,SACD,MAAMC,MAAM;wBAGhB,OAAO,IAAIC,SAASF;oBACxB,EAAE,OAAOG,GAAG;wBACR,OAAO,IAAIC,cAAc;4BACrB,MAAM;4BACN,SAASD,EAAE,OAAO;4BAClB,MAAM;4BACN,OAAOA,EAAE,KAAK;wBAClB;oBACJ;gBACJ;QACJ;QAEA,OAAON;IACX;AACJ;AAEO,MAAMQ,mBAAmBC,yBAAyB,oBAAoB,CAAC;IAC1E,gBAAgBV;IAChB,cAAc,EAAE;AACpB"}
1
+ {"version":3,"file":"graphql/wcp/WcpSchemaFactory.js","sources":["../../../src/graphql/wcp/WcpSchemaFactory.ts"],"sourcesContent":["import { CoreGraphQLSchemaFactory } from \"@webiny/api-graphql/graphql/abstractions.js\";\nimport type { IGraphQLSchemaBuilder } from \"@webiny/api-graphql/features/GraphQLSchemaBuilder/abstractions.js\";\nimport { ErrorResponse, Response } from \"@webiny/api-graphql/responses.js\";\nimport { WcpContext } from \"~/features/wcp/WcpContext/index.js\";\n\nclass WcpSchemaFactoryImpl implements CoreGraphQLSchemaFactory.Interface {\n async execute(builder: IGraphQLSchemaBuilder): Promise<IGraphQLSchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n type WcpProjectPackageFeaturesFeature {\n enabled: Boolean\n options: JSON\n }\n\n type WcpProjectPackageFeatures {\n seats: WcpProjectPackageFeaturesFeature\n multiTenancy: WcpProjectPackageFeaturesFeature\n advancedPublishingWorkflow: WcpProjectPackageFeaturesFeature\n advancedAccessControlLayer: WcpProjectPackageFeaturesFeature\n auditLogs: WcpProjectPackageFeaturesFeature\n recordLocking: WcpProjectPackageFeaturesFeature\n fileManager: WcpProjectPackageFeaturesFeature\n aiPowerups: WcpProjectPackageFeaturesFeature\n abTesting: WcpProjectPackageFeaturesFeature\n collaboration: WcpProjectPackageFeaturesFeature\n }\n\n type WcpProjectPackage {\n features: WcpProjectPackageFeatures\n }\n\n type WcpProject {\n orgId: ID\n projectId: ID\n package: WcpProjectPackage\n }\n\n type WcpError {\n code: String\n message: String\n data: JSON\n stack: String\n }\n\n type WcpProjectResponse {\n data: WcpProject\n error: WcpError\n }\n\n type WcpQuery {\n getProject: WcpProjectResponse\n }\n\n type WcpMutation {\n updateProject: WcpProjectResponse\n }\n\n extend type Query {\n wcp: WcpQuery\n }\n\n extend type Mutation {\n wcp: WcpMutation\n }\n `);\n\n builder.addResolver({\n path: \"Query.wcp\",\n resolver: () => async () => ({})\n });\n\n builder.addResolver({\n path: \"WcpQuery.getProject\",\n dependencies: [WcpContext],\n resolver: (wcpContext: WcpContext.Interface) => async () => {\n try {\n const project = wcpContext.getProjectWithFeatureFlags();\n\n if (!project) {\n throw Error(`Could not get project!`);\n }\n\n return new Response(project);\n } catch (e) {\n return new ErrorResponse({\n code: \"COULD_NOT_GET_PROJECT\",\n message: e.message,\n data: null,\n stack: e.stack\n });\n }\n }\n });\n\n return builder;\n }\n}\n\nexport const WcpSchemaFactory = CoreGraphQLSchemaFactory.createImplementation({\n implementation: WcpSchemaFactoryImpl,\n dependencies: []\n});\n"],"names":["WcpSchemaFactoryImpl","builder","WcpContext","wcpContext","project","Error","Response","e","ErrorResponse","WcpSchemaFactory","CoreGraphQLSchemaFactory"],"mappings":";;;AAKA,MAAMA;IACF,MAAM,QAAQC,OAA8B,EAAkC;QAC1EA,QAAQ,WAAW,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAwDnC,CAAC;QAEDA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,UAAU,IAAM,UAAa,EAAC;QAClC;QAEAA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,cAAc;gBAACC;aAAW;YAC1B,UAAU,CAACC,aAAqC;oBAC5C,IAAI;wBACA,MAAMC,UAAUD,WAAW,0BAA0B;wBAErD,IAAI,CAACC,SACD,MAAMC,MAAM;wBAGhB,OAAO,IAAIC,SAASF;oBACxB,EAAE,OAAOG,GAAG;wBACR,OAAO,IAAIC,cAAc;4BACrB,MAAM;4BACN,SAASD,EAAE,OAAO;4BAClB,MAAM;4BACN,OAAOA,EAAE,KAAK;wBAClB;oBACJ;gBACJ;QACJ;QAEA,OAAON;IACX;AACJ;AAEO,MAAMQ,mBAAmBC,yBAAyB,oBAAoB,CAAC;IAC1E,gBAAgBV;IAChB,cAAc,EAAE;AACpB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-core",
3
- "version": "6.6.0-alpha.4",
3
+ "version": "6.6.0-alpha.5",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -16,16 +16,16 @@
16
16
  "dependencies": {
17
17
  "@ai-sdk/anthropic": "4.0.40",
18
18
  "@ai-sdk/openai": "4.0.45",
19
- "@webiny/api": "6.6.0-alpha.4",
20
- "@webiny/api-graphql": "6.6.0-alpha.4",
19
+ "@webiny/api": "6.6.0-alpha.5",
20
+ "@webiny/api-graphql": "6.6.0-alpha.5",
21
21
  "@webiny/di": "1.1.0",
22
- "@webiny/error": "6.6.0-alpha.4",
23
- "@webiny/event-handler-core": "6.6.0-alpha.4",
24
- "@webiny/feature": "6.6.0-alpha.4",
25
- "@webiny/feature-flags": "6.6.0-alpha.4",
26
- "@webiny/handler": "6.6.0-alpha.4",
27
- "@webiny/utils": "6.6.0-alpha.4",
28
- "@webiny/wcp": "6.6.0-alpha.4",
22
+ "@webiny/error": "6.6.0-alpha.5",
23
+ "@webiny/event-handler-core": "6.6.0-alpha.5",
24
+ "@webiny/feature": "6.6.0-alpha.5",
25
+ "@webiny/feature-flags": "6.6.0-alpha.5",
26
+ "@webiny/handler": "6.6.0-alpha.5",
27
+ "@webiny/utils": "6.6.0-alpha.5",
28
+ "@webiny/wcp": "6.6.0-alpha.5",
29
29
  "ai": "7.0.73",
30
30
  "dataloader": "2.2.3",
31
31
  "graphql": "16.14.2",
@@ -40,7 +40,7 @@
40
40
  },
41
41
  "devDependencies": {
42
42
  "@types/jsonwebtoken": "9.0.10",
43
- "@webiny/build-tools": "6.6.0-alpha.4",
43
+ "@webiny/build-tools": "6.6.0-alpha.5",
44
44
  "rimraf": "6.1.3",
45
45
  "typescript": "7.0.2",
46
46
  "vitest": "4.1.11"