@activepieces/piece-hashi-corp-vault 0.0.5 → 0.0.6
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/package.json +8 -18
- package/src/index.d.ts +1 -10
- package/src/index.d.ts.map +1 -0
- package/src/index.js +4 -128
- package/src/index.js.map +1 -1
- package/src/lib/actions/delete-secret.d.ts +1 -0
- package/src/lib/actions/delete-secret.d.ts.map +1 -0
- package/src/lib/actions/delete-secret.js +7 -2
- package/src/lib/actions/delete-secret.js.map +1 -1
- package/src/lib/actions/list-secrets.d.ts +1 -0
- package/src/lib/actions/list-secrets.d.ts.map +1 -0
- package/src/lib/actions/list-secrets.js +7 -2
- package/src/lib/actions/list-secrets.js.map +1 -1
- package/src/lib/actions/read-secret.d.ts +1 -0
- package/src/lib/actions/read-secret.d.ts.map +1 -0
- package/src/lib/actions/read-secret.js +7 -2
- package/src/lib/actions/read-secret.js.map +1 -1
- package/src/lib/actions/write-secret.d.ts +1 -0
- package/src/lib/actions/write-secret.d.ts.map +1 -0
- package/src/lib/actions/write-secret.js +7 -2
- package/src/lib/actions/write-secret.js.map +1 -1
- package/src/lib/auth.d.ts +11 -0
- package/src/lib/auth.d.ts.map +1 -0
- package/src/lib/auth.js +139 -0
- package/src/lib/auth.js.map +1 -0
- package/src/lib/common/index.d.ts +2 -1
- package/src/lib/common/index.d.ts.map +1 -0
- package/src/lib/common/index.js.map +1 -1
- package/README.md +0 -7
package/package.json
CHANGED
|
@@ -1,27 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@activepieces/piece-hashi-corp-vault",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"types": "./src/index.d.ts",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"deepmerge-ts": "7.1.0",
|
|
13
|
-
"form-data": "4.0.4",
|
|
14
|
-
"mime-types": "2.1.35",
|
|
15
|
-
"nanoid": "3.3.8",
|
|
16
|
-
"semver": "7.6.0",
|
|
17
|
-
"socket.io-client": "4.8.1",
|
|
18
|
-
"tslib": "^2.3.0",
|
|
19
|
-
"zod": "4.1.13",
|
|
20
|
-
"@activepieces/pieces-common": "0.11.6",
|
|
21
|
-
"@activepieces/pieces-framework": "0.25.4",
|
|
22
|
-
"@activepieces/shared": "0.37.0"
|
|
8
|
+
"@activepieces/pieces-common": "0.12.3",
|
|
9
|
+
"@activepieces/pieces-framework": "0.30.0",
|
|
10
|
+
"@activepieces/shared": "0.87.1",
|
|
11
|
+
"tslib": "2.3.0"
|
|
23
12
|
},
|
|
24
|
-
"
|
|
25
|
-
"
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc -p tsconfig.lib.json && cp package.json dist/",
|
|
15
|
+
"lint": "eslint 'src/**/*.ts'"
|
|
26
16
|
}
|
|
27
17
|
}
|
package/src/index.d.ts
CHANGED
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
export declare const hashiCorpVaultAuth: import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
2
|
-
url: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
3
|
-
authMethod: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
|
|
4
|
-
token: import("@activepieces/pieces-framework").SecretTextProperty<false>;
|
|
5
|
-
roleId: import("@activepieces/pieces-framework").ShortTextProperty<false>;
|
|
6
|
-
secretId: import("@activepieces/pieces-framework").SecretTextProperty<false>;
|
|
7
|
-
appRolePath: import("@activepieces/pieces-framework").ShortTextProperty<false>;
|
|
8
|
-
namespace: import("@activepieces/pieces-framework").ShortTextProperty<false>;
|
|
9
|
-
apiVersion: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
|
|
10
|
-
}>;
|
|
11
1
|
export declare const hashiCorpVault: import("@activepieces/pieces-framework").Piece<import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
12
2
|
url: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
13
3
|
authMethod: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
|
|
@@ -18,3 +8,4 @@ export declare const hashiCorpVault: import("@activepieces/pieces-framework").Pi
|
|
|
18
8
|
namespace: import("@activepieces/pieces-framework").ShortTextProperty<false>;
|
|
19
9
|
apiVersion: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
|
|
20
10
|
}>>;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,cAAc;;;;;;;;;GA+CzB,CAAC"}
|
package/src/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.hashiCorpVault =
|
|
3
|
+
exports.hashiCorpVault = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
6
|
const shared_1 = require("@activepieces/shared");
|
|
@@ -9,6 +9,7 @@ const read_secret_1 = require("./lib/actions/read-secret");
|
|
|
9
9
|
const write_secret_1 = require("./lib/actions/write-secret");
|
|
10
10
|
const delete_secret_1 = require("./lib/actions/delete-secret");
|
|
11
11
|
const list_secrets_1 = require("./lib/actions/list-secrets");
|
|
12
|
+
const auth_1 = require("./lib/auth");
|
|
12
13
|
const markdownDescription = `
|
|
13
14
|
Connect to HashiCorp Vault to securely manage secrets.
|
|
14
15
|
|
|
@@ -16,135 +17,10 @@ Connect to HashiCorp Vault to securely manage secrets.
|
|
|
16
17
|
- **Token**: Use a Vault token directly
|
|
17
18
|
- **AppRole**: Use Role ID and Secret ID for machine authentication
|
|
18
19
|
`;
|
|
19
|
-
exports.hashiCorpVaultAuth = pieces_framework_1.PieceAuth.CustomAuth({
|
|
20
|
-
description: markdownDescription,
|
|
21
|
-
props: {
|
|
22
|
-
url: pieces_framework_1.Property.ShortText({
|
|
23
|
-
displayName: 'Vault URL',
|
|
24
|
-
description: 'The URL of your HashiCorp Vault instance (e.g., https://vault.example.com:8200)',
|
|
25
|
-
required: true,
|
|
26
|
-
}),
|
|
27
|
-
authMethod: pieces_framework_1.Property.StaticDropdown({
|
|
28
|
-
displayName: 'Authentication Method',
|
|
29
|
-
description: 'Choose how to authenticate with Vault',
|
|
30
|
-
required: true,
|
|
31
|
-
defaultValue: 'token',
|
|
32
|
-
options: {
|
|
33
|
-
options: [
|
|
34
|
-
{ label: 'Token', value: 'token' },
|
|
35
|
-
{ label: 'AppRole', value: 'appRole' },
|
|
36
|
-
],
|
|
37
|
-
},
|
|
38
|
-
}),
|
|
39
|
-
token: pieces_framework_1.PieceAuth.SecretText({
|
|
40
|
-
displayName: 'Vault Token',
|
|
41
|
-
description: 'Your Vault authentication token',
|
|
42
|
-
required: false,
|
|
43
|
-
}),
|
|
44
|
-
roleId: pieces_framework_1.Property.ShortText({
|
|
45
|
-
displayName: 'Role ID',
|
|
46
|
-
description: 'The Role ID for AppRole authentication',
|
|
47
|
-
required: false,
|
|
48
|
-
}),
|
|
49
|
-
secretId: pieces_framework_1.PieceAuth.SecretText({
|
|
50
|
-
displayName: 'Secret ID',
|
|
51
|
-
description: 'The Secret ID for AppRole authentication',
|
|
52
|
-
required: false,
|
|
53
|
-
}),
|
|
54
|
-
appRolePath: pieces_framework_1.Property.ShortText({
|
|
55
|
-
displayName: 'AppRole Mount Path',
|
|
56
|
-
description: 'The mount path of the AppRole auth method',
|
|
57
|
-
required: false,
|
|
58
|
-
defaultValue: 'approle',
|
|
59
|
-
}),
|
|
60
|
-
namespace: pieces_framework_1.Property.ShortText({
|
|
61
|
-
displayName: 'Namespace',
|
|
62
|
-
description: 'Vault namespace (Enterprise feature, leave empty if not using)',
|
|
63
|
-
required: false,
|
|
64
|
-
}),
|
|
65
|
-
apiVersion: pieces_framework_1.Property.StaticDropdown({
|
|
66
|
-
displayName: 'KV Secrets Engine Version',
|
|
67
|
-
description: 'The version of the KV secrets engine',
|
|
68
|
-
required: true,
|
|
69
|
-
defaultValue: 'v2',
|
|
70
|
-
options: {
|
|
71
|
-
options: [
|
|
72
|
-
{ label: 'Version 1 (KV v1)', value: 'v1' },
|
|
73
|
-
{ label: 'Version 2 (KV v2)', value: 'v2' },
|
|
74
|
-
],
|
|
75
|
-
},
|
|
76
|
-
}),
|
|
77
|
-
},
|
|
78
|
-
validate: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
|
|
79
|
-
var _b;
|
|
80
|
-
// Validate required fields based on auth method
|
|
81
|
-
if (auth.authMethod === 'token') {
|
|
82
|
-
if (!auth.token) {
|
|
83
|
-
return {
|
|
84
|
-
valid: false,
|
|
85
|
-
error: 'Vault Token is required when using Token authentication',
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
else if (auth.authMethod === 'appRole') {
|
|
90
|
-
if (!auth.roleId || !auth.secretId) {
|
|
91
|
-
return {
|
|
92
|
-
valid: false,
|
|
93
|
-
error: 'Role ID and Secret ID are required when using AppRole authentication',
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
try {
|
|
98
|
-
const baseUrl = auth.url.replace(/\/$/, '');
|
|
99
|
-
let token;
|
|
100
|
-
if (auth.authMethod === 'token') {
|
|
101
|
-
if (!auth.token) {
|
|
102
|
-
throw new Error('Vault Token is required when using Token authentication');
|
|
103
|
-
}
|
|
104
|
-
token = auth.token;
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
// Test AppRole login
|
|
108
|
-
const appRolePath = auth.appRolePath || 'approle';
|
|
109
|
-
const response = yield pieces_common_1.httpClient.sendRequest({
|
|
110
|
-
method: pieces_common_1.HttpMethod.POST,
|
|
111
|
-
url: `${baseUrl}/v1/auth/${appRolePath}/login`,
|
|
112
|
-
headers: Object.assign({ 'Content-Type': 'application/json' }, (auth.namespace && { 'X-Vault-Namespace': auth.namespace })),
|
|
113
|
-
body: {
|
|
114
|
-
role_id: auth.roleId,
|
|
115
|
-
secret_id: auth.secretId,
|
|
116
|
-
},
|
|
117
|
-
});
|
|
118
|
-
if (!((_b = response.body.auth) === null || _b === void 0 ? void 0 : _b.client_token)) {
|
|
119
|
-
return {
|
|
120
|
-
valid: false,
|
|
121
|
-
error: 'AppRole authentication failed: No token received',
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
token = response.body.auth.client_token;
|
|
125
|
-
}
|
|
126
|
-
// Verify token by checking token info
|
|
127
|
-
yield pieces_common_1.httpClient.sendRequest({
|
|
128
|
-
method: pieces_common_1.HttpMethod.GET,
|
|
129
|
-
url: `${baseUrl}/v1/auth/token/lookup-self`,
|
|
130
|
-
headers: Object.assign({ 'X-Vault-Token': token }, (auth.namespace && { 'X-Vault-Namespace': auth.namespace })),
|
|
131
|
-
});
|
|
132
|
-
return { valid: true };
|
|
133
|
-
}
|
|
134
|
-
catch (error) {
|
|
135
|
-
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
136
|
-
return {
|
|
137
|
-
valid: false,
|
|
138
|
-
error: `Connection failed: ${errorMessage}`,
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
}),
|
|
142
|
-
required: true,
|
|
143
|
-
});
|
|
144
20
|
exports.hashiCorpVault = (0, pieces_framework_1.createPiece)({
|
|
145
21
|
displayName: 'HashiCorp Vault',
|
|
146
22
|
description: 'Securely manage secrets and sensitive data with HashiCorp Vault',
|
|
147
|
-
auth:
|
|
23
|
+
auth: auth_1.hashiCorpVaultAuth,
|
|
148
24
|
minimumSupportedRelease: '0.36.1',
|
|
149
25
|
logoUrl: 'https://cdn.activepieces.com/pieces/hashi-corp-vault.png',
|
|
150
26
|
authors: ['onyedikachi-david'],
|
|
@@ -156,7 +32,7 @@ exports.hashiCorpVault = (0, pieces_framework_1.createPiece)({
|
|
|
156
32
|
list_secrets_1.listSecrets,
|
|
157
33
|
(0, pieces_common_1.createCustomApiCallAction)({
|
|
158
34
|
baseUrl: (auth) => ((auth === null || auth === void 0 ? void 0 : auth.props.url) || '').replace(/\/$/, ''),
|
|
159
|
-
auth:
|
|
35
|
+
auth: auth_1.hashiCorpVaultAuth,
|
|
160
36
|
authMapping: (auth) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
161
37
|
var _a;
|
|
162
38
|
let token;
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,qEAIwC;AACxC,iDAAqD;AACrD,+DAAgG;AAChG,2DAAuD;AACvD,6DAAyD;AACzD,+DAA2D;AAC3D,6DAAyD;AACzD,qCAAgD;AAEhD,MAAM,mBAAmB,GAAG;;;;;;CAM3B,CAAC;AAEW,QAAA,cAAc,GAAG,IAAA,8BAAW,EAAC;IACxC,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EAAE,iEAAiE;IAC9E,IAAI,EAAE,yBAAkB;IACxB,uBAAuB,EAAE,QAAQ;IACjC,OAAO,EAAE,0DAA0D;IACnE,OAAO,EAAE,CAAC,mBAAmB,CAAC;IAC9B,UAAU,EAAE,CAAC,sBAAa,CAAC,eAAe,CAAC;IAC3C,OAAO,EAAE;QACP,wBAAU;QACV,0BAAW;QACX,4BAAY;QACZ,0BAAW;QACX,IAAA,yCAAyB,EAAC;YACxB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAC,GAAG,KAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YAC7D,IAAI,EAAE,yBAAkB;YACxB,WAAW,EAAE,CAAO,IAAI,EAAE,EAAE;;gBAC1B,IAAI,KAAa,CAAC;gBAClB,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;oBACtC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACN,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,SAAS,CAAC;oBACxD,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC1D,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAE1C;wBACD,MAAM,EAAE,0BAAU,CAAC,IAAI;wBACvB,GAAG,EAAE,GAAG,OAAO,YAAY,WAAW,QAAQ;wBAC9C,OAAO,kBACL,cAAc,EAAE,kBAAkB,IAC/B,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAC3E;wBACD,IAAI,EAAE;4BACJ,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE;4BAChC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE;yBACrC;qBACF,CAAC,CAAC;oBACH,KAAK,GAAG,CAAA,MAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,0CAAE,YAAY,KAAI,EAAE,CAAC;gBACjD,CAAC;gBACD,uBACE,eAAe,EAAE,KAAK,IACnB,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,EAC1E;YACJ,CAAC,CAAA;SACF,CAAC;KACH;IACD,QAAQ,EAAE,EAAE;CACb,CAAC,CAAC"}
|
|
@@ -11,3 +11,4 @@ export declare const deleteSecret: import("@activepieces/pieces-framework").IAct
|
|
|
11
11
|
secretEngine: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
12
12
|
secretPath: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
13
13
|
}>;
|
|
14
|
+
//# sourceMappingURL=delete-secret.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-secret.d.ts","sourceRoot":"","sources":["../../../../src/lib/actions/delete-secret.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY;;;;;;;;;;;;EAmEvB,CAAC"}
|
|
@@ -4,13 +4,18 @@ exports.deleteSecret = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
6
|
const pieces_common_1 = require("@activepieces/pieces-common");
|
|
7
|
-
const
|
|
7
|
+
const auth_1 = require("../auth");
|
|
8
8
|
const common_1 = require("../common");
|
|
9
9
|
exports.deleteSecret = (0, pieces_framework_1.createAction)({
|
|
10
|
-
auth:
|
|
10
|
+
auth: auth_1.hashiCorpVaultAuth,
|
|
11
11
|
name: 'delete_secret',
|
|
12
12
|
displayName: 'Delete Secret',
|
|
13
13
|
description: 'Delete a secret from HashiCorp Vault',
|
|
14
|
+
audience: 'both',
|
|
15
|
+
aiMetadata: {
|
|
16
|
+
description: 'Remove the secret stored at a path in a HashiCorp Vault secrets engine (mount); on KV v2 engines this deletes the metadata and all versions at that path. Use to revoke or clean up credentials. Requires the secrets-engine mount name and the path. Idempotent: deleting an already-missing path still reports success rather than erroring.',
|
|
17
|
+
idempotent: true,
|
|
18
|
+
},
|
|
14
19
|
props: {
|
|
15
20
|
secretEngine: pieces_framework_1.Property.ShortText({
|
|
16
21
|
displayName: 'Secret Engine',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-secret.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"delete-secret.js","sourceRoot":"","sources":["../../../../src/lib/actions/delete-secret.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,+DAAqE;AACrE,kCAA6C;AAC7C,sCAA6E;AAEhE,QAAA,YAAY,GAAG,IAAA,+BAAY,EAAC;IACvC,IAAI,EAAE,yBAAkB;IACxB,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,sCAAsC;IACnD,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE;QACV,WAAW,EAAE,gVAAgV;QAC7V,UAAU,EAAE,IAAI;KACjB;IACD,KAAK,EAAE;QACL,YAAY,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC/B,WAAW,EAAE,eAAe;YAC5B,WAAW,EAAE,6CAA6C;YAC1D,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,QAAQ;SACvB,CAAC;QACF,UAAU,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC7B,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,yDAAyD;YACtE,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;;YACf,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YACxD,MAAM,SAAS,GAAG,MAAM,IAAA,sBAAa,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEpD,MAAM,GAAG,GAAG,IAAA,uBAAc,EACxB,SAAS,CAAC,OAAO,EACjB,YAAY,EACZ,UAAU,EACV,SAAS,CAAC,UAAU,EACpB,QAAQ,CACT,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,0BAAU,CAAC,WAAW,CAAC;oBAC3B,MAAM,EAAE,0BAAU,CAAC,MAAM;oBACzB,GAAG;oBACH,OAAO,EAAE,IAAA,0BAAiB,EAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC;iBACjE,CAAC,CAAC;gBAEH,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,UAAU;iBACjB,CAAC;YACJ,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,IACE,KAAK;oBACL,OAAO,KAAK,KAAK,QAAQ;oBACzB,UAAU,IAAI,KAAK;oBACnB,CAAA,MAAC,KAA4C,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,EACtE,CAAC;oBACD,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,OAAO,EAAE,KAAK;wBACd,IAAI,EAAE,UAAU;wBAChB,OAAO,EAAE,wDAAwD;qBAClE,CAAC;gBACJ,CAAC;gBAED,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;gBAC3D,MAAM,IAAI,KAAK,CAAC,4BAA4B,YAAY,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;KAAA;CACF,CAAC,CAAC"}
|
|
@@ -11,3 +11,4 @@ export declare const listSecrets: import("@activepieces/pieces-framework").IActi
|
|
|
11
11
|
secretEngine: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
12
12
|
listPath: import("@activepieces/pieces-framework").ShortTextProperty<false>;
|
|
13
13
|
}>;
|
|
14
|
+
//# sourceMappingURL=list-secrets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-secrets.d.ts","sourceRoot":"","sources":["../../../../src/lib/actions/list-secrets.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW;;;;;;;;;;;;EAuEtB,CAAC"}
|
|
@@ -4,13 +4,18 @@ exports.listSecrets = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
6
|
const pieces_common_1 = require("@activepieces/pieces-common");
|
|
7
|
-
const
|
|
7
|
+
const auth_1 = require("../auth");
|
|
8
8
|
const common_1 = require("../common");
|
|
9
9
|
exports.listSecrets = (0, pieces_framework_1.createAction)({
|
|
10
|
-
auth:
|
|
10
|
+
auth: auth_1.hashiCorpVaultAuth,
|
|
11
11
|
name: 'list_secrets',
|
|
12
12
|
displayName: 'List Secrets',
|
|
13
13
|
description: 'List secrets at a path in HashiCorp Vault',
|
|
14
|
+
audience: 'both',
|
|
15
|
+
aiMetadata: {
|
|
16
|
+
description: 'List the secret keys and sub-paths directly under a path in a HashiCorp Vault secrets engine (mount). Use to discover what secrets exist before reading them. Requires the secrets-engine mount name; the path is optional and defaults to the engine root, so leaving it empty lists the top level. Read-only and idempotent; returns only immediate child keys, not nested values, and an empty/missing path returns no keys rather than erroring.',
|
|
17
|
+
idempotent: true,
|
|
18
|
+
},
|
|
14
19
|
props: {
|
|
15
20
|
secretEngine: pieces_framework_1.Property.ShortText({
|
|
16
21
|
displayName: 'Secret Engine',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-secrets.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"list-secrets.js","sourceRoot":"","sources":["../../../../src/lib/actions/list-secrets.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,+DAAqE;AACrE,kCAA6C;AAC7C,sCAA6E;AAEhE,QAAA,WAAW,GAAG,IAAA,+BAAY,EAAC;IACtC,IAAI,EAAE,yBAAkB;IACxB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,2CAA2C;IACxD,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE;QACV,WAAW,EAAE,sbAAsb;QACnc,UAAU,EAAE,IAAI;KACjB;IACD,KAAK,EAAE;QACL,YAAY,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC/B,WAAW,EAAE,eAAe;YAC5B,WAAW,EAAE,6CAA6C;YAC1D,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,QAAQ;SACvB,CAAC;QACF,QAAQ,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC3B,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,8CAA8C;YAC3D,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,EAAE;SACjB,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;;YACf,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YACtD,MAAM,SAAS,GAAG,MAAM,IAAA,sBAAa,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEpD,MAAM,SAAS,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAC7D,MAAM,GAAG,GAAG,IAAA,uBAAc,EACxB,SAAS,CAAC,OAAO,EACjB,YAAY,EACZ,SAAS,EACT,SAAS,CAAC,UAAU,EACpB,MAAM,CACP,GAAG,YAAY,CAAC;YAEjB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAE1C;oBACD,MAAM,EAAE,0BAAU,CAAC,GAAG;oBACtB,GAAG;oBACH,OAAO,EAAE,IAAA,0BAAiB,EAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC;iBACjE,CAAC,CAAC;gBAEH,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,CAAA,MAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,0CAAE,IAAI,KAAI,EAAE;oBACpC,IAAI,EAAE,QAAQ,IAAI,GAAG;iBACtB,CAAC;YACJ,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,IACE,KAAK;oBACL,OAAO,KAAK,KAAK,QAAQ;oBACzB,UAAU,IAAI,KAAK;oBACnB,CAAA,MAAC,KAA4C,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,EACtE,CAAC;oBACD,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,IAAI,EAAE,EAAE;wBACR,IAAI,EAAE,QAAQ,IAAI,GAAG;wBACrB,OAAO,EAAE,+BAA+B;qBACzC,CAAC;gBACJ,CAAC;gBAED,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;gBAC3D,MAAM,IAAI,KAAK,CAAC,2BAA2B,YAAY,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;KAAA;CACF,CAAC,CAAC"}
|
|
@@ -12,3 +12,4 @@ export declare const readSecret: import("@activepieces/pieces-framework").IActio
|
|
|
12
12
|
secretPath: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
13
13
|
version: import("@activepieces/pieces-framework").NumberProperty<false>;
|
|
14
14
|
}>;
|
|
15
|
+
//# sourceMappingURL=read-secret.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-secret.d.ts","sourceRoot":"","sources":["../../../../src/lib/actions/read-secret.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,UAAU;;;;;;;;;;;;;EAgGrB,CAAC"}
|
|
@@ -4,13 +4,18 @@ exports.readSecret = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
6
|
const pieces_common_1 = require("@activepieces/pieces-common");
|
|
7
|
-
const
|
|
7
|
+
const auth_1 = require("../auth");
|
|
8
8
|
const common_1 = require("../common");
|
|
9
9
|
exports.readSecret = (0, pieces_framework_1.createAction)({
|
|
10
|
-
auth:
|
|
10
|
+
auth: auth_1.hashiCorpVaultAuth,
|
|
11
11
|
name: 'read_secret',
|
|
12
12
|
displayName: 'Read Secret',
|
|
13
13
|
description: 'Read a secret from HashiCorp Vault',
|
|
14
|
+
audience: 'both',
|
|
15
|
+
aiMetadata: {
|
|
16
|
+
description: 'Fetch the key-value data stored at a secret path in a HashiCorp Vault secrets engine (mount). Use to retrieve credentials or config an agent needs at runtime. Requires the secrets-engine mount name and the path; on KV v2 engines an optional version number reads a specific historical version (0/omitted = latest). Read-only and idempotent; a missing path returns success:false rather than erroring.',
|
|
17
|
+
idempotent: true,
|
|
18
|
+
},
|
|
14
19
|
props: {
|
|
15
20
|
secretEngine: pieces_framework_1.Property.ShortText({
|
|
16
21
|
displayName: 'Secret Engine',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-secret.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"read-secret.js","sourceRoot":"","sources":["../../../../src/lib/actions/read-secret.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,+DAAqE;AACrE,kCAA6C;AAC7C,sCAA6E;AAEhE,QAAA,UAAU,GAAG,IAAA,+BAAY,EAAC;IACrC,IAAI,EAAE,yBAAkB;IACxB,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,oCAAoC;IACjD,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE;QACV,WAAW,EAAE,gZAAgZ;QAC7Z,UAAU,EAAE,IAAI;KACjB;IACD,KAAK,EAAE;QACL,YAAY,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC/B,WAAW,EAAE,eAAe;YAC5B,WAAW,EAAE,6CAA6C;YAC1D,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,QAAQ;SACvB,CAAC;QACF,UAAU,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC7B,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,+CAA+C;YAC5D,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,OAAO,EAAE,2BAAQ,CAAC,MAAM,CAAC;YACvB,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,0DAA0D;YACvE,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,CAAC;SAChB,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;;YACf,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YACjE,MAAM,SAAS,GAAG,MAAM,IAAA,sBAAa,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEpD,IAAI,GAAG,GAAG,IAAA,uBAAc,EACtB,SAAS,CAAC,OAAO,EACjB,YAAY,EACZ,UAAU,EACV,SAAS,CAAC,UAAU,EACpB,MAAM,CACP,CAAC;YAEF,kCAAkC;YAClC,IAAI,SAAS,CAAC,UAAU,KAAK,IAAI,IAAI,OAAO,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAC5D,GAAG,IAAI,YAAY,OAAO,EAAE,CAAC;YAC/B,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAO1C;oBACD,MAAM,EAAE,0BAAU,CAAC,GAAG;oBACtB,GAAG;oBACH,OAAO,EAAE,IAAA,0BAAiB,EAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC;iBACjE,CAAC,CAAC;gBAEH,IAAI,SAAS,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;oBAClC,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,IAAI,EAAE,CAAA,MAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,0CAAE,IAAI,KAAI,EAAE;wBACpC,QAAQ,EAAE,CAAA,MAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,0CAAE,QAAQ,KAAI,EAAE;wBAC5C,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,cAAc;wBAC5C,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS;qBACnC,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;wBAC9B,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,cAAc;wBAC5C,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS;qBACnC,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,IACE,KAAK;oBACL,OAAO,KAAK,KAAK,QAAQ;oBACzB,UAAU,IAAI,KAAK;oBACnB,CAAA,MAAC,KAA4C,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,EACtE,CAAC;oBACD,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,IAAI,EAAE,EAAE;wBACR,IAAI,EAAE,UAAU;wBAChB,OAAO,EAAE,+BAA+B;qBACzC,CAAC;gBACJ,CAAC;gBAED,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;gBAC3D,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;KAAA;CACF,CAAC,CAAC"}
|
|
@@ -12,3 +12,4 @@ export declare const writeSecret: import("@activepieces/pieces-framework").IActi
|
|
|
12
12
|
secretPath: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
13
13
|
secretData: import("@activepieces/pieces-framework").JsonProperty<true>;
|
|
14
14
|
}>;
|
|
15
|
+
//# sourceMappingURL=write-secret.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-secret.d.ts","sourceRoot":"","sources":["../../../../src/lib/actions/write-secret.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW;;;;;;;;;;;;;EAwEtB,CAAC"}
|
|
@@ -4,13 +4,18 @@ exports.writeSecret = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
6
|
const pieces_common_1 = require("@activepieces/pieces-common");
|
|
7
|
-
const
|
|
7
|
+
const auth_1 = require("../auth");
|
|
8
8
|
const common_1 = require("../common");
|
|
9
9
|
exports.writeSecret = (0, pieces_framework_1.createAction)({
|
|
10
|
-
auth:
|
|
10
|
+
auth: auth_1.hashiCorpVaultAuth,
|
|
11
11
|
name: 'write_secret',
|
|
12
12
|
displayName: 'Write Secret',
|
|
13
13
|
description: 'Write a secret to HashiCorp Vault',
|
|
14
|
+
audience: 'both',
|
|
15
|
+
aiMetadata: {
|
|
16
|
+
description: 'Store key-value data at a secret path in a HashiCorp Vault secrets engine (mount), creating the secret or overwriting the data there. Use to persist credentials or config the flow generated. Requires the secrets-engine mount name, the path, and the secret data as a JSON object. On KV v2 engines this records a new secret version each call, so it is not idempotent.',
|
|
17
|
+
idempotent: false,
|
|
18
|
+
},
|
|
14
19
|
props: {
|
|
15
20
|
secretEngine: pieces_framework_1.Property.ShortText({
|
|
16
21
|
displayName: 'Secret Engine',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-secret.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"write-secret.js","sourceRoot":"","sources":["../../../../src/lib/actions/write-secret.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,+DAAqE;AACrE,kCAA6C;AAC7C,sCAA6E;AAEhE,QAAA,WAAW,GAAG,IAAA,+BAAY,EAAC;IACtC,IAAI,EAAE,yBAAkB;IACxB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,mCAAmC;IAChD,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE;QACV,WAAW,EAAE,+WAA+W;QAC5X,UAAU,EAAE,KAAK;KAClB;IACD,KAAK,EAAE;QACL,YAAY,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC/B,WAAW,EAAE,eAAe;YAC5B,WAAW,EAAE,6CAA6C;YAC1D,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,QAAQ;SACvB,CAAC;QACF,UAAU,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC7B,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,qDAAqD;YAClE,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,UAAU,EAAE,2BAAQ,CAAC,IAAI,CAAC;YACxB,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,kCAAkC;YAC/C,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE;gBACZ,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,YAAY;aACvB;SACF,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YACpE,MAAM,SAAS,GAAG,MAAM,IAAA,sBAAa,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEpD,MAAM,GAAG,GAAG,IAAA,uBAAc,EACxB,SAAS,CAAC,OAAO,EACjB,YAAY,EACZ,UAAU,EACV,SAAS,CAAC,UAAU,EACpB,OAAO,CACR,CAAC;YAEF,IAAI,WAAoB,CAAC;YACzB,IAAI,SAAS,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBAClC,WAAW,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,UAAU,CAAC;YAC3B,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAE1C;oBACD,MAAM,EAAE,0BAAU,CAAC,IAAI;oBACvB,GAAG;oBACH,OAAO,EAAE,IAAA,0BAAiB,EAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC;oBAChE,IAAI,EAAE,WAAW;iBAClB,CAAC,CAAC;gBAEH,uBACE,OAAO,EAAE,IAAI,EACb,IAAI,EAAE,UAAU,IACb,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAC3D;YACJ,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;gBAC3D,MAAM,IAAI,KAAK,CAAC,2BAA2B,YAAY,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;KAAA;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const hashiCorpVaultAuth: import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
2
|
+
url: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
3
|
+
authMethod: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
|
|
4
|
+
token: import("@activepieces/pieces-framework").SecretTextProperty<false>;
|
|
5
|
+
roleId: import("@activepieces/pieces-framework").ShortTextProperty<false>;
|
|
6
|
+
secretId: import("@activepieces/pieces-framework").SecretTextProperty<false>;
|
|
7
|
+
appRolePath: import("@activepieces/pieces-framework").ShortTextProperty<false>;
|
|
8
|
+
namespace: import("@activepieces/pieces-framework").ShortTextProperty<false>;
|
|
9
|
+
apiVersion: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
|
|
10
|
+
}>;
|
|
11
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/lib/auth.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,kBAAkB;;;;;;;;;EAqI7B,CAAC"}
|
package/src/lib/auth.js
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hashiCorpVaultAuth = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
|
+
const pieces_common_1 = require("@activepieces/pieces-common");
|
|
7
|
+
const markdownDescription = `
|
|
8
|
+
Connect to HashiCorp Vault to securely manage secrets.
|
|
9
|
+
|
|
10
|
+
**Authentication Methods:**
|
|
11
|
+
- **Token**: Use a Vault token directly
|
|
12
|
+
- **AppRole**: Use Role ID and Secret ID for machine authentication
|
|
13
|
+
`;
|
|
14
|
+
exports.hashiCorpVaultAuth = pieces_framework_1.PieceAuth.CustomAuth({
|
|
15
|
+
description: markdownDescription,
|
|
16
|
+
props: {
|
|
17
|
+
url: pieces_framework_1.Property.ShortText({
|
|
18
|
+
displayName: 'Vault URL',
|
|
19
|
+
description: 'The URL of your HashiCorp Vault instance (e.g., https://vault.example.com:8200)',
|
|
20
|
+
required: true,
|
|
21
|
+
}),
|
|
22
|
+
authMethod: pieces_framework_1.Property.StaticDropdown({
|
|
23
|
+
displayName: 'Authentication Method',
|
|
24
|
+
description: 'Choose how to authenticate with Vault',
|
|
25
|
+
required: true,
|
|
26
|
+
defaultValue: 'token',
|
|
27
|
+
options: {
|
|
28
|
+
options: [
|
|
29
|
+
{ label: 'Token', value: 'token' },
|
|
30
|
+
{ label: 'AppRole', value: 'appRole' },
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
}),
|
|
34
|
+
token: pieces_framework_1.PieceAuth.SecretText({
|
|
35
|
+
displayName: 'Vault Token',
|
|
36
|
+
description: 'Your Vault authentication token',
|
|
37
|
+
required: false,
|
|
38
|
+
}),
|
|
39
|
+
roleId: pieces_framework_1.Property.ShortText({
|
|
40
|
+
displayName: 'Role ID',
|
|
41
|
+
description: 'The Role ID for AppRole authentication',
|
|
42
|
+
required: false,
|
|
43
|
+
}),
|
|
44
|
+
secretId: pieces_framework_1.PieceAuth.SecretText({
|
|
45
|
+
displayName: 'Secret ID',
|
|
46
|
+
description: 'The Secret ID for AppRole authentication',
|
|
47
|
+
required: false,
|
|
48
|
+
}),
|
|
49
|
+
appRolePath: pieces_framework_1.Property.ShortText({
|
|
50
|
+
displayName: 'AppRole Mount Path',
|
|
51
|
+
description: 'The mount path of the AppRole auth method',
|
|
52
|
+
required: false,
|
|
53
|
+
defaultValue: 'approle',
|
|
54
|
+
}),
|
|
55
|
+
namespace: pieces_framework_1.Property.ShortText({
|
|
56
|
+
displayName: 'Namespace',
|
|
57
|
+
description: 'Vault namespace (Enterprise feature, leave empty if not using)',
|
|
58
|
+
required: false,
|
|
59
|
+
}),
|
|
60
|
+
apiVersion: pieces_framework_1.Property.StaticDropdown({
|
|
61
|
+
displayName: 'KV Secrets Engine Version',
|
|
62
|
+
description: 'The version of the KV secrets engine',
|
|
63
|
+
required: true,
|
|
64
|
+
defaultValue: 'v2',
|
|
65
|
+
options: {
|
|
66
|
+
options: [
|
|
67
|
+
{ label: 'Version 1 (KV v1)', value: 'v1' },
|
|
68
|
+
{ label: 'Version 2 (KV v2)', value: 'v2' },
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
}),
|
|
72
|
+
},
|
|
73
|
+
validate: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
|
|
74
|
+
var _b;
|
|
75
|
+
// Validate required fields based on auth method
|
|
76
|
+
if (auth.authMethod === 'token') {
|
|
77
|
+
if (!auth.token) {
|
|
78
|
+
return {
|
|
79
|
+
valid: false,
|
|
80
|
+
error: 'Vault Token is required when using Token authentication',
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else if (auth.authMethod === 'appRole') {
|
|
85
|
+
if (!auth.roleId || !auth.secretId) {
|
|
86
|
+
return {
|
|
87
|
+
valid: false,
|
|
88
|
+
error: 'Role ID and Secret ID are required when using AppRole authentication',
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
const baseUrl = auth.url.replace(/\/$/, '');
|
|
94
|
+
let token;
|
|
95
|
+
if (auth.authMethod === 'token') {
|
|
96
|
+
if (!auth.token) {
|
|
97
|
+
throw new Error('Vault Token is required when using Token authentication');
|
|
98
|
+
}
|
|
99
|
+
token = auth.token;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
// Test AppRole login
|
|
103
|
+
const appRolePath = auth.appRolePath || 'approle';
|
|
104
|
+
const response = yield pieces_common_1.httpClient.sendRequest({
|
|
105
|
+
method: pieces_common_1.HttpMethod.POST,
|
|
106
|
+
url: `${baseUrl}/v1/auth/${appRolePath}/login`,
|
|
107
|
+
headers: Object.assign({ 'Content-Type': 'application/json' }, (auth.namespace && { 'X-Vault-Namespace': auth.namespace })),
|
|
108
|
+
body: {
|
|
109
|
+
role_id: auth.roleId,
|
|
110
|
+
secret_id: auth.secretId,
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
if (!((_b = response.body.auth) === null || _b === void 0 ? void 0 : _b.client_token)) {
|
|
114
|
+
return {
|
|
115
|
+
valid: false,
|
|
116
|
+
error: 'AppRole authentication failed: No token received',
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
token = response.body.auth.client_token;
|
|
120
|
+
}
|
|
121
|
+
// Verify token by checking token info
|
|
122
|
+
yield pieces_common_1.httpClient.sendRequest({
|
|
123
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
124
|
+
url: `${baseUrl}/v1/auth/token/lookup-self`,
|
|
125
|
+
headers: Object.assign({ 'X-Vault-Token': token }, (auth.namespace && { 'X-Vault-Namespace': auth.namespace })),
|
|
126
|
+
});
|
|
127
|
+
return { valid: true };
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
131
|
+
return {
|
|
132
|
+
valid: false,
|
|
133
|
+
error: `Connection failed: ${errorMessage}`,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}),
|
|
137
|
+
required: true,
|
|
138
|
+
});
|
|
139
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/lib/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { hashiCorpVaultAuth } from '
|
|
1
|
+
import { hashiCorpVaultAuth } from '../auth';
|
|
2
2
|
import { AppConnectionValueForAuthProperty } from '@activepieces/pieces-framework';
|
|
3
3
|
export interface VaultAuthResult {
|
|
4
4
|
token: string;
|
|
@@ -9,3 +9,4 @@ export interface VaultAuthResult {
|
|
|
9
9
|
export declare function getVaultToken(auth: AppConnectionValueForAuthProperty<typeof hashiCorpVaultAuth>): Promise<VaultAuthResult>;
|
|
10
10
|
export declare function buildVaultHeaders(token: string, namespace?: string, customHeaders?: Record<string, string>): Record<string, string>;
|
|
11
11
|
export declare function buildSecretUrl(baseUrl: string, secretEngine: string, secretPath: string, apiVersion: string, operation: 'read' | 'write' | 'delete' | 'list'): string;
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/common/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,iCAAiC,EAAE,MAAM,gCAAgC,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,iCAAiC,CAAC,OAAO,kBAAkB,CAAC,GACjE,OAAO,CAAC,eAAe,CAAC,CAuD1B;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOxB;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAC9C,MAAM,CAeR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/common/index.ts"],"names":[],"mappings":";;AAWA,sCAyDC;AAED,8CAWC;AAED,wCAqBC;;AAxGD,+DAAkF;AAWlF,SAAsB,aAAa,CACjC,IAAkE;;;QAElE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,SAAS,CAAC;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC;QAEjD,IAAI,KAAa,CAAC;QAElB,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACtE,CAAC;YACD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,yBAAyB;YACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;YACnF,CAAC;YACD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,SAAS,CAAC;YACxD,MAAM,QAAQ,GAAG,GAAG,OAAO,YAAY,WAAW,QAAQ,CAAC;YAE3D,MAAM,OAAO,GAAgB;gBAC3B,MAAM,EAAE,0BAAU,CAAC,IAAI;gBACvB,GAAG,EAAE,QAAQ;gBACb,OAAO,kBACL,cAAc,EAAE,kBAAkB,IAC/B,CAAC,SAAS,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC,CACrD;gBACD,IAAI,EAAE;oBACJ,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;oBAC1B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;iBAC/B;aACF,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAE1C,OAAO,CAAC,CAAC;gBAEZ,IAAI,CAAC,CAAA,MAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,0CAAE,YAAY,CAAA,EAAE,CAAC;oBACtC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;gBAC/D,CAAC;gBAED,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;gBAC9E,MAAM,IAAI,KAAK,CAAC,kCAAkC,YAAY,EAAE,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAED,OAAO;YACL,KAAK;YACL,OAAO;YACP,SAAS;YACT,UAAU;SACX,CAAC;IACJ,CAAC;CAAA;AAED,SAAgB,iBAAiB,CAC/B,KAAa,EACb,SAAkB,EAClB,aAAsC;IAEtC,qCACE,eAAe,EAAE,KAAK,EACtB,cAAc,EAAE,kBAAkB,IAC/B,CAAC,SAAS,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC,GACjD,aAAa,EAChB;AACJ,CAAC;AAED,SAAgB,cAAc,CAC5B,OAAe,EACf,YAAoB,EACpB,UAAkB,EAClB,UAAkB,EAClB,SAA+C;IAE/C,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAEvD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,MAAM,CAAC;YACZ,KAAK,OAAO;gBACV,OAAO,GAAG,OAAO,OAAO,YAAY,SAAS,SAAS,EAAE,CAAC;YAC3D,KAAK,QAAQ,CAAC;YACd,KAAK,MAAM;gBACT,OAAO,GAAG,OAAO,OAAO,YAAY,aAAa,SAAS,EAAE,CAAC;QACjE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,OAAO,OAAO,YAAY,IAAI,SAAS,EAAE,CAAC;IACtD,CAAC;AACH,CAAC"}
|