@webiny/api-core 6.0.0-rc.1 → 6.0.0-rc.3

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 (145) hide show
  1. package/ApiCoreFeature.js +2 -0
  2. package/ApiCoreFeature.js.map +1 -1
  3. package/features/featureFlags/FeatureFlags.d.ts +12 -0
  4. package/features/featureFlags/FeatureFlags.js +18 -0
  5. package/features/featureFlags/FeatureFlags.js.map +1 -0
  6. package/features/featureFlags/abstractions.d.ts +8 -0
  7. package/features/featureFlags/abstractions.js +4 -0
  8. package/features/featureFlags/abstractions.js.map +1 -0
  9. package/features/featureFlags/feature.d.ts +1 -0
  10. package/features/featureFlags/feature.js +10 -0
  11. package/features/featureFlags/feature.js.map +1 -0
  12. package/features/security/permissions/createPermissions.js +30 -11
  13. package/features/security/permissions/createPermissions.js.map +1 -1
  14. package/features/security/permissions/types.d.ts +6 -3
  15. package/features/security/permissions/types.js.map +1 -1
  16. package/features/wcp/WcpContext/WcpContext.d.ts +2 -0
  17. package/features/wcp/WcpContext/WcpContext.js +6 -0
  18. package/features/wcp/WcpContext/WcpContext.js.map +1 -1
  19. package/features/wcp/WcpContext/abstractions.d.ts +1 -0
  20. package/features/wcp/WcpContext/abstractions.js.map +1 -1
  21. package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.d.ts +79 -0
  22. package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js +121 -0
  23. package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js.map +1 -0
  24. package/features/wcp/WcpFeature.js +2 -0
  25. package/features/wcp/WcpFeature.js.map +1 -1
  26. package/graphql/wcp/graphql.js +1 -1
  27. package/graphql/wcp/graphql.js.map +1 -1
  28. package/legacy/wcp/LegacyWcpContext.d.ts +2 -0
  29. package/legacy/wcp/LegacyWcpContext.js +6 -0
  30. package/legacy/wcp/LegacyWcpContext.js.map +1 -1
  31. package/package.json +17 -18
  32. package/extensions/BuildParam.d.ts +0 -11
  33. package/extensions/BuildParam.js +0 -119
  34. package/extensions/BuildParam.js.map +0 -1
  35. package/extensions/GenericExtension.d.ts +0 -10
  36. package/extensions/GenericExtension.js +0 -7
  37. package/extensions/GenericExtension.js.map +0 -1
  38. package/extensions/eventHandlers/AfterAuthentication.d.ts +0 -10
  39. package/extensions/eventHandlers/AfterAuthentication.js +0 -9
  40. package/extensions/eventHandlers/AfterAuthentication.js.map +0 -1
  41. package/extensions/eventHandlers/ApiKeyAfterCreate.d.ts +0 -10
  42. package/extensions/eventHandlers/ApiKeyAfterCreate.js +0 -9
  43. package/extensions/eventHandlers/ApiKeyAfterCreate.js.map +0 -1
  44. package/extensions/eventHandlers/ApiKeyAfterDelete.d.ts +0 -10
  45. package/extensions/eventHandlers/ApiKeyAfterDelete.js +0 -9
  46. package/extensions/eventHandlers/ApiKeyAfterDelete.js.map +0 -1
  47. package/extensions/eventHandlers/ApiKeyAfterUpdate.d.ts +0 -10
  48. package/extensions/eventHandlers/ApiKeyAfterUpdate.js +0 -9
  49. package/extensions/eventHandlers/ApiKeyAfterUpdate.js.map +0 -1
  50. package/extensions/eventHandlers/ApiKeyBeforeCreate.d.ts +0 -10
  51. package/extensions/eventHandlers/ApiKeyBeforeCreate.js +0 -9
  52. package/extensions/eventHandlers/ApiKeyBeforeCreate.js.map +0 -1
  53. package/extensions/eventHandlers/ApiKeyBeforeDelete.d.ts +0 -10
  54. package/extensions/eventHandlers/ApiKeyBeforeDelete.js +0 -9
  55. package/extensions/eventHandlers/ApiKeyBeforeDelete.js.map +0 -1
  56. package/extensions/eventHandlers/ApiKeyBeforeUpdate.d.ts +0 -10
  57. package/extensions/eventHandlers/ApiKeyBeforeUpdate.js +0 -9
  58. package/extensions/eventHandlers/ApiKeyBeforeUpdate.js.map +0 -1
  59. package/extensions/eventHandlers/BeforeAuthentication.d.ts +0 -10
  60. package/extensions/eventHandlers/BeforeAuthentication.js +0 -9
  61. package/extensions/eventHandlers/BeforeAuthentication.js.map +0 -1
  62. package/extensions/eventHandlers/RoleAfterCreate.d.ts +0 -10
  63. package/extensions/eventHandlers/RoleAfterCreate.js +0 -9
  64. package/extensions/eventHandlers/RoleAfterCreate.js.map +0 -1
  65. package/extensions/eventHandlers/RoleAfterDelete.d.ts +0 -10
  66. package/extensions/eventHandlers/RoleAfterDelete.js +0 -9
  67. package/extensions/eventHandlers/RoleAfterDelete.js.map +0 -1
  68. package/extensions/eventHandlers/RoleAfterUpdate.d.ts +0 -10
  69. package/extensions/eventHandlers/RoleAfterUpdate.js +0 -9
  70. package/extensions/eventHandlers/RoleAfterUpdate.js.map +0 -1
  71. package/extensions/eventHandlers/RoleBeforeCreate.d.ts +0 -10
  72. package/extensions/eventHandlers/RoleBeforeCreate.js +0 -9
  73. package/extensions/eventHandlers/RoleBeforeCreate.js.map +0 -1
  74. package/extensions/eventHandlers/RoleBeforeDelete.d.ts +0 -10
  75. package/extensions/eventHandlers/RoleBeforeDelete.js +0 -9
  76. package/extensions/eventHandlers/RoleBeforeDelete.js.map +0 -1
  77. package/extensions/eventHandlers/RoleBeforeUpdate.d.ts +0 -10
  78. package/extensions/eventHandlers/RoleBeforeUpdate.js +0 -9
  79. package/extensions/eventHandlers/RoleBeforeUpdate.js.map +0 -1
  80. package/extensions/eventHandlers/SystemInstalled.d.ts +0 -10
  81. package/extensions/eventHandlers/SystemInstalled.js +0 -9
  82. package/extensions/eventHandlers/SystemInstalled.js.map +0 -1
  83. package/extensions/eventHandlers/TeamAfterCreate.d.ts +0 -10
  84. package/extensions/eventHandlers/TeamAfterCreate.js +0 -9
  85. package/extensions/eventHandlers/TeamAfterCreate.js.map +0 -1
  86. package/extensions/eventHandlers/TeamAfterDelete.d.ts +0 -10
  87. package/extensions/eventHandlers/TeamAfterDelete.js +0 -9
  88. package/extensions/eventHandlers/TeamAfterDelete.js.map +0 -1
  89. package/extensions/eventHandlers/TeamAfterUpdate.d.ts +0 -10
  90. package/extensions/eventHandlers/TeamAfterUpdate.js +0 -9
  91. package/extensions/eventHandlers/TeamAfterUpdate.js.map +0 -1
  92. package/extensions/eventHandlers/TeamBeforeCreate.d.ts +0 -10
  93. package/extensions/eventHandlers/TeamBeforeCreate.js +0 -9
  94. package/extensions/eventHandlers/TeamBeforeCreate.js.map +0 -1
  95. package/extensions/eventHandlers/TeamBeforeDelete.d.ts +0 -10
  96. package/extensions/eventHandlers/TeamBeforeDelete.js +0 -9
  97. package/extensions/eventHandlers/TeamBeforeDelete.js.map +0 -1
  98. package/extensions/eventHandlers/TeamBeforeUpdate.d.ts +0 -10
  99. package/extensions/eventHandlers/TeamBeforeUpdate.js +0 -9
  100. package/extensions/eventHandlers/TeamBeforeUpdate.js.map +0 -1
  101. package/extensions/eventHandlers/TenantAfterCreate.d.ts +0 -10
  102. package/extensions/eventHandlers/TenantAfterCreate.js +0 -9
  103. package/extensions/eventHandlers/TenantAfterCreate.js.map +0 -1
  104. package/extensions/eventHandlers/TenantAfterDelete.d.ts +0 -10
  105. package/extensions/eventHandlers/TenantAfterDelete.js +0 -9
  106. package/extensions/eventHandlers/TenantAfterDelete.js.map +0 -1
  107. package/extensions/eventHandlers/TenantAfterUpdate.d.ts +0 -10
  108. package/extensions/eventHandlers/TenantAfterUpdate.js +0 -9
  109. package/extensions/eventHandlers/TenantAfterUpdate.js.map +0 -1
  110. package/extensions/eventHandlers/TenantBeforeCreate.d.ts +0 -10
  111. package/extensions/eventHandlers/TenantBeforeCreate.js +0 -9
  112. package/extensions/eventHandlers/TenantBeforeCreate.js.map +0 -1
  113. package/extensions/eventHandlers/TenantBeforeDelete.d.ts +0 -10
  114. package/extensions/eventHandlers/TenantBeforeDelete.js +0 -9
  115. package/extensions/eventHandlers/TenantBeforeDelete.js.map +0 -1
  116. package/extensions/eventHandlers/TenantBeforeUpdate.d.ts +0 -10
  117. package/extensions/eventHandlers/TenantBeforeUpdate.js +0 -9
  118. package/extensions/eventHandlers/TenantBeforeUpdate.js.map +0 -1
  119. package/extensions/eventHandlers/TenantInstalled.d.ts +0 -10
  120. package/extensions/eventHandlers/TenantInstalled.js +0 -9
  121. package/extensions/eventHandlers/TenantInstalled.js.map +0 -1
  122. package/extensions/eventHandlers/UserAfterCreate.d.ts +0 -10
  123. package/extensions/eventHandlers/UserAfterCreate.js +0 -9
  124. package/extensions/eventHandlers/UserAfterCreate.js.map +0 -1
  125. package/extensions/eventHandlers/UserAfterDelete.d.ts +0 -10
  126. package/extensions/eventHandlers/UserAfterDelete.js +0 -9
  127. package/extensions/eventHandlers/UserAfterDelete.js.map +0 -1
  128. package/extensions/eventHandlers/UserAfterUpdate.d.ts +0 -10
  129. package/extensions/eventHandlers/UserAfterUpdate.js +0 -9
  130. package/extensions/eventHandlers/UserAfterUpdate.js.map +0 -1
  131. package/extensions/eventHandlers/UserBeforeCreate.d.ts +0 -10
  132. package/extensions/eventHandlers/UserBeforeCreate.js +0 -9
  133. package/extensions/eventHandlers/UserBeforeCreate.js.map +0 -1
  134. package/extensions/eventHandlers/UserBeforeDelete.d.ts +0 -10
  135. package/extensions/eventHandlers/UserBeforeDelete.js +0 -9
  136. package/extensions/eventHandlers/UserBeforeDelete.js.map +0 -1
  137. package/extensions/eventHandlers/UserBeforeUpdate.d.ts +0 -10
  138. package/extensions/eventHandlers/UserBeforeUpdate.js +0 -9
  139. package/extensions/eventHandlers/UserBeforeUpdate.js.map +0 -1
  140. package/extensions/eventHandlers/index.d.ts +0 -34
  141. package/extensions/eventHandlers/index.js +0 -49
  142. package/extensions/eventHandlers/index.js.map +0 -1
  143. package/extensions/index.d.ts +0 -58
  144. package/extensions/index.js +0 -49
  145. package/extensions/index.js.map +0 -1
@@ -0,0 +1,121 @@
1
+ import { WcpContext } from "../abstractions.js";
2
+ import { FeatureFlags } from "../../../featureFlags/abstractions.js";
3
+ class WcpContextWithFeatureFlagsDecoratorImpl {
4
+ constructor(featureFlags, decoratee) {
5
+ this.featureFlags = featureFlags;
6
+ this.decoratee = decoratee;
7
+ }
8
+ getRawLicense() {
9
+ return this.decoratee.getRawLicense();
10
+ }
11
+ getProject() {
12
+ return this.decoratee.getProject();
13
+ }
14
+ getProjectWithFeatureFlags() {
15
+ const project = this.decoratee.getProjectWithFeatureFlags();
16
+ if (!project) {
17
+ return null;
18
+ }
19
+ const flags = this.featureFlags.get();
20
+ console.log("flags", flags);
21
+ return {
22
+ ...project,
23
+ package: {
24
+ ...project.package,
25
+ features: {
26
+ ...project.package.features,
27
+ multiTenancy: project.package.features.multiTenancy,
28
+ advancedPublishingWorkflow: {
29
+ ...project.package.features.advancedPublishingWorkflow,
30
+ enabled: flags.isWorkflowsEnabled() ? project.package.features.advancedPublishingWorkflow.enabled : false
31
+ },
32
+ advancedAccessControlLayer: {
33
+ ...project.package.features.advancedAccessControlLayer,
34
+ enabled: flags.isAaclEnabled() ? project.package.features.advancedAccessControlLayer.enabled : false,
35
+ options: {
36
+ teams: flags.isTeamsEnabled() ? project.package.features.advancedAccessControlLayer.options.teams : false,
37
+ privateFiles: flags.isPrivateFilesEnabled() ? project.package.features.advancedAccessControlLayer.options.privateFiles : false,
38
+ folderLevelPermissions: flags.isFolderLevelPermissionsEnabled() ? project.package.features.advancedAccessControlLayer.options.folderLevelPermissions : false,
39
+ hcmsFieldPermissions: project.package.features.advancedAccessControlLayer.options.hcmsFieldPermissions
40
+ }
41
+ },
42
+ auditLogs: {
43
+ ...project.package.features.auditLogs,
44
+ enabled: flags.isAuditLogsEnabled() ? project.package.features.auditLogs.enabled : false
45
+ },
46
+ recordLocking: {
47
+ ...project.package.features.recordLocking,
48
+ enabled: flags.isRecordLockingEnabled() ? project.package.features.recordLocking.enabled : false
49
+ },
50
+ fileManager: {
51
+ ...project.package.features.fileManager,
52
+ enabled: project.package.features.fileManager.enabled,
53
+ options: {
54
+ threatDetection: flags.isFileManagerThreatDetectionEnabled() ? project.package.features.fileManager.options.threatDetection : false
55
+ }
56
+ }
57
+ }
58
+ }
59
+ };
60
+ }
61
+ getProjectEnvironment() {
62
+ return this.decoratee.getProjectEnvironment();
63
+ }
64
+ getProjectLicense() {
65
+ return this.decoratee.getProjectLicense();
66
+ }
67
+ canUseFeature(wcpFeatureId) {
68
+ return this.decoratee.canUseFeature(wcpFeatureId);
69
+ }
70
+ canUseAacl() {
71
+ return this.decoratee.canUseAacl() && this.featureFlags.get().isAaclEnabled();
72
+ }
73
+ canUseTeams() {
74
+ return this.decoratee.canUseTeams() && this.featureFlags.get().isTeamsEnabled();
75
+ }
76
+ canUseFolderLevelPermissions() {
77
+ return this.decoratee.canUseFolderLevelPermissions() && this.featureFlags.get().isFolderLevelPermissionsEnabled();
78
+ }
79
+ canUsePrivateFiles() {
80
+ return this.decoratee.canUsePrivateFiles() && this.featureFlags.get().isPrivateFilesEnabled();
81
+ }
82
+ canUseAuditLogs() {
83
+ return this.decoratee.canUseAuditLogs() && this.featureFlags.get().isAuditLogsEnabled();
84
+ }
85
+ canUseRecordLocking() {
86
+ return this.decoratee.canUseRecordLocking() && this.featureFlags.get().isRecordLockingEnabled();
87
+ }
88
+ canUseFileManagerThreatDetection() {
89
+ return this.decoratee.canUseFileManagerThreatDetection() && this.featureFlags.get().isFileManagerThreatDetectionEnabled();
90
+ }
91
+ canUseWorkflows() {
92
+ return this.decoratee.canUseWorkflows() && this.featureFlags.get().isWorkflowsEnabled();
93
+ }
94
+ canUseHcmsFieldPermissions() {
95
+ return this.decoratee.canUseHcmsFieldPermissions();
96
+ }
97
+ ensureCanUseFeature(featureId) {
98
+ return this.decoratee.ensureCanUseFeature(featureId);
99
+ }
100
+ async incrementSeats() {
101
+ return this.decoratee.incrementSeats();
102
+ }
103
+ async decrementSeats() {
104
+ return this.decoratee.decrementSeats();
105
+ }
106
+ async incrementTenants() {
107
+ return this.decoratee.incrementTenants();
108
+ }
109
+ async decrementTenants() {
110
+ return this.decoratee.decrementTenants();
111
+ }
112
+ toDto() {
113
+ return this.decoratee.toDto();
114
+ }
115
+ }
116
+ export const WcpContextWithFeatureFlagsDecorator = WcpContext.createDecorator({
117
+ decorator: WcpContextWithFeatureFlagsDecoratorImpl,
118
+ dependencies: [FeatureFlags]
119
+ });
120
+
121
+ //# sourceMappingURL=WcpContextWithFeatureFlagsDecorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["WcpContext","FeatureFlags","WcpContextWithFeatureFlagsDecoratorImpl","constructor","featureFlags","decoratee","getRawLicense","getProject","getProjectWithFeatureFlags","project","flags","get","console","log","package","features","multiTenancy","advancedPublishingWorkflow","enabled","isWorkflowsEnabled","advancedAccessControlLayer","isAaclEnabled","options","teams","isTeamsEnabled","privateFiles","isPrivateFilesEnabled","folderLevelPermissions","isFolderLevelPermissionsEnabled","hcmsFieldPermissions","auditLogs","isAuditLogsEnabled","recordLocking","isRecordLockingEnabled","fileManager","threatDetection","isFileManagerThreatDetectionEnabled","getProjectEnvironment","getProjectLicense","canUseFeature","wcpFeatureId","canUseAacl","canUseTeams","canUseFolderLevelPermissions","canUsePrivateFiles","canUseAuditLogs","canUseRecordLocking","canUseFileManagerThreatDetection","canUseWorkflows","canUseHcmsFieldPermissions","ensureCanUseFeature","featureId","incrementSeats","decrementSeats","incrementTenants","decrementTenants","toDto","WcpContextWithFeatureFlagsDecorator","createDecorator","decorator","dependencies"],"sources":["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 console.log(\"flags\", flags);\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.isWorkflowsEnabled()\n ? project.package.features.advancedPublishingWorkflow.enabled\n : false\n },\n advancedAccessControlLayer: {\n ...project.package.features.advancedAccessControlLayer,\n enabled: flags.isAaclEnabled()\n ? project.package.features.advancedAccessControlLayer.enabled\n : false,\n options: {\n teams: flags.isTeamsEnabled()\n ? project.package.features.advancedAccessControlLayer.options.teams\n : false,\n privateFiles: flags.isPrivateFilesEnabled()\n ? project.package.features.advancedAccessControlLayer.options\n .privateFiles\n : false,\n folderLevelPermissions: flags.isFolderLevelPermissionsEnabled()\n ? project.package.features.advancedAccessControlLayer.options\n .folderLevelPermissions\n : false,\n hcmsFieldPermissions:\n project.package.features.advancedAccessControlLayer.options\n .hcmsFieldPermissions\n }\n },\n auditLogs: {\n ...project.package.features.auditLogs,\n enabled: flags.isAuditLogsEnabled()\n ? project.package.features.auditLogs.enabled\n : false\n },\n recordLocking: {\n ...project.package.features.recordLocking,\n enabled: flags.isRecordLockingEnabled()\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.isFileManagerThreatDetectionEnabled()\n ? project.package.features.fileManager.options.threatDetection\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 this.decoratee.canUseAacl() && this.featureFlags.get().isAaclEnabled();\n }\n\n canUseTeams() {\n return this.decoratee.canUseTeams() && this.featureFlags.get().isTeamsEnabled();\n }\n\n canUseFolderLevelPermissions() {\n return (\n this.decoratee.canUseFolderLevelPermissions() &&\n this.featureFlags.get().isFolderLevelPermissionsEnabled()\n );\n }\n\n canUsePrivateFiles() {\n return (\n this.decoratee.canUsePrivateFiles() && this.featureFlags.get().isPrivateFilesEnabled()\n );\n }\n\n canUseAuditLogs() {\n return this.decoratee.canUseAuditLogs() && this.featureFlags.get().isAuditLogsEnabled();\n }\n\n canUseRecordLocking() {\n return (\n this.decoratee.canUseRecordLocking() && this.featureFlags.get().isRecordLockingEnabled()\n );\n }\n\n canUseFileManagerThreatDetection() {\n return (\n this.decoratee.canUseFileManagerThreatDetection() &&\n this.featureFlags.get().isFileManagerThreatDetectionEnabled()\n );\n }\n\n canUseWorkflows() {\n return this.decoratee.canUseWorkflows() && this.featureFlags.get().isWorkflowsEnabled();\n }\n\n canUseHcmsFieldPermissions() {\n return this.decoratee.canUseHcmsFieldPermissions();\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"],"mappings":"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","ignoreList":[]}
@@ -1,9 +1,11 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import { WcpContextFeature } from "./WcpContext/feature.js";
3
+ import { WcpContextWithFeatureFlagsDecorator } from "./WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js";
3
4
  export const WcpFeature = createFeature({
4
5
  name: "WebinyControlPanel",
5
6
  register(container, license) {
6
7
  WcpContextFeature.register(container, license);
8
+ container.registerDecorator(WcpContextWithFeatureFlagsDecorator);
7
9
  }
8
10
  });
9
11
 
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","WcpContextFeature","WcpFeature","name","register","container","license"],"sources":["WcpFeature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { WcpContextFeature } from \"./WcpContext/feature.js\";\nimport type { ILicense } from \"@webiny/wcp/types.js\";\n\nexport const WcpFeature = createFeature({\n name: \"WebinyControlPanel\",\n register(container, license: ILicense) {\n WcpContextFeature.register(container, license);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,iBAAiB;AAG1B,OAAO,MAAMC,UAAU,GAAGF,aAAa,CAAC;EACpCG,IAAI,EAAE,oBAAoB;EAC1BC,QAAQA,CAACC,SAAS,EAAEC,OAAiB,EAAE;IACnCL,iBAAiB,CAACG,QAAQ,CAACC,SAAS,EAAEC,OAAO,CAAC;EAClD;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createFeature","WcpContextFeature","WcpContextWithFeatureFlagsDecorator","WcpFeature","name","register","container","license","registerDecorator"],"sources":["WcpFeature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { WcpContextFeature } from \"./WcpContext/feature.js\";\nimport { WcpContextWithFeatureFlagsDecorator } from \"./WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js\";\nimport type { ILicense } from \"@webiny/wcp/types.js\";\n\nexport const WcpFeature = createFeature({\n name: \"WebinyControlPanel\",\n register(container, license: ILicense) {\n WcpContextFeature.register(container, license);\n container.registerDecorator(WcpContextWithFeatureFlagsDecorator);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,iBAAiB;AAC1B,SAASC,mCAAmC;AAG5C,OAAO,MAAMC,UAAU,GAAGH,aAAa,CAAC;EACpCI,IAAI,EAAE,oBAAoB;EAC1BC,QAAQA,CAACC,SAAS,EAAEC,OAAiB,EAAE;IACnCN,iBAAiB,CAACI,QAAQ,CAACC,SAAS,EAAEC,OAAO,CAAC;IAC9CD,SAAS,CAACE,iBAAiB,CAACN,mCAAmC,CAAC;EACpE;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -66,7 +66,7 @@ export const createWcpGraphQL = () => {
66
66
  getProject: async (_, __, context) => {
67
67
  try {
68
68
  const wcpContext = context.container.resolve(WcpContext);
69
- const project = wcpContext.getProject();
69
+ const project = wcpContext.getProjectWithFeatureFlags();
70
70
  if (!project) {
71
71
  throw Error(`Could not get project!`);
72
72
  }
@@ -1 +1 @@
1
- {"version":3,"names":["GraphQLSchemaPlugin","ErrorResponse","Response","WcpContext","emptyResolver","createWcpGraphQL","typeDefs","resolvers","Query","wcp","WcpQuery","getProject","_","__","context","wcpContext","container","resolve","project","Error","e","code","message","data","stack"],"sources":["graphql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/index.js\";\nimport { ErrorResponse, Response } from \"@webiny/handler-graphql/responses.js\";\nimport { WcpContext } from \"~/features/wcp/WcpContext/index.js\";\n\nconst emptyResolver = () => ({});\n\nexport const createWcpGraphQL = () => {\n return new GraphQLSchemaPlugin({\n typeDefs: /* 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 }\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 resolvers: {\n Query: {\n wcp: emptyResolver\n },\n WcpQuery: {\n getProject: async (_, __, context) => {\n try {\n const wcpContext = context.container.resolve(WcpContext);\n const project = wcpContext.getProject();\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 });\n};\n"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,0CAA0C;AAC9E,SAASC,aAAa,EAAEC,QAAQ,QAAQ,sCAAsC;AAC9E,SAASC,UAAU;AAEnB,MAAMC,aAAa,GAAGA,CAAA,MAAO,CAAC,CAAC,CAAC;AAEhC,OAAO,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;EAClC,OAAO,IAAIL,mBAAmB,CAAC;IAC3BM,QAAQ,EAAE,aAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;IACDC,SAAS,EAAE;MACPC,KAAK,EAAE;QACHC,GAAG,EAAEL;MACT,CAAC;MACDM,QAAQ,EAAE;QACNC,UAAU,EAAE,MAAAA,CAAOC,CAAC,EAAEC,EAAE,EAAEC,OAAO,KAAK;UAClC,IAAI;YACA,MAAMC,UAAU,GAAGD,OAAO,CAACE,SAAS,CAACC,OAAO,CAACd,UAAU,CAAC;YACxD,MAAMe,OAAO,GAAGH,UAAU,CAACJ,UAAU,CAAC,CAAC;YAEvC,IAAI,CAACO,OAAO,EAAE;cACV,MAAMC,KAAK,CAAC,wBAAwB,CAAC;YACzC;YAEA,OAAO,IAAIjB,QAAQ,CAACgB,OAAO,CAAC;UAChC,CAAC,CAAC,OAAOE,CAAC,EAAE;YACR,OAAO,IAAInB,aAAa,CAAC;cACrBoB,IAAI,EAAE,uBAAuB;cAC7BC,OAAO,EAAEF,CAAC,CAACE,OAAO;cAClBC,IAAI,EAAE,IAAI;cACVC,KAAK,EAAEJ,CAAC,CAACI;YACb,CAAC,CAAC;UACN;QACJ;MACJ;IACJ;EACJ,CAAC,CAAC;AACN,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["GraphQLSchemaPlugin","ErrorResponse","Response","WcpContext","emptyResolver","createWcpGraphQL","typeDefs","resolvers","Query","wcp","WcpQuery","getProject","_","__","context","wcpContext","container","resolve","project","getProjectWithFeatureFlags","Error","e","code","message","data","stack"],"sources":["graphql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/index.js\";\nimport { ErrorResponse, Response } from \"@webiny/handler-graphql/responses.js\";\nimport { WcpContext } from \"~/features/wcp/WcpContext/index.js\";\n\nconst emptyResolver = () => ({});\n\nexport const createWcpGraphQL = () => {\n return new GraphQLSchemaPlugin({\n typeDefs: /* 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 }\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 resolvers: {\n Query: {\n wcp: emptyResolver\n },\n WcpQuery: {\n getProject: async (_, __, context) => {\n try {\n const wcpContext = context.container.resolve(WcpContext);\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 });\n};\n"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,0CAA0C;AAC9E,SAASC,aAAa,EAAEC,QAAQ,QAAQ,sCAAsC;AAC9E,SAASC,UAAU;AAEnB,MAAMC,aAAa,GAAGA,CAAA,MAAO,CAAC,CAAC,CAAC;AAEhC,OAAO,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;EAClC,OAAO,IAAIL,mBAAmB,CAAC;IAC3BM,QAAQ,EAAE,aAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;IACDC,SAAS,EAAE;MACPC,KAAK,EAAE;QACHC,GAAG,EAAEL;MACT,CAAC;MACDM,QAAQ,EAAE;QACNC,UAAU,EAAE,MAAAA,CAAOC,CAAC,EAAEC,EAAE,EAAEC,OAAO,KAAK;UAClC,IAAI;YACA,MAAMC,UAAU,GAAGD,OAAO,CAACE,SAAS,CAACC,OAAO,CAACd,UAAU,CAAC;YACxD,MAAMe,OAAO,GAAGH,UAAU,CAACI,0BAA0B,CAAC,CAAC;YAEvD,IAAI,CAACD,OAAO,EAAE;cACV,MAAME,KAAK,CAAC,wBAAwB,CAAC;YACzC;YAEA,OAAO,IAAIlB,QAAQ,CAACgB,OAAO,CAAC;UAChC,CAAC,CAAC,OAAOG,CAAC,EAAE;YACR,OAAO,IAAIpB,aAAa,CAAC;cACrBqB,IAAI,EAAE,uBAAuB;cAC7BC,OAAO,EAAEF,CAAC,CAACE,OAAO;cAClBC,IAAI,EAAE,IAAI;cACVC,KAAK,EAAEJ,CAAC,CAACI;YACb,CAAC,CAAC;UACN;QACJ;MACJ;IACJ;EACJ,CAAC,CAAC;AACN,CAAC","ignoreList":[]}
@@ -8,6 +8,7 @@ export declare class LegacyWcpContext implements WcpContextObject {
8
8
  private getWcpContext;
9
9
  getRawLicense(): DecryptedWcpProjectLicense | null;
10
10
  getProject(): WcpProject | null;
11
+ getProjectWithFeatureFlags(): WcpProject | null;
11
12
  getProjectLicense(): ILicense;
12
13
  getProjectEnvironment(): WcpProjectEnvironment | null;
13
14
  canUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL): boolean;
@@ -19,6 +20,7 @@ export declare class LegacyWcpContext implements WcpContextObject {
19
20
  canUseRecordLocking(): boolean;
20
21
  canUseFileManagerThreatDetection(): boolean;
21
22
  canUseWorkflows(): boolean;
23
+ canUseHcmsFieldPermissions(): boolean;
22
24
  ensureCanUseFeature(featureId: keyof typeof WCP_FEATURE_LABEL): void;
23
25
  incrementSeats(): Promise<void>;
24
26
  decrementSeats(): Promise<void>;
@@ -12,6 +12,9 @@ export class LegacyWcpContext {
12
12
  getProject() {
13
13
  return this.getWcpContext().getProject();
14
14
  }
15
+ getProjectWithFeatureFlags() {
16
+ return this.getWcpContext().getProjectWithFeatureFlags();
17
+ }
15
18
  getProjectLicense() {
16
19
  return this.getWcpContext().getProjectLicense();
17
20
  }
@@ -45,6 +48,9 @@ export class LegacyWcpContext {
45
48
  canUseWorkflows() {
46
49
  return this.getWcpContext().canUseWorkflows();
47
50
  }
51
+ canUseHcmsFieldPermissions() {
52
+ return this.getWcpContext().canUseHcmsFieldPermissions();
53
+ }
48
54
  ensureCanUseFeature(featureId) {
49
55
  this.getWcpContext().ensureCanUseFeature(featureId);
50
56
  }
@@ -1 +1 @@
1
- {"version":3,"names":["WcpContext","LegacyWcpContext","constructor","container","getWcpContext","resolve","getRawLicense","getProject","getProjectLicense","getProjectEnvironment","canUseFeature","wcpFeatureId","canUseAacl","canUseTeams","canUseFolderLevelPermissions","canUsePrivateFiles","canUseAuditLogs","canUseRecordLocking","canUseFileManagerThreatDetection","canUseWorkflows","ensureCanUseFeature","featureId","incrementSeats","decrementSeats","incrementTenants","decrementTenants","toDto"],"sources":["LegacyWcpContext.ts"],"sourcesContent":["import { Container } from \"@webiny/di\";\nimport type { WCP_FEATURE_LABEL } from \"@webiny/wcp\";\nimport type {\n DecryptedWcpProjectLicense,\n ILicense,\n WcpProject,\n WcpProjectEnvironment\n} from \"@webiny/wcp/types.js\";\nimport { WcpContextObject } from \"~/features/wcp/WcpContext/types.js\";\nimport { WcpContext } from \"~/features/wcp/WcpContext/index.js\";\n\nexport class LegacyWcpContext implements WcpContextObject {\n constructor(private container: Container) {}\n\n private getWcpContext(): WcpContext.Interface {\n return this.container.resolve(WcpContext);\n }\n\n getRawLicense(): DecryptedWcpProjectLicense | null {\n return this.getWcpContext().getRawLicense();\n }\n\n getProject(): WcpProject | null {\n return this.getWcpContext().getProject();\n }\n\n getProjectLicense(): ILicense {\n return this.getWcpContext().getProjectLicense();\n }\n\n getProjectEnvironment(): WcpProjectEnvironment | null {\n return this.getWcpContext().getProjectEnvironment();\n }\n\n canUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL): boolean {\n return this.getWcpContext().canUseFeature(wcpFeatureId);\n }\n\n canUseAacl(): boolean {\n return this.getWcpContext().canUseAacl();\n }\n\n canUseTeams(): boolean {\n return this.getWcpContext().canUseTeams();\n }\n\n canUseFolderLevelPermissions(): boolean {\n return this.getWcpContext().canUseFolderLevelPermissions();\n }\n\n canUsePrivateFiles(): boolean {\n return this.getWcpContext().canUsePrivateFiles();\n }\n\n canUseAuditLogs(): boolean {\n return this.getWcpContext().canUseAuditLogs();\n }\n\n canUseRecordLocking(): boolean {\n return this.getWcpContext().canUseRecordLocking();\n }\n\n canUseFileManagerThreatDetection(): boolean {\n return this.getWcpContext().canUseFileManagerThreatDetection();\n }\n\n canUseWorkflows(): boolean {\n return this.getWcpContext().canUseWorkflows();\n }\n\n ensureCanUseFeature(featureId: keyof typeof WCP_FEATURE_LABEL): void {\n this.getWcpContext().ensureCanUseFeature(featureId);\n }\n\n async incrementSeats(): Promise<void> {\n await this.getWcpContext().incrementSeats();\n }\n\n async decrementSeats(): Promise<void> {\n await this.getWcpContext().decrementSeats();\n }\n\n async incrementTenants(): Promise<void> {\n await this.getWcpContext().incrementTenants();\n }\n\n async decrementTenants(): Promise<void> {\n await this.getWcpContext().decrementTenants();\n }\n\n toDto(): DecryptedWcpProjectLicense | null {\n return this.getWcpContext().toDto();\n }\n}\n"],"mappings":"AASA,SAASA,UAAU;AAEnB,OAAO,MAAMC,gBAAgB,CAA6B;EACtDC,WAAWA,CAASC,SAAoB,EAAE;IAAA,KAAtBA,SAAoB,GAApBA,SAAoB;EAAG;EAEnCC,aAAaA,CAAA,EAAyB;IAC1C,OAAO,IAAI,CAACD,SAAS,CAACE,OAAO,CAACL,UAAU,CAAC;EAC7C;EAEAM,aAAaA,CAAA,EAAsC;IAC/C,OAAO,IAAI,CAACF,aAAa,CAAC,CAAC,CAACE,aAAa,CAAC,CAAC;EAC/C;EAEAC,UAAUA,CAAA,EAAsB;IAC5B,OAAO,IAAI,CAACH,aAAa,CAAC,CAAC,CAACG,UAAU,CAAC,CAAC;EAC5C;EAEAC,iBAAiBA,CAAA,EAAa;IAC1B,OAAO,IAAI,CAACJ,aAAa,CAAC,CAAC,CAACI,iBAAiB,CAAC,CAAC;EACnD;EAEAC,qBAAqBA,CAAA,EAAiC;IAClD,OAAO,IAAI,CAACL,aAAa,CAAC,CAAC,CAACK,qBAAqB,CAAC,CAAC;EACvD;EAEAC,aAAaA,CAACC,YAA4C,EAAW;IACjE,OAAO,IAAI,CAACP,aAAa,CAAC,CAAC,CAACM,aAAa,CAACC,YAAY,CAAC;EAC3D;EAEAC,UAAUA,CAAA,EAAY;IAClB,OAAO,IAAI,CAACR,aAAa,CAAC,CAAC,CAACQ,UAAU,CAAC,CAAC;EAC5C;EAEAC,WAAWA,CAAA,EAAY;IACnB,OAAO,IAAI,CAACT,aAAa,CAAC,CAAC,CAACS,WAAW,CAAC,CAAC;EAC7C;EAEAC,4BAA4BA,CAAA,EAAY;IACpC,OAAO,IAAI,CAACV,aAAa,CAAC,CAAC,CAACU,4BAA4B,CAAC,CAAC;EAC9D;EAEAC,kBAAkBA,CAAA,EAAY;IAC1B,OAAO,IAAI,CAACX,aAAa,CAAC,CAAC,CAACW,kBAAkB,CAAC,CAAC;EACpD;EAEAC,eAAeA,CAAA,EAAY;IACvB,OAAO,IAAI,CAACZ,aAAa,CAAC,CAAC,CAACY,eAAe,CAAC,CAAC;EACjD;EAEAC,mBAAmBA,CAAA,EAAY;IAC3B,OAAO,IAAI,CAACb,aAAa,CAAC,CAAC,CAACa,mBAAmB,CAAC,CAAC;EACrD;EAEAC,gCAAgCA,CAAA,EAAY;IACxC,OAAO,IAAI,CAACd,aAAa,CAAC,CAAC,CAACc,gCAAgC,CAAC,CAAC;EAClE;EAEAC,eAAeA,CAAA,EAAY;IACvB,OAAO,IAAI,CAACf,aAAa,CAAC,CAAC,CAACe,eAAe,CAAC,CAAC;EACjD;EAEAC,mBAAmBA,CAACC,SAAyC,EAAQ;IACjE,IAAI,CAACjB,aAAa,CAAC,CAAC,CAACgB,mBAAmB,CAACC,SAAS,CAAC;EACvD;EAEA,MAAMC,cAAcA,CAAA,EAAkB;IAClC,MAAM,IAAI,CAAClB,aAAa,CAAC,CAAC,CAACkB,cAAc,CAAC,CAAC;EAC/C;EAEA,MAAMC,cAAcA,CAAA,EAAkB;IAClC,MAAM,IAAI,CAACnB,aAAa,CAAC,CAAC,CAACmB,cAAc,CAAC,CAAC;EAC/C;EAEA,MAAMC,gBAAgBA,CAAA,EAAkB;IACpC,MAAM,IAAI,CAACpB,aAAa,CAAC,CAAC,CAACoB,gBAAgB,CAAC,CAAC;EACjD;EAEA,MAAMC,gBAAgBA,CAAA,EAAkB;IACpC,MAAM,IAAI,CAACrB,aAAa,CAAC,CAAC,CAACqB,gBAAgB,CAAC,CAAC;EACjD;EAEAC,KAAKA,CAAA,EAAsC;IACvC,OAAO,IAAI,CAACtB,aAAa,CAAC,CAAC,CAACsB,KAAK,CAAC,CAAC;EACvC;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["WcpContext","LegacyWcpContext","constructor","container","getWcpContext","resolve","getRawLicense","getProject","getProjectWithFeatureFlags","getProjectLicense","getProjectEnvironment","canUseFeature","wcpFeatureId","canUseAacl","canUseTeams","canUseFolderLevelPermissions","canUsePrivateFiles","canUseAuditLogs","canUseRecordLocking","canUseFileManagerThreatDetection","canUseWorkflows","canUseHcmsFieldPermissions","ensureCanUseFeature","featureId","incrementSeats","decrementSeats","incrementTenants","decrementTenants","toDto"],"sources":["LegacyWcpContext.ts"],"sourcesContent":["import { Container } from \"@webiny/di\";\nimport type { WCP_FEATURE_LABEL } from \"@webiny/wcp\";\nimport type {\n DecryptedWcpProjectLicense,\n ILicense,\n WcpProject,\n WcpProjectEnvironment\n} from \"@webiny/wcp/types.js\";\nimport { WcpContextObject } from \"~/features/wcp/WcpContext/types.js\";\nimport { WcpContext } from \"~/features/wcp/WcpContext/index.js\";\n\nexport class LegacyWcpContext implements WcpContextObject {\n constructor(private container: Container) {}\n\n private getWcpContext(): WcpContext.Interface {\n return this.container.resolve(WcpContext);\n }\n\n getRawLicense(): DecryptedWcpProjectLicense | null {\n return this.getWcpContext().getRawLicense();\n }\n\n getProject(): WcpProject | null {\n return this.getWcpContext().getProject();\n }\n\n getProjectWithFeatureFlags(): WcpProject | null {\n return this.getWcpContext().getProjectWithFeatureFlags();\n }\n\n getProjectLicense(): ILicense {\n return this.getWcpContext().getProjectLicense();\n }\n\n getProjectEnvironment(): WcpProjectEnvironment | null {\n return this.getWcpContext().getProjectEnvironment();\n }\n\n canUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL): boolean {\n return this.getWcpContext().canUseFeature(wcpFeatureId);\n }\n\n canUseAacl(): boolean {\n return this.getWcpContext().canUseAacl();\n }\n\n canUseTeams(): boolean {\n return this.getWcpContext().canUseTeams();\n }\n\n canUseFolderLevelPermissions(): boolean {\n return this.getWcpContext().canUseFolderLevelPermissions();\n }\n\n canUsePrivateFiles(): boolean {\n return this.getWcpContext().canUsePrivateFiles();\n }\n\n canUseAuditLogs(): boolean {\n return this.getWcpContext().canUseAuditLogs();\n }\n\n canUseRecordLocking(): boolean {\n return this.getWcpContext().canUseRecordLocking();\n }\n\n canUseFileManagerThreatDetection(): boolean {\n return this.getWcpContext().canUseFileManagerThreatDetection();\n }\n\n canUseWorkflows(): boolean {\n return this.getWcpContext().canUseWorkflows();\n }\n\n canUseHcmsFieldPermissions(): boolean {\n return this.getWcpContext().canUseHcmsFieldPermissions();\n }\n\n ensureCanUseFeature(featureId: keyof typeof WCP_FEATURE_LABEL): void {\n this.getWcpContext().ensureCanUseFeature(featureId);\n }\n\n async incrementSeats(): Promise<void> {\n await this.getWcpContext().incrementSeats();\n }\n\n async decrementSeats(): Promise<void> {\n await this.getWcpContext().decrementSeats();\n }\n\n async incrementTenants(): Promise<void> {\n await this.getWcpContext().incrementTenants();\n }\n\n async decrementTenants(): Promise<void> {\n await this.getWcpContext().decrementTenants();\n }\n\n toDto(): DecryptedWcpProjectLicense | null {\n return this.getWcpContext().toDto();\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-core",
3
- "version": "6.0.0-rc.1",
3
+ "version": "6.0.0-rc.3",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "repository": {
@@ -57,34 +57,33 @@
57
57
  },
58
58
  "license": "MIT",
59
59
  "dependencies": {
60
- "@webiny/api": "6.0.0-rc.1",
60
+ "@webiny/api": "6.0.0-rc.3",
61
61
  "@webiny/di": "0.2.3",
62
- "@webiny/error": "6.0.0-rc.1",
63
- "@webiny/feature": "6.0.0-rc.1",
64
- "@webiny/handler": "6.0.0-rc.1",
65
- "@webiny/handler-db": "6.0.0-rc.1",
66
- "@webiny/handler-graphql": "6.0.0-rc.1",
67
- "@webiny/plugins": "6.0.0-rc.1",
68
- "@webiny/project": "6.0.0-rc.1",
69
- "@webiny/utils": "6.0.0-rc.1",
70
- "@webiny/wcp": "6.0.0-rc.1",
62
+ "@webiny/error": "6.0.0-rc.3",
63
+ "@webiny/feature": "6.0.0-rc.3",
64
+ "@webiny/feature-flags": "6.0.0-rc.3",
65
+ "@webiny/handler": "6.0.0-rc.3",
66
+ "@webiny/handler-db": "6.0.0-rc.3",
67
+ "@webiny/handler-graphql": "6.0.0-rc.3",
68
+ "@webiny/plugins": "6.0.0-rc.3",
69
+ "@webiny/utils": "6.0.0-rc.3",
70
+ "@webiny/wcp": "6.0.0-rc.3",
71
71
  "dataloader": "2.2.3",
72
72
  "jose": "5.10.0",
73
73
  "jsonwebtoken": "9.0.3",
74
74
  "lodash": "4.17.23",
75
- "minimatch": "10.2.2",
75
+ "minimatch": "10.2.4",
76
76
  "pino": "9.14.0",
77
77
  "pino-lambda": "4.4.1",
78
- "ts-morph": "27.0.2",
79
78
  "zod": "3.25.76"
80
79
  },
81
80
  "devDependencies": {
82
81
  "@types/jsonwebtoken": "9.0.10",
83
82
  "@types/md5": "2.3.6",
84
- "@webiny/build-tools": "6.0.0-rc.1",
85
- "@webiny/db-dynamodb": "6.0.0-rc.1",
86
- "@webiny/handler-aws": "6.0.0-rc.1",
87
- "@webiny/project-utils": "6.0.0-rc.1",
83
+ "@webiny/build-tools": "6.0.0-rc.3",
84
+ "@webiny/db-dynamodb": "6.0.0-rc.3",
85
+ "@webiny/handler-aws": "6.0.0-rc.3",
86
+ "@webiny/project-utils": "6.0.0-rc.3",
88
87
  "jest-dynalite": "3.6.1",
89
88
  "rimraf": "6.1.3",
90
89
  "typescript": "5.9.3",
@@ -94,5 +93,5 @@
94
93
  "access": "public",
95
94
  "directory": "dist"
96
95
  },
97
- "gitHead": "36d702721ff9ed39fb21d6f5fe7922a2a8716e63"
96
+ "gitHead": "228fe25e1a17f248d566bce1c33d11c291955513"
98
97
  }
@@ -1,11 +0,0 @@
1
- import { z } from "zod";
2
- export declare const BuildParam: import("@webiny/project/defineExtension").ExtensionComponent<z.ZodObject<{
3
- paramName: z.ZodString;
4
- value: z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodAny>, z.ZodArray<z.ZodAny, "many">, z.ZodNumber, z.ZodBoolean]>;
5
- }, "strip", z.ZodTypeAny, {
6
- value: string | number | boolean | any[] | Record<string, any>;
7
- paramName: string;
8
- }, {
9
- value: string | number | boolean | any[] | Record<string, any>;
10
- paramName: string;
11
- }>>;
@@ -1,119 +0,0 @@
1
- import { z } from "zod";
2
- import { Node, Project } from "ts-morph";
3
- import { defineExtension } from "@webiny/project/defineExtension";
4
- import crypto from "crypto";
5
- import path from "path";
6
- import fs from "fs";
7
- export const BuildParam = defineExtension({
8
- type: "Api/BuildParam",
9
- tags: {
10
- runtimeContext: "app-build",
11
- appName: "api"
12
- },
13
- description: "Add build-time parameter to API app.",
14
- multiple: true,
15
- paramsSchema: () => {
16
- return z.object({
17
- paramName: z.string(),
18
- value: z.union([z.string(), z.record(z.any()), z.array(z.any()), z.number(), z.boolean()])
19
- });
20
- },
21
- async build(params, ctx) {
22
- const extensionsTsFilePath = ctx.project.paths.workspaceFolder.join("apps", "api", "graphql", "src", "extensions.ts").toString();
23
- const buildParamsDir = ctx.project.paths.workspaceFolder.join("apps", "api", "graphql", "src", "buildParams").toString();
24
- const {
25
- paramName,
26
- value
27
- } = params;
28
-
29
- // Serialize value to a TypeScript literal.
30
- const valueStr = JSON.stringify(value, null, 4);
31
-
32
- // Generate a unique class name based on the paramName.
33
- const hash = crypto.createHash("sha256").update(paramName).digest("hex");
34
- const className = `BuildParam_${hash.slice(-10)}`;
35
- const fileName = `${className}.ts`;
36
- const filePath = path.join(buildParamsDir, fileName);
37
-
38
- // Ensure buildParams directory exists.
39
- if (!fs.existsSync(buildParamsDir)) {
40
- fs.mkdirSync(buildParamsDir, {
41
- recursive: true
42
- });
43
- }
44
-
45
- // Check if file already exists.
46
- if (fs.existsSync(filePath)) {
47
- // File exists, just ensure it's imported in extensions.ts
48
- } else {
49
- // Create the BuildParam implementation file.
50
- const fileContent = `import { BuildParam } from "webiny/api/buildParams";
51
-
52
- class ${className} implements BuildParam.Interface {
53
- key = "${paramName}";
54
- value = ${valueStr};
55
- }
56
-
57
- export default BuildParam.createImplementation({
58
- implementation: ${className},
59
- dependencies: []
60
- });
61
- `;
62
- fs.writeFileSync(filePath, fileContent, "utf8");
63
- }
64
-
65
- // Now update extensions.ts to import and register this BuildParam.
66
- const project = new Project();
67
- project.addSourceFileAtPath(extensionsTsFilePath);
68
- const source = project.getSourceFileOrThrow(extensionsTsFilePath);
69
-
70
- // Calculate import path relative to extensions.ts.
71
- let importPath = path.relative(path.dirname(extensionsTsFilePath), filePath).replace(/\.tsx?$/, ".js");
72
-
73
- // Ensure the path starts with ./
74
- if (!importPath.startsWith(".")) {
75
- importPath = "./" + importPath;
76
- }
77
-
78
- // Check if import already exists.
79
- const existingImportDeclaration = source.getImportDeclaration(importPath);
80
- if (existingImportDeclaration) {
81
- return;
82
- }
83
- let index = 1;
84
- const importDeclarations = source.getImportDeclarations();
85
- if (importDeclarations.length) {
86
- const last = importDeclarations[importDeclarations.length - 1];
87
- index = last.getChildIndex() + 1;
88
- }
89
-
90
- // Add import for the BuildParam implementation.
91
- source.insertImportDeclaration(index, {
92
- defaultImport: className,
93
- moduleSpecifier: importPath
94
- });
95
-
96
- // Add the registration to the plugins array.
97
- const pluginsArray = source.getFirstDescendant(node => Node.isArrayLiteralExpression(node));
98
- pluginsArray.addElement(`\ncreateContextPlugin(ctx => {\n\tregisterExtension(ctx.container, ${className});\n})`);
99
- {
100
- let index = 1;
101
- const importDeclarations = source.getImportDeclarations();
102
- if (importDeclarations.length) {
103
- const last = importDeclarations[importDeclarations.length - 1];
104
- index = last.getChildIndex() + 1;
105
- }
106
- const contextPluginImportPath = "@webiny/api/plugins/ContextPlugin";
107
- const existingContextPluginImport = source.getImportDeclaration(contextPluginImportPath);
108
- if (!existingContextPluginImport) {
109
- source.insertImportDeclaration(index, {
110
- namedImports: ["createContextPlugin"],
111
- moduleSpecifier: contextPluginImportPath
112
- });
113
- }
114
- }
115
- await source.save();
116
- }
117
- });
118
-
119
- //# sourceMappingURL=BuildParam.js.map
@@ -1 +0,0 @@
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":["BuildParam.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { Node, Project, ArrayLiteralExpression } from \"ts-morph\";\nimport { defineExtension } from \"@webiny/project/defineExtension\";\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,10 +0,0 @@
1
- export declare const GenericExtension: import("@webiny/project/defineExtension").ExtensionComponent<import("zod").ZodObject<{
2
- src: import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, string, string>;
3
- exportName: import("zod").ZodOptional<import("zod").ZodString>;
4
- }, "strip", import("zod").ZodTypeAny, {
5
- src: string;
6
- exportName?: string | undefined;
7
- }, {
8
- src: string;
9
- exportName?: string | undefined;
10
- }>>;
@@ -1,7 +0,0 @@
1
- import { defineApiExtension } from "@webiny/project/defineExtension";
2
- export const GenericExtension = defineApiExtension({
3
- type: "Api/Extension",
4
- description: "Add any API extension."
5
- });
6
-
7
- //# sourceMappingURL=GenericExtension.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["defineApiExtension","GenericExtension","type","description"],"sources":["GenericExtension.ts"],"sourcesContent":["import { defineApiExtension } from \"@webiny/project/defineExtension\";\n\nexport const GenericExtension = defineApiExtension({\n type: \"Api/Extension\",\n description: \"Add any API extension.\"\n});\n"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,iCAAiC;AAEpE,OAAO,MAAMC,gBAAgB,GAAGD,kBAAkB,CAAC;EAC/CE,IAAI,EAAE,eAAe;EACrBC,WAAW,EAAE;AACjB,CAAC,CAAC","ignoreList":[]}
@@ -1,10 +0,0 @@
1
- export declare const AfterAuthentication: import("@webiny/project/defineExtension").ExtensionComponent<import("zod").ZodObject<{
2
- src: import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, string, string>;
3
- exportName: import("zod").ZodOptional<import("zod").ZodString>;
4
- }, "strip", import("zod").ZodTypeAny, {
5
- src: string;
6
- exportName?: string | undefined;
7
- }, {
8
- src: string;
9
- exportName?: string | undefined;
10
- }>>;
@@ -1,9 +0,0 @@
1
- import { defineApiExtension } from "@webiny/project/defineExtension";
2
- import { AfterAuthenticationHandler } from "../../features/security/authentication/AuthenticationContext/index.js";
3
- export const AfterAuthentication = defineApiExtension({
4
- type: "Security/AfterAuthentication",
5
- description: "Add custom logic to be executed after authentication.",
6
- abstraction: AfterAuthenticationHandler
7
- });
8
-
9
- //# sourceMappingURL=AfterAuthentication.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["defineApiExtension","AfterAuthenticationHandler","AfterAuthentication","type","description","abstraction"],"sources":["AfterAuthentication.ts"],"sourcesContent":["import { defineApiExtension } from \"@webiny/project/defineExtension\";\nimport { AfterAuthenticationHandler } from \"~/features/security/authentication/AuthenticationContext/index.js\";\n\nexport const AfterAuthentication = defineApiExtension({\n type: \"Security/AfterAuthentication\",\n description: \"Add custom logic to be executed after authentication.\",\n abstraction: AfterAuthenticationHandler\n});\n"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,iCAAiC;AACpE,SAASC,0BAA0B;AAEnC,OAAO,MAAMC,mBAAmB,GAAGF,kBAAkB,CAAC;EAClDG,IAAI,EAAE,8BAA8B;EACpCC,WAAW,EAAE,uDAAuD;EACpEC,WAAW,EAAEJ;AACjB,CAAC,CAAC","ignoreList":[]}
@@ -1,10 +0,0 @@
1
- export declare const ApiKeyAfterCreate: import("@webiny/project/defineExtension").ExtensionComponent<import("zod").ZodObject<{
2
- src: import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, string, string>;
3
- exportName: import("zod").ZodOptional<import("zod").ZodString>;
4
- }, "strip", import("zod").ZodTypeAny, {
5
- src: string;
6
- exportName?: string | undefined;
7
- }, {
8
- src: string;
9
- exportName?: string | undefined;
10
- }>>;
@@ -1,9 +0,0 @@
1
- import { defineApiExtension } from "@webiny/project/defineExtension";
2
- import { ApiKeyAfterCreateHandler } from "../../features/security/apiKeys/CreateApiKey/index.js";
3
- export const ApiKeyAfterCreate = defineApiExtension({
4
- type: "Security/ApiKeyAfterCreate",
5
- description: "Add custom logic to be executed after an API key is created.",
6
- abstraction: ApiKeyAfterCreateHandler
7
- });
8
-
9
- //# sourceMappingURL=ApiKeyAfterCreate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["defineApiExtension","ApiKeyAfterCreateHandler","ApiKeyAfterCreate","type","description","abstraction"],"sources":["ApiKeyAfterCreate.ts"],"sourcesContent":["import { defineApiExtension } from \"@webiny/project/defineExtension\";\nimport { ApiKeyAfterCreateHandler } from \"~/features/security/apiKeys/CreateApiKey/index.js\";\n\nexport const ApiKeyAfterCreate = defineApiExtension({\n type: \"Security/ApiKeyAfterCreate\",\n description: \"Add custom logic to be executed after an API key is created.\",\n abstraction: ApiKeyAfterCreateHandler\n});\n"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,iCAAiC;AACpE,SAASC,wBAAwB;AAEjC,OAAO,MAAMC,iBAAiB,GAAGF,kBAAkB,CAAC;EAChDG,IAAI,EAAE,4BAA4B;EAClCC,WAAW,EAAE,8DAA8D;EAC3EC,WAAW,EAAEJ;AACjB,CAAC,CAAC","ignoreList":[]}
@@ -1,10 +0,0 @@
1
- export declare const ApiKeyAfterDelete: import("@webiny/project/defineExtension").ExtensionComponent<import("zod").ZodObject<{
2
- src: import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, string, string>;
3
- exportName: import("zod").ZodOptional<import("zod").ZodString>;
4
- }, "strip", import("zod").ZodTypeAny, {
5
- src: string;
6
- exportName?: string | undefined;
7
- }, {
8
- src: string;
9
- exportName?: string | undefined;
10
- }>>;
@@ -1,9 +0,0 @@
1
- import { defineApiExtension } from "@webiny/project/defineExtension";
2
- import { ApiKeyAfterDeleteHandler } from "../../features/security/apiKeys/DeleteApiKey/index.js";
3
- export const ApiKeyAfterDelete = defineApiExtension({
4
- type: "Security/ApiKeyAfterDelete",
5
- description: "Add custom logic to be executed after an API key is deleted.",
6
- abstraction: ApiKeyAfterDeleteHandler
7
- });
8
-
9
- //# sourceMappingURL=ApiKeyAfterDelete.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["defineApiExtension","ApiKeyAfterDeleteHandler","ApiKeyAfterDelete","type","description","abstraction"],"sources":["ApiKeyAfterDelete.ts"],"sourcesContent":["import { defineApiExtension } from \"@webiny/project/defineExtension\";\nimport { ApiKeyAfterDeleteHandler } from \"~/features/security/apiKeys/DeleteApiKey/index.js\";\n\nexport const ApiKeyAfterDelete = defineApiExtension({\n type: \"Security/ApiKeyAfterDelete\",\n description: \"Add custom logic to be executed after an API key is deleted.\",\n abstraction: ApiKeyAfterDeleteHandler\n});\n"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,iCAAiC;AACpE,SAASC,wBAAwB;AAEjC,OAAO,MAAMC,iBAAiB,GAAGF,kBAAkB,CAAC;EAChDG,IAAI,EAAE,4BAA4B;EAClCC,WAAW,EAAE,8DAA8D;EAC3EC,WAAW,EAAEJ;AACjB,CAAC,CAAC","ignoreList":[]}
@@ -1,10 +0,0 @@
1
- export declare const ApiKeyAfterUpdate: import("@webiny/project/defineExtension").ExtensionComponent<import("zod").ZodObject<{
2
- src: import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, string, string>;
3
- exportName: import("zod").ZodOptional<import("zod").ZodString>;
4
- }, "strip", import("zod").ZodTypeAny, {
5
- src: string;
6
- exportName?: string | undefined;
7
- }, {
8
- src: string;
9
- exportName?: string | undefined;
10
- }>>;
@@ -1,9 +0,0 @@
1
- import { defineApiExtension } from "@webiny/project/defineExtension";
2
- import { ApiKeyAfterUpdateHandler } from "../../features/security/apiKeys/UpdateApiKey/index.js";
3
- export const ApiKeyAfterUpdate = defineApiExtension({
4
- type: "Security/ApiKeyAfterUpdate",
5
- description: "Add custom logic to be executed after an API key is updated.",
6
- abstraction: ApiKeyAfterUpdateHandler
7
- });
8
-
9
- //# sourceMappingURL=ApiKeyAfterUpdate.js.map