@activepieces/piece-hashi-corp-vault 0.0.1

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/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # pieces-hashi-corp-vault
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build pieces-hashi-corp-vault` to build the library.
package/package.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "@activepieces/piece-hashi-corp-vault",
3
+ "version": "0.0.1",
4
+ "type": "commonjs",
5
+ "main": "./src/index.js",
6
+ "types": "./src/index.d.ts",
7
+ "dependencies": {
8
+ "@sinclair/typebox": "0.34.11",
9
+ "ai": "5.0.104",
10
+ "axios": "1.13.1",
11
+ "axios-retry": "4.4.1",
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.1",
21
+ "@activepieces/pieces-framework": "0.23.0",
22
+ "@activepieces/shared": "0.30.4"
23
+ },
24
+ "resolutions": {
25
+ "rollup": "npm:@rollup/wasm-node"
26
+ }
27
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,20 @@
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
+ export declare const hashiCorpVault: import("@activepieces/pieces-framework").Piece<import("@activepieces/pieces-framework").CustomAuthProperty<{
12
+ url: import("@activepieces/pieces-framework").ShortTextProperty<true>;
13
+ authMethod: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
14
+ token: import("@activepieces/pieces-framework").SecretTextProperty<false>;
15
+ roleId: import("@activepieces/pieces-framework").ShortTextProperty<false>;
16
+ secretId: import("@activepieces/pieces-framework").SecretTextProperty<false>;
17
+ appRolePath: import("@activepieces/pieces-framework").ShortTextProperty<false>;
18
+ namespace: import("@activepieces/pieces-framework").ShortTextProperty<false>;
19
+ apiVersion: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
20
+ }>>;
package/src/index.js ADDED
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hashiCorpVault = exports.hashiCorpVaultAuth = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const shared_1 = require("@activepieces/shared");
7
+ const pieces_common_1 = require("@activepieces/pieces-common");
8
+ const read_secret_1 = require("./lib/actions/read-secret");
9
+ const write_secret_1 = require("./lib/actions/write-secret");
10
+ const delete_secret_1 = require("./lib/actions/delete-secret");
11
+ const list_secrets_1 = require("./lib/actions/list-secrets");
12
+ const markdownDescription = `
13
+ Connect to HashiCorp Vault to securely manage secrets.
14
+
15
+ **Authentication Methods:**
16
+ - **Token**: Use a Vault token directly
17
+ - **AppRole**: Use Role ID and Secret ID for machine authentication
18
+ `;
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
+ exports.hashiCorpVault = (0, pieces_framework_1.createPiece)({
145
+ displayName: 'HashiCorp Vault',
146
+ description: 'Securely manage secrets and sensitive data with HashiCorp Vault',
147
+ auth: exports.hashiCorpVaultAuth,
148
+ minimumSupportedRelease: '0.36.1',
149
+ logoUrl: 'https://cdn.activepieces.com/pieces/hashi-corp-vault.png',
150
+ authors: ['onyedikachi-david'],
151
+ categories: [shared_1.PieceCategory.DEVELOPER_TOOLS],
152
+ actions: [
153
+ read_secret_1.readSecret,
154
+ write_secret_1.writeSecret,
155
+ delete_secret_1.deleteSecret,
156
+ list_secrets_1.listSecrets,
157
+ (0, pieces_common_1.createCustomApiCallAction)({
158
+ baseUrl: (auth) => ((auth === null || auth === void 0 ? void 0 : auth.props.url) || '').replace(/\/$/, ''),
159
+ auth: exports.hashiCorpVaultAuth,
160
+ authMapping: (auth) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
161
+ var _a;
162
+ let token;
163
+ if (auth.props.authMethod === 'token') {
164
+ token = auth.props.token || '';
165
+ }
166
+ else {
167
+ const appRolePath = auth.props.appRolePath || 'approle';
168
+ const baseUrl = (auth.props.url || '').replace(/\/$/, '');
169
+ const response = yield pieces_common_1.httpClient.sendRequest({
170
+ method: pieces_common_1.HttpMethod.POST,
171
+ url: `${baseUrl}/v1/auth/${appRolePath}/login`,
172
+ headers: Object.assign({ 'Content-Type': 'application/json' }, (auth.props.namespace && { 'X-Vault-Namespace': auth.props.namespace })),
173
+ body: {
174
+ role_id: auth.props.roleId || '',
175
+ secret_id: auth.props.secretId || '',
176
+ },
177
+ });
178
+ token = ((_a = response.body.auth) === null || _a === void 0 ? void 0 : _a.client_token) || '';
179
+ }
180
+ return Object.assign({ 'X-Vault-Token': token }, (auth.props.namespace && { 'X-Vault-Namespace': auth.props.namespace }));
181
+ }),
182
+ }),
183
+ ],
184
+ triggers: [],
185
+ });
186
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/community/hashi-corp-vault/src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export declare const deleteSecret: import("@activepieces/pieces-framework").IAction<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
+ secretEngine: import("@activepieces/pieces-framework").ShortTextProperty<true>;
12
+ secretPath: import("@activepieces/pieces-framework").ShortTextProperty<true>;
13
+ }>;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deleteSecret = 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 index_1 = require("../../index");
8
+ const common_1 = require("../common");
9
+ exports.deleteSecret = (0, pieces_framework_1.createAction)({
10
+ auth: index_1.hashiCorpVaultAuth,
11
+ name: 'delete_secret',
12
+ displayName: 'Delete Secret',
13
+ description: 'Delete a secret from HashiCorp Vault',
14
+ props: {
15
+ secretEngine: pieces_framework_1.Property.ShortText({
16
+ displayName: 'Secret Engine',
17
+ description: 'The name of the secrets engine (mount path)',
18
+ required: true,
19
+ defaultValue: 'secret',
20
+ }),
21
+ secretPath: pieces_framework_1.Property.ShortText({
22
+ displayName: 'Secret Path',
23
+ description: 'The path to the secret to delete (e.g., myapp/database)',
24
+ required: true,
25
+ }),
26
+ },
27
+ run(context) {
28
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
29
+ var _a;
30
+ const { secretEngine, secretPath } = context.propsValue;
31
+ const vaultAuth = yield (0, common_1.getVaultToken)(context.auth);
32
+ const url = (0, common_1.buildSecretUrl)(vaultAuth.baseUrl, secretEngine, secretPath, vaultAuth.apiVersion, 'delete');
33
+ try {
34
+ yield pieces_common_1.httpClient.sendRequest({
35
+ method: pieces_common_1.HttpMethod.DELETE,
36
+ url,
37
+ headers: (0, common_1.buildVaultHeaders)(vaultAuth.token, vaultAuth.namespace),
38
+ });
39
+ return {
40
+ success: true,
41
+ deleted: true,
42
+ path: secretPath,
43
+ };
44
+ }
45
+ catch (error) {
46
+ if (error &&
47
+ typeof error === 'object' &&
48
+ 'response' in error &&
49
+ ((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 404) {
50
+ return {
51
+ success: true,
52
+ deleted: false,
53
+ path: secretPath,
54
+ message: 'Secret not found at this path (may already be deleted)',
55
+ };
56
+ }
57
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
58
+ throw new Error(`Failed to delete secret: ${errorMessage}`);
59
+ }
60
+ });
61
+ },
62
+ });
63
+ //# sourceMappingURL=delete-secret.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-secret.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/hashi-corp-vault/src/lib/actions/delete-secret.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,+DAAqE;AACrE,uCAAiD;AACjD,sCAA6E;AAEhE,QAAA,YAAY,GAAG,IAAA,+BAAY,EAAC;IACvC,IAAI,EAAE,0BAAkB;IACxB,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,sCAAsC;IACnD,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"}
@@ -0,0 +1,13 @@
1
+ export declare const listSecrets: import("@activepieces/pieces-framework").IAction<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
+ secretEngine: import("@activepieces/pieces-framework").ShortTextProperty<true>;
12
+ listPath: import("@activepieces/pieces-framework").ShortTextProperty<false>;
13
+ }>;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listSecrets = 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 index_1 = require("../../index");
8
+ const common_1 = require("../common");
9
+ exports.listSecrets = (0, pieces_framework_1.createAction)({
10
+ auth: index_1.hashiCorpVaultAuth,
11
+ name: 'list_secrets',
12
+ displayName: 'List Secrets',
13
+ description: 'List secrets at a path in HashiCorp Vault',
14
+ props: {
15
+ secretEngine: pieces_framework_1.Property.ShortText({
16
+ displayName: 'Secret Engine',
17
+ description: 'The name of the secrets engine (mount path)',
18
+ required: true,
19
+ defaultValue: 'secret',
20
+ }),
21
+ listPath: pieces_framework_1.Property.ShortText({
22
+ displayName: 'Path',
23
+ description: 'The path to list secrets from (e.g., myapp/)',
24
+ required: false,
25
+ defaultValue: '',
26
+ }),
27
+ },
28
+ run(context) {
29
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
30
+ var _a, _b;
31
+ const { secretEngine, listPath } = context.propsValue;
32
+ const vaultAuth = yield (0, common_1.getVaultToken)(context.auth);
33
+ const cleanPath = (listPath || '').replace(/^\/+|\/+$/g, '');
34
+ const url = (0, common_1.buildSecretUrl)(vaultAuth.baseUrl, secretEngine, cleanPath, vaultAuth.apiVersion, 'list') + '?list=true';
35
+ try {
36
+ const response = yield pieces_common_1.httpClient.sendRequest({
37
+ method: pieces_common_1.HttpMethod.GET,
38
+ url,
39
+ headers: (0, common_1.buildVaultHeaders)(vaultAuth.token, vaultAuth.namespace),
40
+ });
41
+ return {
42
+ success: true,
43
+ keys: ((_a = response.body.data) === null || _a === void 0 ? void 0 : _a.keys) || [],
44
+ path: listPath || '/',
45
+ };
46
+ }
47
+ catch (error) {
48
+ if (error &&
49
+ typeof error === 'object' &&
50
+ 'response' in error &&
51
+ ((_b = error.response) === null || _b === void 0 ? void 0 : _b.status) === 404) {
52
+ return {
53
+ success: true,
54
+ keys: [],
55
+ path: listPath || '/',
56
+ message: 'No secrets found at this path',
57
+ };
58
+ }
59
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
60
+ throw new Error(`Failed to list secrets: ${errorMessage}`);
61
+ }
62
+ });
63
+ },
64
+ });
65
+ //# sourceMappingURL=list-secrets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-secrets.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/hashi-corp-vault/src/lib/actions/list-secrets.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,+DAAqE;AACrE,uCAAiD;AACjD,sCAA6E;AAEhE,QAAA,WAAW,GAAG,IAAA,+BAAY,EAAC;IACtC,IAAI,EAAE,0BAAkB;IACxB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,2CAA2C;IACxD,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"}
@@ -0,0 +1,14 @@
1
+ export declare const readSecret: import("@activepieces/pieces-framework").IAction<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
+ secretEngine: import("@activepieces/pieces-framework").ShortTextProperty<true>;
12
+ secretPath: import("@activepieces/pieces-framework").ShortTextProperty<true>;
13
+ version: import("@activepieces/pieces-framework").NumberProperty<false>;
14
+ }>;
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readSecret = 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 index_1 = require("../../index");
8
+ const common_1 = require("../common");
9
+ exports.readSecret = (0, pieces_framework_1.createAction)({
10
+ auth: index_1.hashiCorpVaultAuth,
11
+ name: 'read_secret',
12
+ displayName: 'Read Secret',
13
+ description: 'Read a secret from HashiCorp Vault',
14
+ props: {
15
+ secretEngine: pieces_framework_1.Property.ShortText({
16
+ displayName: 'Secret Engine',
17
+ description: 'The name of the secrets engine (mount path)',
18
+ required: true,
19
+ defaultValue: 'secret',
20
+ }),
21
+ secretPath: pieces_framework_1.Property.ShortText({
22
+ displayName: 'Secret Path',
23
+ description: 'The path to the secret (e.g., myapp/database)',
24
+ required: true,
25
+ }),
26
+ version: pieces_framework_1.Property.Number({
27
+ displayName: 'Version',
28
+ description: 'Version of the secret to read (0 for latest, KV v2 only)',
29
+ required: false,
30
+ defaultValue: 0,
31
+ }),
32
+ },
33
+ run(context) {
34
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
35
+ var _a, _b, _c;
36
+ const { secretEngine, secretPath, version } = context.propsValue;
37
+ const vaultAuth = yield (0, common_1.getVaultToken)(context.auth);
38
+ let url = (0, common_1.buildSecretUrl)(vaultAuth.baseUrl, secretEngine, secretPath, vaultAuth.apiVersion, 'read');
39
+ // Add version parameter for KV v2
40
+ if (vaultAuth.apiVersion === 'v2' && version && version > 0) {
41
+ url += `?version=${version}`;
42
+ }
43
+ try {
44
+ const response = yield pieces_common_1.httpClient.sendRequest({
45
+ method: pieces_common_1.HttpMethod.GET,
46
+ url,
47
+ headers: (0, common_1.buildVaultHeaders)(vaultAuth.token, vaultAuth.namespace),
48
+ });
49
+ if (vaultAuth.apiVersion === 'v2') {
50
+ return {
51
+ success: true,
52
+ data: ((_a = response.body.data) === null || _a === void 0 ? void 0 : _a.data) || {},
53
+ metadata: ((_b = response.body.data) === null || _b === void 0 ? void 0 : _b.metadata) || {},
54
+ lease_duration: response.body.lease_duration,
55
+ renewable: response.body.renewable,
56
+ };
57
+ }
58
+ else {
59
+ return {
60
+ success: true,
61
+ data: response.body.data || {},
62
+ lease_duration: response.body.lease_duration,
63
+ renewable: response.body.renewable,
64
+ };
65
+ }
66
+ }
67
+ catch (error) {
68
+ if (error &&
69
+ typeof error === 'object' &&
70
+ 'response' in error &&
71
+ ((_c = error.response) === null || _c === void 0 ? void 0 : _c.status) === 404) {
72
+ return {
73
+ success: false,
74
+ data: {},
75
+ path: secretPath,
76
+ message: 'Secret not found at this path',
77
+ };
78
+ }
79
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
80
+ throw new Error(`Failed to read secret: ${errorMessage}`);
81
+ }
82
+ });
83
+ },
84
+ });
85
+ //# sourceMappingURL=read-secret.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-secret.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/hashi-corp-vault/src/lib/actions/read-secret.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,+DAAqE;AACrE,uCAAiD;AACjD,sCAA6E;AAEhE,QAAA,UAAU,GAAG,IAAA,+BAAY,EAAC;IACrC,IAAI,EAAE,0BAAkB;IACxB,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,oCAAoC;IACjD,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"}
@@ -0,0 +1,14 @@
1
+ export declare const writeSecret: import("@activepieces/pieces-framework").IAction<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
+ secretEngine: import("@activepieces/pieces-framework").ShortTextProperty<true>;
12
+ secretPath: import("@activepieces/pieces-framework").ShortTextProperty<true>;
13
+ secretData: import("@activepieces/pieces-framework").JsonProperty<true>;
14
+ }>;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.writeSecret = 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 index_1 = require("../../index");
8
+ const common_1 = require("../common");
9
+ exports.writeSecret = (0, pieces_framework_1.createAction)({
10
+ auth: index_1.hashiCorpVaultAuth,
11
+ name: 'write_secret',
12
+ displayName: 'Write Secret',
13
+ description: 'Write a secret to HashiCorp Vault',
14
+ props: {
15
+ secretEngine: pieces_framework_1.Property.ShortText({
16
+ displayName: 'Secret Engine',
17
+ description: 'The name of the secrets engine (mount path)',
18
+ required: true,
19
+ defaultValue: 'secret',
20
+ }),
21
+ secretPath: pieces_framework_1.Property.ShortText({
22
+ displayName: 'Secret Path',
23
+ description: 'The path to store the secret (e.g., myapp/database)',
24
+ required: true,
25
+ }),
26
+ secretData: pieces_framework_1.Property.Json({
27
+ displayName: 'Secret Data',
28
+ description: 'The secret data to store as JSON',
29
+ required: true,
30
+ defaultValue: {
31
+ username: 'myuser',
32
+ password: 'mypassword',
33
+ },
34
+ }),
35
+ },
36
+ run(context) {
37
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
38
+ const { secretEngine, secretPath, secretData } = context.propsValue;
39
+ const vaultAuth = yield (0, common_1.getVaultToken)(context.auth);
40
+ const url = (0, common_1.buildSecretUrl)(vaultAuth.baseUrl, secretEngine, secretPath, vaultAuth.apiVersion, 'write');
41
+ let requestBody;
42
+ if (vaultAuth.apiVersion === 'v2') {
43
+ requestBody = { data: secretData };
44
+ }
45
+ else {
46
+ requestBody = secretData;
47
+ }
48
+ try {
49
+ const response = yield pieces_common_1.httpClient.sendRequest({
50
+ method: pieces_common_1.HttpMethod.POST,
51
+ url,
52
+ headers: (0, common_1.buildVaultHeaders)(vaultAuth.token, vaultAuth.namespace),
53
+ body: requestBody,
54
+ });
55
+ return Object.assign({ success: true, path: secretPath }, (response.body.data && { metadata: response.body.data }));
56
+ }
57
+ catch (error) {
58
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
59
+ throw new Error(`Failed to write secret: ${errorMessage}`);
60
+ }
61
+ });
62
+ },
63
+ });
64
+ //# sourceMappingURL=write-secret.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-secret.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/hashi-corp-vault/src/lib/actions/write-secret.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,+DAAqE;AACrE,uCAAiD;AACjD,sCAA6E;AAEhE,QAAA,WAAW,GAAG,IAAA,+BAAY,EAAC;IACtC,IAAI,EAAE,0BAAkB;IACxB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,mCAAmC;IAChD,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
+ import { hashiCorpVaultAuth } from '../../index';
2
+ import { AppConnectionValueForAuthProperty } from '@activepieces/pieces-framework';
3
+ export interface VaultAuthResult {
4
+ token: string;
5
+ baseUrl: string;
6
+ namespace?: string;
7
+ apiVersion: string;
8
+ }
9
+ export declare function getVaultToken(auth: AppConnectionValueForAuthProperty<typeof hashiCorpVaultAuth>): Promise<VaultAuthResult>;
10
+ export declare function buildVaultHeaders(token: string, namespace?: string, customHeaders?: Record<string, string>): Record<string, string>;
11
+ export declare function buildSecretUrl(baseUrl: string, secretEngine: string, secretPath: string, apiVersion: string, operation: 'read' | 'write' | 'delete' | 'list'): string;
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getVaultToken = getVaultToken;
4
+ exports.buildVaultHeaders = buildVaultHeaders;
5
+ exports.buildSecretUrl = buildSecretUrl;
6
+ const tslib_1 = require("tslib");
7
+ const pieces_common_1 = require("@activepieces/pieces-common");
8
+ function getVaultToken(auth) {
9
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
10
+ var _a;
11
+ const baseUrl = auth.props.url.replace(/\/$/, '');
12
+ const namespace = auth.props.namespace || undefined;
13
+ const apiVersion = auth.props.apiVersion || 'v2';
14
+ let token;
15
+ if (auth.props.authMethod === 'token') {
16
+ if (!auth.props.token) {
17
+ throw new Error('Vault Token is required for token authentication');
18
+ }
19
+ token = auth.props.token;
20
+ }
21
+ else {
22
+ // AppRole authentication
23
+ if (!auth.props.roleId || !auth.props.secretId) {
24
+ throw new Error('Role ID and Secret ID are required for AppRole authentication');
25
+ }
26
+ const appRolePath = auth.props.appRolePath || 'approle';
27
+ const loginUrl = `${baseUrl}/v1/auth/${appRolePath}/login`;
28
+ const request = {
29
+ method: pieces_common_1.HttpMethod.POST,
30
+ url: loginUrl,
31
+ headers: Object.assign({ 'Content-Type': 'application/json' }, (namespace && { 'X-Vault-Namespace': namespace })),
32
+ body: {
33
+ role_id: auth.props.roleId,
34
+ secret_id: auth.props.secretId,
35
+ },
36
+ };
37
+ try {
38
+ const response = yield pieces_common_1.httpClient.sendRequest(request);
39
+ if (!((_a = response.body.auth) === null || _a === void 0 ? void 0 : _a.client_token)) {
40
+ throw new Error('Failed to obtain token from AppRole login');
41
+ }
42
+ token = response.body.auth.client_token;
43
+ }
44
+ catch (error) {
45
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
46
+ throw new Error(`AppRole authentication failed: ${errorMessage}`);
47
+ }
48
+ }
49
+ return {
50
+ token,
51
+ baseUrl,
52
+ namespace,
53
+ apiVersion,
54
+ };
55
+ });
56
+ }
57
+ function buildVaultHeaders(token, namespace, customHeaders) {
58
+ return Object.assign(Object.assign({ 'X-Vault-Token': token, 'Content-Type': 'application/json' }, (namespace && { 'X-Vault-Namespace': namespace })), customHeaders);
59
+ }
60
+ function buildSecretUrl(baseUrl, secretEngine, secretPath, apiVersion, operation) {
61
+ const cleanPath = secretPath.replace(/^\/+|\/+$/g, '');
62
+ if (apiVersion === 'v2') {
63
+ switch (operation) {
64
+ case 'read':
65
+ case 'write':
66
+ return `${baseUrl}/v1/${secretEngine}/data/${cleanPath}`;
67
+ case 'delete':
68
+ case 'list':
69
+ return `${baseUrl}/v1/${secretEngine}/metadata/${cleanPath}`;
70
+ }
71
+ }
72
+ else {
73
+ return `${baseUrl}/v1/${secretEngine}/${cleanPath}`;
74
+ }
75
+ }
76
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/hashi-corp-vault/src/lib/common/index.ts"],"names":[],"mappings":"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"}