@smythos/sre 1.5.53 → 1.5.54
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/CHANGELOG +98 -98
- package/LICENSE +18 -18
- package/README.md +135 -135
- package/dist/bundle-analysis-lazy.html +4949 -0
- package/dist/bundle-analysis.html +4949 -0
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/types/subsystems/LLMManager/LLM.service/connectors/openai/OpenAIConnector.class.d.ts +1 -6
- package/dist/types/utils/package-manager.utils.d.ts +26 -0
- package/package.json +1 -1
- package/src/Components/APICall/APICall.class.ts +157 -157
- package/src/Components/APICall/AccessTokenManager.ts +166 -166
- package/src/Components/APICall/ArrayBufferResponse.helper.ts +58 -58
- package/src/Components/APICall/OAuth.helper.ts +447 -447
- package/src/Components/APICall/mimeTypeCategories.ts +46 -46
- package/src/Components/APICall/parseData.ts +167 -167
- package/src/Components/APICall/parseHeaders.ts +41 -41
- package/src/Components/APICall/parseProxy.ts +68 -68
- package/src/Components/APICall/parseUrl.ts +91 -91
- package/src/Components/APIEndpoint.class.ts +234 -234
- package/src/Components/APIOutput.class.ts +58 -58
- package/src/Components/AgentPlugin.class.ts +102 -102
- package/src/Components/Async.class.ts +155 -155
- package/src/Components/Await.class.ts +90 -90
- package/src/Components/Classifier.class.ts +158 -158
- package/src/Components/Component.class.ts +132 -132
- package/src/Components/ComponentHost.class.ts +38 -38
- package/src/Components/DataSourceCleaner.class.ts +92 -92
- package/src/Components/DataSourceIndexer.class.ts +181 -181
- package/src/Components/DataSourceLookup.class.ts +161 -161
- package/src/Components/ECMASandbox.class.ts +71 -71
- package/src/Components/FEncDec.class.ts +29 -29
- package/src/Components/FHash.class.ts +33 -33
- package/src/Components/FSign.class.ts +80 -80
- package/src/Components/FSleep.class.ts +25 -25
- package/src/Components/FTimestamp.class.ts +25 -25
- package/src/Components/FileStore.class.ts +78 -78
- package/src/Components/ForEach.class.ts +97 -97
- package/src/Components/GPTPlugin.class.ts +70 -70
- package/src/Components/GenAILLM.class.ts +586 -586
- package/src/Components/HuggingFace.class.ts +314 -314
- package/src/Components/Image/imageSettings.config.ts +70 -70
- package/src/Components/ImageGenerator.class.ts +502 -502
- package/src/Components/JSONFilter.class.ts +54 -54
- package/src/Components/LLMAssistant.class.ts +213 -213
- package/src/Components/LogicAND.class.ts +28 -28
- package/src/Components/LogicAtLeast.class.ts +85 -85
- package/src/Components/LogicAtMost.class.ts +86 -86
- package/src/Components/LogicOR.class.ts +29 -29
- package/src/Components/LogicXOR.class.ts +34 -34
- package/src/Components/MCPClient.class.ts +138 -138
- package/src/Components/MemoryDeleteKeyVal.class.ts +70 -70
- package/src/Components/MemoryReadKeyVal.class.ts +66 -66
- package/src/Components/MemoryWriteKeyVal.class.ts +62 -62
- package/src/Components/MemoryWriteObject.class.ts +97 -97
- package/src/Components/MultimodalLLM.class.ts +128 -128
- package/src/Components/OpenAPI.class.ts +72 -72
- package/src/Components/PromptGenerator.class.ts +122 -122
- package/src/Components/ScrapflyWebScrape.class.ts +159 -159
- package/src/Components/ServerlessCode.class.ts +123 -123
- package/src/Components/TavilyWebSearch.class.ts +98 -98
- package/src/Components/VisionLLM.class.ts +104 -104
- package/src/Components/ZapierAction.class.ts +127 -127
- package/src/Components/index.ts +97 -97
- package/src/Core/AgentProcess.helper.ts +240 -240
- package/src/Core/Connector.class.ts +123 -123
- package/src/Core/ConnectorsService.ts +197 -197
- package/src/Core/DummyConnector.ts +49 -49
- package/src/Core/HookService.ts +105 -105
- package/src/Core/SmythRuntime.class.ts +235 -235
- package/src/Core/SystemEvents.ts +16 -16
- package/src/Core/boot.ts +56 -56
- package/src/config.ts +15 -15
- package/src/constants.ts +126 -126
- package/src/data/hugging-face.params.json +579 -579
- package/src/helpers/AWSLambdaCode.helper.ts +590 -590
- package/src/helpers/BinaryInput.helper.ts +331 -331
- package/src/helpers/Conversation.helper.ts +1119 -1119
- package/src/helpers/ECMASandbox.helper.ts +54 -54
- package/src/helpers/JsonContent.helper.ts +97 -97
- package/src/helpers/LocalCache.helper.ts +97 -97
- package/src/helpers/Log.helper.ts +274 -274
- package/src/helpers/OpenApiParser.helper.ts +150 -150
- package/src/helpers/S3Cache.helper.ts +147 -147
- package/src/helpers/SmythURI.helper.ts +5 -5
- package/src/helpers/Sysconfig.helper.ts +77 -77
- package/src/helpers/TemplateString.helper.ts +243 -243
- package/src/helpers/TypeChecker.helper.ts +329 -329
- package/src/index.ts +3 -3
- package/src/index.ts.bak +3 -3
- package/src/subsystems/AgentManager/Agent.class.ts +1114 -1114
- package/src/subsystems/AgentManager/Agent.helper.ts +3 -3
- package/src/subsystems/AgentManager/AgentData.service/AgentDataConnector.ts +230 -230
- package/src/subsystems/AgentManager/AgentData.service/connectors/CLIAgentDataConnector.class.ts +66 -66
- package/src/subsystems/AgentManager/AgentData.service/connectors/LocalAgentDataConnector.class.ts +142 -142
- package/src/subsystems/AgentManager/AgentData.service/connectors/NullAgentData.class.ts +39 -39
- package/src/subsystems/AgentManager/AgentData.service/index.ts +18 -18
- package/src/subsystems/AgentManager/AgentLogger.class.ts +301 -297
- package/src/subsystems/AgentManager/AgentRequest.class.ts +51 -51
- package/src/subsystems/AgentManager/AgentRuntime.class.ts +559 -559
- package/src/subsystems/AgentManager/AgentSSE.class.ts +101 -101
- package/src/subsystems/AgentManager/AgentSettings.class.ts +52 -52
- package/src/subsystems/AgentManager/Component.service/ComponentConnector.ts +32 -32
- package/src/subsystems/AgentManager/Component.service/connectors/LocalComponentConnector.class.ts +60 -60
- package/src/subsystems/AgentManager/Component.service/index.ts +11 -11
- package/src/subsystems/AgentManager/EmbodimentSettings.class.ts +47 -47
- package/src/subsystems/AgentManager/ForkedAgent.class.ts +154 -154
- package/src/subsystems/AgentManager/OSResourceMonitor.ts +77 -77
- package/src/subsystems/ComputeManager/Code.service/CodeConnector.ts +98 -98
- package/src/subsystems/ComputeManager/Code.service/connectors/AWSLambdaCode.class.ts +172 -172
- package/src/subsystems/ComputeManager/Code.service/connectors/ECMASandbox.class.ts +131 -131
- package/src/subsystems/ComputeManager/Code.service/index.ts +13 -13
- package/src/subsystems/IO/CLI.service/CLIConnector.ts +47 -47
- package/src/subsystems/IO/CLI.service/index.ts +9 -9
- package/src/subsystems/IO/Log.service/LogConnector.ts +32 -32
- package/src/subsystems/IO/Log.service/connectors/ConsoleLog.class.ts +28 -28
- package/src/subsystems/IO/Log.service/index.ts +13 -13
- package/src/subsystems/IO/NKV.service/NKVConnector.ts +43 -43
- package/src/subsystems/IO/NKV.service/connectors/NKVLocalStorage.class.ts +234 -234
- package/src/subsystems/IO/NKV.service/connectors/NKVRAM.class.ts +204 -204
- package/src/subsystems/IO/NKV.service/connectors/NKVRedis.class.ts +182 -182
- package/src/subsystems/IO/NKV.service/index.ts +14 -14
- package/src/subsystems/IO/Router.service/RouterConnector.ts +21 -21
- package/src/subsystems/IO/Router.service/connectors/ExpressRouter.class.ts +48 -48
- package/src/subsystems/IO/Router.service/connectors/NullRouter.class.ts +40 -40
- package/src/subsystems/IO/Router.service/index.ts +11 -11
- package/src/subsystems/IO/Storage.service/SmythFS.class.ts +489 -489
- package/src/subsystems/IO/Storage.service/StorageConnector.ts +66 -66
- package/src/subsystems/IO/Storage.service/connectors/LocalStorage.class.ts +327 -327
- package/src/subsystems/IO/Storage.service/connectors/S3Storage.class.ts +482 -482
- package/src/subsystems/IO/Storage.service/index.ts +13 -13
- package/src/subsystems/IO/VectorDB.service/VectorDBConnector.ts +108 -108
- package/src/subsystems/IO/VectorDB.service/connectors/MilvusVectorDB.class.ts +454 -454
- package/src/subsystems/IO/VectorDB.service/connectors/PineconeVectorDB.class.ts +384 -384
- package/src/subsystems/IO/VectorDB.service/connectors/RAMVecrtorDB.class.ts +421 -421
- package/src/subsystems/IO/VectorDB.service/embed/BaseEmbedding.ts +107 -107
- package/src/subsystems/IO/VectorDB.service/embed/OpenAIEmbedding.ts +109 -109
- package/src/subsystems/IO/VectorDB.service/embed/index.ts +21 -21
- package/src/subsystems/IO/VectorDB.service/index.ts +14 -14
- package/src/subsystems/LLMManager/LLM.helper.ts +251 -251
- package/src/subsystems/LLMManager/LLM.inference.ts +339 -339
- package/src/subsystems/LLMManager/LLM.service/LLMConnector.ts +489 -489
- package/src/subsystems/LLMManager/LLM.service/LLMCredentials.helper.ts +171 -171
- package/src/subsystems/LLMManager/LLM.service/connectors/Anthropic.class.ts +659 -659
- package/src/subsystems/LLMManager/LLM.service/connectors/Bedrock.class.ts +400 -400
- package/src/subsystems/LLMManager/LLM.service/connectors/Echo.class.ts +77 -77
- package/src/subsystems/LLMManager/LLM.service/connectors/GoogleAI.class.ts +757 -757
- package/src/subsystems/LLMManager/LLM.service/connectors/Groq.class.ts +304 -304
- package/src/subsystems/LLMManager/LLM.service/connectors/Perplexity.class.ts +250 -250
- package/src/subsystems/LLMManager/LLM.service/connectors/VertexAI.class.ts +423 -423
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/OpenAIConnector.class.ts +488 -488
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/ChatCompletionsApiInterface.ts +524 -524
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/OpenAIApiInterface.ts +100 -100
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/OpenAIApiInterfaceFactory.ts +81 -81
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/ResponsesApiInterface.ts +1145 -1145
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/constants.ts +13 -13
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/index.ts +4 -4
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/utils.ts +11 -11
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/types.ts +32 -32
- package/src/subsystems/LLMManager/LLM.service/connectors/xAI.class.ts +471 -471
- package/src/subsystems/LLMManager/LLM.service/index.ts +44 -44
- package/src/subsystems/LLMManager/ModelsProvider.service/ModelsProviderConnector.ts +300 -300
- package/src/subsystems/LLMManager/ModelsProvider.service/connectors/JSONModelsProvider.class.ts +252 -252
- package/src/subsystems/LLMManager/ModelsProvider.service/index.ts +11 -11
- package/src/subsystems/LLMManager/custom-models.ts +854 -854
- package/src/subsystems/LLMManager/models.ts +2540 -2540
- package/src/subsystems/LLMManager/paramMappings.ts +69 -69
- package/src/subsystems/MemoryManager/Cache.service/CacheConnector.ts +86 -86
- package/src/subsystems/MemoryManager/Cache.service/connectors/LocalStorageCache.class.ts +297 -297
- package/src/subsystems/MemoryManager/Cache.service/connectors/RAMCache.class.ts +201 -201
- package/src/subsystems/MemoryManager/Cache.service/connectors/RedisCache.class.ts +252 -252
- package/src/subsystems/MemoryManager/Cache.service/connectors/S3Cache.class.ts +373 -373
- package/src/subsystems/MemoryManager/Cache.service/index.ts +15 -15
- package/src/subsystems/MemoryManager/LLMCache.ts +72 -72
- package/src/subsystems/MemoryManager/LLMContext.ts +124 -124
- package/src/subsystems/MemoryManager/LLMMemory.service/LLMMemoryConnector.ts +26 -26
- package/src/subsystems/MemoryManager/RuntimeContext.ts +266 -266
- package/src/subsystems/Security/AccessControl/ACL.class.ts +208 -208
- package/src/subsystems/Security/AccessControl/AccessCandidate.class.ts +82 -82
- package/src/subsystems/Security/AccessControl/AccessRequest.class.ts +52 -52
- package/src/subsystems/Security/Account.service/AccountConnector.ts +44 -44
- package/src/subsystems/Security/Account.service/connectors/AWSAccount.class.ts +76 -76
- package/src/subsystems/Security/Account.service/connectors/DummyAccount.class.ts +130 -130
- package/src/subsystems/Security/Account.service/connectors/JSONFileAccount.class.ts +159 -159
- package/src/subsystems/Security/Account.service/index.ts +14 -14
- package/src/subsystems/Security/Credentials.helper.ts +62 -62
- package/src/subsystems/Security/ManagedVault.service/ManagedVaultConnector.ts +38 -38
- package/src/subsystems/Security/ManagedVault.service/connectors/NullManagedVault.class.ts +53 -53
- package/src/subsystems/Security/ManagedVault.service/connectors/SecretManagerManagedVault.ts +154 -154
- package/src/subsystems/Security/ManagedVault.service/index.ts +12 -12
- package/src/subsystems/Security/SecureConnector.class.ts +110 -110
- package/src/subsystems/Security/Vault.service/Vault.helper.ts +30 -30
- package/src/subsystems/Security/Vault.service/VaultConnector.ts +29 -29
- package/src/subsystems/Security/Vault.service/connectors/HashicorpVault.class.ts +46 -46
- package/src/subsystems/Security/Vault.service/connectors/JSONFileVault.class.ts +221 -221
- package/src/subsystems/Security/Vault.service/connectors/NullVault.class.ts +54 -54
- package/src/subsystems/Security/Vault.service/connectors/SecretsManager.class.ts +140 -140
- package/src/subsystems/Security/Vault.service/index.ts +12 -12
- package/src/types/ACL.types.ts +104 -104
- package/src/types/AWS.types.ts +10 -10
- package/src/types/Agent.types.ts +61 -61
- package/src/types/AgentLogger.types.ts +17 -17
- package/src/types/Cache.types.ts +1 -1
- package/src/types/Common.types.ts +2 -2
- package/src/types/LLM.types.ts +496 -496
- package/src/types/Redis.types.ts +8 -8
- package/src/types/SRE.types.ts +64 -64
- package/src/types/Security.types.ts +14 -14
- package/src/types/Storage.types.ts +5 -5
- package/src/types/VectorDB.types.ts +86 -86
- package/src/utils/base64.utils.ts +275 -275
- package/src/utils/cli.utils.ts +68 -68
- package/src/utils/data.utils.ts +322 -322
- package/src/utils/date-time.utils.ts +22 -22
- package/src/utils/general.utils.ts +238 -238
- package/src/utils/index.ts +12 -12
- package/src/utils/lazy-client.ts +261 -261
- package/src/utils/numbers.utils.ts +13 -13
- package/src/utils/oauth.utils.ts +35 -35
- package/src/utils/string.utils.ts +414 -414
- package/src/utils/url.utils.ts +19 -19
- package/src/utils/validation.utils.ts +74 -74
- package/dist/types/subsystems/LLMManager/ModelsProvider.service/connectors/SmythModelsProvider.class.d.ts +0 -39
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
2
|
-
import { Logger } from '@sre/helpers/Log.helper';
|
|
3
|
-
import { SmythRuntime } from '@sre/Core/SmythRuntime.class';
|
|
4
|
-
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
5
|
-
import { AccessRequest } from '@sre/Security/AccessControl/AccessRequest.class';
|
|
6
|
-
import { ACL } from '@sre/Security/AccessControl/ACL.class';
|
|
7
|
-
import { SecureConnector } from '@sre/Security/SecureConnector.class';
|
|
8
|
-
import { IAccessCandidate, TAccessLevel, TAccessRole } from '@sre/types/ACL.types';
|
|
9
|
-
|
|
10
|
-
import { IVaultRequest, VaultConnector } from '../VaultConnector';
|
|
11
|
-
import crypto from 'crypto';
|
|
12
|
-
import fs from 'fs';
|
|
13
|
-
import * as readlineSync from 'readline-sync';
|
|
14
|
-
|
|
15
|
-
const console = Logger('NullVault');
|
|
16
|
-
export class NullVault extends VaultConnector {
|
|
17
|
-
public name: string = 'NullVault';
|
|
18
|
-
private vaultData: any;
|
|
19
|
-
private index: any;
|
|
20
|
-
private sharedVault: boolean;
|
|
21
|
-
|
|
22
|
-
constructor(protected _settings: any) {
|
|
23
|
-
super(_settings);
|
|
24
|
-
console.warn('NullVault is used : Vault features will not be available');
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
@SecureConnector.AccessControl
|
|
28
|
-
protected async get(acRequest: AccessRequest, keyId: string) {
|
|
29
|
-
console.debug(`Ignored operation:NullVault.get: ${keyId}`);
|
|
30
|
-
return 'NULLKEY';
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
@SecureConnector.AccessControl
|
|
34
|
-
protected async exists(acRequest: AccessRequest, keyId: string) {
|
|
35
|
-
console.debug(`Ignored operation:NullVault.exists: ${keyId}`);
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
@SecureConnector.AccessControl
|
|
40
|
-
protected async listKeys(acRequest: AccessRequest) {
|
|
41
|
-
console.debug(`Ignored operation:NullVault.listKeys`);
|
|
42
|
-
return [];
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
public async getResourceACL(resourceId: string, candidate: IAccessCandidate) {
|
|
46
|
-
const acl = new ACL();
|
|
47
|
-
|
|
48
|
-
//give just read access by default
|
|
49
|
-
//Cannot write to null vault
|
|
50
|
-
acl.addAccess(candidate.role, candidate.id, TAccessLevel.Read);
|
|
51
|
-
|
|
52
|
-
return acl;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
1
|
+
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
2
|
+
import { Logger } from '@sre/helpers/Log.helper';
|
|
3
|
+
import { SmythRuntime } from '@sre/Core/SmythRuntime.class';
|
|
4
|
+
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
5
|
+
import { AccessRequest } from '@sre/Security/AccessControl/AccessRequest.class';
|
|
6
|
+
import { ACL } from '@sre/Security/AccessControl/ACL.class';
|
|
7
|
+
import { SecureConnector } from '@sre/Security/SecureConnector.class';
|
|
8
|
+
import { IAccessCandidate, TAccessLevel, TAccessRole } from '@sre/types/ACL.types';
|
|
9
|
+
|
|
10
|
+
import { IVaultRequest, VaultConnector } from '../VaultConnector';
|
|
11
|
+
import crypto from 'crypto';
|
|
12
|
+
import fs from 'fs';
|
|
13
|
+
import * as readlineSync from 'readline-sync';
|
|
14
|
+
|
|
15
|
+
const console = Logger('NullVault');
|
|
16
|
+
export class NullVault extends VaultConnector {
|
|
17
|
+
public name: string = 'NullVault';
|
|
18
|
+
private vaultData: any;
|
|
19
|
+
private index: any;
|
|
20
|
+
private sharedVault: boolean;
|
|
21
|
+
|
|
22
|
+
constructor(protected _settings: any) {
|
|
23
|
+
super(_settings);
|
|
24
|
+
console.warn('NullVault is used : Vault features will not be available');
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@SecureConnector.AccessControl
|
|
28
|
+
protected async get(acRequest: AccessRequest, keyId: string) {
|
|
29
|
+
console.debug(`Ignored operation:NullVault.get: ${keyId}`);
|
|
30
|
+
return 'NULLKEY';
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@SecureConnector.AccessControl
|
|
34
|
+
protected async exists(acRequest: AccessRequest, keyId: string) {
|
|
35
|
+
console.debug(`Ignored operation:NullVault.exists: ${keyId}`);
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@SecureConnector.AccessControl
|
|
40
|
+
protected async listKeys(acRequest: AccessRequest) {
|
|
41
|
+
console.debug(`Ignored operation:NullVault.listKeys`);
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
public async getResourceACL(resourceId: string, candidate: IAccessCandidate) {
|
|
46
|
+
const acl = new ACL();
|
|
47
|
+
|
|
48
|
+
//give just read access by default
|
|
49
|
+
//Cannot write to null vault
|
|
50
|
+
acl.addAccess(candidate.role, candidate.id, TAccessLevel.Read);
|
|
51
|
+
|
|
52
|
+
return acl;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -1,140 +1,140 @@
|
|
|
1
|
-
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
2
|
-
import { Logger } from '@sre/helpers/Log.helper';
|
|
3
|
-
//import { SmythRuntime } from '@sre/Core/SmythRuntime.class';
|
|
4
|
-
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
5
|
-
import { AccessRequest } from '@sre/Security/AccessControl/AccessRequest.class';
|
|
6
|
-
import { ACL } from '@sre/Security/AccessControl/ACL.class';
|
|
7
|
-
import { SecureConnector } from '@sre/Security/SecureConnector.class';
|
|
8
|
-
import { IAccessCandidate, TAccessLevel, TAccessRole } from '@sre/types/ACL.types';
|
|
9
|
-
import { VaultConnector } from '../VaultConnector';
|
|
10
|
-
import {
|
|
11
|
-
SecretsManagerClient,
|
|
12
|
-
GetSecretValueCommand,
|
|
13
|
-
ListSecretsCommand,
|
|
14
|
-
ListSecretsCommandOutput,
|
|
15
|
-
GetSecretValueCommandOutput,
|
|
16
|
-
} from '@aws-sdk/client-secrets-manager';
|
|
17
|
-
|
|
18
|
-
const console = Logger('SecretsManager');
|
|
19
|
-
|
|
20
|
-
export type SecretsManagerConfig = {
|
|
21
|
-
region: string;
|
|
22
|
-
awsAccessKeyId?: string;
|
|
23
|
-
awsSecretAccessKey?: string;
|
|
24
|
-
};
|
|
25
|
-
export class SecretsManager extends VaultConnector {
|
|
26
|
-
public name: string = 'SecretsManager';
|
|
27
|
-
private secretsManager: SecretsManagerClient;
|
|
28
|
-
|
|
29
|
-
constructor(protected _settings: SecretsManagerConfig) {
|
|
30
|
-
super(_settings);
|
|
31
|
-
//if (!SmythRuntime.Instance) throw new Error('SRE not initialized');
|
|
32
|
-
|
|
33
|
-
this.secretsManager = new SecretsManagerClient({
|
|
34
|
-
region: _settings.region,
|
|
35
|
-
...(_settings.awsAccessKeyId && _settings.awsSecretAccessKey
|
|
36
|
-
? {
|
|
37
|
-
accessKeyId: _settings.awsAccessKeyId,
|
|
38
|
-
secretAccessKey: _settings.awsSecretAccessKey,
|
|
39
|
-
}
|
|
40
|
-
: {}),
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
@SecureConnector.AccessControl
|
|
45
|
-
protected async get(acRequest: AccessRequest, secretName: string) {
|
|
46
|
-
try {
|
|
47
|
-
const secret = await this.getSecretByName(secretName);
|
|
48
|
-
return secret?.SecretString;
|
|
49
|
-
} catch (error) {
|
|
50
|
-
console.error(error);
|
|
51
|
-
throw error;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
@SecureConnector.AccessControl
|
|
56
|
-
protected async exists(acRequest: AccessRequest, keyId: string) {
|
|
57
|
-
const secret = await this.get(acRequest, keyId);
|
|
58
|
-
return !!secret;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
@SecureConnector.AccessControl
|
|
62
|
-
protected async listKeys(acRequest: AccessRequest) {
|
|
63
|
-
console.warn('SecretsManager.listKeys is not implemented');
|
|
64
|
-
return [];
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
public async getResourceACL(resourceId: string, candidate: IAccessCandidate) {
|
|
68
|
-
const accountConnector = ConnectorService.getAccountConnector();
|
|
69
|
-
const teamId = await accountConnector.getCandidateTeam(candidate);
|
|
70
|
-
|
|
71
|
-
const acl = new ACL();
|
|
72
|
-
|
|
73
|
-
acl.addAccess(TAccessRole.Team, teamId, TAccessLevel.Owner)
|
|
74
|
-
.addAccess(TAccessRole.Team, teamId, TAccessLevel.Read)
|
|
75
|
-
.addAccess(TAccessRole.Team, teamId, TAccessLevel.Write);
|
|
76
|
-
|
|
77
|
-
return acl;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
private async getSecretByName(secretName: string) {
|
|
81
|
-
try {
|
|
82
|
-
const secrets = [];
|
|
83
|
-
let nextToken: string | undefined;
|
|
84
|
-
do {
|
|
85
|
-
const listResponse: ListSecretsCommandOutput = await this.secretsManager.send(
|
|
86
|
-
new ListSecretsCommand({ NextToken: nextToken, Filters: [{ Key: 'tag-key', Values: ['smyth-vault'] }] })
|
|
87
|
-
);
|
|
88
|
-
if (listResponse.SecretList) {
|
|
89
|
-
for (const secret of listResponse.SecretList) {
|
|
90
|
-
if (secret.Name) {
|
|
91
|
-
secrets.push({
|
|
92
|
-
ARN: secret.ARN,
|
|
93
|
-
Name: secret.Name,
|
|
94
|
-
CreatedDate: secret.CreatedDate,
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
nextToken = listResponse.NextToken;
|
|
100
|
-
} while (nextToken);
|
|
101
|
-
|
|
102
|
-
const formattedSecrets = [];
|
|
103
|
-
const $promises = [];
|
|
104
|
-
for (const secret of secrets) {
|
|
105
|
-
$promises.push(getSpecificSecret(secret, this.secretsManager));
|
|
106
|
-
}
|
|
107
|
-
const results = await Promise.all($promises);
|
|
108
|
-
for (const result of results) {
|
|
109
|
-
formattedSecrets.push(result);
|
|
110
|
-
}
|
|
111
|
-
const secret = formattedSecrets.find((s) => s.Name === secretName);
|
|
112
|
-
return secret;
|
|
113
|
-
} catch (error) {
|
|
114
|
-
console.error(error);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
async function getSpecificSecret(secret, secretsManager: SecretsManagerClient) {
|
|
118
|
-
const data: GetSecretValueCommandOutput = await secretsManager.send(new GetSecretValueCommand({ SecretId: secret.ARN }));
|
|
119
|
-
let secretString = data.SecretString;
|
|
120
|
-
let secretName = secret.Name;
|
|
121
|
-
|
|
122
|
-
if (secretString) {
|
|
123
|
-
try {
|
|
124
|
-
let parsedSecret = JSON.parse(secretString);
|
|
125
|
-
if (Object.keys(parsedSecret).length === 1) {
|
|
126
|
-
secretName = Object.keys(parsedSecret)[0];
|
|
127
|
-
secretString = parsedSecret[secretName];
|
|
128
|
-
}
|
|
129
|
-
} catch (error) {}
|
|
130
|
-
}
|
|
131
|
-
return {
|
|
132
|
-
Name: secretName,
|
|
133
|
-
ARN: secret.ARN,
|
|
134
|
-
CreatedDate: secret.CreatedDate,
|
|
135
|
-
SecretId: secret.Name,
|
|
136
|
-
SecretString: secretString,
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
1
|
+
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
2
|
+
import { Logger } from '@sre/helpers/Log.helper';
|
|
3
|
+
//import { SmythRuntime } from '@sre/Core/SmythRuntime.class';
|
|
4
|
+
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
5
|
+
import { AccessRequest } from '@sre/Security/AccessControl/AccessRequest.class';
|
|
6
|
+
import { ACL } from '@sre/Security/AccessControl/ACL.class';
|
|
7
|
+
import { SecureConnector } from '@sre/Security/SecureConnector.class';
|
|
8
|
+
import { IAccessCandidate, TAccessLevel, TAccessRole } from '@sre/types/ACL.types';
|
|
9
|
+
import { VaultConnector } from '../VaultConnector';
|
|
10
|
+
import {
|
|
11
|
+
SecretsManagerClient,
|
|
12
|
+
GetSecretValueCommand,
|
|
13
|
+
ListSecretsCommand,
|
|
14
|
+
ListSecretsCommandOutput,
|
|
15
|
+
GetSecretValueCommandOutput,
|
|
16
|
+
} from '@aws-sdk/client-secrets-manager';
|
|
17
|
+
|
|
18
|
+
const console = Logger('SecretsManager');
|
|
19
|
+
|
|
20
|
+
export type SecretsManagerConfig = {
|
|
21
|
+
region: string;
|
|
22
|
+
awsAccessKeyId?: string;
|
|
23
|
+
awsSecretAccessKey?: string;
|
|
24
|
+
};
|
|
25
|
+
export class SecretsManager extends VaultConnector {
|
|
26
|
+
public name: string = 'SecretsManager';
|
|
27
|
+
private secretsManager: SecretsManagerClient;
|
|
28
|
+
|
|
29
|
+
constructor(protected _settings: SecretsManagerConfig) {
|
|
30
|
+
super(_settings);
|
|
31
|
+
//if (!SmythRuntime.Instance) throw new Error('SRE not initialized');
|
|
32
|
+
|
|
33
|
+
this.secretsManager = new SecretsManagerClient({
|
|
34
|
+
region: _settings.region,
|
|
35
|
+
...(_settings.awsAccessKeyId && _settings.awsSecretAccessKey
|
|
36
|
+
? {
|
|
37
|
+
accessKeyId: _settings.awsAccessKeyId,
|
|
38
|
+
secretAccessKey: _settings.awsSecretAccessKey,
|
|
39
|
+
}
|
|
40
|
+
: {}),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@SecureConnector.AccessControl
|
|
45
|
+
protected async get(acRequest: AccessRequest, secretName: string) {
|
|
46
|
+
try {
|
|
47
|
+
const secret = await this.getSecretByName(secretName);
|
|
48
|
+
return secret?.SecretString;
|
|
49
|
+
} catch (error) {
|
|
50
|
+
console.error(error);
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
@SecureConnector.AccessControl
|
|
56
|
+
protected async exists(acRequest: AccessRequest, keyId: string) {
|
|
57
|
+
const secret = await this.get(acRequest, keyId);
|
|
58
|
+
return !!secret;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@SecureConnector.AccessControl
|
|
62
|
+
protected async listKeys(acRequest: AccessRequest) {
|
|
63
|
+
console.warn('SecretsManager.listKeys is not implemented');
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
public async getResourceACL(resourceId: string, candidate: IAccessCandidate) {
|
|
68
|
+
const accountConnector = ConnectorService.getAccountConnector();
|
|
69
|
+
const teamId = await accountConnector.getCandidateTeam(candidate);
|
|
70
|
+
|
|
71
|
+
const acl = new ACL();
|
|
72
|
+
|
|
73
|
+
acl.addAccess(TAccessRole.Team, teamId, TAccessLevel.Owner)
|
|
74
|
+
.addAccess(TAccessRole.Team, teamId, TAccessLevel.Read)
|
|
75
|
+
.addAccess(TAccessRole.Team, teamId, TAccessLevel.Write);
|
|
76
|
+
|
|
77
|
+
return acl;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
private async getSecretByName(secretName: string) {
|
|
81
|
+
try {
|
|
82
|
+
const secrets = [];
|
|
83
|
+
let nextToken: string | undefined;
|
|
84
|
+
do {
|
|
85
|
+
const listResponse: ListSecretsCommandOutput = await this.secretsManager.send(
|
|
86
|
+
new ListSecretsCommand({ NextToken: nextToken, Filters: [{ Key: 'tag-key', Values: ['smyth-vault'] }] })
|
|
87
|
+
);
|
|
88
|
+
if (listResponse.SecretList) {
|
|
89
|
+
for (const secret of listResponse.SecretList) {
|
|
90
|
+
if (secret.Name) {
|
|
91
|
+
secrets.push({
|
|
92
|
+
ARN: secret.ARN,
|
|
93
|
+
Name: secret.Name,
|
|
94
|
+
CreatedDate: secret.CreatedDate,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
nextToken = listResponse.NextToken;
|
|
100
|
+
} while (nextToken);
|
|
101
|
+
|
|
102
|
+
const formattedSecrets = [];
|
|
103
|
+
const $promises = [];
|
|
104
|
+
for (const secret of secrets) {
|
|
105
|
+
$promises.push(getSpecificSecret(secret, this.secretsManager));
|
|
106
|
+
}
|
|
107
|
+
const results = await Promise.all($promises);
|
|
108
|
+
for (const result of results) {
|
|
109
|
+
formattedSecrets.push(result);
|
|
110
|
+
}
|
|
111
|
+
const secret = formattedSecrets.find((s) => s.Name === secretName);
|
|
112
|
+
return secret;
|
|
113
|
+
} catch (error) {
|
|
114
|
+
console.error(error);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
async function getSpecificSecret(secret, secretsManager: SecretsManagerClient) {
|
|
118
|
+
const data: GetSecretValueCommandOutput = await secretsManager.send(new GetSecretValueCommand({ SecretId: secret.ARN }));
|
|
119
|
+
let secretString = data.SecretString;
|
|
120
|
+
let secretName = secret.Name;
|
|
121
|
+
|
|
122
|
+
if (secretString) {
|
|
123
|
+
try {
|
|
124
|
+
let parsedSecret = JSON.parse(secretString);
|
|
125
|
+
if (Object.keys(parsedSecret).length === 1) {
|
|
126
|
+
secretName = Object.keys(parsedSecret)[0];
|
|
127
|
+
secretString = parsedSecret[secretName];
|
|
128
|
+
}
|
|
129
|
+
} catch (error) {}
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
Name: secretName,
|
|
133
|
+
ARN: secret.ARN,
|
|
134
|
+
CreatedDate: secret.CreatedDate,
|
|
135
|
+
SecretId: secret.Name,
|
|
136
|
+
SecretString: secretString,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { ConnectorService, ConnectorServiceProvider } from '@sre/Core/ConnectorsService';
|
|
2
|
-
import { TConnectorService } from '@sre/types/SRE.types';
|
|
3
|
-
import { JSONFileVault } from './connectors/JSONFileVault.class';
|
|
4
|
-
import { SecretsManager } from './connectors/SecretsManager.class';
|
|
5
|
-
import { NullVault } from './connectors/NullVault.class';
|
|
6
|
-
export class VaultService extends ConnectorServiceProvider {
|
|
7
|
-
public register() {
|
|
8
|
-
ConnectorService.register(TConnectorService.Vault, 'JSONFileVault', JSONFileVault);
|
|
9
|
-
ConnectorService.register(TConnectorService.Vault, 'SecretsManager', SecretsManager);
|
|
10
|
-
ConnectorService.register(TConnectorService.Vault, 'NullVault', NullVault);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
1
|
+
import { ConnectorService, ConnectorServiceProvider } from '@sre/Core/ConnectorsService';
|
|
2
|
+
import { TConnectorService } from '@sre/types/SRE.types';
|
|
3
|
+
import { JSONFileVault } from './connectors/JSONFileVault.class';
|
|
4
|
+
import { SecretsManager } from './connectors/SecretsManager.class';
|
|
5
|
+
import { NullVault } from './connectors/NullVault.class';
|
|
6
|
+
export class VaultService extends ConnectorServiceProvider {
|
|
7
|
+
public register() {
|
|
8
|
+
ConnectorService.register(TConnectorService.Vault, 'JSONFileVault', JSONFileVault);
|
|
9
|
+
ConnectorService.register(TConnectorService.Vault, 'SecretsManager', SecretsManager);
|
|
10
|
+
ConnectorService.register(TConnectorService.Vault, 'NullVault', NullVault);
|
|
11
|
+
}
|
|
12
|
+
}
|
package/src/types/ACL.types.ts
CHANGED
|
@@ -1,104 +1,104 @@
|
|
|
1
|
-
//==[ SRE: ACL Types ]======================
|
|
2
|
-
export const DEFAULT_TEAM_ID = 'default';
|
|
3
|
-
|
|
4
|
-
export enum TAccessLevel {
|
|
5
|
-
None = 'none',
|
|
6
|
-
Owner = 'owner',
|
|
7
|
-
Read = 'read',
|
|
8
|
-
Write = 'write',
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export enum TAccessRole {
|
|
12
|
-
Agent = 'agent',
|
|
13
|
-
User = 'user',
|
|
14
|
-
Team = 'team',
|
|
15
|
-
Public = 'public',
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
// role and level mappings are used for ACL serialization / deserialization
|
|
19
|
-
export const RoleMap = {
|
|
20
|
-
user: 'u',
|
|
21
|
-
agent: 'a',
|
|
22
|
-
team: 't',
|
|
23
|
-
public: 'p',
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
export const LevelMap = {
|
|
27
|
-
none: 'n',
|
|
28
|
-
owner: 'o',
|
|
29
|
-
read: 'r',
|
|
30
|
-
write: 'w',
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
// Reverse mappings
|
|
34
|
-
export const ReverseRoleMap = Object.fromEntries(Object.entries(RoleMap).map(([k, v]) => [v, k]));
|
|
35
|
-
export const ReverseLevelMap = Object.fromEntries(Object.entries(LevelMap).map(([k, v]) => [v, k]));
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* an ACLEntry is a list of access levels for a given owner.
|
|
39
|
-
* an owner can be an agent, a user, a team or the public.
|
|
40
|
-
*/
|
|
41
|
-
export type TACLEntry = {
|
|
42
|
-
[hashedOwnerKey: string]: TAccessLevel[] | undefined;
|
|
43
|
-
};
|
|
44
|
-
/**
|
|
45
|
-
* The Access Control List (ACL) is a list of access rights for a given resource.
|
|
46
|
-
* Each entry in this ACL represents a role
|
|
47
|
-
* Role entries define a list of owners of the resource and the access levels they have.
|
|
48
|
-
* e.g.
|
|
49
|
-
* The following ACL defines that agentA and teamA has read and write access, while agentB and teamC has read access.
|
|
50
|
-
* {
|
|
51
|
-
* agent: {
|
|
52
|
-
* 'agentA': ['read', 'write'],
|
|
53
|
-
* 'agentB': ['read'],
|
|
54
|
-
* },
|
|
55
|
-
* team: {
|
|
56
|
-
* 'teamA': ['read', 'write'],
|
|
57
|
-
* 'teamC': ['read'],
|
|
58
|
-
* }
|
|
59
|
-
* }
|
|
60
|
-
*/
|
|
61
|
-
// prettier-ignore
|
|
62
|
-
export interface IACL {
|
|
63
|
-
hashAlgorithm?: string | undefined;
|
|
64
|
-
entries?: {
|
|
65
|
-
[key in TAccessRole]?: TACLEntry | undefined;
|
|
66
|
-
};
|
|
67
|
-
migrated?: boolean | undefined;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// export type TACLMetadata = {
|
|
71
|
-
// acl?: TACL | undefined;
|
|
72
|
-
// };
|
|
73
|
-
|
|
74
|
-
export interface IAccessCandidate {
|
|
75
|
-
role: TAccessRole;
|
|
76
|
-
id: string;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export interface IAccessRequest {
|
|
80
|
-
id: string;
|
|
81
|
-
resourceId: string;
|
|
82
|
-
candidate: IAccessCandidate;
|
|
83
|
-
level: TAccessLevel | TAccessLevel[];
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
export enum TAccessResult {
|
|
87
|
-
Granted = 'granted',
|
|
88
|
-
Denied = 'denied',
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
export type TAccessTicket = {
|
|
92
|
-
request: IAccessRequest;
|
|
93
|
-
access: TAccessResult;
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
//custom errors
|
|
97
|
-
|
|
98
|
-
//access denied error
|
|
99
|
-
export class ACLAccessDeniedError extends Error {
|
|
100
|
-
constructor(message?: string) {
|
|
101
|
-
super(message);
|
|
102
|
-
this.name = 'ACLAccessDeniedError';
|
|
103
|
-
}
|
|
104
|
-
}
|
|
1
|
+
//==[ SRE: ACL Types ]======================
|
|
2
|
+
export const DEFAULT_TEAM_ID = 'default';
|
|
3
|
+
|
|
4
|
+
export enum TAccessLevel {
|
|
5
|
+
None = 'none',
|
|
6
|
+
Owner = 'owner',
|
|
7
|
+
Read = 'read',
|
|
8
|
+
Write = 'write',
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export enum TAccessRole {
|
|
12
|
+
Agent = 'agent',
|
|
13
|
+
User = 'user',
|
|
14
|
+
Team = 'team',
|
|
15
|
+
Public = 'public',
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// role and level mappings are used for ACL serialization / deserialization
|
|
19
|
+
export const RoleMap = {
|
|
20
|
+
user: 'u',
|
|
21
|
+
agent: 'a',
|
|
22
|
+
team: 't',
|
|
23
|
+
public: 'p',
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export const LevelMap = {
|
|
27
|
+
none: 'n',
|
|
28
|
+
owner: 'o',
|
|
29
|
+
read: 'r',
|
|
30
|
+
write: 'w',
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
// Reverse mappings
|
|
34
|
+
export const ReverseRoleMap = Object.fromEntries(Object.entries(RoleMap).map(([k, v]) => [v, k]));
|
|
35
|
+
export const ReverseLevelMap = Object.fromEntries(Object.entries(LevelMap).map(([k, v]) => [v, k]));
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* an ACLEntry is a list of access levels for a given owner.
|
|
39
|
+
* an owner can be an agent, a user, a team or the public.
|
|
40
|
+
*/
|
|
41
|
+
export type TACLEntry = {
|
|
42
|
+
[hashedOwnerKey: string]: TAccessLevel[] | undefined;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* The Access Control List (ACL) is a list of access rights for a given resource.
|
|
46
|
+
* Each entry in this ACL represents a role
|
|
47
|
+
* Role entries define a list of owners of the resource and the access levels they have.
|
|
48
|
+
* e.g.
|
|
49
|
+
* The following ACL defines that agentA and teamA has read and write access, while agentB and teamC has read access.
|
|
50
|
+
* {
|
|
51
|
+
* agent: {
|
|
52
|
+
* 'agentA': ['read', 'write'],
|
|
53
|
+
* 'agentB': ['read'],
|
|
54
|
+
* },
|
|
55
|
+
* team: {
|
|
56
|
+
* 'teamA': ['read', 'write'],
|
|
57
|
+
* 'teamC': ['read'],
|
|
58
|
+
* }
|
|
59
|
+
* }
|
|
60
|
+
*/
|
|
61
|
+
// prettier-ignore
|
|
62
|
+
export interface IACL {
|
|
63
|
+
hashAlgorithm?: string | undefined;
|
|
64
|
+
entries?: {
|
|
65
|
+
[key in TAccessRole]?: TACLEntry | undefined;
|
|
66
|
+
};
|
|
67
|
+
migrated?: boolean | undefined;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// export type TACLMetadata = {
|
|
71
|
+
// acl?: TACL | undefined;
|
|
72
|
+
// };
|
|
73
|
+
|
|
74
|
+
export interface IAccessCandidate {
|
|
75
|
+
role: TAccessRole;
|
|
76
|
+
id: string;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface IAccessRequest {
|
|
80
|
+
id: string;
|
|
81
|
+
resourceId: string;
|
|
82
|
+
candidate: IAccessCandidate;
|
|
83
|
+
level: TAccessLevel | TAccessLevel[];
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export enum TAccessResult {
|
|
87
|
+
Granted = 'granted',
|
|
88
|
+
Denied = 'denied',
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export type TAccessTicket = {
|
|
92
|
+
request: IAccessRequest;
|
|
93
|
+
access: TAccessResult;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
//custom errors
|
|
97
|
+
|
|
98
|
+
//access denied error
|
|
99
|
+
export class ACLAccessDeniedError extends Error {
|
|
100
|
+
constructor(message?: string) {
|
|
101
|
+
super(message);
|
|
102
|
+
this.name = 'ACLAccessDeniedError';
|
|
103
|
+
}
|
|
104
|
+
}
|
package/src/types/AWS.types.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
//==[ SRE: AWS Types ]======================
|
|
2
|
-
export type AWSCredentials = {
|
|
3
|
-
accessKeyId: string;
|
|
4
|
-
secretAccessKey: string;
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
export type AWSRegionConfig = {
|
|
8
|
-
region: string;
|
|
9
|
-
};
|
|
10
|
-
|
|
1
|
+
//==[ SRE: AWS Types ]======================
|
|
2
|
+
export type AWSCredentials = {
|
|
3
|
+
accessKeyId: string;
|
|
4
|
+
secretAccessKey: string;
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
export type AWSRegionConfig = {
|
|
8
|
+
region: string;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
11
|
export type AWSConfig = AWSCredentials & AWSRegionConfig;
|