@rockcarver/frodo-lib 0.12.2-2 → 0.12.2-3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,6 +16,11 @@ const getApiConfig = () => ({
16
16
  path: `/environment/secrets`,
17
17
  apiVersion
18
18
  });
19
+ /**
20
+ * Get all secrets
21
+ * @returns {Promise<unknown[]>} a promise that resolves to an array of secrets
22
+ */
23
+
19
24
 
20
25
  export async function getSecrets() {
21
26
  const urlString = util.format(secretsListURLTemplate, getTenantURL(storage.session.getTenant()));
@@ -24,8 +29,14 @@ export async function getSecrets() {
24
29
  } = await generateESVApi(getApiConfig()).get(urlString, {
25
30
  withCredentials: true
26
31
  });
27
- return data.result;
32
+ return data;
28
33
  }
34
+ /**
35
+ * Get secret
36
+ * @param secretId secret id/name
37
+ * @returns {Promise<unknown>} a promise that resolves to a secret
38
+ */
39
+
29
40
  export async function getSecret(secretId) {
30
41
  const urlString = util.format(secretURLTemplate, getTenantURL(storage.session.getTenant()), secretId);
31
42
  const {
@@ -35,6 +46,16 @@ export async function getSecret(secretId) {
35
46
  });
36
47
  return data;
37
48
  }
49
+ /**
50
+ * Create secret
51
+ * @param {string} secretId secret id/name
52
+ * @param {string} value secret value
53
+ * @param {string} description secret description
54
+ * @param {string} encoding secret encoding (only `generic` is supported)
55
+ * @param {boolean} useInPlaceholders flag indicating if the secret can be used in placeholders
56
+ * @returns {Promise<unknown>} a promise that resolves to a secret
57
+ */
58
+
38
59
  export async function putSecret(secretId, value, description, encoding = 'generic', useInPlaceholders = true) {
39
60
  if (encoding !== 'generic') throw new Error(`Unsupported encoding: ${encoding}`);
40
61
  const secretData = {
@@ -51,6 +72,13 @@ export async function putSecret(secretId, value, description, encoding = 'generi
51
72
  });
52
73
  return data;
53
74
  }
75
+ /**
76
+ * Set secret description
77
+ * @param {string} secretId secret id/name
78
+ * @param {string} description secret description
79
+ * @returns {Promise<unknown>} a promise that resolves to a status object
80
+ */
81
+
54
82
  export async function setSecretDescription(secretId, description) {
55
83
  const urlString = util.format(secretSetDescriptionURLTemplate, getTenantURL(storage.session.getTenant()), secretId);
56
84
  const {
@@ -62,6 +90,12 @@ export async function setSecretDescription(secretId, description) {
62
90
  });
63
91
  return data;
64
92
  }
93
+ /**
94
+ * Delete secret
95
+ * @param {string} secretId secret id/name
96
+ * @returns {Promise<unknown>} a promise that resolves to a secret object
97
+ */
98
+
65
99
  export async function deleteSecret(secretId) {
66
100
  const urlString = util.format(secretURLTemplate, getTenantURL(storage.session.getTenant()), secretId);
67
101
  const {
@@ -71,6 +105,12 @@ export async function deleteSecret(secretId) {
71
105
  });
72
106
  return data;
73
107
  }
108
+ /**
109
+ * Get secret versions
110
+ * @param {string} secretId secret id/name
111
+ * @returns {Promise<unknown>} a promise that resolves to an array of secret versions
112
+ */
113
+
74
114
  export async function getSecretVersions(secretId) {
75
115
  const urlString = util.format(secretListVersionsURLTemplate, getTenantURL(storage.session.getTenant()), secretId);
76
116
  const {
@@ -80,6 +120,13 @@ export async function getSecretVersions(secretId) {
80
120
  });
81
121
  return data;
82
122
  }
123
+ /**
124
+ * Create new secret version
125
+ * @param {string} secretId secret id/name
126
+ * @param {string} value secret value
127
+ * @returns {Promise<unknown>} a promise that resolves to a version object
128
+ */
129
+
83
130
  export async function createNewVersionOfSecret(secretId, value) {
84
131
  const urlString = util.format(secretCreateNewVersionURLTemplate, getTenantURL(storage.session.getTenant()), secretId);
85
132
  const {
@@ -91,6 +138,13 @@ export async function createNewVersionOfSecret(secretId, value) {
91
138
  });
92
139
  return data;
93
140
  }
141
+ /**
142
+ * Get version of secret
143
+ * @param {string} secretId secret id/name
144
+ * @param {string} version secret version
145
+ * @returns {Promise<unknown>} a promise that resolves to a version object
146
+ */
147
+
94
148
  export async function getVersionOfSecret(secretId, version) {
95
149
  const urlString = util.format(secretGetVersionURLTemplate, getTenantURL(storage.session.getTenant()), secretId, version);
96
150
  const {
@@ -100,6 +154,20 @@ export async function getVersionOfSecret(secretId, version) {
100
154
  });
101
155
  return data;
102
156
  }
157
+ export let VersionOfSecretStatus;
158
+ /**
159
+ * Update the status of a version of a secret
160
+ * @param {string} secretId secret id/name
161
+ * @param {string} version secret version
162
+ * @param {VersionOfSecretStatus} status status
163
+ * @returns {Promise<unknown>} a promise that resolves to a status object
164
+ */
165
+
166
+ (function (VersionOfSecretStatus) {
167
+ VersionOfSecretStatus["DISABLED"] = "DISABLED";
168
+ VersionOfSecretStatus["ENABLED"] = "ENABLED";
169
+ })(VersionOfSecretStatus || (VersionOfSecretStatus = {}));
170
+
103
171
  export async function setStatusOfVersionOfSecret(secretId, version, status) {
104
172
  const urlString = util.format(secretVersionStatusURLTemplate, getTenantURL(storage.session.getTenant()), secretId, version);
105
173
  const {
@@ -111,6 +179,13 @@ export async function setStatusOfVersionOfSecret(secretId, version, status) {
111
179
  });
112
180
  return data;
113
181
  }
182
+ /**
183
+ * Delete version of secret
184
+ * @param {string} secretId secret id/name
185
+ * @param {string} version secret version
186
+ * @returns {Promise<unknown>} a promise that resolves to a version object
187
+ */
188
+
114
189
  export async function deleteVersionOfSecret(secretId, version) {
115
190
  const urlString = util.format(secretGetVersionURLTemplate, getTenantURL(storage.session.getTenant()), secretId, version);
116
191
  const {
@@ -0,0 +1,283 @@
1
+ import axios from 'axios';
2
+ import MockAdapter from 'axios-mock-adapter';
3
+ import { SecretsRaw, state } from '../index';
4
+ import fs from 'fs';
5
+ import path from 'path';
6
+ import { fileURLToPath } from 'url';
7
+
8
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
9
+
10
+ const mock = new MockAdapter(axios);
11
+ state.default.session.setTenant('https://openam-frodo-dev.forgeblocks.com/am');
12
+ state.default.session.setRealm('alpha');
13
+ state.default.session.setCookieName('cookieName');
14
+ state.default.session.setCookieValue('cookieValue');
15
+ describe('SecretsApi - getSecrets()', () => {
16
+ test('getSecrets() 1: Get all secrets - success', async () => {
17
+ const mockResponse = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../test/mocks/SecretsApi/getSecrets/secrets.json'), 'utf8'));
18
+ mock.onGet('https://openam-frodo-dev.forgeblocks.com/environment/secrets').reply(200, mockResponse);
19
+ const response = await SecretsRaw.getSecrets();
20
+ expect(response).toBeTruthy();
21
+ expect(response).toMatchObject(mockResponse);
22
+ });
23
+ test('getSecrets() 2: Get all secrets - error', async () => {
24
+ const mockResponse = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../test/mocks/SecretsApi/getSecrets/error.json'), 'utf8'));
25
+ mock.onGet('https://openam-frodo-dev.forgeblocks.com/environment/secrets').reply(500, mockResponse);
26
+ expect.assertions(4);
27
+
28
+ try {
29
+ await SecretsRaw.getSecrets();
30
+ } catch (error) {
31
+ // console.dir(error);
32
+ expect(error).toBeTruthy();
33
+ expect(error.response.status).toBe(500);
34
+ expect(error.response.data.code).toBe(500);
35
+ expect(error.response.data.message).toBe('Server Error');
36
+ }
37
+ });
38
+ });
39
+ describe('SecretsApi - getSecret()', () => {
40
+ test('getSecret() 1: Get existing secret: esv-volkerstestsecret1', async () => {
41
+ const mockResponse = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../test/mocks/SecretsApi/getSecret/esv-volkerstestsecret1.json'), 'utf8'));
42
+ mock.onGet('https://openam-frodo-dev.forgeblocks.com/environment/secrets/esv-volkerstestsecret1').reply(200, mockResponse);
43
+ const response = await SecretsRaw.getSecret('esv-volkerstestsecret1');
44
+ expect(response).toBeTruthy();
45
+ expect(response).toMatchObject(mockResponse);
46
+ });
47
+ test('getSecret() 2: Get non-existing secret: esv-does-not-exist', async () => {
48
+ const mockResponse = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../test/mocks/SecretsApi/getSecret/esv-does-not-exist.json'), 'utf8'));
49
+ mock.onGet('https://openam-frodo-dev.forgeblocks.com/environment/secrets/esv-does-not-exist').reply(404, mockResponse);
50
+ expect.assertions(4);
51
+
52
+ try {
53
+ await SecretsRaw.getSecret('esv-does-not-exist');
54
+ } catch (error) {
55
+ // console.dir(error);
56
+ expect(error).toBeTruthy();
57
+ expect(error.response.status).toBe(404);
58
+ expect(error.response.data.code).toBe(404);
59
+ expect(error.response.data.message).toBe('The secret does not exist or does not have a version');
60
+ }
61
+ });
62
+ });
63
+ describe('SecretsApi - putSecret()', () => {
64
+ test('putSecret() 1: Create secret: esv-volkerstestsecret1 - success', async () => {
65
+ const mockResponse = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../test/mocks/SecretsApi/putSecret/esv-volkerstestsecret1.json'), 'utf8'));
66
+ mock.onPut('https://openam-frodo-dev.forgeblocks.com/environment/secrets/esv-volkerstestsecret1').reply(200, mockResponse);
67
+ const response = await SecretsRaw.putSecret('esv-volkerstestsecret1', "Volker's Test Secret Value", "Volker's Test Secret Description", 'generic', true);
68
+ expect(response).toBeTruthy();
69
+ expect(response).toMatchObject(mockResponse);
70
+ });
71
+ test('putSecret() 2: Create secret: esv-volkerstestsecret1 - error', async () => {
72
+ const mockResponse = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../test/mocks/SecretsApi/putSecret/error.json'), 'utf8'));
73
+ mock.onPut('https://openam-frodo-dev.forgeblocks.com/environment/secrets/esv-volkerstestsecret1').reply(500, mockResponse);
74
+ expect.assertions(4);
75
+
76
+ try {
77
+ await SecretsRaw.putSecret('esv-volkerstestsecret1', "Volker's Test Secret Value", "Volker's Test Secret Description", 'generic', true);
78
+ } catch (error) {
79
+ // console.dir(error);
80
+ expect(error).toBeTruthy();
81
+ expect(error.response.status).toBe(500);
82
+ expect(error.response.data.code).toBe(500);
83
+ expect(error.response.data.message).toBe('Server Error');
84
+ }
85
+ });
86
+ });
87
+ describe('SecretsApi - setSecretDescription()', () => {
88
+ test('setSecretDescription() 1: Set secret description: esv-volkerstestsecret1 - success', async () => {
89
+ const mockResponse = '';
90
+ mock.onPost('https://openam-frodo-dev.forgeblocks.com/environment/secrets/esv-volkerstestsecret1?_action=setDescription').reply(200, mockResponse);
91
+ const response = await SecretsRaw.setSecretDescription('esv-volkerstestsecret1', "Volker's Updated Test Secret Description");
92
+ expect(response).toBe('');
93
+ });
94
+ test('setSecretDescription() 2: Set secret description: esv-volkerstestsecret1 - error', async () => {
95
+ const mockResponse = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../test/mocks/SecretsApi/setSecretDescription/error.json'), 'utf8'));
96
+ mock.onPost('https://openam-frodo-dev.forgeblocks.com/environment/secrets/esv-volkerstestsecret1?_action=setDescription').reply(500, mockResponse);
97
+ expect.assertions(4);
98
+
99
+ try {
100
+ await SecretsRaw.setSecretDescription('esv-volkerstestsecret1', "Volker's Updated Test Secret Description");
101
+ } catch (error) {
102
+ // console.dir(error);
103
+ expect(error).toBeTruthy();
104
+ expect(error.response.status).toBe(500);
105
+ expect(error.response.data.code).toBe(500);
106
+ expect(error.response.data.message).toBe('Server Error');
107
+ }
108
+ });
109
+ });
110
+ describe('SecretsApi - deleteSecret()', () => {
111
+ test('deleteSecret() 1: Delete secret: esv-volkerstestsecret1 - success', async () => {
112
+ const mockResponse = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../test/mocks/SecretsApi/deleteSecret/esv-volkerstestsecret1.json'), 'utf8'));
113
+ mock.onDelete('https://openam-frodo-dev.forgeblocks.com/environment/secrets/esv-volkerstestsecret1').reply(200, mockResponse);
114
+ const response = await SecretsRaw.deleteSecret('esv-volkerstestsecret1');
115
+ expect(response).toBeTruthy();
116
+ expect(response).toMatchObject(mockResponse);
117
+ });
118
+ test('deleteSecret() 2: Delete secret: esv-volkerstestsecret1 - error', async () => {
119
+ const mockResponse = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../test/mocks/SecretsApi/deleteSecret/error.json'), 'utf8'));
120
+ mock.onDelete('https://openam-frodo-dev.forgeblocks.com/environment/secrets/esv-volkerstestsecret1').reply(500, mockResponse);
121
+ expect.assertions(4);
122
+
123
+ try {
124
+ await SecretsRaw.deleteSecret('esv-volkerstestsecret1');
125
+ } catch (error) {
126
+ // console.dir(error);
127
+ expect(error).toBeTruthy();
128
+ expect(error.response.status).toBe(500);
129
+ expect(error.response.data.code).toBe(500);
130
+ expect(error.response.data.message).toBe('Server Error');
131
+ }
132
+ });
133
+ });
134
+ describe('SecretsApi - getSecretVersions()', () => {
135
+ test('getSecretVersions() 1: Get versions of existing secret: esv-volkerstestsecret1', async () => {
136
+ const mockResponse = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../test/mocks/SecretsApi/getSecretVersions/esv-volkerstestsecret1.json'), 'utf8'));
137
+ mock.onGet('https://openam-frodo-dev.forgeblocks.com/environment/secrets/esv-volkerstestsecret1/versions').reply(200, mockResponse);
138
+ const response = await SecretsRaw.getSecretVersions('esv-volkerstestsecret1');
139
+ expect(response).toBeTruthy();
140
+ expect(response).toMatchObject(mockResponse);
141
+ });
142
+ test('getSecretVersions() 2: Get versions of non-existing secret: esv-does-not-exist', async () => {
143
+ const mockResponse = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../test/mocks/SecretsApi/getSecretVersions/esv-does-not-exist.json'), 'utf8'));
144
+ mock.onGet('https://openam-frodo-dev.forgeblocks.com/environment/secrets/esv-does-not-exist/versions').reply(404, mockResponse);
145
+ expect.assertions(4);
146
+
147
+ try {
148
+ await SecretsRaw.getSecretVersions('esv-does-not-exist');
149
+ } catch (error) {
150
+ // console.dir(error);
151
+ expect(error).toBeTruthy();
152
+ expect(error.response.status).toBe(404);
153
+ expect(error.response.data.code).toBe(404);
154
+ expect(error.response.data.message).toBe('The secret does not exist or does not have a version');
155
+ }
156
+ });
157
+ });
158
+ describe('SecretsApi - createNewVersionOfSecret()', () => {
159
+ test('createNewVersionOfSecret() 1: Create new version of existing secret: esv-volkerstestsecret1 - success', async () => {
160
+ const mockResponse = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../test/mocks/SecretsApi/createNewVersionOfSecret/esv-volkerstestsecret1.json'), 'utf8'));
161
+ mock.onPost('https://openam-frodo-dev.forgeblocks.com/environment/secrets/esv-volkerstestsecret1/versions?_action=create').reply(200, mockResponse);
162
+ const response = await SecretsRaw.createNewVersionOfSecret('esv-volkerstestsecret1', "Volker's Test Secret Value");
163
+ expect(response).toBeTruthy();
164
+ expect(response).toMatchObject(mockResponse);
165
+ });
166
+ test('createNewVersionOfSecret() 2: Create new version of existing secret: esv-volkerstestsecret1 - error', async () => {
167
+ const mockResponse = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../test/mocks/SecretsApi/createNewVersionOfSecret/error.json'), 'utf8'));
168
+ mock.onPost('https://openam-frodo-dev.forgeblocks.com/environment/secrets/esv-volkerstestsecret1/versions?_action=create').reply(500, mockResponse);
169
+ expect.assertions(4);
170
+
171
+ try {
172
+ await SecretsRaw.createNewVersionOfSecret('esv-volkerstestsecret1', "Volker's Test Secret Value");
173
+ } catch (error) {
174
+ // console.dir(error);
175
+ expect(error).toBeTruthy();
176
+ expect(error.response.status).toBe(500);
177
+ expect(error.response.data.code).toBe(500);
178
+ expect(error.response.data.message).toBe('Server Error');
179
+ }
180
+ });
181
+ test('createNewVersionOfSecret() 3: Create new version of non-existing secret: esv-does-not-exist - error', async () => {
182
+ const mockResponse = fs.readFileSync(path.resolve(__dirname, '../../test/mocks/SecretsApi/createNewVersionOfSecret/esv-does-not-exist.txt'), 'utf8');
183
+ mock.onPost('https://openam-frodo-dev.forgeblocks.com/environment/secrets/esv-volkerstestsecret1/versions?_action=create').reply(500, mockResponse);
184
+ expect.assertions(3);
185
+
186
+ try {
187
+ await SecretsRaw.createNewVersionOfSecret('esv-volkerstestsecret1', "Volker's Test Secret Value");
188
+ } catch (error) {
189
+ // console.dir(error);
190
+ expect(error).toBeTruthy();
191
+ expect(error.response.status).toBe(500);
192
+ expect(error.response.data).toBe(mockResponse);
193
+ }
194
+ });
195
+ });
196
+ describe('SecretsApi - getVersionOfSecret()', () => {
197
+ test('getVersionOfSecret() 1: Get version 2 of existing secret: esv-volkerstestsecret1', async () => {
198
+ const mockResponse = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../test/mocks/SecretsApi/getVersionOfSecret/esv-volkerstestsecret1_v2.json'), 'utf8'));
199
+ mock.onGet('https://openam-frodo-dev.forgeblocks.com/environment/secrets/esv-volkerstestsecret1/versions/2').reply(200, mockResponse);
200
+ const response = await SecretsRaw.getVersionOfSecret('esv-volkerstestsecret1', '2');
201
+ expect(response).toBeTruthy();
202
+ expect(response).toMatchObject(mockResponse);
203
+ });
204
+ test('getVersionOfSecret() 2: Get version 2 of non-existing secret: esv-does-not-exist', async () => {
205
+ const mockResponse = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../test/mocks/SecretsApi/getVersionOfSecret/esv-does-not-exist_v2.json'), 'utf8'));
206
+ mock.onGet('https://openam-frodo-dev.forgeblocks.com/environment/secrets/esv-does-not-exist/versions/2').reply(500, mockResponse);
207
+ expect.assertions(4);
208
+
209
+ try {
210
+ await SecretsRaw.getVersionOfSecret('esv-does-not-exist', '2');
211
+ } catch (error) {
212
+ // console.dir(error);
213
+ expect(error).toBeTruthy();
214
+ expect(error.response.status).toBe(500);
215
+ expect(error.response.data.code).toBe(500);
216
+ expect(error.response.data.message).toBe('Failed to update secret version');
217
+ }
218
+ });
219
+ });
220
+ describe('SecretsApi - setStatusOfVersionOfSecret()', () => {
221
+ test('setStatusOfVersionOfSecret() 1: Disable version 2 of existing secret: esv-volkerstestsecret1 - success', async () => {
222
+ const mockResponse = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../test/mocks/SecretsApi/setStatusOfVersionOfSecret/esv-volkerstestsecret1_v2_DISABLED.json'), 'utf8'));
223
+ mock.onPost('https://openam-frodo-dev.forgeblocks.com/environment/secrets/esv-volkerstestsecret1/versions/2?_action=changestatus').reply(200, mockResponse);
224
+ const response = await SecretsRaw.setStatusOfVersionOfSecret('esv-volkerstestsecret1', '2', SecretsRaw.VersionOfSecretStatus.DISABLED);
225
+ expect(response).toBeTruthy();
226
+ expect(response).toMatchObject(mockResponse);
227
+ });
228
+ test('setStatusOfVersionOfSecret() 2: Disable version 2 of existing secret: esv-volkerstestsecret1 - error', async () => {
229
+ const mockResponse = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../test/mocks/SecretsApi/setStatusOfVersionOfSecret/error.json'), 'utf8'));
230
+ mock.onPost('https://openam-frodo-dev.forgeblocks.com/environment/secrets/esv-volkerstestsecret1/versions/2?_action=changestatus').reply(500, mockResponse);
231
+ expect.assertions(4);
232
+
233
+ try {
234
+ await SecretsRaw.setStatusOfVersionOfSecret('esv-volkerstestsecret1', '2', SecretsRaw.VersionOfSecretStatus.DISABLED);
235
+ } catch (error) {
236
+ // console.dir(error);
237
+ expect(error).toBeTruthy();
238
+ expect(error.response.status).toBe(500);
239
+ expect(error.response.data.code).toBe(500);
240
+ expect(error.response.data.message).toBe('Server Error');
241
+ }
242
+ });
243
+ test('setStatusOfVersionOfSecret() 3: Disable version 2 of non-existing secret: esv-does-not-exist - error', async () => {
244
+ const mockResponse = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../test/mocks/SecretsApi/setStatusOfVersionOfSecret/esv-does-not-exist_v2_DISABLED.json'), 'utf8'));
245
+ mock.onPost('https://openam-frodo-dev.forgeblocks.com/environment/secrets/esv-does-not-exist/versions/2?_action=changestatus').reply(404, mockResponse);
246
+ expect.assertions(4);
247
+
248
+ try {
249
+ await SecretsRaw.setStatusOfVersionOfSecret('esv-does-not-exist', '2', SecretsRaw.VersionOfSecretStatus.DISABLED);
250
+ } catch (error) {
251
+ // console.dir(error);
252
+ expect(error).toBeTruthy();
253
+ expect(error.response.status).toBe(404);
254
+ expect(error.response.data.code).toBe(404);
255
+ expect(error.response.data.message).toBe('The secret does not exist or does not have a version');
256
+ }
257
+ });
258
+ });
259
+ describe('SecretsApi - deleteVersionOfSecret()', () => {
260
+ test('deleteVersionOfSecret() 1: Delete version 2 of secret: esv-volkerstestsecret1 - success', async () => {
261
+ const mockResponse = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../test/mocks/SecretsApi/deleteVersionOfSecret/esv-volkerstestsecret1_v2.json'), 'utf8'));
262
+ mock.onDelete('https://openam-frodo-dev.forgeblocks.com/environment/secrets/esv-volkerstestsecret1/versions/2').reply(200, mockResponse);
263
+ const response = await SecretsRaw.deleteVersionOfSecret('esv-volkerstestsecret1', '2');
264
+ expect(response).toBeTruthy();
265
+ expect(response).toMatchObject(mockResponse);
266
+ });
267
+ test('deleteVersionOfSecret() 2: Delete version 2 of secret: esv-volkerstestsecret1 - error', async () => {
268
+ const mockResponse = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../test/mocks/SecretsApi/deleteVersionOfSecret/error.json'), 'utf8'));
269
+ mock.onDelete('https://openam-frodo-dev.forgeblocks.com/environment/secrets/esv-volkerstestsecret1/versions/2').reply(500, mockResponse);
270
+ expect.assertions(4);
271
+
272
+ try {
273
+ await SecretsRaw.deleteVersionOfSecret('esv-volkerstestsecret1', '2');
274
+ } catch (error) {
275
+ // console.dir(error);
276
+ expect(error).toBeTruthy();
277
+ expect(error.response.status).toBe(500);
278
+ expect(error.response.data.code).toBe(500);
279
+ expect(error.response.data.message).toBe('Server Error');
280
+ }
281
+ });
282
+ });
283
+ //# sourceMappingURL=SecretsApi.test.js.map
package/esm/index.mjs CHANGED
@@ -11,7 +11,8 @@ export function getVersion() {
11
11
 
12
12
  export * as NodeRaw from './api/NodeApi';
13
13
  export * as TreeRaw from './api/TreeApi';
14
- export * as StartupRaw from './api/StartupApi'; // Ops Layer
14
+ export * as StartupRaw from './api/StartupApi';
15
+ export * as SecretsRaw from './api/SecretsApi'; // Ops Layer
15
16
 
16
17
  export * as Admin from './ops/AdminOps';
17
18
  export * as Authenticate from './ops/AuthenticateOps';
@@ -1,5 +1,5 @@
1
1
  import { createKeyValueTable, createProgressIndicator, createTable, printMessage, stopProgressIndicator, updateProgressIndicator } from './utils/Console';
2
- import { createNewVersionOfSecret, deleteSecret, deleteVersionOfSecret, getSecret, getSecrets, getSecretVersions, putSecret, setSecretDescription, setStatusOfVersionOfSecret } from '../api/SecretsApi';
2
+ import { createNewVersionOfSecret, deleteSecret, deleteVersionOfSecret, getSecret, getSecrets, getSecretVersions, putSecret, setSecretDescription, setStatusOfVersionOfSecret, VersionOfSecretStatus } from '../api/SecretsApi';
3
3
  import wordwrap from './utils/Wordwrap';
4
4
  import { resolveUserName } from './ManagedObjectOps';
5
5
  /**
@@ -11,7 +11,7 @@ export async function listSecrets(long) {
11
11
  let secrets = [];
12
12
 
13
13
  try {
14
- secrets = await getSecrets();
14
+ secrets = (await getSecrets()).results;
15
15
  } catch (error) {
16
16
  printMessage(`${error.message}`, 'error');
17
17
  printMessage(error.response.data, 'error');
@@ -101,7 +101,7 @@ export async function deleteSecretCmd(secretId) {
101
101
 
102
102
  export async function deleteSecretsCmd() {
103
103
  try {
104
- const secrets = await getSecrets();
104
+ const secrets = (await getSecrets()).results;
105
105
  createProgressIndicator(secrets.length, `Deleting secrets...`);
106
106
 
107
107
  for (const secret of secrets) {
@@ -202,7 +202,7 @@ export async function activateVersionOfSecret(secretId, version) {
202
202
  createProgressIndicator(undefined, `Activating version ${version} of secret ${secretId}...`, 'indeterminate');
203
203
 
204
204
  try {
205
- await setStatusOfVersionOfSecret(secretId, version, 'ENABLED');
205
+ await setStatusOfVersionOfSecret(secretId, version, VersionOfSecretStatus.ENABLED);
206
206
  stopProgressIndicator(`Activated version ${version} of secret ${secretId}`, 'success');
207
207
  } catch (error) {
208
208
  stopProgressIndicator(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
@@ -218,7 +218,7 @@ export async function deactivateVersionOfSecret(secretId, version) {
218
218
  createProgressIndicator(undefined, `Deactivating version ${version} of secret ${secretId}...`, 'indeterminate');
219
219
 
220
220
  try {
221
- await setStatusOfVersionOfSecret(secretId, version, 'DISABLED');
221
+ await setStatusOfVersionOfSecret(secretId, version, VersionOfSecretStatus.DISABLED);
222
222
  stopProgressIndicator(`Deactivated version ${version} of secret ${secretId}`, 'success');
223
223
  } catch (error) {
224
224
  stopProgressIndicator(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
@@ -20,7 +20,7 @@ export async function checkForUpdates() {
20
20
  createProgressIndicator(undefined, `Checking for updates to apply...`, 'indeterminate');
21
21
 
22
22
  try {
23
- updates.secrets = (await getSecrets()).filter(secret => !secret.loaded);
23
+ updates.secrets = (await getSecrets()).results.filter(secret => !secret.loaded);
24
24
  updates.variables = (await getVariables()).filter(variable => !variable.loaded);
25
25
  } catch (error) {
26
26
  stopProgressIndicator(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rockcarver/frodo-lib",
3
- "version": "0.12.2-2",
3
+ "version": "0.12.2-3",
4
4
  "type": "commonjs",
5
5
  "main": "./cjs/index.js",
6
6
  "module": "./esm/index.mjs",
@@ -1,10 +1,73 @@
1
+ /**
2
+ * Get all secrets
3
+ * @returns {Promise<unknown[]>} a promise that resolves to an array of secrets
4
+ */
1
5
  export declare function getSecrets(): Promise<any>;
6
+ /**
7
+ * Get secret
8
+ * @param secretId secret id/name
9
+ * @returns {Promise<unknown>} a promise that resolves to a secret
10
+ */
2
11
  export declare function getSecret(secretId: any): Promise<any>;
12
+ /**
13
+ * Create secret
14
+ * @param {string} secretId secret id/name
15
+ * @param {string} value secret value
16
+ * @param {string} description secret description
17
+ * @param {string} encoding secret encoding (only `generic` is supported)
18
+ * @param {boolean} useInPlaceholders flag indicating if the secret can be used in placeholders
19
+ * @returns {Promise<unknown>} a promise that resolves to a secret
20
+ */
3
21
  export declare function putSecret(secretId: any, value: any, description: any, encoding?: string, useInPlaceholders?: boolean): Promise<any>;
22
+ /**
23
+ * Set secret description
24
+ * @param {string} secretId secret id/name
25
+ * @param {string} description secret description
26
+ * @returns {Promise<unknown>} a promise that resolves to a status object
27
+ */
4
28
  export declare function setSecretDescription(secretId: any, description: any): Promise<any>;
29
+ /**
30
+ * Delete secret
31
+ * @param {string} secretId secret id/name
32
+ * @returns {Promise<unknown>} a promise that resolves to a secret object
33
+ */
5
34
  export declare function deleteSecret(secretId: any): Promise<any>;
35
+ /**
36
+ * Get secret versions
37
+ * @param {string} secretId secret id/name
38
+ * @returns {Promise<unknown>} a promise that resolves to an array of secret versions
39
+ */
6
40
  export declare function getSecretVersions(secretId: any): Promise<any>;
41
+ /**
42
+ * Create new secret version
43
+ * @param {string} secretId secret id/name
44
+ * @param {string} value secret value
45
+ * @returns {Promise<unknown>} a promise that resolves to a version object
46
+ */
7
47
  export declare function createNewVersionOfSecret(secretId: any, value: any): Promise<any>;
48
+ /**
49
+ * Get version of secret
50
+ * @param {string} secretId secret id/name
51
+ * @param {string} version secret version
52
+ * @returns {Promise<unknown>} a promise that resolves to a version object
53
+ */
8
54
  export declare function getVersionOfSecret(secretId: any, version: any): Promise<any>;
9
- export declare function setStatusOfVersionOfSecret(secretId: any, version: any, status: any): Promise<any>;
55
+ export declare enum VersionOfSecretStatus {
56
+ DISABLED = "DISABLED",
57
+ ENABLED = "ENABLED"
58
+ }
59
+ /**
60
+ * Update the status of a version of a secret
61
+ * @param {string} secretId secret id/name
62
+ * @param {string} version secret version
63
+ * @param {VersionOfSecretStatus} status status
64
+ * @returns {Promise<unknown>} a promise that resolves to a status object
65
+ */
66
+ export declare function setStatusOfVersionOfSecret(secretId: string, version: string, status: VersionOfSecretStatus): Promise<any>;
67
+ /**
68
+ * Delete version of secret
69
+ * @param {string} secretId secret id/name
70
+ * @param {string} version secret version
71
+ * @returns {Promise<unknown>} a promise that resolves to a version object
72
+ */
10
73
  export declare function deleteVersionOfSecret(secretId: any, version: any): Promise<any>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/api/SecretsApi.ts"],"names":[],"mappings":"AAoBA,wBAAsB,UAAU,iBAS/B;AAED,wBAAsB,SAAS,CAAC,QAAQ,KAAA,gBAUvC;AAED,wBAAsB,SAAS,CAC7B,QAAQ,KAAA,EACR,KAAK,KAAA,EACL,WAAW,KAAA,EACX,QAAQ,SAAY,EACpB,iBAAiB,UAAO,gBAuBzB;AAED,wBAAsB,oBAAoB,CAAC,QAAQ,KAAA,EAAE,WAAW,KAAA,gBAY/D;AAED,wBAAsB,YAAY,CAAC,QAAQ,KAAA,gBAU1C;AAED,wBAAsB,iBAAiB,CAAC,QAAQ,KAAA,gBAU/C;AAED,wBAAsB,wBAAwB,CAAC,QAAQ,KAAA,EAAE,KAAK,KAAA,gBAY7D;AAED,wBAAsB,kBAAkB,CAAC,QAAQ,KAAA,EAAE,OAAO,KAAA,gBAWzD;AAED,wBAAsB,0BAA0B,CAAC,QAAQ,KAAA,EAAE,OAAO,KAAA,EAAE,MAAM,KAAA,gBAazE;AAED,wBAAsB,qBAAqB,CAAC,QAAQ,KAAA,EAAE,OAAO,KAAA,gBAW5D","file":"SecretsApi.d.ts","sourcesContent":["import util from 'util';\nimport { encode } from './utils/Base64';\nimport { getTenantURL } from './utils/ApiUtils';\nimport { generateESVApi } from './BaseApi';\nimport storage from '../storage/SessionStorage';\n\nconst secretsListURLTemplate = '%s/environment/secrets';\nconst secretListVersionsURLTemplate = '%s/environment/secrets/%s/versions';\nconst secretCreateNewVersionURLTemplate = `${secretListVersionsURLTemplate}?_action=create`;\nconst secretGetVersionURLTemplate = `${secretListVersionsURLTemplate}/%s`;\nconst secretVersionStatusURLTemplate = `${secretGetVersionURLTemplate}?_action=changestatus`;\nconst secretURLTemplate = '%s/environment/secrets/%s';\nconst secretSetDescriptionURLTemplate = `${secretURLTemplate}?_action=setDescription`;\n\nconst apiVersion = 'protocol=1.0,resource=1.0';\nconst getApiConfig = () => ({\n path: `/environment/secrets`,\n apiVersion,\n});\n\nexport async function getSecrets() {\n const urlString = util.format(\n secretsListURLTemplate,\n getTenantURL(storage.session.getTenant())\n );\n const { data } = await generateESVApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data.result;\n}\n\nexport async function getSecret(secretId) {\n const urlString = util.format(\n secretURLTemplate,\n getTenantURL(storage.session.getTenant()),\n secretId\n );\n const { data } = await generateESVApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\nexport async function putSecret(\n secretId,\n value,\n description,\n encoding = 'generic',\n useInPlaceholders = true\n) {\n if (encoding !== 'generic')\n throw new Error(`Unsupported encoding: ${encoding}`);\n const secretData = {\n valueBase64: encode(value),\n description,\n encoding,\n useInPlaceholders,\n };\n const urlString = util.format(\n secretURLTemplate,\n getTenantURL(storage.session.getTenant()),\n secretId\n );\n const { data } = await generateESVApi(getApiConfig()).put(\n urlString,\n secretData,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\nexport async function setSecretDescription(secretId, description) {\n const urlString = util.format(\n secretSetDescriptionURLTemplate,\n getTenantURL(storage.session.getTenant()),\n secretId\n );\n const { data } = await generateESVApi(getApiConfig()).post(\n urlString,\n { description },\n { withCredentials: true }\n );\n return data;\n}\n\nexport async function deleteSecret(secretId) {\n const urlString = util.format(\n secretURLTemplate,\n getTenantURL(storage.session.getTenant()),\n secretId\n );\n const { data } = await generateESVApi(getApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\nexport async function getSecretVersions(secretId) {\n const urlString = util.format(\n secretListVersionsURLTemplate,\n getTenantURL(storage.session.getTenant()),\n secretId\n );\n const { data } = await generateESVApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\nexport async function createNewVersionOfSecret(secretId, value) {\n const urlString = util.format(\n secretCreateNewVersionURLTemplate,\n getTenantURL(storage.session.getTenant()),\n secretId\n );\n const { data } = await generateESVApi(getApiConfig()).post(\n urlString,\n { valueBase64: encode(value) },\n { withCredentials: true }\n );\n return data;\n}\n\nexport async function getVersionOfSecret(secretId, version) {\n const urlString = util.format(\n secretGetVersionURLTemplate,\n getTenantURL(storage.session.getTenant()),\n secretId,\n version\n );\n const { data } = await generateESVApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\nexport async function setStatusOfVersionOfSecret(secretId, version, status) {\n const urlString = util.format(\n secretVersionStatusURLTemplate,\n getTenantURL(storage.session.getTenant()),\n secretId,\n version\n );\n const { data } = await generateESVApi(getApiConfig()).post(\n urlString,\n { status },\n { withCredentials: true }\n );\n return data;\n}\n\nexport async function deleteVersionOfSecret(secretId, version) {\n const urlString = util.format(\n secretGetVersionURLTemplate,\n getTenantURL(storage.session.getTenant()),\n secretId,\n version\n );\n const { data } = await generateESVApi(getApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n"]}
1
+ {"version":3,"sources":["../src/api/SecretsApi.ts"],"names":[],"mappings":"AAoBA;;;GAGG;AACH,wBAAsB,UAAU,iBAS/B;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,QAAQ,KAAA,gBAUvC;AAED;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,KAAA,EACR,KAAK,KAAA,EACL,WAAW,KAAA,EACX,QAAQ,SAAY,EACpB,iBAAiB,UAAO,gBAuBzB;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,KAAA,EAAE,WAAW,KAAA,gBAY/D;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,QAAQ,KAAA,gBAU1C;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,KAAA,gBAU/C;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAAC,QAAQ,KAAA,EAAE,KAAK,KAAA,gBAY7D;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,KAAA,EAAE,OAAO,KAAA,gBAWzD;AAED,oBAAY,qBAAqB;IAC/B,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAED;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,qBAAqB,gBAc9B;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,KAAA,EAAE,OAAO,KAAA,gBAW5D","file":"SecretsApi.d.ts","sourcesContent":["import util from 'util';\nimport { encode } from './utils/Base64';\nimport { getTenantURL } from './utils/ApiUtils';\nimport { generateESVApi } from './BaseApi';\nimport storage from '../storage/SessionStorage';\n\nconst secretsListURLTemplate = '%s/environment/secrets';\nconst secretListVersionsURLTemplate = '%s/environment/secrets/%s/versions';\nconst secretCreateNewVersionURLTemplate = `${secretListVersionsURLTemplate}?_action=create`;\nconst secretGetVersionURLTemplate = `${secretListVersionsURLTemplate}/%s`;\nconst secretVersionStatusURLTemplate = `${secretGetVersionURLTemplate}?_action=changestatus`;\nconst secretURLTemplate = '%s/environment/secrets/%s';\nconst secretSetDescriptionURLTemplate = `${secretURLTemplate}?_action=setDescription`;\n\nconst apiVersion = 'protocol=1.0,resource=1.0';\nconst getApiConfig = () => ({\n path: `/environment/secrets`,\n apiVersion,\n});\n\n/**\n * Get all secrets\n * @returns {Promise<unknown[]>} a promise that resolves to an array of secrets\n */\nexport async function getSecrets() {\n const urlString = util.format(\n secretsListURLTemplate,\n getTenantURL(storage.session.getTenant())\n );\n const { data } = await generateESVApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Get secret\n * @param secretId secret id/name\n * @returns {Promise<unknown>} a promise that resolves to a secret\n */\nexport async function getSecret(secretId) {\n const urlString = util.format(\n secretURLTemplate,\n getTenantURL(storage.session.getTenant()),\n secretId\n );\n const { data } = await generateESVApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Create secret\n * @param {string} secretId secret id/name\n * @param {string} value secret value\n * @param {string} description secret description\n * @param {string} encoding secret encoding (only `generic` is supported)\n * @param {boolean} useInPlaceholders flag indicating if the secret can be used in placeholders\n * @returns {Promise<unknown>} a promise that resolves to a secret\n */\nexport async function putSecret(\n secretId,\n value,\n description,\n encoding = 'generic',\n useInPlaceholders = true\n) {\n if (encoding !== 'generic')\n throw new Error(`Unsupported encoding: ${encoding}`);\n const secretData = {\n valueBase64: encode(value),\n description,\n encoding,\n useInPlaceholders,\n };\n const urlString = util.format(\n secretURLTemplate,\n getTenantURL(storage.session.getTenant()),\n secretId\n );\n const { data } = await generateESVApi(getApiConfig()).put(\n urlString,\n secretData,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Set secret description\n * @param {string} secretId secret id/name\n * @param {string} description secret description\n * @returns {Promise<unknown>} a promise that resolves to a status object\n */\nexport async function setSecretDescription(secretId, description) {\n const urlString = util.format(\n secretSetDescriptionURLTemplate,\n getTenantURL(storage.session.getTenant()),\n secretId\n );\n const { data } = await generateESVApi(getApiConfig()).post(\n urlString,\n { description },\n { withCredentials: true }\n );\n return data;\n}\n\n/**\n * Delete secret\n * @param {string} secretId secret id/name\n * @returns {Promise<unknown>} a promise that resolves to a secret object\n */\nexport async function deleteSecret(secretId) {\n const urlString = util.format(\n secretURLTemplate,\n getTenantURL(storage.session.getTenant()),\n secretId\n );\n const { data } = await generateESVApi(getApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Get secret versions\n * @param {string} secretId secret id/name\n * @returns {Promise<unknown>} a promise that resolves to an array of secret versions\n */\nexport async function getSecretVersions(secretId) {\n const urlString = util.format(\n secretListVersionsURLTemplate,\n getTenantURL(storage.session.getTenant()),\n secretId\n );\n const { data } = await generateESVApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Create new secret version\n * @param {string} secretId secret id/name\n * @param {string} value secret value\n * @returns {Promise<unknown>} a promise that resolves to a version object\n */\nexport async function createNewVersionOfSecret(secretId, value) {\n const urlString = util.format(\n secretCreateNewVersionURLTemplate,\n getTenantURL(storage.session.getTenant()),\n secretId\n );\n const { data } = await generateESVApi(getApiConfig()).post(\n urlString,\n { valueBase64: encode(value) },\n { withCredentials: true }\n );\n return data;\n}\n\n/**\n * Get version of secret\n * @param {string} secretId secret id/name\n * @param {string} version secret version\n * @returns {Promise<unknown>} a promise that resolves to a version object\n */\nexport async function getVersionOfSecret(secretId, version) {\n const urlString = util.format(\n secretGetVersionURLTemplate,\n getTenantURL(storage.session.getTenant()),\n secretId,\n version\n );\n const { data } = await generateESVApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\nexport enum VersionOfSecretStatus {\n DISABLED = 'DISABLED',\n ENABLED = 'ENABLED',\n}\n\n/**\n * Update the status of a version of a secret\n * @param {string} secretId secret id/name\n * @param {string} version secret version\n * @param {VersionOfSecretStatus} status status\n * @returns {Promise<unknown>} a promise that resolves to a status object\n */\nexport async function setStatusOfVersionOfSecret(\n secretId: string,\n version: string,\n status: VersionOfSecretStatus\n) {\n const urlString = util.format(\n secretVersionStatusURLTemplate,\n getTenantURL(storage.session.getTenant()),\n secretId,\n version\n );\n const { data } = await generateESVApi(getApiConfig()).post(\n urlString,\n { status },\n { withCredentials: true }\n );\n return data;\n}\n\n/**\n * Delete version of secret\n * @param {string} secretId secret id/name\n * @param {string} version secret version\n * @returns {Promise<unknown>} a promise that resolves to a version object\n */\nexport async function deleteVersionOfSecret(secretId, version) {\n const urlString = util.format(\n secretGetVersionURLTemplate,\n getTenantURL(storage.session.getTenant()),\n secretId,\n version\n );\n const { data } = await generateESVApi(getApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n"]}
package/types/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export declare function getVersion(): string;
2
2
  export * as NodeRaw from './api/NodeApi';
3
3
  export * as TreeRaw from './api/TreeApi';
4
4
  export * as StartupRaw from './api/StartupApi';
5
+ export * as SecretsRaw from './api/SecretsApi';
5
6
  export * as Admin from './ops/AdminOps';
6
7
  export * as Authenticate from './ops/AuthenticateOps';
7
8
  export * as CirclesOfTrust from './ops/CirclesOfTrustOps';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AAUA,wBAAgB,UAAU,WAEzB;AAGD,OAAO,KAAK,OAAO,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,OAAO,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAG/C,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,KAAK,YAAY,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,cAAc,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,iBAAiB,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,aAAa,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,aAAa,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,YAAY,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,YAAY,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAC;AAEhD,OAAO,KAAK,KAAK,MAAM,sBAAsB,CAAC;AAG9C,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAIlD,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC","file":"index.d.ts","sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst pkg = JSON.parse(\n fs.readFileSync(path.resolve(__dirname, '../package.json'), 'utf8')\n);\n\nexport function getVersion() {\n return `v${pkg.version}`;\n}\n\n// Api Layer\nexport * as NodeRaw from './api/NodeApi';\nexport * as TreeRaw from './api/TreeApi';\nexport * as StartupRaw from './api/StartupApi';\n\n// Ops Layer\nexport * as Admin from './ops/AdminOps';\nexport * as Authenticate from './ops/AuthenticateOps';\nexport * as CirclesOfTrust from './ops/CirclesOfTrustOps';\nexport * as ConnectionProfile from './ops/ConnectionProfileOps';\nexport * as EmailTemplate from './ops/EmailTemplateOps';\nexport * as Idm from './ops/IdmOps';\nexport * as Idp from './ops/IdmOps';\nexport * as Journey from './ops/JourneyOps';\nexport * as Log from './ops/LogOps';\nexport * as ManagedObject from './ops/ManagedObjectOps';\nexport * as OAuth2Client from './ops/OAuth2ClientOps';\nexport * as Organization from './ops/OrganizationOps';\nexport * as Realm from './ops/RealmOps';\nexport * as Saml from './ops/SamlOps';\nexport * as Script from './ops/ScriptOps';\nexport * as Secrets from './ops/SecretsOps';\nexport * as Startup from './ops/StartupOps';\nexport * as Theme from './ops/ThemeOps';\nexport * as Variables from './ops/VariablesOps';\n// TODO: revisit if there are better ways\nexport * as Utils from './ops/utils/OpsUtils';\n// TODO: reconsider the aproach to pass in state from client\n// lib should be stateless, an aplication should own its state\nexport * as state from './storage/SessionStorage';\n// TODO: need to figure out if this is the right approach or if we should even\n// use a public oauth2/oidc library. might be ok for now since there is only\n// one place where the cli needs to execute an oauth flow.\nexport * as OAuth2OIDCApi from './api/OAuth2OIDCApi';\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AAUA,wBAAgB,UAAU,WAEzB;AAGD,OAAO,KAAK,OAAO,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,OAAO,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAG/C,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,KAAK,YAAY,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,cAAc,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,iBAAiB,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,aAAa,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,aAAa,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,YAAY,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,YAAY,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAC;AAEhD,OAAO,KAAK,KAAK,MAAM,sBAAsB,CAAC;AAG9C,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAIlD,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC","file":"index.d.ts","sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst pkg = JSON.parse(\n fs.readFileSync(path.resolve(__dirname, '../package.json'), 'utf8')\n);\n\nexport function getVersion() {\n return `v${pkg.version}`;\n}\n\n// Api Layer\nexport * as NodeRaw from './api/NodeApi';\nexport * as TreeRaw from './api/TreeApi';\nexport * as StartupRaw from './api/StartupApi';\nexport * as SecretsRaw from './api/SecretsApi';\n\n// Ops Layer\nexport * as Admin from './ops/AdminOps';\nexport * as Authenticate from './ops/AuthenticateOps';\nexport * as CirclesOfTrust from './ops/CirclesOfTrustOps';\nexport * as ConnectionProfile from './ops/ConnectionProfileOps';\nexport * as EmailTemplate from './ops/EmailTemplateOps';\nexport * as Idm from './ops/IdmOps';\nexport * as Idp from './ops/IdmOps';\nexport * as Journey from './ops/JourneyOps';\nexport * as Log from './ops/LogOps';\nexport * as ManagedObject from './ops/ManagedObjectOps';\nexport * as OAuth2Client from './ops/OAuth2ClientOps';\nexport * as Organization from './ops/OrganizationOps';\nexport * as Realm from './ops/RealmOps';\nexport * as Saml from './ops/SamlOps';\nexport * as Script from './ops/ScriptOps';\nexport * as Secrets from './ops/SecretsOps';\nexport * as Startup from './ops/StartupOps';\nexport * as Theme from './ops/ThemeOps';\nexport * as Variables from './ops/VariablesOps';\n// TODO: revisit if there are better ways\nexport * as Utils from './ops/utils/OpsUtils';\n// TODO: reconsider the aproach to pass in state from client\n// lib should be stateless, an aplication should own its state\nexport * as state from './storage/SessionStorage';\n// TODO: need to figure out if this is the right approach or if we should even\n// use a public oauth2/oidc library. might be ok for now since there is only\n// one place where the cli needs to execute an oauth flow.\nexport * as OAuth2OIDCApi from './api/OAuth2OIDCApi';\n"]}