@rockcarver/frodo-cli 2.0.0-11 → 2.0.0-13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.0.0-12] - 2023-07-18
11
+
12
+ ### Fixed
13
+
14
+ - rockcarver/frodo-lib#272: Added new `--variable-type` parameter to `frodo esv variable create` command.
15
+
16
+ ## [2.0.0-11] - 2023-07-17
17
+
10
18
  ## [2.0.0-10] - 2023-07-05
11
19
 
12
20
  ## [2.0.0-9] - 2023-07-05
@@ -1323,7 +1331,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1323
1331
  - Fixed problem with adding connection profiles
1324
1332
  - Miscellaneous bug fixes
1325
1333
 
1326
- [Unreleased]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-10...HEAD
1334
+ [Unreleased]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-12...HEAD
1335
+
1336
+ [2.0.0-12]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-11...v2.0.0-12
1337
+
1338
+ [2.0.0-11]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-10...v2.0.0-11
1327
1339
 
1328
1340
  [2.0.0-10]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-9...v2.0.0-10
1329
1341
 
package/esm/app.js CHANGED
@@ -18,6 +18,7 @@ import realm from './cli/realm/realm';
18
18
  import saml from './cli/saml/saml';
19
19
  import script from './cli/script/script';
20
20
  import service from './cli/service/service';
21
+ import shell from './cli/shell/shell';
21
22
  // enable sample command template.
22
23
  // import something from './cli/_template/something';
23
24
  import theme from './cli/theme/theme';
@@ -47,6 +48,7 @@ const {
47
48
  program.addCommand(saml());
48
49
  program.addCommand(script());
49
50
  program.addCommand(service());
51
+ program.addCommand(shell());
50
52
  program.addCommand(theme());
51
53
  // enable sample command template.
52
54
  // program.addCommand(something());
package/esm/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","names":["frodo","Command","admin","agent","authz","app","conn","email","esv","idm","idp","info","journey","log","realm","saml","script","service","theme","printMessage","getVersions","initConnectionProfiles","program","version","addCommand","showHelpAfterError","enablePositionalOptions","parse","e","process","exitCode","stack"],"sources":["../src/app.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { Command } from 'commander';\n\n// commands\nimport admin from './cli/admin/admin';\nimport agent from './cli/agent/agent';\nimport authz from './cli/authz/authz';\nimport app from './cli/app/app';\nimport conn from './cli/conn/conn';\nimport email from './cli/email/email';\nimport esv from './cli/esv/esv';\nimport idm from './cli/idm/idm';\nimport idp from './cli/idp/idp';\nimport info from './cli/info/info';\nimport journey from './cli/journey/journey';\nimport log from './cli/log/log';\nimport realm from './cli/realm/realm';\nimport saml from './cli/saml/saml';\nimport script from './cli/script/script';\nimport service from './cli/service/service';\n// enable sample command template.\n// import something from './cli/_template/something';\nimport theme from './cli/theme/theme';\nimport { printMessage } from './utils/Console';\nimport { getVersions } from './utils/Version';\n\nconst { initConnectionProfiles } = frodo.conn;\n\n(async () => {\n try {\n const program = new Command('frodo').version(\n await getVersions(false),\n '-v, --version'\n );\n\n printMessage(await getVersions(true), 'text', false);\n\n await initConnectionProfiles();\n\n program.addCommand(admin());\n program.addCommand(agent());\n program.addCommand(authz());\n program.addCommand(app());\n program.addCommand(conn());\n program.addCommand(email());\n program.addCommand(esv());\n program.addCommand(idm());\n program.addCommand(idp());\n program.addCommand(info());\n program.addCommand(journey());\n program.addCommand(log());\n program.addCommand(realm());\n program.addCommand(saml());\n program.addCommand(script());\n program.addCommand(service());\n program.addCommand(theme());\n // enable sample command template.\n // program.addCommand(something());\n\n program.showHelpAfterError();\n program.enablePositionalOptions();\n program.parse();\n } catch (e) {\n process.exitCode = 1;\n printMessage(`ERROR: exception running frodo - ${e}`, 'error');\n printMessage(e.stack, 'error');\n }\n})();\n"],"mappings":"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"}
1
+ {"version":3,"file":"app.js","names":["frodo","Command","admin","agent","authz","app","conn","email","esv","idm","idp","info","journey","log","realm","saml","script","service","shell","theme","printMessage","getVersions","initConnectionProfiles","program","version","addCommand","showHelpAfterError","enablePositionalOptions","parse","e","process","exitCode","stack"],"sources":["../src/app.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { Command } from 'commander';\n\n// commands\nimport admin from './cli/admin/admin';\nimport agent from './cli/agent/agent';\nimport authz from './cli/authz/authz';\nimport app from './cli/app/app';\nimport conn from './cli/conn/conn';\nimport email from './cli/email/email';\nimport esv from './cli/esv/esv';\nimport idm from './cli/idm/idm';\nimport idp from './cli/idp/idp';\nimport info from './cli/info/info';\nimport journey from './cli/journey/journey';\nimport log from './cli/log/log';\nimport realm from './cli/realm/realm';\nimport saml from './cli/saml/saml';\nimport script from './cli/script/script';\nimport service from './cli/service/service';\nimport shell from './cli/shell/shell';\n// enable sample command template.\n// import something from './cli/_template/something';\nimport theme from './cli/theme/theme';\nimport { printMessage } from './utils/Console';\nimport { getVersions } from './utils/Version';\n\nconst { initConnectionProfiles } = frodo.conn;\n\n(async () => {\n try {\n const program = new Command('frodo').version(\n await getVersions(false),\n '-v, --version'\n );\n\n printMessage(await getVersions(true), 'text', false);\n\n await initConnectionProfiles();\n\n program.addCommand(admin());\n program.addCommand(agent());\n program.addCommand(authz());\n program.addCommand(app());\n program.addCommand(conn());\n program.addCommand(email());\n program.addCommand(esv());\n program.addCommand(idm());\n program.addCommand(idp());\n program.addCommand(info());\n program.addCommand(journey());\n program.addCommand(log());\n program.addCommand(realm());\n program.addCommand(saml());\n program.addCommand(script());\n program.addCommand(service());\n program.addCommand(shell());\n program.addCommand(theme());\n // enable sample command template.\n // program.addCommand(something());\n\n program.showHelpAfterError();\n program.enablePositionalOptions();\n program.parse();\n } catch (e) {\n process.exitCode = 1;\n printMessage(`ERROR: exception running frodo - ${e}`, 'error');\n printMessage(e.stack, 'error');\n }\n})();\n"],"mappings":"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"}
@@ -2,17 +2,18 @@ import { FrodoCommand } from '../FrodoCommand';
2
2
  import { frodo } from '@rockcarver/frodo-lib';
3
3
  import { verboseMessage } from '../../utils/Console.js';
4
4
  import { createVariable } from '../../ops/VariablesOps';
5
+ import * as s from '../../help/SampleData';
5
6
  const {
6
7
  getTokens
7
8
  } = frodo.login;
8
9
  const program = new FrodoCommand('frodo esv variable create');
9
- program.description('Create variables.').requiredOption('-i, --variable-id <variable-id>', 'Variable id.').requiredOption('--value <value>', 'Secret value.').option('--description [description]', 'Secret description.').action(
10
+ program.description('Create variables.').requiredOption('-i, --variable-id <variable-id>', 'Variable id.').requiredOption('--value <value>', 'Variable value.').option('--description [description]', 'Variable description.').option('--variable-type [variable-type]', 'Variable type. Must be one of "string", "list", "array", "object", "bool", "int", or "number".', 'string').addHelpText('after', `Usage Examples:\n` + ` Create an ESV variable using implied default type "string":\n` + ` $ frodo esv variable create --variable-id "esv-trinity-phone" --value "(312)-555-0690" --description "Trinity's phone number." ${s.connId}\n`['brightCyan'] + ` Create an ESV variable of type "array":\n` + ` $ frodo esv variable create --variable-id "esv-nebuchadnezzar-crew" --variable-type array --value '["Morpheus","Trinity","Link","Tank","Dozer","Apoc","Cypher","Mouse","Neo","Switch"]' --description "The crew of the Nebuchadnezzar hovercraft." ${s.connId}\n`['brightCyan'] + ` Create an ESV variable of type "object":\n` + ` $ frodo esv variable create --variable-id "esv-nebuchadnezzar-crew-structure" --variable-type object --value '{"Captain":"Morpheus","FirstMate":"Trinity","Operator":["Link","Tank"],"Medic":"Dozer","Crewmen":["Apoc","Cypher","Mouse","Neo","Switch"]}' --description "The structure of the crew of the Nebuchadnezzar hovercraft." ${s.connId}\n`['brightCyan'] + ` Create an ESV variable of type "int":\n` + ` $ frodo esv variable create --variable-id "esv-neo-age" --variable-type int --value '28' --description "Neo's age in the matrix." ${s.connId}\n`['brightCyan'] + ` Create an ESV variable of type "bool":\n` + ` $ frodo esv variable create --variable-id "esv-blue-piller" --variable-type bool --value 'false' --description "Zion membership criteria." ${s.connId}\n`['brightCyan']).action(
10
11
  // implement command logic inside action handler
11
12
  async (host, realm, user, password, options, command) => {
12
13
  command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
13
14
  if (await getTokens()) {
14
15
  verboseMessage('Creating variable...');
15
- createVariable(options.variableId, options.value, options.description);
16
+ createVariable(options.variableId, options.value, options.description, options.variableType);
16
17
  } else {
17
18
  process.exitCode = 1;
18
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"esv-variable-create.js","names":["FrodoCommand","frodo","verboseMessage","createVariable","getTokens","login","program","description","requiredOption","option","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","variableId","value","process","exitCode","parse"],"sources":["../../../src/cli/esv/esv-variable-create.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { frodo } from '@rockcarver/frodo-lib';\nimport { verboseMessage } from '../../utils/Console.js';\nimport { createVariable } from '../../ops/VariablesOps';\n\nconst { getTokens } = frodo.login;\n\nconst program = new FrodoCommand('frodo esv variable create');\n\nprogram\n .description('Create variables.')\n .requiredOption('-i, --variable-id <variable-id>', 'Variable id.')\n .requiredOption('--value <value>', 'Secret value.')\n .option('--description [description]', 'Secret description.')\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await getTokens()) {\n verboseMessage('Creating variable...');\n createVariable(options.variableId, options.value, options.description);\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,cAAc,QAAQ,wBAAwB;AACvD,SAASC,cAAc,QAAQ,wBAAwB;AAEvD,MAAM;EAAEC;AAAU,CAAC,GAAGH,KAAK,CAACI,KAAK;AAEjC,MAAMC,OAAO,GAAG,IAAIN,YAAY,CAAC,2BAA2B,CAAC;AAE7DM,OAAO,CACJC,WAAW,CAAC,mBAAmB,CAAC,CAChCC,cAAc,CAAC,iCAAiC,EAAE,cAAc,CAAC,CACjEA,cAAc,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAClDC,MAAM,CAAC,6BAA6B,EAAE,qBAAqB,CAAC,CAC5DC,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD,IAAI,MAAMZ,SAAS,CAAC,CAAC,EAAE;IACrBF,cAAc,CAAC,sBAAsB,CAAC;IACtCC,cAAc,CAACY,OAAO,CAACG,UAAU,EAAEH,OAAO,CAACI,KAAK,EAAEJ,OAAO,CAACR,WAAW,CAAC;EACxE,CAAC,MAAM;IACLa,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;;AAEHf,OAAO,CAACgB,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"esv-variable-create.js","names":["FrodoCommand","frodo","verboseMessage","createVariable","s","getTokens","login","program","description","requiredOption","option","addHelpText","connId","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","variableId","value","variableType","process","exitCode","parse"],"sources":["../../../src/cli/esv/esv-variable-create.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { frodo } from '@rockcarver/frodo-lib';\nimport { verboseMessage } from '../../utils/Console.js';\nimport { createVariable } from '../../ops/VariablesOps';\nimport * as s from '../../help/SampleData';\n\nconst { getTokens } = frodo.login;\n\nconst program = new FrodoCommand('frodo esv variable create');\n\nprogram\n .description('Create variables.')\n .requiredOption('-i, --variable-id <variable-id>', 'Variable id.')\n .requiredOption('--value <value>', 'Variable value.')\n .option('--description [description]', 'Variable description.')\n .option(\n '--variable-type [variable-type]',\n 'Variable type. Must be one of \"string\", \"list\", \"array\", \"object\", \"bool\", \"int\", or \"number\".',\n 'string'\n )\n .addHelpText(\n 'after',\n `Usage Examples:\\n` +\n ` Create an ESV variable using implied default type \"string\":\\n` +\n ` $ frodo esv variable create --variable-id \"esv-trinity-phone\" --value \"(312)-555-0690\" --description \"Trinity's phone number.\" ${s.connId}\\n`[\n 'brightCyan'\n ] +\n ` Create an ESV variable of type \"array\":\\n` +\n ` $ frodo esv variable create --variable-id \"esv-nebuchadnezzar-crew\" --variable-type array --value '[\"Morpheus\",\"Trinity\",\"Link\",\"Tank\",\"Dozer\",\"Apoc\",\"Cypher\",\"Mouse\",\"Neo\",\"Switch\"]' --description \"The crew of the Nebuchadnezzar hovercraft.\" ${s.connId}\\n`[\n 'brightCyan'\n ] +\n ` Create an ESV variable of type \"object\":\\n` +\n ` $ frodo esv variable create --variable-id \"esv-nebuchadnezzar-crew-structure\" --variable-type object --value '{\"Captain\":\"Morpheus\",\"FirstMate\":\"Trinity\",\"Operator\":[\"Link\",\"Tank\"],\"Medic\":\"Dozer\",\"Crewmen\":[\"Apoc\",\"Cypher\",\"Mouse\",\"Neo\",\"Switch\"]}' --description \"The structure of the crew of the Nebuchadnezzar hovercraft.\" ${s.connId}\\n`[\n 'brightCyan'\n ] +\n ` Create an ESV variable of type \"int\":\\n` +\n ` $ frodo esv variable create --variable-id \"esv-neo-age\" --variable-type int --value '28' --description \"Neo's age in the matrix.\" ${s.connId}\\n`[\n 'brightCyan'\n ] +\n ` Create an ESV variable of type \"bool\":\\n` +\n ` $ frodo esv variable create --variable-id \"esv-blue-piller\" --variable-type bool --value 'false' --description \"Zion membership criteria.\" ${s.connId}\\n`[\n 'brightCyan'\n ]\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await getTokens()) {\n verboseMessage('Creating variable...');\n createVariable(\n options.variableId,\n options.value,\n options.description,\n options.variableType\n );\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,cAAc,QAAQ,wBAAwB;AACvD,SAASC,cAAc,QAAQ,wBAAwB;AACvD,OAAO,KAAKC,CAAC,MAAM,uBAAuB;AAE1C,MAAM;EAAEC;AAAU,CAAC,GAAGJ,KAAK,CAACK,KAAK;AAEjC,MAAMC,OAAO,GAAG,IAAIP,YAAY,CAAC,2BAA2B,CAAC;AAE7DO,OAAO,CACJC,WAAW,CAAC,mBAAmB,CAAC,CAChCC,cAAc,CAAC,iCAAiC,EAAE,cAAc,CAAC,CACjEA,cAAc,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CACpDC,MAAM,CAAC,6BAA6B,EAAE,uBAAuB,CAAC,CAC9DA,MAAM,CACL,iCAAiC,EACjC,gGAAgG,EAChG,QACF,CAAC,CACAC,WAAW,CACV,OAAO,EACN,mBAAkB,GAChB,iEAAgE,GAChE,oIAAmIP,CAAC,CAACQ,MAAO,IAAG,CAC9I,YAAY,CACb,GACA,6CAA4C,GAC5C,wPAAuPR,CAAC,CAACQ,MAAO,IAAG,CAClQ,YAAY,CACb,GACA,8CAA6C,GAC7C,2UAA0UR,CAAC,CAACQ,MAAO,IAAG,CACrV,YAAY,CACb,GACA,2CAA0C,GAC1C,uIAAsIR,CAAC,CAACQ,MAAO,IAAG,CACjJ,YAAY,CACb,GACA,4CAA2C,GAC3C,gJAA+IR,CAAC,CAACQ,MAAO,IAAG,CAC1J,YAAY,CAElB,CAAC,CACAC,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD,IAAI,MAAMd,SAAS,CAAC,CAAC,EAAE;IACrBH,cAAc,CAAC,sBAAsB,CAAC;IACtCC,cAAc,CACZe,OAAO,CAACG,UAAU,EAClBH,OAAO,CAACI,KAAK,EACbJ,OAAO,CAACV,WAAW,EACnBU,OAAO,CAACK,YACV,CAAC;EACH,CAAC,MAAM;IACLC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;;AAEHlB,OAAO,CAACmB,KAAK,CAAC,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { FrodoCommand } from '../FrodoCommand';
2
+ import { frodo } from '@rockcarver/frodo-lib';
3
+ import * as s from '../../help/SampleData';
4
+ import { printMessage } from '../../utils/Console';
5
+ import inquirer from 'inquirer';
6
+ import fuzzy from 'fuzzy';
7
+ import inquirerPrompt from 'inquirer-autocomplete-prompt';
8
+ const {
9
+ getTokens
10
+ } = frodo.login;
11
+ const exits = ['exit', 'quit', 'q'];
12
+ const functions = frodo.utils.json.getPaths(frodo, 'this.');
13
+ function searchFunctions(_answers, input = '') {
14
+ return new Promise(resolve => {
15
+ setTimeout(() => {
16
+ const results = fuzzy.filter(input, functions).map(el => el.original);
17
+ // results.splice(5, 0, new inquirer.Separator());
18
+ // results.push(new inquirer.Separator());
19
+ resolve(results);
20
+ }, Math.random() * 470 + 30);
21
+ });
22
+ }
23
+ export default function setup() {
24
+ const program = new FrodoCommand('shell', ['realm']);
25
+ program.description('Launch the frodo interactive shell.').addHelpText('after', `Usage Examples:\n` + ` Launch a frodo shell using explicit login parameters:\n` + ` $ frodo shell ${s.amBaseUrl} ${s.username} '${s.password}'\n`['brightCyan'] + ` Launch a frodo shell using a connection profile (identified by the full AM base URL):\n` + ` $ frodo shell ${s.amBaseUrl}'\n`['brightCyan'] + ` Launch a frodo shell using a connection profile (identified by a unique substring of the AM base URL):\n` + ` $ frodo shell ${s.connId}'\n`['brightCyan']).action(async (host, user, password, options, command) => {
26
+ command.handleDefaultArgsAndOpts(host, user, password, options, command);
27
+ if (host) await getTokens();
28
+ let exit = false;
29
+ do {
30
+ try {
31
+ inquirer.registerPrompt('autocomplete', inquirerPrompt);
32
+ const response = await inquirer.prompt([{
33
+ type: 'autocomplete',
34
+ prefix: '',
35
+ name: 'command',
36
+ message: '>',
37
+ source: searchFunctions,
38
+ suggestOnly: true
39
+ }]);
40
+ exit = exits.includes(response.command);
41
+ // evaluate code with context
42
+ if (!exit) {
43
+ const result = await function (str) {
44
+ return eval(str);
45
+ }.call(frodo, `${response.command}`);
46
+ printMessage(result, 'data');
47
+ }
48
+ } catch (error) {
49
+ var _error$response;
50
+ printMessage((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data, 'error');
51
+ printMessage(`${error}`, 'error');
52
+ }
53
+ } while (!exit);
54
+ });
55
+ return program;
56
+ }
57
+ //# sourceMappingURL=shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.js","names":["FrodoCommand","frodo","s","printMessage","inquirer","fuzzy","inquirerPrompt","getTokens","login","exits","functions","utils","json","getPaths","searchFunctions","_answers","input","Promise","resolve","setTimeout","results","filter","map","el","original","Math","random","setup","program","description","addHelpText","amBaseUrl","username","password","connId","action","host","user","options","command","handleDefaultArgsAndOpts","exit","registerPrompt","response","prompt","type","prefix","name","message","source","suggestOnly","includes","result","str","eval","call","error","_error$response","data"],"sources":["../../../src/cli/shell/shell.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { frodo } from '@rockcarver/frodo-lib';\nimport * as s from '../../help/SampleData';\nimport { printMessage } from '../../utils/Console';\nimport inquirer from 'inquirer';\nimport fuzzy from 'fuzzy';\nimport inquirerPrompt from 'inquirer-autocomplete-prompt';\n\nconst { getTokens } = frodo.login;\n\nconst exits = ['exit', 'quit', 'q'];\nconst functions = frodo.utils.json.getPaths(frodo, 'this.');\n\nfunction searchFunctions(_answers, input = '') {\n return new Promise((resolve) => {\n setTimeout(() => {\n const results = fuzzy.filter(input, functions).map((el) => el.original);\n // results.splice(5, 0, new inquirer.Separator());\n // results.push(new inquirer.Separator());\n resolve(results);\n }, Math.random() * 470 + 30);\n });\n}\n\nexport default function setup() {\n const program = new FrodoCommand('shell', ['realm']);\n program\n .description('Launch the frodo interactive shell.')\n .addHelpText(\n 'after',\n `Usage Examples:\\n` +\n ` Launch a frodo shell using explicit login parameters:\\n` +\n ` $ frodo shell ${s.amBaseUrl} ${s.username} '${s.password}'\\n`[\n 'brightCyan'\n ] +\n ` Launch a frodo shell using a connection profile (identified by the full AM base URL):\\n` +\n ` $ frodo shell ${s.amBaseUrl}'\\n`['brightCyan'] +\n ` Launch a frodo shell using a connection profile (identified by a unique substring of the AM base URL):\\n` +\n ` $ frodo shell ${s.connId}'\\n`['brightCyan']\n )\n .action(async (host, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(host, user, password, options, command);\n if (host) await getTokens();\n let exit = false;\n do {\n try {\n inquirer.registerPrompt('autocomplete', inquirerPrompt);\n const response = await inquirer.prompt([\n {\n type: 'autocomplete',\n prefix: '',\n name: 'command',\n message: '>',\n source: searchFunctions,\n suggestOnly: true,\n },\n ]);\n exit = exits.includes(response.command);\n // evaluate code with context\n if (!exit) {\n const result = await function (str: string) {\n return eval(str);\n }.call(frodo, `${response.command}`);\n printMessage(result, 'data');\n }\n } catch (error) {\n printMessage(error.response?.data, 'error');\n printMessage(`${error}`, 'error');\n }\n } while (!exit);\n });\n return program;\n}\n"],"mappings":"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"}
@@ -99,7 +99,6 @@ export async function listSaml2Providers(long = false) {
99
99
  export async function describeSaml2Provider(entityId) {
100
100
  try {
101
101
  const stub = await getSaml2ProviderStub(entityId);
102
- printMessage(stub);
103
102
  const {
104
103
  location
105
104
  } = stub;
@@ -1 +1 @@
1
- {"version":3,"file":"Saml2Ops.js","names":["frodo","fs","createObjectTable","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","saveTextToFile","decodeBase64","utils","getTypedFilename","saveJsonToFile","getRealmString","validateImport","getSaml2ProviderStubs","getProviderByLocationAndId","getSaml2ProviderStub","getProviderMetadataUrl","getProviderMetadata","exportSaml2Provider","exportSaml2Providers","importSaml2Provider","importSaml2Providers","saml2","entityProvider","roleMap","identityProvider","serviceProvider","attributeQueryProvider","xacmlPolicyEnforcementPoint","getOneLineDescription","saml2ProviderObj","roles","key","value","Object","entries","push","description","entityId","entityLocation","length","join","getTableHeaderMd","markdown","getTableRowMd","row","listSaml2Providers","long","providerList","sort","a","b","_id","localeCompare","provider","table","location","map","role","toString","describeSaml2Provider","stub","id","rawProviderData","_rev","metadataUrl","error","message","exportSaml2MetadataToFile","file","fileName","metaData","brightCyan","exportSaml2ProviderToFile","fileData","err","exportSaml2ProvidersToFile","exportData","_error$response","response","status","exportSaml2ProvidersToFiles","stubs","importSaml2ProviderFromFile","readFile","data","JSON","parse","importFirstSaml2ProviderFromFile","entityId64","keys","saml","remote","hosted","importSaml2ProvidersFromFile","meta","importSaml2ProvidersFromFiles","names","readdirSync","jsonFiles","filter","name","toLowerCase","endsWith","totalStatus","total","successes","warnings","failures","readFileSync","myStatus"],"sources":["../../src/ops/Saml2Ops.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport {\n createObjectTable,\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport { saveTextToFile } from '../utils/ExportImportUtils';\nimport type {\n MultiOpStatusInterface,\n Saml2ExportInterface,\n} from '@rockcarver/frodo-lib/types/ops/OpsTypes';\nimport type { Saml2ProviderSkeleton } from '@rockcarver/frodo-lib/types/api/Saml2Api';\n\nconst { decodeBase64 } = frodo.utils;\nconst { getTypedFilename, saveJsonToFile, getRealmString, validateImport } =\n frodo.utils;\nconst {\n getSaml2ProviderStubs,\n getProviderByLocationAndId,\n getSaml2ProviderStub,\n getProviderMetadataUrl,\n getProviderMetadata,\n exportSaml2Provider,\n exportSaml2Providers,\n importSaml2Provider,\n importSaml2Providers,\n} = frodo.saml2.entityProvider;\n\nconst roleMap = {\n identityProvider: 'IDP',\n serviceProvider: 'SP',\n attributeQueryProvider: 'AttrQuery',\n xacmlPolicyEnforcementPoint: 'XACML PEP',\n};\n\n/**\n * Get a one-line description of the saml2 provider object\n * @param {Saml2ProviderSkeleton} saml2ProviderObj saml2 provider object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(\n saml2ProviderObj: Saml2ProviderSkeleton\n): string {\n const roles: string[] = [];\n for (const [key, value] of Object.entries(roleMap)) {\n if (saml2ProviderObj[key]) {\n roles.push(value);\n }\n }\n const description = `[${saml2ProviderObj.entityId['brightCyan']}]${\n ' (' + saml2ProviderObj.entityLocation\n }${roles.length ? ' ' + roles.join(', ') + ')' : ')'}`;\n return description;\n}\n\n/**\n * Get markdown table header\n * @returns {string} markdown table header\n */\nexport function getTableHeaderMd(): string {\n let markdown = '';\n markdown += '| Entity Id | Location | Role(s) |\\n';\n markdown += '| --------- | -------- | ------- |';\n return markdown;\n}\n\n/**\n * Get a table-row of the saml2 provider in markdown\n * @param {Saml2ProviderSkeleton} saml2ProviderObj saml2 provider object to describe\n * @returns {string} a table-row of the saml2 provider in markdown\n */\nexport function getTableRowMd(saml2ProviderObj: Saml2ProviderSkeleton): string {\n const roles: string[] = [];\n for (const [key, value] of Object.entries(roleMap)) {\n if (saml2ProviderObj[key]) {\n roles.push(value);\n }\n }\n const row = `| ${saml2ProviderObj.entityId} | ${\n saml2ProviderObj.entityLocation\n } | ${roles.length ? roles.join(', ') : ''} |`;\n return row;\n}\n\n/**\n * List entity providers\n * @param {boolean} long Long list format with details\n */\nexport async function listSaml2Providers(long = false) {\n const providerList = await getSaml2ProviderStubs();\n providerList.sort((a, b) => a._id.localeCompare(b._id));\n if (!long) {\n for (const provider of providerList) {\n printMessage(`${provider.entityId}`, 'data');\n }\n } else {\n const table = createTable([\n 'Entity Id'['brightCyan'],\n 'Location'['brightCyan'],\n 'Role(s)'['brightCyan'],\n ]);\n for (const provider of providerList) {\n table.push([\n provider.entityId,\n provider.location,\n provider.roles.map((role) => roleMap[role]).join(', '),\n ]);\n }\n printMessage(table.toString());\n }\n}\n\n/**\n * Describe an entity provider's configuration\n * @param {String} entityId Provider entity id\n */\nexport async function describeSaml2Provider(entityId) {\n try {\n const stub = await getSaml2ProviderStub(entityId);\n printMessage(stub);\n const { location } = stub;\n const id = stub._id;\n const roles = stub.roles.map((role: string) => roleMap[role]).join(', ');\n const rawProviderData = await getProviderByLocationAndId(location, id);\n delete rawProviderData._id;\n delete rawProviderData._rev;\n rawProviderData.location = location;\n rawProviderData.roles = roles;\n rawProviderData.metadataUrl = getProviderMetadataUrl(entityId);\n const table = createObjectTable(rawProviderData);\n printMessage(table.toString());\n } catch (error) {\n printMessage(error.message, 'error');\n }\n}\n\n/**\n * Export provider metadata to file\n * @param {String} entityId Provider entity id\n * @param {String} file Optional filename\n */\nexport async function exportSaml2MetadataToFile(entityId, file = null) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(entityId, 'metadata', 'xml');\n }\n createProgressBar(1, `Exporting metadata for: ${entityId}`);\n try {\n updateProgressBar(`Writing file ${fileName}`);\n const metaData = await getProviderMetadata(entityId);\n saveTextToFile(metaData, fileName);\n updateProgressBar(`Exported provider ${entityId}`);\n stopProgressBar(\n `Exported ${entityId.brightCyan} metadata to ${fileName.brightCyan}.`\n );\n } catch (error) {\n stopProgressBar(`${error}`);\n printMessage(error, 'error');\n }\n}\n\n/**\n * Export a single entity provider to file\n * @param {String} entityId Provider entity id\n * @param {String} file Optional filename\n */\nexport async function exportSaml2ProviderToFile(entityId, file = null) {\n debugMessage(\n `cli.Saml2Ops.exportSaml2ProviderToFile: start [entityId=${entityId}, file=${file}]`\n );\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(entityId, 'saml');\n }\n try {\n createProgressBar(1, `Exporting provider ${entityId}`);\n const fileData = await exportSaml2Provider(entityId);\n saveJsonToFile(fileData, fileName);\n updateProgressBar(`Exported provider ${entityId}`);\n stopProgressBar(\n `Exported ${entityId.brightCyan} to ${fileName.brightCyan}.`\n );\n } catch (err) {\n stopProgressBar(`${err}`);\n printMessage(err, 'error');\n }\n debugMessage(\n `cli.Saml2Ops.exportSaml2ProviderToFile: end [entityId=${entityId}, file=${fileName}]`\n );\n}\n\n/**\n * Export all entity providers to one file\n * @param {String} file Optional filename\n */\nexport async function exportSaml2ProvidersToFile(file = null) {\n debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: start [file=${file}]`);\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(`all${getRealmString()}Providers`, 'saml');\n }\n try {\n const exportData = await exportSaml2Providers();\n saveJsonToFile(exportData, fileName);\n } catch (error) {\n printMessage(error.message, 'error');\n printMessage(\n `exportSaml2ProvidersToFile: ${error.response?.status}`,\n 'error'\n );\n }\n debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: end [file=${file}]`);\n}\n\n/**\n * Export all entity providers to individual files\n */\nexport async function exportSaml2ProvidersToFiles() {\n const stubs = await getSaml2ProviderStubs();\n if (stubs.length > 0) {\n createProgressBar(stubs.length, 'Exporting providers');\n for (const stub of stubs) {\n const fileName = getTypedFilename(stub.entityId, 'saml');\n const fileData = await exportSaml2Provider(stub.entityId);\n saveJsonToFile(fileData, fileName);\n updateProgressBar(`Exported provider ${stub.entityId}`);\n }\n stopProgressBar(`${stubs.length} providers exported.`);\n } else {\n printMessage('No entity providers found.', 'info');\n }\n}\n\n/**\n * Import a SAML entity provider by entity id from file\n * @param {String} entityId Provider entity id\n * @param {String} file Import file name\n */\nexport async function importSaml2ProviderFromFile(\n entityId: string,\n file: string\n) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n showSpinner(`Importing ${entityId}...`);\n try {\n await importSaml2Provider(entityId, fileData);\n succeedSpinner(`Imported ${entityId}.`);\n } catch (error) {\n failSpinner(`Error importing ${entityId}: ${error.message}`);\n }\n });\n}\n\n/**\n * Import a SAML entity provider by entity id from file\n * @param {String} file Import file name\n */\nexport async function importFirstSaml2ProviderFromFile(file: string) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data) as Saml2ExportInterface;\n // pick the first provider and run with it\n const entityId64 =\n Object.keys(fileData.saml.remote)[0] ||\n Object.keys(fileData.saml.hosted)[0];\n const entityId = decodeBase64(entityId64);\n showSpinner(`Importing ${entityId}...`);\n try {\n await importSaml2Provider(entityId, fileData);\n succeedSpinner(`Imported ${entityId}.`);\n } catch (error) {\n failSpinner(`Error importing ${entityId}: ${error.message}`);\n }\n });\n}\n\n/**\n * Import all SAML entity providers from file\n * @param {String} file Import file name\n */\nexport async function importSaml2ProvidersFromFile(file: string) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n await importSaml2Providers(fileData);\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all SAML entity providers from all *.saml.json files in the current directory\n */\nexport async function importSaml2ProvidersFromFiles() {\n const names = fs.readdirSync('.');\n const jsonFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.saml.json')\n );\n createProgressBar(jsonFiles.length, 'Importing providers...');\n const totalStatus: MultiOpStatusInterface = {\n total: 0,\n successes: 0,\n warnings: 0,\n failures: 0,\n };\n for (const file of jsonFiles) {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n const myStatus = await importSaml2Providers(fileData);\n totalStatus.total += myStatus.total;\n totalStatus.successes += myStatus.successes;\n totalStatus.warnings += myStatus.warnings;\n totalStatus.failures += myStatus.failures;\n updateProgressBar(\n `Imported ${myStatus.successes}/${myStatus.total} provider(s) from ${file}.`\n );\n } else {\n printMessage(`Validation of ${file} failed!`, 'error');\n }\n }\n stopProgressBar(\n `Imported ${totalStatus.successes} of ${totalStatus.total} provider(s) from ${jsonFiles.length} file(s).`\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Saml2Ops.js","names":["frodo","fs","createObjectTable","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","saveTextToFile","decodeBase64","utils","getTypedFilename","saveJsonToFile","getRealmString","validateImport","getSaml2ProviderStubs","getProviderByLocationAndId","getSaml2ProviderStub","getProviderMetadataUrl","getProviderMetadata","exportSaml2Provider","exportSaml2Providers","importSaml2Provider","importSaml2Providers","saml2","entityProvider","roleMap","identityProvider","serviceProvider","attributeQueryProvider","xacmlPolicyEnforcementPoint","getOneLineDescription","saml2ProviderObj","roles","key","value","Object","entries","push","description","entityId","entityLocation","length","join","getTableHeaderMd","markdown","getTableRowMd","row","listSaml2Providers","long","providerList","sort","a","b","_id","localeCompare","provider","table","location","map","role","toString","describeSaml2Provider","stub","id","rawProviderData","_rev","metadataUrl","error","message","exportSaml2MetadataToFile","file","fileName","metaData","brightCyan","exportSaml2ProviderToFile","fileData","err","exportSaml2ProvidersToFile","exportData","_error$response","response","status","exportSaml2ProvidersToFiles","stubs","importSaml2ProviderFromFile","readFile","data","JSON","parse","importFirstSaml2ProviderFromFile","entityId64","keys","saml","remote","hosted","importSaml2ProvidersFromFile","meta","importSaml2ProvidersFromFiles","names","readdirSync","jsonFiles","filter","name","toLowerCase","endsWith","totalStatus","total","successes","warnings","failures","readFileSync","myStatus"],"sources":["../../src/ops/Saml2Ops.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport {\n createObjectTable,\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport { saveTextToFile } from '../utils/ExportImportUtils';\nimport type {\n MultiOpStatusInterface,\n Saml2ExportInterface,\n} from '@rockcarver/frodo-lib/types/ops/OpsTypes';\nimport type { Saml2ProviderSkeleton } from '@rockcarver/frodo-lib/types/api/Saml2Api';\n\nconst { decodeBase64 } = frodo.utils;\nconst { getTypedFilename, saveJsonToFile, getRealmString, validateImport } =\n frodo.utils;\nconst {\n getSaml2ProviderStubs,\n getProviderByLocationAndId,\n getSaml2ProviderStub,\n getProviderMetadataUrl,\n getProviderMetadata,\n exportSaml2Provider,\n exportSaml2Providers,\n importSaml2Provider,\n importSaml2Providers,\n} = frodo.saml2.entityProvider;\n\nconst roleMap = {\n identityProvider: 'IDP',\n serviceProvider: 'SP',\n attributeQueryProvider: 'AttrQuery',\n xacmlPolicyEnforcementPoint: 'XACML PEP',\n};\n\n/**\n * Get a one-line description of the saml2 provider object\n * @param {Saml2ProviderSkeleton} saml2ProviderObj saml2 provider object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(\n saml2ProviderObj: Saml2ProviderSkeleton\n): string {\n const roles: string[] = [];\n for (const [key, value] of Object.entries(roleMap)) {\n if (saml2ProviderObj[key]) {\n roles.push(value);\n }\n }\n const description = `[${saml2ProviderObj.entityId['brightCyan']}]${\n ' (' + saml2ProviderObj.entityLocation\n }${roles.length ? ' ' + roles.join(', ') + ')' : ')'}`;\n return description;\n}\n\n/**\n * Get markdown table header\n * @returns {string} markdown table header\n */\nexport function getTableHeaderMd(): string {\n let markdown = '';\n markdown += '| Entity Id | Location | Role(s) |\\n';\n markdown += '| --------- | -------- | ------- |';\n return markdown;\n}\n\n/**\n * Get a table-row of the saml2 provider in markdown\n * @param {Saml2ProviderSkeleton} saml2ProviderObj saml2 provider object to describe\n * @returns {string} a table-row of the saml2 provider in markdown\n */\nexport function getTableRowMd(saml2ProviderObj: Saml2ProviderSkeleton): string {\n const roles: string[] = [];\n for (const [key, value] of Object.entries(roleMap)) {\n if (saml2ProviderObj[key]) {\n roles.push(value);\n }\n }\n const row = `| ${saml2ProviderObj.entityId} | ${\n saml2ProviderObj.entityLocation\n } | ${roles.length ? roles.join(', ') : ''} |`;\n return row;\n}\n\n/**\n * List entity providers\n * @param {boolean} long Long list format with details\n */\nexport async function listSaml2Providers(long = false) {\n const providerList = await getSaml2ProviderStubs();\n providerList.sort((a, b) => a._id.localeCompare(b._id));\n if (!long) {\n for (const provider of providerList) {\n printMessage(`${provider.entityId}`, 'data');\n }\n } else {\n const table = createTable([\n 'Entity Id'['brightCyan'],\n 'Location'['brightCyan'],\n 'Role(s)'['brightCyan'],\n ]);\n for (const provider of providerList) {\n table.push([\n provider.entityId,\n provider.location,\n provider.roles.map((role) => roleMap[role]).join(', '),\n ]);\n }\n printMessage(table.toString());\n }\n}\n\n/**\n * Describe an entity provider's configuration\n * @param {String} entityId Provider entity id\n */\nexport async function describeSaml2Provider(entityId) {\n try {\n const stub = await getSaml2ProviderStub(entityId);\n const { location } = stub;\n const id = stub._id;\n const roles = stub.roles.map((role: string) => roleMap[role]).join(', ');\n const rawProviderData = await getProviderByLocationAndId(location, id);\n delete rawProviderData._id;\n delete rawProviderData._rev;\n rawProviderData.location = location;\n rawProviderData.roles = roles;\n rawProviderData.metadataUrl = getProviderMetadataUrl(entityId);\n const table = createObjectTable(rawProviderData);\n printMessage(table.toString());\n } catch (error) {\n printMessage(error.message, 'error');\n }\n}\n\n/**\n * Export provider metadata to file\n * @param {String} entityId Provider entity id\n * @param {String} file Optional filename\n */\nexport async function exportSaml2MetadataToFile(entityId, file = null) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(entityId, 'metadata', 'xml');\n }\n createProgressBar(1, `Exporting metadata for: ${entityId}`);\n try {\n updateProgressBar(`Writing file ${fileName}`);\n const metaData = await getProviderMetadata(entityId);\n saveTextToFile(metaData, fileName);\n updateProgressBar(`Exported provider ${entityId}`);\n stopProgressBar(\n `Exported ${entityId.brightCyan} metadata to ${fileName.brightCyan}.`\n );\n } catch (error) {\n stopProgressBar(`${error}`);\n printMessage(error, 'error');\n }\n}\n\n/**\n * Export a single entity provider to file\n * @param {String} entityId Provider entity id\n * @param {String} file Optional filename\n */\nexport async function exportSaml2ProviderToFile(entityId, file = null) {\n debugMessage(\n `cli.Saml2Ops.exportSaml2ProviderToFile: start [entityId=${entityId}, file=${file}]`\n );\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(entityId, 'saml');\n }\n try {\n createProgressBar(1, `Exporting provider ${entityId}`);\n const fileData = await exportSaml2Provider(entityId);\n saveJsonToFile(fileData, fileName);\n updateProgressBar(`Exported provider ${entityId}`);\n stopProgressBar(\n `Exported ${entityId.brightCyan} to ${fileName.brightCyan}.`\n );\n } catch (err) {\n stopProgressBar(`${err}`);\n printMessage(err, 'error');\n }\n debugMessage(\n `cli.Saml2Ops.exportSaml2ProviderToFile: end [entityId=${entityId}, file=${fileName}]`\n );\n}\n\n/**\n * Export all entity providers to one file\n * @param {String} file Optional filename\n */\nexport async function exportSaml2ProvidersToFile(file = null) {\n debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: start [file=${file}]`);\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(`all${getRealmString()}Providers`, 'saml');\n }\n try {\n const exportData = await exportSaml2Providers();\n saveJsonToFile(exportData, fileName);\n } catch (error) {\n printMessage(error.message, 'error');\n printMessage(\n `exportSaml2ProvidersToFile: ${error.response?.status}`,\n 'error'\n );\n }\n debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: end [file=${file}]`);\n}\n\n/**\n * Export all entity providers to individual files\n */\nexport async function exportSaml2ProvidersToFiles() {\n const stubs = await getSaml2ProviderStubs();\n if (stubs.length > 0) {\n createProgressBar(stubs.length, 'Exporting providers');\n for (const stub of stubs) {\n const fileName = getTypedFilename(stub.entityId, 'saml');\n const fileData = await exportSaml2Provider(stub.entityId);\n saveJsonToFile(fileData, fileName);\n updateProgressBar(`Exported provider ${stub.entityId}`);\n }\n stopProgressBar(`${stubs.length} providers exported.`);\n } else {\n printMessage('No entity providers found.', 'info');\n }\n}\n\n/**\n * Import a SAML entity provider by entity id from file\n * @param {String} entityId Provider entity id\n * @param {String} file Import file name\n */\nexport async function importSaml2ProviderFromFile(\n entityId: string,\n file: string\n) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n showSpinner(`Importing ${entityId}...`);\n try {\n await importSaml2Provider(entityId, fileData);\n succeedSpinner(`Imported ${entityId}.`);\n } catch (error) {\n failSpinner(`Error importing ${entityId}: ${error.message}`);\n }\n });\n}\n\n/**\n * Import a SAML entity provider by entity id from file\n * @param {String} file Import file name\n */\nexport async function importFirstSaml2ProviderFromFile(file: string) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data) as Saml2ExportInterface;\n // pick the first provider and run with it\n const entityId64 =\n Object.keys(fileData.saml.remote)[0] ||\n Object.keys(fileData.saml.hosted)[0];\n const entityId = decodeBase64(entityId64);\n showSpinner(`Importing ${entityId}...`);\n try {\n await importSaml2Provider(entityId, fileData);\n succeedSpinner(`Imported ${entityId}.`);\n } catch (error) {\n failSpinner(`Error importing ${entityId}: ${error.message}`);\n }\n });\n}\n\n/**\n * Import all SAML entity providers from file\n * @param {String} file Import file name\n */\nexport async function importSaml2ProvidersFromFile(file: string) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n await importSaml2Providers(fileData);\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all SAML entity providers from all *.saml.json files in the current directory\n */\nexport async function importSaml2ProvidersFromFiles() {\n const names = fs.readdirSync('.');\n const jsonFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.saml.json')\n );\n createProgressBar(jsonFiles.length, 'Importing providers...');\n const totalStatus: MultiOpStatusInterface = {\n total: 0,\n successes: 0,\n warnings: 0,\n failures: 0,\n };\n for (const file of jsonFiles) {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n const myStatus = await importSaml2Providers(fileData);\n totalStatus.total += myStatus.total;\n totalStatus.successes += myStatus.successes;\n totalStatus.warnings += myStatus.warnings;\n totalStatus.failures += myStatus.failures;\n updateProgressBar(\n `Imported ${myStatus.successes}/${myStatus.total} provider(s) from ${file}.`\n );\n } else {\n printMessage(`Validation of ${file} failed!`, 'error');\n }\n }\n stopProgressBar(\n `Imported ${totalStatus.successes} of ${totalStatus.total} provider(s) from ${jsonFiles.length} file(s).`\n );\n}\n"],"mappings":"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"}
@@ -43,14 +43,15 @@ export async function listVariables(long) {
43
43
 
44
44
  /**
45
45
  * Create variable
46
- * @param {String} variableId variable id
47
- * @param {String} value variable value
48
- * @param {String} description variable description
46
+ * @param {string} variableId variable id
47
+ * @param {string} value variable value
48
+ * @param {string} description variable description
49
+ * @param {VariableExpressionType} type variable type
49
50
  */
50
- export async function createVariable(variableId, value, description) {
51
+ export async function createVariable(variableId, value, description, type = 'string') {
51
52
  showSpinner(`Creating variable ${variableId}...`);
52
53
  try {
53
- await putVariable(variableId, value, description);
54
+ await putVariable(variableId, value, description, type);
54
55
  succeedSpinner(`Created variable ${variableId}`);
55
56
  } catch (error) {
56
57
  failSpinner(`Error: ${error.response.data.code} - ${error.response.data.message}`);
@@ -59,9 +60,9 @@ export async function createVariable(variableId, value, description) {
59
60
 
60
61
  /**
61
62
  * Update variable
62
- * @param {String} variableId variable id
63
- * @param {String} value variable value
64
- * @param {String} description variable description
63
+ * @param {string} variableId variable id
64
+ * @param {string} value variable value
65
+ * @param {string} description variable description
65
66
  */
66
67
  export async function updateVariable(variableId, value, description) {
67
68
  showSpinner(`Updating variable ${variableId}...`);
@@ -75,8 +76,8 @@ export async function updateVariable(variableId, value, description) {
75
76
 
76
77
  /**
77
78
  * Set description of variable
78
- * @param {String} variableId variable id
79
- * @param {String} description variable description
79
+ * @param {string} variableId variable id
80
+ * @param {string} description variable description
80
81
  */
81
82
  export async function setVariableDescription(variableId, description) {
82
83
  showSpinner(`Setting description of variable ${variableId}...`);
@@ -90,7 +91,7 @@ export async function setVariableDescription(variableId, description) {
90
91
 
91
92
  /**
92
93
  * Delete a variable
93
- * @param {String} variableId variable id
94
+ * @param {string} variableId variable id
94
95
  */
95
96
  export async function deleteVariable(variableId) {
96
97
  showSpinner(`Deleting variable ${variableId}...`);
@@ -127,7 +128,7 @@ export async function deleteVariables() {
127
128
 
128
129
  /**
129
130
  * Describe a variable
130
- * @param {String} variableId variable id
131
+ * @param {string} variableId variable id
131
132
  */
132
133
  export async function describeVariable(variableId) {
133
134
  const variable = await getVariable(variableId);
@@ -1 +1 @@
1
- {"version":3,"file":"VariablesOps.js","names":["frodo","createKeyValueTable","createProgressBar","createTable","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","wordwrap","decodeBase64","utils","resolveUserName","idm","managed","getVariables","getVariable","putVariable","cloud","variable","listVariables","long","variables","result","sort","a","b","_id","localeCompare","error","message","response","data","table","push","valueBase64","loaded","description","lastChangedBy","Date","lastChangeDate","toLocaleString","toString","forEach","secret","createVariable","variableId","value","code","updateVariable","setVariableDescription","deleteVariable","deleteVariables","length","describeVariable"],"sources":["../../src/ops/VariablesOps.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport {\n createKeyValueTable,\n createProgressBar,\n createTable,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport wordwrap from './utils/Wordwrap';\n\nconst { decodeBase64 } = frodo.utils;\nconst { resolveUserName } = frodo.idm.managed;\nconst { getVariables, getVariable, putVariable } = frodo.cloud.variable;\n\n/**\n * List variables\n * @param {boolean} long Long version, all the fields\n */\nexport async function listVariables(long) {\n let variables = [];\n try {\n variables = (await getVariables()).result;\n variables.sort((a, b) => a._id.localeCompare(b._id));\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.data, 'error');\n }\n if (long) {\n const table = createTable([\n 'Id'['brightCyan'],\n 'Value'['brightCyan'],\n 'Status'['brightCyan'],\n 'Description'['brightCyan'],\n 'Modifier'['brightCyan'],\n 'Modified'['brightCyan'],\n ]);\n for (const variable of variables) {\n table.push([\n variable._id,\n wordwrap(decodeBase64(variable.valueBase64), 40),\n variable.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n wordwrap(variable.description, 40),\n // eslint-disable-next-line no-await-in-loop\n await resolveUserName('teammember', variable.lastChangedBy),\n new Date(variable.lastChangeDate).toLocaleString(),\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n variables.forEach((secret) => {\n printMessage(secret._id, 'data');\n });\n }\n}\n\n/**\n * Create variable\n * @param {String} variableId variable id\n * @param {String} value variable value\n * @param {String} description variable description\n */\nexport async function createVariable(variableId, value, description) {\n showSpinner(`Creating variable ${variableId}...`);\n try {\n await putVariable(variableId, value, description);\n succeedSpinner(`Created variable ${variableId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Update variable\n * @param {String} variableId variable id\n * @param {String} value variable value\n * @param {String} description variable description\n */\nexport async function updateVariable(variableId, value, description) {\n showSpinner(`Updating variable ${variableId}...`);\n try {\n await putVariable(variableId, value, description);\n succeedSpinner(`Updated variable ${variableId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Set description of variable\n * @param {String} variableId variable id\n * @param {String} description variable description\n */\nexport async function setVariableDescription(variableId, description) {\n showSpinner(`Setting description of variable ${variableId}...`);\n try {\n await setVariableDescription(variableId, description);\n succeedSpinner(`Set description of variable ${variableId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete a variable\n * @param {String} variableId variable id\n */\nexport async function deleteVariable(variableId) {\n showSpinner(`Deleting variable ${variableId}...`);\n try {\n await deleteVariable(variableId);\n succeedSpinner(`Deleted variable ${variableId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete all variables\n */\nexport async function deleteVariables() {\n try {\n const variables = (await getVariables()).result;\n createProgressBar(variables.length, `Deleting variable...`);\n for (const variable of variables) {\n try {\n // eslint-disable-next-line no-await-in-loop\n await deleteVariable(variable._id);\n updateProgressBar(`Deleted variable ${variable._id}`);\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n }\n stopProgressBar(`Variables deleted.`);\n } catch (error) {\n stopProgressBar(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n}\n\n/**\n * Describe a variable\n * @param {String} variableId variable id\n */\nexport async function describeVariable(variableId) {\n const variable = await getVariable(variableId);\n const table = createKeyValueTable();\n table.push(['Name'['brightCyan'], variable._id]);\n table.push([\n 'Value'['brightCyan'],\n wordwrap(decodeBase64(variable.valueBase64), 40),\n ]);\n table.push([\n 'Status'['brightCyan'],\n variable.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n ]);\n table.push(['Description'['brightCyan'], wordwrap(variable.description, 60)]);\n table.push([\n 'Modified'['brightCyan'],\n new Date(variable.lastChangeDate).toLocaleString(),\n ]);\n table.push([\n 'Modifier'['brightCyan'],\n await resolveUserName('teammember', variable.lastChangedBy),\n ]);\n table.push(['Modifier UUID'['brightCyan'], variable.lastChangedBy]);\n printMessage(table.toString());\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"VariablesOps.js","names":["frodo","createKeyValueTable","createProgressBar","createTable","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","wordwrap","decodeBase64","utils","resolveUserName","idm","managed","getVariables","getVariable","putVariable","cloud","variable","listVariables","long","variables","result","sort","a","b","_id","localeCompare","error","message","response","data","table","push","valueBase64","loaded","description","lastChangedBy","Date","lastChangeDate","toLocaleString","toString","forEach","secret","createVariable","variableId","value","type","code","updateVariable","setVariableDescription","deleteVariable","deleteVariables","length","describeVariable"],"sources":["../../src/ops/VariablesOps.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport {\n createKeyValueTable,\n createProgressBar,\n createTable,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport wordwrap from './utils/Wordwrap';\nimport { VariableExpressionType } from '@rockcarver/frodo-lib/types/api/cloud/VariablesApi';\n\nconst { decodeBase64 } = frodo.utils;\nconst { resolveUserName } = frodo.idm.managed;\nconst { getVariables, getVariable, putVariable } = frodo.cloud.variable;\n\n/**\n * List variables\n * @param {boolean} long Long version, all the fields\n */\nexport async function listVariables(long) {\n let variables = [];\n try {\n variables = (await getVariables()).result;\n variables.sort((a, b) => a._id.localeCompare(b._id));\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.data, 'error');\n }\n if (long) {\n const table = createTable([\n 'Id'['brightCyan'],\n 'Value'['brightCyan'],\n 'Status'['brightCyan'],\n 'Description'['brightCyan'],\n 'Modifier'['brightCyan'],\n 'Modified'['brightCyan'],\n ]);\n for (const variable of variables) {\n table.push([\n variable._id,\n wordwrap(decodeBase64(variable.valueBase64), 40),\n variable.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n wordwrap(variable.description, 40),\n // eslint-disable-next-line no-await-in-loop\n await resolveUserName('teammember', variable.lastChangedBy),\n new Date(variable.lastChangeDate).toLocaleString(),\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n variables.forEach((secret) => {\n printMessage(secret._id, 'data');\n });\n }\n}\n\n/**\n * Create variable\n * @param {string} variableId variable id\n * @param {string} value variable value\n * @param {string} description variable description\n * @param {VariableExpressionType} type variable type\n */\nexport async function createVariable(\n variableId: string,\n value: string,\n description: string,\n type: VariableExpressionType = 'string'\n) {\n showSpinner(`Creating variable ${variableId}...`);\n try {\n await putVariable(variableId, value, description, type);\n succeedSpinner(`Created variable ${variableId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Update variable\n * @param {string} variableId variable id\n * @param {string} value variable value\n * @param {string} description variable description\n */\nexport async function updateVariable(variableId, value, description) {\n showSpinner(`Updating variable ${variableId}...`);\n try {\n await putVariable(variableId, value, description);\n succeedSpinner(`Updated variable ${variableId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Set description of variable\n * @param {string} variableId variable id\n * @param {string} description variable description\n */\nexport async function setVariableDescription(variableId, description) {\n showSpinner(`Setting description of variable ${variableId}...`);\n try {\n await setVariableDescription(variableId, description);\n succeedSpinner(`Set description of variable ${variableId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete a variable\n * @param {string} variableId variable id\n */\nexport async function deleteVariable(variableId) {\n showSpinner(`Deleting variable ${variableId}...`);\n try {\n await deleteVariable(variableId);\n succeedSpinner(`Deleted variable ${variableId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete all variables\n */\nexport async function deleteVariables() {\n try {\n const variables = (await getVariables()).result;\n createProgressBar(variables.length, `Deleting variable...`);\n for (const variable of variables) {\n try {\n // eslint-disable-next-line no-await-in-loop\n await deleteVariable(variable._id);\n updateProgressBar(`Deleted variable ${variable._id}`);\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n }\n stopProgressBar(`Variables deleted.`);\n } catch (error) {\n stopProgressBar(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n}\n\n/**\n * Describe a variable\n * @param {string} variableId variable id\n */\nexport async function describeVariable(variableId) {\n const variable = await getVariable(variableId);\n const table = createKeyValueTable();\n table.push(['Name'['brightCyan'], variable._id]);\n table.push([\n 'Value'['brightCyan'],\n wordwrap(decodeBase64(variable.valueBase64), 40),\n ]);\n table.push([\n 'Status'['brightCyan'],\n variable.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n ]);\n table.push(['Description'['brightCyan'], wordwrap(variable.description, 60)]);\n table.push([\n 'Modified'['brightCyan'],\n new Date(variable.lastChangeDate).toLocaleString(),\n ]);\n table.push([\n 'Modifier'['brightCyan'],\n await resolveUserName('teammember', variable.lastChangedBy),\n ]);\n table.push(['Modifier UUID'['brightCyan'], variable.lastChangedBy]);\n printMessage(table.toString());\n}\n"],"mappings":"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"}
@@ -28,7 +28,7 @@ function data(message, newline = true) {
28
28
  appendTextToFile(message, state.getOutputFile());
29
29
  } else if (typeof message === 'object') {
30
30
  console.dir(message, {
31
- depth: 3
31
+ depth: 10
32
32
  });
33
33
  } else if (newline) {
34
34
  console.log(message);
@@ -1 +1 @@
1
- {"version":3,"file":"Console.js","names":["frodo","state","MultiBar","Presets","createSpinner","Table","Color","enable","appendTextToFile","utils","multiBarContainer","progressBar","spinner","data","message","newline","getOutputFile","JSON","stringify","console","dir","depth","log","process","stdout","write","text","error","stderr","info","warn","debug","curlirize","verboseMessage","getVerbose","debugMessage","getDebug","curlirizeMessage","getCurlirize","printMessage","type","createProgressBar","total","options","format","noTTYOutput","opt","legacy","create","updateProgressBar","increment","stopProgressBar","update","stop","showSpinner","start","stopSpinner","succeedSpinner","success","warnSpinner","failSpinner","spinSpinner","spin","createProgressIndicator","updateProgressIndicator","stopProgressIndicator","status","createTable","head","table","chars","top","bottom","left","mid","right","style","createKeyValueTable","wordWrap","getObjectDepth","object","Object","Math","max","values","map","hasValues","has","keys","key","addRows","level","keyMap","space","push","brightCyan","hAlign","content","gray","indention","Array","fill","join","concat","createObjectTable"],"sources":["../../src/utils/Console.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport { frodo, state } from '@rockcarver/frodo-lib';\nimport { MultiBar, Presets } from 'cli-progress';\nimport { createSpinner } from 'nanospinner';\nimport Table from 'cli-table3';\nimport Color from 'colors';\n\nColor.enable();\n\nconst { appendTextToFile } = frodo.utils;\n\nlet multiBarContainer = null;\nlet progressBar = null;\nlet spinner = null;\n\n/**\n * Output a message in default color to stdout or append to `state.getOutputFile()`\n * @param {string | object} message the message\n */\nfunction data(message: string | object, newline = true) {\n if (!message) return;\n if (state.getOutputFile()) {\n if (typeof message === 'object') {\n message = JSON.stringify(message, null, 2);\n }\n if (newline) {\n message += '\\n';\n }\n appendTextToFile(message, state.getOutputFile());\n } else if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.log(message);\n } else {\n process.stdout.write(message);\n }\n}\n\n/**\n * Output a default color message to stderr\n * @param {Object} message the message\n */\nfunction text(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message);\n } else {\n process.stderr.write(message);\n }\n}\n\n/**\n * Output a message in bright cyan to stderr\n * @param {Object} message the message\n */\nfunction info(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message['brightCyan']);\n } else {\n process.stderr.write(message['brightCyan']);\n }\n}\n\n/**\n * Output a message in yellow to stderr\n * @param {Object} message the message\n */\nfunction warn(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message['yellow']);\n } else {\n process.stderr.write(message['yellow']);\n }\n}\n\n/**\n * Output a message in bright red to stderr\n * @param {Object} message the message\n */\nfunction error(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message['brightRed']);\n } else {\n process.stderr.write(message['brightRed']);\n }\n}\n\n/**\n * Output a debug message\n * @param {string | object} message the message\n */\nfunction debug(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 6 });\n } else if (newline) {\n console.error(message['brightMagenta']);\n } else {\n process.stderr.write(message['brightMagenta']);\n }\n}\n\n/**\n * Output a curlirize message\n * @param {string} message the message\n */\nfunction curlirize(message: string) {\n if (!message) return;\n console.error(message['brightBlue']);\n}\n\n/**\n * Output a message in default color to stderr\n * @param {Object} message the message\n */\nexport function verboseMessage(message) {\n if (!message) return;\n if (state.getVerbose()) {\n text(message);\n }\n}\n\n/**\n * Output a debug message\n * @param {Object} message the message\n */\nexport function debugMessage(message) {\n if (!message) return;\n if (state.getDebug()) {\n debug(message);\n }\n}\n\n/**\n * Output a curlirize message\n * @param {Object} message the message\n */\nexport function curlirizeMessage(message) {\n if (!message) return;\n if (state.getCurlirize()) {\n curlirize(message);\n }\n}\n\n/**\n * Prints a string message to console\n *\n * @param {string} message The string message to print\n * @param {string} [type=text] \"text\", \"info\", \"warn\", \"error\" or \"data\". All but\n * type=\"data\" will be written to stderr.\n * @param {boolean} [newline=true] Whether to add a newline at the end of message\n *\n */\nexport function printMessage(message, type = 'text', newline = true) {\n switch (type) {\n case 'data':\n data(message, newline);\n break;\n case 'text':\n text(message, newline);\n break;\n case 'info':\n info(message, newline);\n break;\n case 'warn':\n warn(message, newline);\n break;\n case 'error':\n error(message, newline);\n break;\n default:\n text(message, newline);\n }\n}\n\n/**\n * Creates a progress bar on stderr\n *\n * Example:\n * [========================================] 100% | 49/49 | Analyzing journey - transactional_auth\n *\n * @param {Number} total The total number of entries to track progress for\n * @param {String} message optional progress bar message\n * @param {Object} options progress bar configuration options\n *\n */\nexport function createProgressBar(\n total,\n message = null,\n options = {\n format: '[{bar}] {percentage}% | {value}/{total} | {data}',\n noTTYOutput: true,\n }\n) {\n let opt = options;\n if (message == null) {\n opt = {\n format: '[{bar}] {percentage}% | {value}/{total}',\n noTTYOutput: true,\n };\n }\n // progressBar = new SingleBar(opt, Presets.legacy); // create only when needed\n // progressBar.start(total, 0, {\n // data: message,\n // });\n multiBarContainer = new MultiBar(opt, Presets.legacy);\n progressBar = multiBarContainer.create(total, 0, {\n data: message,\n });\n}\n\n/**\n * Updates the progress bar by 1\n * @param {string} message optional message to update the progress bar\n *\n */\nexport function updateProgressBar(message = null) {\n if (message)\n progressBar.increment({\n data: message,\n });\n else progressBar.increment();\n}\n\n/**\n * Stop and hide the progress bar\n * @param {*} message optional message to update the progress bar\n */\nexport function stopProgressBar(message = null) {\n if (message)\n progressBar.update({\n data: message,\n });\n // progressBar.stop();\n multiBarContainer.stop();\n multiBarContainer = null;\n}\n\n/**\n * Create the spinner\n * @param {String} message optional spinner message\n */\nexport function showSpinner(message) {\n spinner = createSpinner(message).start();\n}\n\n/**\n * Stop the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function stopSpinner(message = null) {\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.stop(options);\n }\n}\n\n/**\n * Succeed the spinner. Stop and render success checkmark with optional message.\n * @param {String} message optional message to update the spinner\n */\nexport function succeedSpinner(message = null) {\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.success(options);\n }\n}\n\n/**\n * Warn the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function warnSpinner(message = null) {\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.warn(options);\n }\n}\n\n/**\n * Fail the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function failSpinner(message = null) {\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.error(options);\n }\n}\n\n/**\n * Spin the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function spinSpinner(message = null) {\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.update(options);\n spinner.spin();\n }\n}\n\nexport function createProgressIndicator(\n type = 'determinate',\n total = 0,\n message = null\n) {\n if (type === 'determinate') {\n createProgressBar(total, message);\n } else {\n showSpinner(message);\n }\n}\n\nexport function updateProgressIndicator(message) {\n if (!progressBar) {\n spinSpinner(message);\n } else {\n updateProgressBar(message);\n }\n}\n\nexport function stopProgressIndicator(message, status = 'none') {\n if (!progressBar) {\n switch (status) {\n case 'none':\n stopSpinner(message);\n break;\n case 'success':\n succeedSpinner(message);\n break;\n case 'warn':\n warnSpinner(message);\n break;\n case 'fail':\n failSpinner(message);\n break;\n default:\n stopSpinner(message);\n break;\n }\n } else {\n stopProgressBar(message);\n }\n}\n\n/**\n * Create an empty table\n * @param {string[]} head header row as an array of strings\n * @returns {any} an empty table\n */\nexport function createTable(head) {\n const table = new Table({\n head,\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0, head: ['brightCyan'] },\n });\n return table;\n}\n\n/**\n * Create a new key/value table\n * @returns {any} an empty key/value table\n */\nexport function createKeyValueTable() {\n const table = new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0 },\n wordWrap: true,\n });\n return table;\n}\n\n/**\n * Helper function to determine the total depth of an object\n * @param {Object} object input object\n * @returns {Number} total depth of the input object\n */\nfunction getObjectDepth(object) {\n return Object(object) === object\n ? 1 + Math.max(-1, ...Object.values(object).map(getObjectDepth))\n : 0;\n}\n\n/**\n * Helper function to determine if an object has values\n * @param {Object} object input object\n * @returns {boolean} true of the object or any of its sub-objects contain values, false otherwise\n */\nfunction hasValues(object) {\n let has = false;\n const keys = Object.keys(object);\n for (const key of keys) {\n if (Object(object[key]) !== object[key]) {\n return true;\n }\n has = has || hasValues(object[key]);\n }\n return has;\n}\n\n/**\n * Helper function (recursive) to add rows to an object table\n * @param {object} object object to render\n * @param {number} depth total depth of initial object\n * @param {number} level current level\n * @param {any} table the object table to add the rows to\n * @param {Object} keyMap optional JSON map to map raw config names to human readable names {'raw': 'readable'}\n * @returns the updated object table\n */\nfunction addRows(object, depth, level, table, keyMap) {\n const space = ' ';\n const keys = Object.keys(object);\n for (const key of keys) {\n if (Object(object[key]) !== object[key]) {\n if (level === 1) {\n table.push([\n keyMap[key] ? keyMap[key].brightCyan : key['brightCyan'],\n object[key],\n ]);\n } else {\n table.push([\n {\n hAlign: 'right',\n content: keyMap[key] ? keyMap[key].gray : key.gray,\n },\n object[key],\n ]);\n }\n }\n }\n for (const key of keys) {\n if (Object(object[key]) === object[key]) {\n // only print header if there are any values below\n if (hasValues(object[key])) {\n let indention = new Array(level).fill(space).join('');\n if (level < 3) indention = `\\n${indention}`;\n table.push([\n indention.concat(\n keyMap[key] ? keyMap[key].brightCyan : key['brightCyan']\n ),\n '',\n ]);\n }\n // eslint-disable-next-line no-param-reassign\n table = addRows(object[key], depth, level + 1, table, keyMap);\n }\n }\n return table;\n}\n\n/**\n * Create and populate an object table from any JSON object. Use for describe commands.\n * @param {Object} object JSON object to create\n * @param {Object} keyMap optional JSON map to map raw config names to human readable names {'raw': 'readable'}\n * @returns {any} a table that can be printed to the console\n */\nexport function createObjectTable(object, keyMap = {}) {\n // eslint-disable-next-line no-param-reassign\n const depth = getObjectDepth(object);\n // eslint-disable-next-line no-param-reassign\n const level = 0;\n // eslint-disable-next-line no-param-reassign\n const table = new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0, head: ['brightCyan'] },\n });\n addRows(object, depth, level + 1, table, keyMap);\n return table;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Console.js","names":["frodo","state","MultiBar","Presets","createSpinner","Table","Color","enable","appendTextToFile","utils","multiBarContainer","progressBar","spinner","data","message","newline","getOutputFile","JSON","stringify","console","dir","depth","log","process","stdout","write","text","error","stderr","info","warn","debug","curlirize","verboseMessage","getVerbose","debugMessage","getDebug","curlirizeMessage","getCurlirize","printMessage","type","createProgressBar","total","options","format","noTTYOutput","opt","legacy","create","updateProgressBar","increment","stopProgressBar","update","stop","showSpinner","start","stopSpinner","succeedSpinner","success","warnSpinner","failSpinner","spinSpinner","spin","createProgressIndicator","updateProgressIndicator","stopProgressIndicator","status","createTable","head","table","chars","top","bottom","left","mid","right","style","createKeyValueTable","wordWrap","getObjectDepth","object","Object","Math","max","values","map","hasValues","has","keys","key","addRows","level","keyMap","space","push","brightCyan","hAlign","content","gray","indention","Array","fill","join","concat","createObjectTable"],"sources":["../../src/utils/Console.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport { frodo, state } from '@rockcarver/frodo-lib';\nimport { MultiBar, Presets } from 'cli-progress';\nimport { createSpinner } from 'nanospinner';\nimport Table from 'cli-table3';\nimport Color from 'colors';\n\nColor.enable();\n\nconst { appendTextToFile } = frodo.utils;\n\nlet multiBarContainer = null;\nlet progressBar = null;\nlet spinner = null;\n\n/**\n * Output a message in default color to stdout or append to `state.getOutputFile()`\n * @param {string | object} message the message\n */\nfunction data(message: string | object, newline = true) {\n if (!message) return;\n if (state.getOutputFile()) {\n if (typeof message === 'object') {\n message = JSON.stringify(message, null, 2);\n }\n if (newline) {\n message += '\\n';\n }\n appendTextToFile(message, state.getOutputFile());\n } else if (typeof message === 'object') {\n console.dir(message, { depth: 10 });\n } else if (newline) {\n console.log(message);\n } else {\n process.stdout.write(message);\n }\n}\n\n/**\n * Output a default color message to stderr\n * @param {Object} message the message\n */\nfunction text(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message);\n } else {\n process.stderr.write(message);\n }\n}\n\n/**\n * Output a message in bright cyan to stderr\n * @param {Object} message the message\n */\nfunction info(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message['brightCyan']);\n } else {\n process.stderr.write(message['brightCyan']);\n }\n}\n\n/**\n * Output a message in yellow to stderr\n * @param {Object} message the message\n */\nfunction warn(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message['yellow']);\n } else {\n process.stderr.write(message['yellow']);\n }\n}\n\n/**\n * Output a message in bright red to stderr\n * @param {Object} message the message\n */\nfunction error(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message['brightRed']);\n } else {\n process.stderr.write(message['brightRed']);\n }\n}\n\n/**\n * Output a debug message\n * @param {string | object} message the message\n */\nfunction debug(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 6 });\n } else if (newline) {\n console.error(message['brightMagenta']);\n } else {\n process.stderr.write(message['brightMagenta']);\n }\n}\n\n/**\n * Output a curlirize message\n * @param {string} message the message\n */\nfunction curlirize(message: string) {\n if (!message) return;\n console.error(message['brightBlue']);\n}\n\n/**\n * Output a message in default color to stderr\n * @param {Object} message the message\n */\nexport function verboseMessage(message) {\n if (!message) return;\n if (state.getVerbose()) {\n text(message);\n }\n}\n\n/**\n * Output a debug message\n * @param {Object} message the message\n */\nexport function debugMessage(message) {\n if (!message) return;\n if (state.getDebug()) {\n debug(message);\n }\n}\n\n/**\n * Output a curlirize message\n * @param {Object} message the message\n */\nexport function curlirizeMessage(message) {\n if (!message) return;\n if (state.getCurlirize()) {\n curlirize(message);\n }\n}\n\n/**\n * Prints a string message to console\n *\n * @param {string} message The string message to print\n * @param {string} [type=text] \"text\", \"info\", \"warn\", \"error\" or \"data\". All but\n * type=\"data\" will be written to stderr.\n * @param {boolean} [newline=true] Whether to add a newline at the end of message\n *\n */\nexport function printMessage(message, type = 'text', newline = true) {\n switch (type) {\n case 'data':\n data(message, newline);\n break;\n case 'text':\n text(message, newline);\n break;\n case 'info':\n info(message, newline);\n break;\n case 'warn':\n warn(message, newline);\n break;\n case 'error':\n error(message, newline);\n break;\n default:\n text(message, newline);\n }\n}\n\n/**\n * Creates a progress bar on stderr\n *\n * Example:\n * [========================================] 100% | 49/49 | Analyzing journey - transactional_auth\n *\n * @param {Number} total The total number of entries to track progress for\n * @param {String} message optional progress bar message\n * @param {Object} options progress bar configuration options\n *\n */\nexport function createProgressBar(\n total,\n message = null,\n options = {\n format: '[{bar}] {percentage}% | {value}/{total} | {data}',\n noTTYOutput: true,\n }\n) {\n let opt = options;\n if (message == null) {\n opt = {\n format: '[{bar}] {percentage}% | {value}/{total}',\n noTTYOutput: true,\n };\n }\n // progressBar = new SingleBar(opt, Presets.legacy); // create only when needed\n // progressBar.start(total, 0, {\n // data: message,\n // });\n multiBarContainer = new MultiBar(opt, Presets.legacy);\n progressBar = multiBarContainer.create(total, 0, {\n data: message,\n });\n}\n\n/**\n * Updates the progress bar by 1\n * @param {string} message optional message to update the progress bar\n *\n */\nexport function updateProgressBar(message = null) {\n if (message)\n progressBar.increment({\n data: message,\n });\n else progressBar.increment();\n}\n\n/**\n * Stop and hide the progress bar\n * @param {*} message optional message to update the progress bar\n */\nexport function stopProgressBar(message = null) {\n if (message)\n progressBar.update({\n data: message,\n });\n // progressBar.stop();\n multiBarContainer.stop();\n multiBarContainer = null;\n}\n\n/**\n * Create the spinner\n * @param {String} message optional spinner message\n */\nexport function showSpinner(message) {\n spinner = createSpinner(message).start();\n}\n\n/**\n * Stop the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function stopSpinner(message = null) {\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.stop(options);\n }\n}\n\n/**\n * Succeed the spinner. Stop and render success checkmark with optional message.\n * @param {String} message optional message to update the spinner\n */\nexport function succeedSpinner(message = null) {\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.success(options);\n }\n}\n\n/**\n * Warn the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function warnSpinner(message = null) {\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.warn(options);\n }\n}\n\n/**\n * Fail the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function failSpinner(message = null) {\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.error(options);\n }\n}\n\n/**\n * Spin the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function spinSpinner(message = null) {\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.update(options);\n spinner.spin();\n }\n}\n\nexport function createProgressIndicator(\n type = 'determinate',\n total = 0,\n message = null\n) {\n if (type === 'determinate') {\n createProgressBar(total, message);\n } else {\n showSpinner(message);\n }\n}\n\nexport function updateProgressIndicator(message) {\n if (!progressBar) {\n spinSpinner(message);\n } else {\n updateProgressBar(message);\n }\n}\n\nexport function stopProgressIndicator(message, status = 'none') {\n if (!progressBar) {\n switch (status) {\n case 'none':\n stopSpinner(message);\n break;\n case 'success':\n succeedSpinner(message);\n break;\n case 'warn':\n warnSpinner(message);\n break;\n case 'fail':\n failSpinner(message);\n break;\n default:\n stopSpinner(message);\n break;\n }\n } else {\n stopProgressBar(message);\n }\n}\n\n/**\n * Create an empty table\n * @param {string[]} head header row as an array of strings\n * @returns {any} an empty table\n */\nexport function createTable(head) {\n const table = new Table({\n head,\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0, head: ['brightCyan'] },\n });\n return table;\n}\n\n/**\n * Create a new key/value table\n * @returns {any} an empty key/value table\n */\nexport function createKeyValueTable() {\n const table = new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0 },\n wordWrap: true,\n });\n return table;\n}\n\n/**\n * Helper function to determine the total depth of an object\n * @param {Object} object input object\n * @returns {Number} total depth of the input object\n */\nfunction getObjectDepth(object) {\n return Object(object) === object\n ? 1 + Math.max(-1, ...Object.values(object).map(getObjectDepth))\n : 0;\n}\n\n/**\n * Helper function to determine if an object has values\n * @param {Object} object input object\n * @returns {boolean} true of the object or any of its sub-objects contain values, false otherwise\n */\nfunction hasValues(object) {\n let has = false;\n const keys = Object.keys(object);\n for (const key of keys) {\n if (Object(object[key]) !== object[key]) {\n return true;\n }\n has = has || hasValues(object[key]);\n }\n return has;\n}\n\n/**\n * Helper function (recursive) to add rows to an object table\n * @param {object} object object to render\n * @param {number} depth total depth of initial object\n * @param {number} level current level\n * @param {any} table the object table to add the rows to\n * @param {Object} keyMap optional JSON map to map raw config names to human readable names {'raw': 'readable'}\n * @returns the updated object table\n */\nfunction addRows(object, depth, level, table, keyMap) {\n const space = ' ';\n const keys = Object.keys(object);\n for (const key of keys) {\n if (Object(object[key]) !== object[key]) {\n if (level === 1) {\n table.push([\n keyMap[key] ? keyMap[key].brightCyan : key['brightCyan'],\n object[key],\n ]);\n } else {\n table.push([\n {\n hAlign: 'right',\n content: keyMap[key] ? keyMap[key].gray : key.gray,\n },\n object[key],\n ]);\n }\n }\n }\n for (const key of keys) {\n if (Object(object[key]) === object[key]) {\n // only print header if there are any values below\n if (hasValues(object[key])) {\n let indention = new Array(level).fill(space).join('');\n if (level < 3) indention = `\\n${indention}`;\n table.push([\n indention.concat(\n keyMap[key] ? keyMap[key].brightCyan : key['brightCyan']\n ),\n '',\n ]);\n }\n // eslint-disable-next-line no-param-reassign\n table = addRows(object[key], depth, level + 1, table, keyMap);\n }\n }\n return table;\n}\n\n/**\n * Create and populate an object table from any JSON object. Use for describe commands.\n * @param {Object} object JSON object to create\n * @param {Object} keyMap optional JSON map to map raw config names to human readable names {'raw': 'readable'}\n * @returns {any} a table that can be printed to the console\n */\nexport function createObjectTable(object, keyMap = {}) {\n // eslint-disable-next-line no-param-reassign\n const depth = getObjectDepth(object);\n // eslint-disable-next-line no-param-reassign\n const level = 0;\n // eslint-disable-next-line no-param-reassign\n const table = new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0, head: ['brightCyan'] },\n });\n addRows(object, depth, level + 1, table, keyMap);\n return table;\n}\n"],"mappings":"AAAA;AACA,SAASA,KAAK,EAAEC,KAAK,QAAQ,uBAAuB;AACpD,SAASC,QAAQ,EAAEC,OAAO,QAAQ,cAAc;AAChD,SAASC,aAAa,QAAQ,aAAa;AAC3C,OAAOC,KAAK,MAAM,YAAY;AAC9B,OAAOC,KAAK,MAAM,QAAQ;AAE1BA,KAAK,CAACC,MAAM,CAAC,CAAC;AAEd,MAAM;EAAEC;AAAiB,CAAC,GAAGR,KAAK,CAACS,KAAK;AAExC,IAAIC,iBAAiB,GAAG,IAAI;AAC5B,IAAIC,WAAW,GAAG,IAAI;AACtB,IAAIC,OAAO,GAAG,IAAI;;AAElB;AACA;AACA;AACA;AACA,SAASC,IAAIA,CAACC,OAAwB,EAAEC,OAAO,GAAG,IAAI,EAAE;EACtD,IAAI,CAACD,OAAO,EAAE;EACd,IAAIb,KAAK,CAACe,aAAa,CAAC,CAAC,EAAE;IACzB,IAAI,OAAOF,OAAO,KAAK,QAAQ,EAAE;MAC/BA,OAAO,GAAGG,IAAI,CAACC,SAAS,CAACJ,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C;IACA,IAAIC,OAAO,EAAE;MACXD,OAAO,IAAI,IAAI;IACjB;IACAN,gBAAgB,CAACM,OAAO,EAAEb,KAAK,CAACe,aAAa,CAAC,CAAC,CAAC;EAClD,CAAC,MAAM,IAAI,OAAOF,OAAO,KAAK,QAAQ,EAAE;IACtCK,OAAO,CAACC,GAAG,CAACN,OAAO,EAAE;MAAEO,KAAK,EAAE;IAAG,CAAC,CAAC;EACrC,CAAC,MAAM,IAAIN,OAAO,EAAE;IAClBI,OAAO,CAACG,GAAG,CAACR,OAAO,CAAC;EACtB,CAAC,MAAM;IACLS,OAAO,CAACC,MAAM,CAACC,KAAK,CAACX,OAAO,CAAC;EAC/B;AACF;;AAEA;AACA;AACA;AACA;AACA,SAASY,IAAIA,CAACZ,OAAwB,EAAEC,OAAO,GAAG,IAAI,EAAE;EACtD,IAAI,CAACD,OAAO,EAAE;EACd,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;IAC/BK,OAAO,CAACC,GAAG,CAACN,OAAO,EAAE;MAAEO,KAAK,EAAE;IAAE,CAAC,CAAC;EACpC,CAAC,MAAM,IAAIN,OAAO,EAAE;IAClBI,OAAO,CAACQ,KAAK,CAACb,OAAO,CAAC;EACxB,CAAC,MAAM;IACLS,OAAO,CAACK,MAAM,CAACH,KAAK,CAACX,OAAO,CAAC;EAC/B;AACF;;AAEA;AACA;AACA;AACA;AACA,SAASe,IAAIA,CAACf,OAAwB,EAAEC,OAAO,GAAG,IAAI,EAAE;EACtD,IAAI,CAACD,OAAO,EAAE;EACd,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;IAC/BK,OAAO,CAACC,GAAG,CAACN,OAAO,EAAE;MAAEO,KAAK,EAAE;IAAE,CAAC,CAAC;EACpC,CAAC,MAAM,IAAIN,OAAO,EAAE;IAClBI,OAAO,CAACQ,KAAK,CAACb,OAAO,CAAC,YAAY,CAAC,CAAC;EACtC,CAAC,MAAM;IACLS,OAAO,CAACK,MAAM,CAACH,KAAK,CAACX,OAAO,CAAC,YAAY,CAAC,CAAC;EAC7C;AACF;;AAEA;AACA;AACA;AACA;AACA,SAASgB,IAAIA,CAAChB,OAAwB,EAAEC,OAAO,GAAG,IAAI,EAAE;EACtD,IAAI,CAACD,OAAO,EAAE;EACd,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;IAC/BK,OAAO,CAACC,GAAG,CAACN,OAAO,EAAE;MAAEO,KAAK,EAAE;IAAE,CAAC,CAAC;EACpC,CAAC,MAAM,IAAIN,OAAO,EAAE;IAClBI,OAAO,CAACQ,KAAK,CAACb,OAAO,CAAC,QAAQ,CAAC,CAAC;EAClC,CAAC,MAAM;IACLS,OAAO,CAACK,MAAM,CAACH,KAAK,CAACX,OAAO,CAAC,QAAQ,CAAC,CAAC;EACzC;AACF;;AAEA;AACA;AACA;AACA;AACA,SAASa,KAAKA,CAACb,OAAwB,EAAEC,OAAO,GAAG,IAAI,EAAE;EACvD,IAAI,CAACD,OAAO,EAAE;EACd,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;IAC/BK,OAAO,CAACC,GAAG,CAACN,OAAO,EAAE;MAAEO,KAAK,EAAE;IAAE,CAAC,CAAC;EACpC,CAAC,MAAM,IAAIN,OAAO,EAAE;IAClBI,OAAO,CAACQ,KAAK,CAACb,OAAO,CAAC,WAAW,CAAC,CAAC;EACrC,CAAC,MAAM;IACLS,OAAO,CAACK,MAAM,CAACH,KAAK,CAACX,OAAO,CAAC,WAAW,CAAC,CAAC;EAC5C;AACF;;AAEA;AACA;AACA;AACA;AACA,SAASiB,KAAKA,CAACjB,OAAwB,EAAEC,OAAO,GAAG,IAAI,EAAE;EACvD,IAAI,CAACD,OAAO,EAAE;EACd,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;IAC/BK,OAAO,CAACC,GAAG,CAACN,OAAO,EAAE;MAAEO,KAAK,EAAE;IAAE,CAAC,CAAC;EACpC,CAAC,MAAM,IAAIN,OAAO,EAAE;IAClBI,OAAO,CAACQ,KAAK,CAACb,OAAO,CAAC,eAAe,CAAC,CAAC;EACzC,CAAC,MAAM;IACLS,OAAO,CAACK,MAAM,CAACH,KAAK,CAACX,OAAO,CAAC,eAAe,CAAC,CAAC;EAChD;AACF;;AAEA;AACA;AACA;AACA;AACA,SAASkB,SAASA,CAAClB,OAAe,EAAE;EAClC,IAAI,CAACA,OAAO,EAAE;EACdK,OAAO,CAACQ,KAAK,CAACb,OAAO,CAAC,YAAY,CAAC,CAAC;AACtC;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASmB,cAAcA,CAACnB,OAAO,EAAE;EACtC,IAAI,CAACA,OAAO,EAAE;EACd,IAAIb,KAAK,CAACiC,UAAU,CAAC,CAAC,EAAE;IACtBR,IAAI,CAACZ,OAAO,CAAC;EACf;AACF;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASqB,YAAYA,CAACrB,OAAO,EAAE;EACpC,IAAI,CAACA,OAAO,EAAE;EACd,IAAIb,KAAK,CAACmC,QAAQ,CAAC,CAAC,EAAE;IACpBL,KAAK,CAACjB,OAAO,CAAC;EAChB;AACF;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASuB,gBAAgBA,CAACvB,OAAO,EAAE;EACxC,IAAI,CAACA,OAAO,EAAE;EACd,IAAIb,KAAK,CAACqC,YAAY,CAAC,CAAC,EAAE;IACxBN,SAAS,CAAClB,OAAO,CAAC;EACpB;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASyB,YAAYA,CAACzB,OAAO,EAAE0B,IAAI,GAAG,MAAM,EAAEzB,OAAO,GAAG,IAAI,EAAE;EACnE,QAAQyB,IAAI;IACV,KAAK,MAAM;MACT3B,IAAI,CAACC,OAAO,EAAEC,OAAO,CAAC;MACtB;IACF,KAAK,MAAM;MACTW,IAAI,CAACZ,OAAO,EAAEC,OAAO,CAAC;MACtB;IACF,KAAK,MAAM;MACTc,IAAI,CAACf,OAAO,EAAEC,OAAO,CAAC;MACtB;IACF,KAAK,MAAM;MACTe,IAAI,CAAChB,OAAO,EAAEC,OAAO,CAAC;MACtB;IACF,KAAK,OAAO;MACVY,KAAK,CAACb,OAAO,EAAEC,OAAO,CAAC;MACvB;IACF;MACEW,IAAI,CAACZ,OAAO,EAAEC,OAAO,CAAC;EAC1B;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAAS0B,iBAAiBA,CAC/BC,KAAK,EACL5B,OAAO,GAAG,IAAI,EACd6B,OAAO,GAAG;EACRC,MAAM,EAAE,kDAAkD;EAC1DC,WAAW,EAAE;AACf,CAAC,EACD;EACA,IAAIC,GAAG,GAAGH,OAAO;EACjB,IAAI7B,OAAO,IAAI,IAAI,EAAE;IACnBgC,GAAG,GAAG;MACJF,MAAM,EAAE,yCAAyC;MACjDC,WAAW,EAAE;IACf,CAAC;EACH;EACA;EACA;EACA;EACA;EACAnC,iBAAiB,GAAG,IAAIR,QAAQ,CAAC4C,GAAG,EAAE3C,OAAO,CAAC4C,MAAM,CAAC;EACrDpC,WAAW,GAAGD,iBAAiB,CAACsC,MAAM,CAACN,KAAK,EAAE,CAAC,EAAE;IAC/C7B,IAAI,EAAEC;EACR,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASmC,iBAAiBA,CAACnC,OAAO,GAAG,IAAI,EAAE;EAChD,IAAIA,OAAO,EACTH,WAAW,CAACuC,SAAS,CAAC;IACpBrC,IAAI,EAAEC;EACR,CAAC,CAAC,CAAC,KACAH,WAAW,CAACuC,SAAS,CAAC,CAAC;AAC9B;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAACrC,OAAO,GAAG,IAAI,EAAE;EAC9C,IAAIA,OAAO,EACTH,WAAW,CAACyC,MAAM,CAAC;IACjBvC,IAAI,EAAEC;EACR,CAAC,CAAC;EACJ;EACAJ,iBAAiB,CAAC2C,IAAI,CAAC,CAAC;EACxB3C,iBAAiB,GAAG,IAAI;AAC1B;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAAS4C,WAAWA,CAACxC,OAAO,EAAE;EACnCF,OAAO,GAAGR,aAAa,CAACU,OAAO,CAAC,CAACyC,KAAK,CAAC,CAAC;AAC1C;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAAC1C,OAAO,GAAG,IAAI,EAAE;EAC1C,IAAIF,OAAO,EAAE;IACX,IAAI+B,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI7B,OAAO,EAAE6B,OAAO,GAAG;MAAEjB,IAAI,EAAEZ;IAAQ,CAAC;IACxCF,OAAO,CAACyC,IAAI,CAACV,OAAO,CAAC;EACvB;AACF;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASc,cAAcA,CAAC3C,OAAO,GAAG,IAAI,EAAE;EAC7C,IAAIF,OAAO,EAAE;IACX,IAAI+B,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI7B,OAAO,EAAE6B,OAAO,GAAG;MAAEjB,IAAI,EAAEZ;IAAQ,CAAC;IACxCF,OAAO,CAAC8C,OAAO,CAACf,OAAO,CAAC;EAC1B;AACF;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASgB,WAAWA,CAAC7C,OAAO,GAAG,IAAI,EAAE;EAC1C,IAAIF,OAAO,EAAE;IACX,IAAI+B,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI7B,OAAO,EAAE6B,OAAO,GAAG;MAAEjB,IAAI,EAAEZ;IAAQ,CAAC;IACxCF,OAAO,CAACkB,IAAI,CAACa,OAAO,CAAC;EACvB;AACF;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASiB,WAAWA,CAAC9C,OAAO,GAAG,IAAI,EAAE;EAC1C,IAAIF,OAAO,EAAE;IACX,IAAI+B,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI7B,OAAO,EAAE6B,OAAO,GAAG;MAAEjB,IAAI,EAAEZ;IAAQ,CAAC;IACxCF,OAAO,CAACe,KAAK,CAACgB,OAAO,CAAC;EACxB;AACF;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASkB,WAAWA,CAAC/C,OAAO,GAAG,IAAI,EAAE;EAC1C,IAAIF,OAAO,EAAE;IACX,IAAI+B,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI7B,OAAO,EAAE6B,OAAO,GAAG;MAAEjB,IAAI,EAAEZ;IAAQ,CAAC;IACxCF,OAAO,CAACwC,MAAM,CAACT,OAAO,CAAC;IACvB/B,OAAO,CAACkD,IAAI,CAAC,CAAC;EAChB;AACF;AAEA,OAAO,SAASC,uBAAuBA,CACrCvB,IAAI,GAAG,aAAa,EACpBE,KAAK,GAAG,CAAC,EACT5B,OAAO,GAAG,IAAI,EACd;EACA,IAAI0B,IAAI,KAAK,aAAa,EAAE;IAC1BC,iBAAiB,CAACC,KAAK,EAAE5B,OAAO,CAAC;EACnC,CAAC,MAAM;IACLwC,WAAW,CAACxC,OAAO,CAAC;EACtB;AACF;AAEA,OAAO,SAASkD,uBAAuBA,CAAClD,OAAO,EAAE;EAC/C,IAAI,CAACH,WAAW,EAAE;IAChBkD,WAAW,CAAC/C,OAAO,CAAC;EACtB,CAAC,MAAM;IACLmC,iBAAiB,CAACnC,OAAO,CAAC;EAC5B;AACF;AAEA,OAAO,SAASmD,qBAAqBA,CAACnD,OAAO,EAAEoD,MAAM,GAAG,MAAM,EAAE;EAC9D,IAAI,CAACvD,WAAW,EAAE;IAChB,QAAQuD,MAAM;MACZ,KAAK,MAAM;QACTV,WAAW,CAAC1C,OAAO,CAAC;QACpB;MACF,KAAK,SAAS;QACZ2C,cAAc,CAAC3C,OAAO,CAAC;QACvB;MACF,KAAK,MAAM;QACT6C,WAAW,CAAC7C,OAAO,CAAC;QACpB;MACF,KAAK,MAAM;QACT8C,WAAW,CAAC9C,OAAO,CAAC;QACpB;MACF;QACE0C,WAAW,CAAC1C,OAAO,CAAC;QACpB;IACJ;EACF,CAAC,MAAM;IACLqC,eAAe,CAACrC,OAAO,CAAC;EAC1B;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASqD,WAAWA,CAACC,IAAI,EAAE;EAChC,MAAMC,KAAK,GAAG,IAAIhE,KAAK,CAAC;IACtB+D,IAAI;IACJE,KAAK,EAAE;MACLC,GAAG,EAAE,EAAE;MACP,SAAS,EAAE,EAAE;MACb,UAAU,EAAE,EAAE;MACd,WAAW,EAAE,EAAE;MACfC,MAAM,EAAE,EAAE;MACV,YAAY,EAAE,EAAE;MAChB,aAAa,EAAE,EAAE;MACjB,cAAc,EAAE,EAAE;MAClBC,IAAI,EAAE,EAAE;MACR,UAAU,EAAE,EAAE;MACdC,GAAG,EAAE,EAAE;MACP,SAAS,EAAE,EAAE;MACbC,KAAK,EAAE,EAAE;MACT,WAAW,EAAE;IACf,CAAC;IACDC,KAAK,EAAE;MAAE,cAAc,EAAE,CAAC;MAAE,eAAe,EAAE,CAAC;MAAER,IAAI,EAAE,CAAC,YAAY;IAAE;EACvE,CAAC,CAAC;EACF,OAAOC,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASQ,mBAAmBA,CAAA,EAAG;EACpC,MAAMR,KAAK,GAAG,IAAIhE,KAAK,CAAC;IACtBiE,KAAK,EAAE;MACLC,GAAG,EAAE,EAAE;MACP,SAAS,EAAE,EAAE;MACb,UAAU,EAAE,EAAE;MACd,WAAW,EAAE,EAAE;MACfC,MAAM,EAAE,EAAE;MACV,YAAY,EAAE,EAAE;MAChB,aAAa,EAAE,EAAE;MACjB,cAAc,EAAE,EAAE;MAClBC,IAAI,EAAE,EAAE;MACR,UAAU,EAAE,EAAE;MACdC,GAAG,EAAE,EAAE;MACP,SAAS,EAAE,EAAE;MACbC,KAAK,EAAE,EAAE;MACT,WAAW,EAAE;IACf,CAAC;IACDC,KAAK,EAAE;MAAE,cAAc,EAAE,CAAC;MAAE,eAAe,EAAE;IAAE,CAAC;IAChDE,QAAQ,EAAE;EACZ,CAAC,CAAC;EACF,OAAOT,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASU,cAAcA,CAACC,MAAM,EAAE;EAC9B,OAAOC,MAAM,CAACD,MAAM,CAAC,KAAKA,MAAM,GAC5B,CAAC,GAAGE,IAAI,CAACC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAGF,MAAM,CAACG,MAAM,CAACJ,MAAM,CAAC,CAACK,GAAG,CAACN,cAAc,CAAC,CAAC,GAC9D,CAAC;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASO,SAASA,CAACN,MAAM,EAAE;EACzB,IAAIO,GAAG,GAAG,KAAK;EACf,MAAMC,IAAI,GAAGP,MAAM,CAACO,IAAI,CAACR,MAAM,CAAC;EAChC,KAAK,MAAMS,GAAG,IAAID,IAAI,EAAE;IACtB,IAAIP,MAAM,CAACD,MAAM,CAACS,GAAG,CAAC,CAAC,KAAKT,MAAM,CAACS,GAAG,CAAC,EAAE;MACvC,OAAO,IAAI;IACb;IACAF,GAAG,GAAGA,GAAG,IAAID,SAAS,CAACN,MAAM,CAACS,GAAG,CAAC,CAAC;EACrC;EACA,OAAOF,GAAG;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,OAAOA,CAACV,MAAM,EAAE3D,KAAK,EAAEsE,KAAK,EAAEtB,KAAK,EAAEuB,MAAM,EAAE;EACpD,MAAMC,KAAK,GAAG,IAAI;EAClB,MAAML,IAAI,GAAGP,MAAM,CAACO,IAAI,CAACR,MAAM,CAAC;EAChC,KAAK,MAAMS,GAAG,IAAID,IAAI,EAAE;IACtB,IAAIP,MAAM,CAACD,MAAM,CAACS,GAAG,CAAC,CAAC,KAAKT,MAAM,CAACS,GAAG,CAAC,EAAE;MACvC,IAAIE,KAAK,KAAK,CAAC,EAAE;QACftB,KAAK,CAACyB,IAAI,CAAC,CACTF,MAAM,CAACH,GAAG,CAAC,GAAGG,MAAM,CAACH,GAAG,CAAC,CAACM,UAAU,GAAGN,GAAG,CAAC,YAAY,CAAC,EACxDT,MAAM,CAACS,GAAG,CAAC,CACZ,CAAC;MACJ,CAAC,MAAM;QACLpB,KAAK,CAACyB,IAAI,CAAC,CACT;UACEE,MAAM,EAAE,OAAO;UACfC,OAAO,EAAEL,MAAM,CAACH,GAAG,CAAC,GAAGG,MAAM,CAACH,GAAG,CAAC,CAACS,IAAI,GAAGT,GAAG,CAACS;QAChD,CAAC,EACDlB,MAAM,CAACS,GAAG,CAAC,CACZ,CAAC;MACJ;IACF;EACF;EACA,KAAK,MAAMA,GAAG,IAAID,IAAI,EAAE;IACtB,IAAIP,MAAM,CAACD,MAAM,CAACS,GAAG,CAAC,CAAC,KAAKT,MAAM,CAACS,GAAG,CAAC,EAAE;MACvC;MACA,IAAIH,SAAS,CAACN,MAAM,CAACS,GAAG,CAAC,CAAC,EAAE;QAC1B,IAAIU,SAAS,GAAG,IAAIC,KAAK,CAACT,KAAK,CAAC,CAACU,IAAI,CAACR,KAAK,CAAC,CAACS,IAAI,CAAC,EAAE,CAAC;QACrD,IAAIX,KAAK,GAAG,CAAC,EAAEQ,SAAS,GAAI,KAAIA,SAAU,EAAC;QAC3C9B,KAAK,CAACyB,IAAI,CAAC,CACTK,SAAS,CAACI,MAAM,CACdX,MAAM,CAACH,GAAG,CAAC,GAAGG,MAAM,CAACH,GAAG,CAAC,CAACM,UAAU,GAAGN,GAAG,CAAC,YAAY,CACzD,CAAC,EACD,EAAE,CACH,CAAC;MACJ;MACA;MACApB,KAAK,GAAGqB,OAAO,CAACV,MAAM,CAACS,GAAG,CAAC,EAAEpE,KAAK,EAAEsE,KAAK,GAAG,CAAC,EAAEtB,KAAK,EAAEuB,MAAM,CAAC;IAC/D;EACF;EACA,OAAOvB,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASmC,iBAAiBA,CAACxB,MAAM,EAAEY,MAAM,GAAG,CAAC,CAAC,EAAE;EACrD;EACA,MAAMvE,KAAK,GAAG0D,cAAc,CAACC,MAAM,CAAC;EACpC;EACA,MAAMW,KAAK,GAAG,CAAC;EACf;EACA,MAAMtB,KAAK,GAAG,IAAIhE,KAAK,CAAC;IACtBiE,KAAK,EAAE;MACLC,GAAG,EAAE,EAAE;MACP,SAAS,EAAE,EAAE;MACb,UAAU,EAAE,EAAE;MACd,WAAW,EAAE,EAAE;MACfC,MAAM,EAAE,EAAE;MACV,YAAY,EAAE,EAAE;MAChB,aAAa,EAAE,EAAE;MACjB,cAAc,EAAE,EAAE;MAClBC,IAAI,EAAE,EAAE;MACR,UAAU,EAAE,EAAE;MACdC,GAAG,EAAE,EAAE;MACP,SAAS,EAAE,EAAE;MACbC,KAAK,EAAE,EAAE;MACT,WAAW,EAAE;IACf,CAAC;IACDC,KAAK,EAAE;MAAE,cAAc,EAAE,CAAC;MAAE,eAAe,EAAE,CAAC;MAAER,IAAI,EAAE,CAAC,YAAY;IAAE;EACvE,CAAC,CAAC;EACFsB,OAAO,CAACV,MAAM,EAAE3D,KAAK,EAAEsE,KAAK,GAAG,CAAC,EAAEtB,KAAK,EAAEuB,MAAM,CAAC;EAChD,OAAOvB,KAAK;AACd"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rockcarver/frodo-cli",
3
- "version": "2.0.0-11",
3
+ "version": "2.0.0-13",
4
4
  "type": "module",
5
5
  "description": "A command line interface to manage ForgeRock Identity Cloud tenants, ForgeOps deployments, and classic deployments.",
6
6
  "keywords": [
@@ -104,7 +104,7 @@
104
104
  ]
105
105
  },
106
106
  "dependencies": {
107
- "@rockcarver/frodo-lib": "2.0.0-16",
107
+ "@rockcarver/frodo-lib": "2.0.0-19",
108
108
  "chokidar": "^3.5.3",
109
109
  "cli-progress": "^3.11.2",
110
110
  "cli-table3": "^0.6.3",
@@ -112,6 +112,9 @@
112
112
  "commander": "^9.4.1",
113
113
  "compare-versions": "^5.0.1",
114
114
  "fs-extra": "^11.1.1",
115
+ "fuzzy": "^0.1.3",
116
+ "inquirer": "^8.2.5",
117
+ "inquirer-autocomplete-prompt": "^2.0.0",
115
118
  "nanospinner": "^1.1.0",
116
119
  "properties-reader": "^2.2.0",
117
120
  "replaceall": "^0.1.6",