@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.
- package/ApiCoreFeature.js +2 -0
- package/ApiCoreFeature.js.map +1 -1
- package/features/featureFlags/FeatureFlags.d.ts +12 -0
- package/features/featureFlags/FeatureFlags.js +18 -0
- package/features/featureFlags/FeatureFlags.js.map +1 -0
- package/features/featureFlags/abstractions.d.ts +8 -0
- package/features/featureFlags/abstractions.js +4 -0
- package/features/featureFlags/abstractions.js.map +1 -0
- package/features/featureFlags/feature.d.ts +1 -0
- package/features/featureFlags/feature.js +10 -0
- package/features/featureFlags/feature.js.map +1 -0
- package/features/security/permissions/createPermissions.js +30 -11
- package/features/security/permissions/createPermissions.js.map +1 -1
- package/features/security/permissions/types.d.ts +6 -3
- package/features/security/permissions/types.js.map +1 -1
- package/features/wcp/WcpContext/WcpContext.d.ts +2 -0
- package/features/wcp/WcpContext/WcpContext.js +6 -0
- package/features/wcp/WcpContext/WcpContext.js.map +1 -1
- package/features/wcp/WcpContext/abstractions.d.ts +1 -0
- package/features/wcp/WcpContext/abstractions.js.map +1 -1
- package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.d.ts +79 -0
- package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js +121 -0
- package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js.map +1 -0
- package/features/wcp/WcpFeature.js +2 -0
- package/features/wcp/WcpFeature.js.map +1 -1
- package/graphql/wcp/graphql.js +1 -1
- package/graphql/wcp/graphql.js.map +1 -1
- package/legacy/wcp/LegacyWcpContext.d.ts +2 -0
- package/legacy/wcp/LegacyWcpContext.js +6 -0
- package/legacy/wcp/LegacyWcpContext.js.map +1 -1
- package/package.json +17 -18
- package/extensions/BuildParam.d.ts +0 -11
- package/extensions/BuildParam.js +0 -119
- package/extensions/BuildParam.js.map +0 -1
- package/extensions/GenericExtension.d.ts +0 -10
- package/extensions/GenericExtension.js +0 -7
- package/extensions/GenericExtension.js.map +0 -1
- package/extensions/eventHandlers/AfterAuthentication.d.ts +0 -10
- package/extensions/eventHandlers/AfterAuthentication.js +0 -9
- package/extensions/eventHandlers/AfterAuthentication.js.map +0 -1
- package/extensions/eventHandlers/ApiKeyAfterCreate.d.ts +0 -10
- package/extensions/eventHandlers/ApiKeyAfterCreate.js +0 -9
- package/extensions/eventHandlers/ApiKeyAfterCreate.js.map +0 -1
- package/extensions/eventHandlers/ApiKeyAfterDelete.d.ts +0 -10
- package/extensions/eventHandlers/ApiKeyAfterDelete.js +0 -9
- package/extensions/eventHandlers/ApiKeyAfterDelete.js.map +0 -1
- package/extensions/eventHandlers/ApiKeyAfterUpdate.d.ts +0 -10
- package/extensions/eventHandlers/ApiKeyAfterUpdate.js +0 -9
- package/extensions/eventHandlers/ApiKeyAfterUpdate.js.map +0 -1
- package/extensions/eventHandlers/ApiKeyBeforeCreate.d.ts +0 -10
- package/extensions/eventHandlers/ApiKeyBeforeCreate.js +0 -9
- package/extensions/eventHandlers/ApiKeyBeforeCreate.js.map +0 -1
- package/extensions/eventHandlers/ApiKeyBeforeDelete.d.ts +0 -10
- package/extensions/eventHandlers/ApiKeyBeforeDelete.js +0 -9
- package/extensions/eventHandlers/ApiKeyBeforeDelete.js.map +0 -1
- package/extensions/eventHandlers/ApiKeyBeforeUpdate.d.ts +0 -10
- package/extensions/eventHandlers/ApiKeyBeforeUpdate.js +0 -9
- package/extensions/eventHandlers/ApiKeyBeforeUpdate.js.map +0 -1
- package/extensions/eventHandlers/BeforeAuthentication.d.ts +0 -10
- package/extensions/eventHandlers/BeforeAuthentication.js +0 -9
- package/extensions/eventHandlers/BeforeAuthentication.js.map +0 -1
- package/extensions/eventHandlers/RoleAfterCreate.d.ts +0 -10
- package/extensions/eventHandlers/RoleAfterCreate.js +0 -9
- package/extensions/eventHandlers/RoleAfterCreate.js.map +0 -1
- package/extensions/eventHandlers/RoleAfterDelete.d.ts +0 -10
- package/extensions/eventHandlers/RoleAfterDelete.js +0 -9
- package/extensions/eventHandlers/RoleAfterDelete.js.map +0 -1
- package/extensions/eventHandlers/RoleAfterUpdate.d.ts +0 -10
- package/extensions/eventHandlers/RoleAfterUpdate.js +0 -9
- package/extensions/eventHandlers/RoleAfterUpdate.js.map +0 -1
- package/extensions/eventHandlers/RoleBeforeCreate.d.ts +0 -10
- package/extensions/eventHandlers/RoleBeforeCreate.js +0 -9
- package/extensions/eventHandlers/RoleBeforeCreate.js.map +0 -1
- package/extensions/eventHandlers/RoleBeforeDelete.d.ts +0 -10
- package/extensions/eventHandlers/RoleBeforeDelete.js +0 -9
- package/extensions/eventHandlers/RoleBeforeDelete.js.map +0 -1
- package/extensions/eventHandlers/RoleBeforeUpdate.d.ts +0 -10
- package/extensions/eventHandlers/RoleBeforeUpdate.js +0 -9
- package/extensions/eventHandlers/RoleBeforeUpdate.js.map +0 -1
- package/extensions/eventHandlers/SystemInstalled.d.ts +0 -10
- package/extensions/eventHandlers/SystemInstalled.js +0 -9
- package/extensions/eventHandlers/SystemInstalled.js.map +0 -1
- package/extensions/eventHandlers/TeamAfterCreate.d.ts +0 -10
- package/extensions/eventHandlers/TeamAfterCreate.js +0 -9
- package/extensions/eventHandlers/TeamAfterCreate.js.map +0 -1
- package/extensions/eventHandlers/TeamAfterDelete.d.ts +0 -10
- package/extensions/eventHandlers/TeamAfterDelete.js +0 -9
- package/extensions/eventHandlers/TeamAfterDelete.js.map +0 -1
- package/extensions/eventHandlers/TeamAfterUpdate.d.ts +0 -10
- package/extensions/eventHandlers/TeamAfterUpdate.js +0 -9
- package/extensions/eventHandlers/TeamAfterUpdate.js.map +0 -1
- package/extensions/eventHandlers/TeamBeforeCreate.d.ts +0 -10
- package/extensions/eventHandlers/TeamBeforeCreate.js +0 -9
- package/extensions/eventHandlers/TeamBeforeCreate.js.map +0 -1
- package/extensions/eventHandlers/TeamBeforeDelete.d.ts +0 -10
- package/extensions/eventHandlers/TeamBeforeDelete.js +0 -9
- package/extensions/eventHandlers/TeamBeforeDelete.js.map +0 -1
- package/extensions/eventHandlers/TeamBeforeUpdate.d.ts +0 -10
- package/extensions/eventHandlers/TeamBeforeUpdate.js +0 -9
- package/extensions/eventHandlers/TeamBeforeUpdate.js.map +0 -1
- package/extensions/eventHandlers/TenantAfterCreate.d.ts +0 -10
- package/extensions/eventHandlers/TenantAfterCreate.js +0 -9
- package/extensions/eventHandlers/TenantAfterCreate.js.map +0 -1
- package/extensions/eventHandlers/TenantAfterDelete.d.ts +0 -10
- package/extensions/eventHandlers/TenantAfterDelete.js +0 -9
- package/extensions/eventHandlers/TenantAfterDelete.js.map +0 -1
- package/extensions/eventHandlers/TenantAfterUpdate.d.ts +0 -10
- package/extensions/eventHandlers/TenantAfterUpdate.js +0 -9
- package/extensions/eventHandlers/TenantAfterUpdate.js.map +0 -1
- package/extensions/eventHandlers/TenantBeforeCreate.d.ts +0 -10
- package/extensions/eventHandlers/TenantBeforeCreate.js +0 -9
- package/extensions/eventHandlers/TenantBeforeCreate.js.map +0 -1
- package/extensions/eventHandlers/TenantBeforeDelete.d.ts +0 -10
- package/extensions/eventHandlers/TenantBeforeDelete.js +0 -9
- package/extensions/eventHandlers/TenantBeforeDelete.js.map +0 -1
- package/extensions/eventHandlers/TenantBeforeUpdate.d.ts +0 -10
- package/extensions/eventHandlers/TenantBeforeUpdate.js +0 -9
- package/extensions/eventHandlers/TenantBeforeUpdate.js.map +0 -1
- package/extensions/eventHandlers/TenantInstalled.d.ts +0 -10
- package/extensions/eventHandlers/TenantInstalled.js +0 -9
- package/extensions/eventHandlers/TenantInstalled.js.map +0 -1
- package/extensions/eventHandlers/UserAfterCreate.d.ts +0 -10
- package/extensions/eventHandlers/UserAfterCreate.js +0 -9
- package/extensions/eventHandlers/UserAfterCreate.js.map +0 -1
- package/extensions/eventHandlers/UserAfterDelete.d.ts +0 -10
- package/extensions/eventHandlers/UserAfterDelete.js +0 -9
- package/extensions/eventHandlers/UserAfterDelete.js.map +0 -1
- package/extensions/eventHandlers/UserAfterUpdate.d.ts +0 -10
- package/extensions/eventHandlers/UserAfterUpdate.js +0 -9
- package/extensions/eventHandlers/UserAfterUpdate.js.map +0 -1
- package/extensions/eventHandlers/UserBeforeCreate.d.ts +0 -10
- package/extensions/eventHandlers/UserBeforeCreate.js +0 -9
- package/extensions/eventHandlers/UserBeforeCreate.js.map +0 -1
- package/extensions/eventHandlers/UserBeforeDelete.d.ts +0 -10
- package/extensions/eventHandlers/UserBeforeDelete.js +0 -9
- package/extensions/eventHandlers/UserBeforeDelete.js.map +0 -1
- package/extensions/eventHandlers/UserBeforeUpdate.d.ts +0 -10
- package/extensions/eventHandlers/UserBeforeUpdate.js +0 -9
- package/extensions/eventHandlers/UserBeforeUpdate.js.map +0 -1
- package/extensions/eventHandlers/index.d.ts +0 -34
- package/extensions/eventHandlers/index.js +0 -49
- package/extensions/eventHandlers/index.js.map +0 -1
- package/extensions/index.d.ts +0 -58
- package/extensions/index.js +0 -49
- 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;
|
|
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":[]}
|
package/graphql/wcp/graphql.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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,
|
|
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.
|
|
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.
|
|
60
|
+
"@webiny/api": "6.0.0-rc.3",
|
|
61
61
|
"@webiny/di": "0.2.3",
|
|
62
|
-
"@webiny/error": "6.0.0-rc.
|
|
63
|
-
"@webiny/feature": "6.0.0-rc.
|
|
64
|
-
"@webiny/
|
|
65
|
-
"@webiny/handler
|
|
66
|
-
"@webiny/handler-
|
|
67
|
-
"@webiny/
|
|
68
|
-
"@webiny/
|
|
69
|
-
"@webiny/utils": "6.0.0-rc.
|
|
70
|
-
"@webiny/wcp": "6.0.0-rc.
|
|
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.
|
|
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.
|
|
85
|
-
"@webiny/db-dynamodb": "6.0.0-rc.
|
|
86
|
-
"@webiny/handler-aws": "6.0.0-rc.
|
|
87
|
-
"@webiny/project-utils": "6.0.0-rc.
|
|
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": "
|
|
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
|
-
}>>;
|
package/extensions/BuildParam.js
DELETED
|
@@ -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 +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
|