@rockcarver/frodo-cli 2.0.0-15 → 2.0.0-16

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.
Files changed (63) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/esm/app.js +2 -0
  3. package/esm/app.js.map +1 -1
  4. package/esm/cli/FrodoCommand.js +11 -1
  5. package/esm/cli/FrodoCommand.js.map +1 -1
  6. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +1 -1
  7. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
  8. package/esm/cli/admin/admin-get-access-token.js +1 -1
  9. package/esm/cli/admin/admin-get-access-token.js.map +1 -1
  10. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +2 -2
  11. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
  12. package/esm/cli/admin/admin-remove-static-user-mapping.js +3 -2
  13. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
  14. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +2 -2
  15. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
  16. package/esm/cli/app/app-delete.js +21 -5
  17. package/esm/cli/app/app-delete.js.map +1 -1
  18. package/esm/cli/app/app-describe.js +2 -1
  19. package/esm/cli/app/app-describe.js.map +1 -1
  20. package/esm/cli/app/app-export.js +8 -7
  21. package/esm/cli/app/app-export.js.map +1 -1
  22. package/esm/cli/app/app-import.js +11 -10
  23. package/esm/cli/app/app-import.js.map +1 -1
  24. package/esm/cli/app/app-list.js +5 -4
  25. package/esm/cli/app/app-list.js.map +1 -1
  26. package/esm/cli/app/app.js +6 -10
  27. package/esm/cli/app/app.js.map +1 -1
  28. package/esm/cli/conn/conn-save.js +4 -4
  29. package/esm/cli/conn/conn-save.js.map +1 -1
  30. package/esm/cli/info/info.js +1 -1
  31. package/esm/cli/info/info.js.map +1 -1
  32. package/esm/cli/oauth/oauth-client-delete.js +22 -0
  33. package/esm/cli/oauth/oauth-client-delete.js.map +1 -0
  34. package/esm/cli/oauth/oauth-client-describe.js +22 -0
  35. package/esm/cli/oauth/oauth-client-describe.js.map +1 -0
  36. package/esm/cli/oauth/oauth-client-export.js +52 -0
  37. package/esm/cli/oauth/oauth-client-export.js.map +1 -0
  38. package/esm/cli/oauth/oauth-client-import.js +57 -0
  39. package/esm/cli/oauth/oauth-client-import.js.map +1 -0
  40. package/esm/cli/oauth/oauth-client-list.js +25 -0
  41. package/esm/cli/oauth/oauth-client-list.js.map +1 -0
  42. package/esm/cli/oauth/oauth-client.js +14 -0
  43. package/esm/cli/oauth/oauth-client.js.map +1 -0
  44. package/esm/cli/oauth/oauth.js +13 -0
  45. package/esm/cli/oauth/oauth.js.map +1 -0
  46. package/esm/cli/shell/shell.js.map +1 -1
  47. package/esm/ops/ApplicationOps.js +309 -0
  48. package/esm/ops/ApplicationOps.js.map +1 -0
  49. package/esm/ops/IdmOps.js +6 -6
  50. package/esm/ops/IdmOps.js.map +1 -1
  51. package/esm/ops/JourneyOps.js +2 -2
  52. package/esm/ops/JourneyOps.js.map +1 -1
  53. package/esm/ops/OAuth2ClientOps.js +3 -3
  54. package/esm/ops/OAuth2ClientOps.js.map +1 -1
  55. package/esm/ops/PolicyOps.js.map +1 -1
  56. package/esm/ops/PolicySetOps.js.map +1 -1
  57. package/esm/ops/ResourceTypeOps.js +8 -8
  58. package/esm/ops/ResourceTypeOps.js.map +1 -1
  59. package/esm/ops/ServiceOps.js +8 -8
  60. package/esm/ops/ServiceOps.js.map +1 -1
  61. package/esm/utils/ExportImportUtils.js +8 -2
  62. package/esm/utils/ExportImportUtils.js.map +1 -1
  63. package/package.json +11 -11
@@ -1,44 +1,45 @@
1
1
  import { frodo } from '@rockcarver/frodo-lib';
2
2
  import { Option } from 'commander';
3
- import { importFirstOAuth2ClientFromFile, importOAuth2ClientFromFile, importOAuth2ClientsFromFile, importOAuth2ClientsFromFiles } from '../../ops/OAuth2ClientOps';
3
+ import * as s from '../../help/SampleData';
4
+ import { importApplicationFromFile, importApplicationsFromFile, importApplicationsFromFiles, importFirstApplicationFromFile } from '../../ops/ApplicationOps';
4
5
  import { printMessage, verboseMessage } from '../../utils/Console.js';
5
6
  import { FrodoCommand } from '../FrodoCommand';
6
7
  const {
7
8
  getTokens
8
9
  } = frodo.login;
9
10
  const program = new FrodoCommand('frodo app import');
10
- program.description('Import OAuth2 applications.').addOption(new Option('-i, --app-id <id>', 'Application id. If specified, only one application is imported and the options -a and -A are ignored.')).addOption(new Option('-f, --file <file>', 'Name of the file to import.')).addOption(new Option('-a, --all', 'Import all applications from single file. Ignored with -i.')).addOption(new Option('-A, --all-separate', 'Import all applications from separate files (*.app.json) in the current directory. Ignored with -i or -a.')).addOption(new Option('--no-deps', 'Do not include any dependencies (scripts).')).action(
11
+ program.description('Import applications.').addOption(new Option('-i, --app-id <id>', 'Application name. If specified, only one application is imported and the options -a and -A are ignored.')).addOption(new Option('-f, --file <file>', 'Name of the file to import.')).addOption(new Option('-a, --all', 'Import all applications from single file. Ignored with -i.')).addOption(new Option('-A, --all-separate', 'Import all applications from separate files (*.app.json) in the current directory. Ignored with -i or -a.')).addOption(new Option('--no-deps', 'Do not include any dependencies (scripts).')).addHelpText('after', `Important Note:\n`['brightYellow'] + ` The ${'frodo app'['brightCyan']} command to manage OAuth2 clients in v1.x has been renamed to ${'frodo oauth client'['brightCyan']} in v2.x\n` + ` The ${'frodo app'['brightCyan']} command in v2.x manages the new applications created using the new application templates in ForgeRock Identity Cloud. To manage oauth clients, use the ${'frodo oauth client'['brightCyan']} command.\n\n` + `Usage Examples:\n` + ` Import all applications from a single export file using a connection profile:\n` + ` $ frodo app import -a -f ./allAlphaApplications.application.json ${s.connId}\n`['brightCyan'] + ` Import the first application from a single export file:\n` + ` $ frodo app import -f ./allAlphaApplications.application.json ${s.connId}\n`['brightCyan'] + ` Import all applications from separate export files:\n` + ` $ frodo app import -A ${s.connId}\n`['brightCyan'] + ` Import all applications without dependencies from a single export file:\n` + ` $ frodo app import --no-deps -a -f ./allAlphaApplications.application.json ${s.connId}\n`['brightCyan'] + ` Import only the application 'myApp' from a file with an export file containing multiple applications:\n` + ` $ frodo app import -i myApp -f ./allAlphaApplications.application.json ${s.connId}\n`['brightCyan']).action(
11
12
  // implement command logic inside action handler
12
13
  async (host, realm, user, password, options, command) => {
13
14
  command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
14
15
  // import by id
15
16
  if (options.file && options.idpId && (await getTokens())) {
16
- verboseMessage(`Importing OAuth2 application "${options.appId}"...`);
17
- const status = await importOAuth2ClientFromFile(options.appId, options.file, {
17
+ verboseMessage(`Importing application "${options.appId}"...`);
18
+ const status = await importApplicationFromFile(options.appId, options.file, {
18
19
  deps: options.deps
19
20
  });
20
21
  if (!status) process.exitCode = 1;
21
22
  }
22
23
  // --all -a
23
24
  else if (options.all && options.file && (await getTokens())) {
24
- verboseMessage(`Importing all OAuth2 applications from a single file (${options.file})...`);
25
- const status = await importOAuth2ClientsFromFile(options.file, {
25
+ verboseMessage(`Importing all applications from a single file (${options.file})...`);
26
+ const status = await importApplicationsFromFile(options.file, {
26
27
  deps: options.deps
27
28
  });
28
29
  if (!status) process.exitCode = 1;
29
30
  }
30
31
  // --all-separate -A
31
32
  else if (options.allSeparate && !options.file && (await getTokens())) {
32
- verboseMessage('Importing all OAuth2 applications from separate files in current directory...');
33
- const status = await importOAuth2ClientsFromFiles({
33
+ verboseMessage('Importing all applications from separate files in current directory...');
34
+ const status = await importApplicationsFromFiles({
34
35
  deps: options.deps
35
36
  });
36
37
  if (!status) process.exitCode = 1;
37
38
  }
38
39
  // import first provider from file
39
40
  else if (options.file && (await getTokens())) {
40
- verboseMessage(`Importing first OAuth2 application from file "${options.file}"...`);
41
- const status = await importFirstOAuth2ClientFromFile(options.file, {
41
+ verboseMessage(`Importing first application from file "${options.file}"...`);
42
+ const status = await importFirstApplicationFromFile(options.file, {
42
43
  deps: options.deps
43
44
  });
44
45
  if (!status) process.exitCode = 1;
@@ -1 +1 @@
1
- {"version":3,"file":"app-import.js","names":["frodo","Option","importFirstOAuth2ClientFromFile","importOAuth2ClientFromFile","importOAuth2ClientsFromFile","importOAuth2ClientsFromFiles","printMessage","verboseMessage","FrodoCommand","getTokens","login","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","file","idpId","appId","status","deps","process","exitCode","all","allSeparate","help","parse"],"sources":["../../../src/cli/app/app-import.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport {\n importFirstOAuth2ClientFromFile,\n importOAuth2ClientFromFile,\n importOAuth2ClientsFromFile,\n importOAuth2ClientsFromFiles,\n} from '../../ops/OAuth2ClientOps';\nimport { printMessage, verboseMessage } from '../../utils/Console.js';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { getTokens } = frodo.login;\n\nconst program = new FrodoCommand('frodo app import');\n\nprogram\n .description('Import OAuth2 applications.')\n .addOption(\n new Option(\n '-i, --app-id <id>',\n 'Application id. If specified, only one application is imported and the options -a and -A are ignored.'\n )\n )\n .addOption(new Option('-f, --file <file>', 'Name of the file to import.'))\n .addOption(\n new Option(\n '-a, --all',\n 'Import all applications from single file. Ignored with -i.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Import all applications from separate files (*.app.json) in the current directory. Ignored with -i or -a.'\n )\n )\n .addOption(\n new Option('--no-deps', 'Do not include any dependencies (scripts).')\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 // import by id\n if (options.file && options.idpId && (await getTokens())) {\n verboseMessage(`Importing OAuth2 application \"${options.appId}\"...`);\n const status = await importOAuth2ClientFromFile(\n options.appId,\n options.file,\n {\n deps: options.deps,\n }\n );\n if (!status) process.exitCode = 1;\n }\n // --all -a\n else if (options.all && options.file && (await getTokens())) {\n verboseMessage(\n `Importing all OAuth2 applications from a single file (${options.file})...`\n );\n const status = await importOAuth2ClientsFromFile(options.file, {\n deps: options.deps,\n });\n if (!status) process.exitCode = 1;\n }\n // --all-separate -A\n else if (options.allSeparate && !options.file && (await getTokens())) {\n verboseMessage(\n 'Importing all OAuth2 applications from separate files in current directory...'\n );\n const status = await importOAuth2ClientsFromFiles({\n deps: options.deps,\n });\n if (!status) process.exitCode = 1;\n }\n // import first provider from file\n else if (options.file && (await getTokens())) {\n verboseMessage(\n `Importing first OAuth2 application from file \"${options.file}\"...`\n );\n const status = await importFirstOAuth2ClientFromFile(options.file, {\n deps: options.deps,\n });\n if (!status) process.exitCode = 1;\n }\n // unrecognized combination of options or no options\n else {\n printMessage('Unrecognized combination of options or no options...');\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
1
+ {"version":3,"file":"app-import.js","names":["frodo","Option","s","importApplicationFromFile","importApplicationsFromFile","importApplicationsFromFiles","importFirstApplicationFromFile","printMessage","verboseMessage","FrodoCommand","getTokens","login","program","description","addOption","addHelpText","connId","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","file","idpId","appId","status","deps","process","exitCode","all","allSeparate","help","parse"],"sources":["../../../src/cli/app/app-import.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport * as s from '../../help/SampleData';\nimport {\n importApplicationFromFile,\n importApplicationsFromFile,\n importApplicationsFromFiles,\n importFirstApplicationFromFile,\n} from '../../ops/ApplicationOps';\nimport { printMessage, verboseMessage } from '../../utils/Console.js';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { getTokens } = frodo.login;\n\nconst program = new FrodoCommand('frodo app import');\n\nprogram\n .description('Import applications.')\n .addOption(\n new Option(\n '-i, --app-id <id>',\n 'Application name. If specified, only one application is imported and the options -a and -A are ignored.'\n )\n )\n .addOption(new Option('-f, --file <file>', 'Name of the file to import.'))\n .addOption(\n new Option(\n '-a, --all',\n 'Import all applications from single file. Ignored with -i.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Import all applications from separate files (*.app.json) in the current directory. Ignored with -i or -a.'\n )\n )\n .addOption(\n new Option('--no-deps', 'Do not include any dependencies (scripts).')\n )\n .addHelpText(\n 'after',\n `Important Note:\\n`['brightYellow'] +\n ` The ${\n 'frodo app'['brightCyan']\n } command to manage OAuth2 clients in v1.x has been renamed to ${\n 'frodo oauth client'['brightCyan']\n } in v2.x\\n` +\n ` The ${\n 'frodo app'['brightCyan']\n } command in v2.x manages the new applications created using the new application templates in ForgeRock Identity Cloud. To manage oauth clients, use the ${\n 'frodo oauth client'['brightCyan']\n } command.\\n\\n` +\n `Usage Examples:\\n` +\n ` Import all applications from a single export file using a connection profile:\\n` +\n ` $ frodo app import -a -f ./allAlphaApplications.application.json ${s.connId}\\n`[\n 'brightCyan'\n ] +\n ` Import the first application from a single export file:\\n` +\n ` $ frodo app import -f ./allAlphaApplications.application.json ${s.connId}\\n`[\n 'brightCyan'\n ] +\n ` Import all applications from separate export files:\\n` +\n ` $ frodo app import -A ${s.connId}\\n`['brightCyan'] +\n ` Import all applications without dependencies from a single export file:\\n` +\n ` $ frodo app import --no-deps -a -f ./allAlphaApplications.application.json ${s.connId}\\n`[\n 'brightCyan'\n ] +\n ` Import only the application 'myApp' from a file with an export file containing multiple applications:\\n` +\n ` $ frodo app import -i myApp -f ./allAlphaApplications.application.json ${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 // import by id\n if (options.file && options.idpId && (await getTokens())) {\n verboseMessage(`Importing application \"${options.appId}\"...`);\n const status = await importApplicationFromFile(\n options.appId,\n options.file,\n {\n deps: options.deps,\n }\n );\n if (!status) process.exitCode = 1;\n }\n // --all -a\n else if (options.all && options.file && (await getTokens())) {\n verboseMessage(\n `Importing all applications from a single file (${options.file})...`\n );\n const status = await importApplicationsFromFile(options.file, {\n deps: options.deps,\n });\n if (!status) process.exitCode = 1;\n }\n // --all-separate -A\n else if (options.allSeparate && !options.file && (await getTokens())) {\n verboseMessage(\n 'Importing all applications from separate files in current directory...'\n );\n const status = await importApplicationsFromFiles({\n deps: options.deps,\n });\n if (!status) process.exitCode = 1;\n }\n // import first provider from file\n else if (options.file && (await getTokens())) {\n verboseMessage(\n `Importing first application from file \"${options.file}\"...`\n );\n const status = await importFirstApplicationFromFile(options.file, {\n deps: options.deps,\n });\n if (!status) process.exitCode = 1;\n }\n // unrecognized combination of options or no options\n else {\n printMessage('Unrecognized combination of options or no options...');\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
@@ -1,19 +1,20 @@
1
1
  import { frodo } from '@rockcarver/frodo-lib';
2
2
  import { Option } from 'commander';
3
- import { listOAuth2Clients } from '../../ops/OAuth2ClientOps';
3
+ import * as s from '../../help/SampleData';
4
+ import { listApplications } from '../../ops/ApplicationOps';
4
5
  import { verboseMessage } from '../../utils/Console.js';
5
6
  import { FrodoCommand } from '../FrodoCommand';
6
7
  const {
7
8
  getTokens
8
9
  } = frodo.login;
9
10
  const program = new FrodoCommand('frodo app list');
10
- program.description('List OAuth2 applications.').addOption(new Option('-l, --long', 'Long with all fields.').default(false, 'false')).action(
11
+ program.description('List applications.').addOption(new Option('-l, --long', 'Long with all fields.').default(false, 'false')).addHelpText('after', `Important Note:\n`['brightYellow'] + ` The ${'frodo app'['brightCyan']} command to manage OAuth2 clients in v1.x has been renamed to ${'frodo oauth client'['brightCyan']} in v2.x\n` + ` The ${'frodo app'['brightCyan']} command in v2.x manages the new applications created using the new application templates in ForgeRock Identity Cloud. To manage oauth clients, use the ${'frodo oauth client'['brightCyan']} command.\n\n` + `Usage Examples:\n` + ` List applications using AM base URL, username, and password (note the quotes around password to allow special characters):\n` + ` $ frodo app list ${s.amBaseUrl} ${s.username} '${s.password}'\n`['brightCyan'] + ` List applications using a connection profile (identified by the full AM base URL):\n` + ` $ frodo app list ${s.amBaseUrl}\n`['brightCyan'] + ` List applications using a connection profile (identified by a unique substring of the AM base URL):\n` + ` $ frodo app list ${s.connId}\n`['brightCyan']).action(
11
12
  // implement command logic inside action handler
12
13
  async (host, realm, user, password, options, command) => {
13
14
  command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
14
15
  if (await getTokens()) {
15
- verboseMessage(`Listing OAuth2 applications...`);
16
- await listOAuth2Clients(options.long);
16
+ verboseMessage(`Listing applications...`);
17
+ await listApplications(options.long);
17
18
  } else {
18
19
  process.exitCode = 1;
19
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"app-list.js","names":["frodo","Option","listOAuth2Clients","verboseMessage","FrodoCommand","getTokens","login","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","long","process","exitCode","parse"],"sources":["../../../src/cli/app/app-list.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport { listOAuth2Clients } from '../../ops/OAuth2ClientOps';\nimport { verboseMessage } from '../../utils/Console.js';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { getTokens } = frodo.login;\n\nconst program = new FrodoCommand('frodo app list');\n\nprogram\n .description('List OAuth2 applications.')\n .addOption(\n new Option('-l, --long', 'Long with all fields.').default(false, 'false')\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(`Listing OAuth2 applications...`);\n await listOAuth2Clients(options.long);\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,MAAM,QAAQ,WAAW;AAElC,SAASC,iBAAiB,QAAQ,2BAA2B;AAC7D,SAASC,cAAc,QAAQ,wBAAwB;AACvD,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAM;EAAEC;AAAU,CAAC,GAAGL,KAAK,CAACM,KAAK;AAEjC,MAAMC,OAAO,GAAG,IAAIH,YAAY,CAAC,gBAAgB,CAAC;AAElDG,OAAO,CACJC,WAAW,CAAC,2BAA2B,CAAC,CACxCC,SAAS,CACR,IAAIR,MAAM,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAACS,OAAO,CAAC,KAAK,EAAE,OAAO,CAC1E,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,MAAMZ,SAAS,CAAC,CAAC,EAAE;IACrBF,cAAc,CAAE,gCAA+B,CAAC;IAChD,MAAMD,iBAAiB,CAACc,OAAO,CAACG,IAAI,CAAC;EACvC,CAAC,MAAM;IACLC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;;AAEHd,OAAO,CAACe,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"app-list.js","names":["frodo","Option","s","listApplications","verboseMessage","FrodoCommand","getTokens","login","program","description","addOption","default","addHelpText","amBaseUrl","username","password","connId","action","host","realm","user","options","command","handleDefaultArgsAndOpts","long","process","exitCode","parse"],"sources":["../../../src/cli/app/app-list.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport * as s from '../../help/SampleData';\nimport { listApplications } from '../../ops/ApplicationOps';\nimport { verboseMessage } from '../../utils/Console.js';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { getTokens } = frodo.login;\n\nconst program = new FrodoCommand('frodo app list');\n\nprogram\n .description('List applications.')\n .addOption(\n new Option('-l, --long', 'Long with all fields.').default(false, 'false')\n )\n .addHelpText(\n 'after',\n `Important Note:\\n`['brightYellow'] +\n ` The ${\n 'frodo app'['brightCyan']\n } command to manage OAuth2 clients in v1.x has been renamed to ${\n 'frodo oauth client'['brightCyan']\n } in v2.x\\n` +\n ` The ${\n 'frodo app'['brightCyan']\n } command in v2.x manages the new applications created using the new application templates in ForgeRock Identity Cloud. To manage oauth clients, use the ${\n 'frodo oauth client'['brightCyan']\n } command.\\n\\n` +\n `Usage Examples:\\n` +\n ` List applications using AM base URL, username, and password (note the quotes around password to allow special characters):\\n` +\n ` $ frodo app list ${s.amBaseUrl} ${s.username} '${s.password}'\\n`[\n 'brightCyan'\n ] +\n ` List applications using a connection profile (identified by the full AM base URL):\\n` +\n ` $ frodo app list ${s.amBaseUrl}\\n`['brightCyan'] +\n ` List applications using a connection profile (identified by a unique substring of the AM base URL):\\n` +\n ` $ frodo app list ${s.connId}\\n`['brightCyan']\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(`Listing applications...`);\n await listApplications(options.long);\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,MAAM,QAAQ,WAAW;AAElC,OAAO,KAAKC,CAAC,MAAM,uBAAuB;AAC1C,SAASC,gBAAgB,QAAQ,0BAA0B;AAC3D,SAASC,cAAc,QAAQ,wBAAwB;AACvD,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAM;EAAEC;AAAU,CAAC,GAAGN,KAAK,CAACO,KAAK;AAEjC,MAAMC,OAAO,GAAG,IAAIH,YAAY,CAAC,gBAAgB,CAAC;AAElDG,OAAO,CACJC,WAAW,CAAC,oBAAoB,CAAC,CACjCC,SAAS,CACR,IAAIT,MAAM,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAACU,OAAO,CAAC,KAAK,EAAE,OAAO,CAC1E,CAAC,CACAC,WAAW,CACV,OAAO,EACN,mBAAkB,CAAC,cAAc,CAAC,GAChC,SACC,WAAW,CAAC,YAAY,CACzB,iEACC,oBAAoB,CAAC,YAAY,CAClC,YAAW,GACX,SACC,WAAW,CAAC,YAAY,CACzB,2JACC,oBAAoB,CAAC,YAAY,CAClC,eAAc,GACd,mBAAkB,GAClB,gIAA+H,GAC/H,sBAAqBV,CAAC,CAACW,SAAU,IAAGX,CAAC,CAACY,QAAS,KAAIZ,CAAC,CAACa,QAAS,KAAI,CACjE,YAAY,CACb,GACA,wFAAuF,GACvF,sBAAqBb,CAAC,CAACW,SAAU,IAAG,CAAC,YAAY,CAAC,GAClD,yGAAwG,GACxG,sBAAqBX,CAAC,CAACc,MAAO,IAAG,CAAC,YAAY,CACnD,CAAC,CACAC,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEL,QAAQ,EAAEM,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BL,IAAI,EACJC,KAAK,EACLC,IAAI,EACJL,QAAQ,EACRM,OAAO,EACPC,OACF,CAAC;EACD,IAAI,MAAMhB,SAAS,CAAC,CAAC,EAAE;IACrBF,cAAc,CAAE,yBAAwB,CAAC;IACzC,MAAMD,gBAAgB,CAACkB,OAAO,CAACG,IAAI,CAAC;EACtC,CAAC,MAAM;IACLC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;;AAEHlB,OAAO,CAACmB,KAAK,CAAC,CAAC"}
@@ -3,19 +3,15 @@ import { fileURLToPath } from 'url';
3
3
  import { FrodoStubCommand } from '../FrodoCommand';
4
4
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
5
5
  export default function setup() {
6
- const program = new FrodoStubCommand('app')
7
- // for backwards compatibility
8
- .alias('application').description('Manage OAuth2 applications.').executableDir(__dirname);
9
- program.command('list', 'List OAuth2 applications.');
6
+ const program = new FrodoStubCommand('app').description('Manage applications.').executableDir(__dirname).addHelpText('after', `\nImportant Note:\n`['brightYellow'] + ` The ${'frodo app'['brightCyan']} command to manage OAuth2 clients in v1.x has been renamed to ${'frodo oauth client'['brightCyan']} in v2.x\n` + ` The ${'frodo app'['brightCyan']} command in v2.x manages the new applications created using the new application templates in ForgeRock Identity Cloud. To manage oauth clients, use the ${'frodo oauth client'['brightCyan']} command.\n\n`);
7
+ program.command('list', 'List applications.');
10
8
 
11
9
  // program
12
- // .command('describe', 'Describe OAuth2 applications.');
13
-
14
- program.command('export', 'Export OAuth2 applications.');
15
- program.command('import', 'Import OAuth2 applications.');
16
-
17
- // program.command('delete', 'Delete OAuth2 applications.');
10
+ // .command('describe', 'Describe applications.');
18
11
 
12
+ program.command('export', 'Export applications.');
13
+ program.command('import', 'Import applications.');
14
+ program.command('delete', 'Delete applications.');
19
15
  return program;
20
16
  }
21
17
  //# sourceMappingURL=app.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","names":["path","fileURLToPath","FrodoStubCommand","__dirname","dirname","import","meta","url","setup","program","alias","description","executableDir","command"],"sources":["../../../src/cli/app/app.ts"],"sourcesContent":["import path from 'path';\nimport { fileURLToPath } from 'url';\n\nimport { FrodoStubCommand } from '../FrodoCommand';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nexport default function setup() {\n const program = new FrodoStubCommand('app')\n // for backwards compatibility\n .alias('application')\n .description('Manage OAuth2 applications.')\n .executableDir(__dirname);\n\n program.command('list', 'List OAuth2 applications.');\n\n // program\n // .command('describe', 'Describe OAuth2 applications.');\n\n program.command('export', 'Export OAuth2 applications.');\n\n program.command('import', 'Import OAuth2 applications.');\n\n // program.command('delete', 'Delete OAuth2 applications.');\n\n return program;\n}\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;AACvB,SAASC,aAAa,QAAQ,KAAK;AAEnC,SAASC,gBAAgB,QAAQ,iBAAiB;AAElD,MAAMC,SAAS,GAAGH,IAAI,CAACI,OAAO,CAACH,aAAa,CAACI,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC;AAE9D,eAAe,SAASC,KAAKA,CAAA,EAAG;EAC9B,MAAMC,OAAO,GAAG,IAAIP,gBAAgB,CAAC,KAAK;EACxC;EAAA,CACCQ,KAAK,CAAC,aAAa,CAAC,CACpBC,WAAW,CAAC,6BAA6B,CAAC,CAC1CC,aAAa,CAACT,SAAS,CAAC;EAE3BM,OAAO,CAACI,OAAO,CAAC,MAAM,EAAE,2BAA2B,CAAC;;EAEpD;EACA;;EAEAJ,OAAO,CAACI,OAAO,CAAC,QAAQ,EAAE,6BAA6B,CAAC;EAExDJ,OAAO,CAACI,OAAO,CAAC,QAAQ,EAAE,6BAA6B,CAAC;;EAExD;;EAEA,OAAOJ,OAAO;AAChB"}
1
+ {"version":3,"file":"app.js","names":["path","fileURLToPath","FrodoStubCommand","__dirname","dirname","import","meta","url","setup","program","description","executableDir","addHelpText","command"],"sources":["../../../src/cli/app/app.ts"],"sourcesContent":["import path from 'path';\nimport { fileURLToPath } from 'url';\n\nimport { FrodoStubCommand } from '../FrodoCommand';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nexport default function setup() {\n const program = new FrodoStubCommand('app')\n .description('Manage applications.')\n .executableDir(__dirname)\n .addHelpText(\n 'after',\n `\\nImportant Note:\\n`['brightYellow'] +\n ` The ${\n 'frodo app'['brightCyan']\n } command to manage OAuth2 clients in v1.x has been renamed to ${\n 'frodo oauth client'['brightCyan']\n } in v2.x\\n` +\n ` The ${\n 'frodo app'['brightCyan']\n } command in v2.x manages the new applications created using the new application templates in ForgeRock Identity Cloud. To manage oauth clients, use the ${\n 'frodo oauth client'['brightCyan']\n } command.\\n\\n`\n );\n\n program.command('list', 'List applications.');\n\n // program\n // .command('describe', 'Describe applications.');\n\n program.command('export', 'Export applications.');\n\n program.command('import', 'Import applications.');\n\n program.command('delete', 'Delete applications.');\n\n return program;\n}\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;AACvB,SAASC,aAAa,QAAQ,KAAK;AAEnC,SAASC,gBAAgB,QAAQ,iBAAiB;AAElD,MAAMC,SAAS,GAAGH,IAAI,CAACI,OAAO,CAACH,aAAa,CAACI,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC;AAE9D,eAAe,SAASC,KAAKA,CAAA,EAAG;EAC9B,MAAMC,OAAO,GAAG,IAAIP,gBAAgB,CAAC,KAAK,CAAC,CACxCQ,WAAW,CAAC,sBAAsB,CAAC,CACnCC,aAAa,CAACR,SAAS,CAAC,CACxBS,WAAW,CACV,OAAO,EACN,qBAAoB,CAAC,cAAc,CAAC,GAClC,SACC,WAAW,CAAC,YAAY,CACzB,iEACC,oBAAoB,CAAC,YAAY,CAClC,YAAW,GACX,SACC,WAAW,CAAC,YAAY,CACzB,2JACC,oBAAoB,CAAC,YAAY,CAClC,eACL,CAAC;EAEHH,OAAO,CAACI,OAAO,CAAC,MAAM,EAAE,oBAAoB,CAAC;;EAE7C;EACA;;EAEAJ,OAAO,CAACI,OAAO,CAAC,QAAQ,EAAE,sBAAsB,CAAC;EAEjDJ,OAAO,CAACI,OAAO,CAAC,QAAQ,EAAE,sBAAsB,CAAC;EAEjDJ,OAAO,CAACI,OAAO,CAAC,QAAQ,EAAE,sBAAsB,CAAC;EAEjD,OAAOJ,OAAO;AAChB"}
@@ -52,9 +52,9 @@ async (host, user, password, options, command) => {
52
52
  const sa = await addNewServiceAccount();
53
53
  printMessage(`Created and added service account ${sa.name} with id ${sa._id} to profile.`);
54
54
  } catch (error) {
55
- var _error$response, _error$response2, _error$response2$data;
55
+ var _error$response, _error$response2;
56
56
  printMessage((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data, 'error');
57
- printMessage(`Error creating service account: ${(_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : (_error$response2$data = _error$response2.data) === null || _error$response2$data === void 0 ? void 0 : _error$response2$data.message}`, 'error');
57
+ printMessage(`Error creating service account: ${(_error$response2 = error.response) === null || _error$response2 === void 0 || (_error$response2 = _error$response2.data) === null || _error$response2 === void 0 ? void 0 : _error$response2.message}`, 'error');
58
58
  process.exitCode = 1;
59
59
  }
60
60
  }
@@ -82,9 +82,9 @@ async (host, user, password, options, command) => {
82
82
  state.setLogApiSecret(creds.api_key_secret);
83
83
  printMessage(`Created log API key ${creds.api_key_id} and secret.`);
84
84
  } catch (error) {
85
- var _error$response3, _error$response4, _error$response4$data;
85
+ var _error$response3, _error$response4;
86
86
  printMessage((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.data, 'error');
87
- printMessage(`Error creating log API key and secret: ${(_error$response4 = error.response) === null || _error$response4 === void 0 ? void 0 : (_error$response4$data = _error$response4.data) === null || _error$response4$data === void 0 ? void 0 : _error$response4$data.message}`, 'error');
87
+ printMessage(`Error creating log API key and secret: ${(_error$response4 = error.response) === null || _error$response4 === void 0 || (_error$response4 = _error$response4.data) === null || _error$response4 === void 0 ? void 0 : _error$response4.message}`, 'error');
88
88
  process.exitCode = 1;
89
89
  }
90
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"conn-save.js","names":["frodo","state","Option","s","addExistingServiceAccount","provisionCreds","printMessage","verboseMessage","FrodoCommand","getTokens","login","CLOUD_DEPLOYMENT_TYPE_KEY","utils","constants","isServiceAccountsFeatureAvailable","cloud","serviceAccount","addNewServiceAccount","saveConnectionProfile","conn","program","alias","description","addOption","addHelpText","amBaseUrl","username","password","saId","saJwkFile","connId","action","host","user","options","command","handleDefaultArgsAndOpts","setLogApiKey","logApiKey","setLogApiSecret","logApiSecret","authenticationService","setAuthenticationService","authenticationHeaderOverrides","setAuthenticationHeaderOverrides","JSON","parse","needSa","sa","getServiceAccountId","getServiceAccountJwk","needLogApiKey","logApi","getLogApiKey","getLogApiSecret","forceLoginAsUser","validate","getHost","getDeploymentType","name","_id","error","_error$response","_error$response2","_error$response2$data","response","data","message","process","exitCode","creds","api_key_id","api_key_secret","_error$response3","_error$response4","_error$response4$data"],"sources":["../../../src/cli/conn/conn-save.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport * as s from '../../help/SampleData';\nimport { addExistingServiceAccount } from '../../ops/ConnectionProfileOps.js';\nimport { provisionCreds } from '../../ops/LogOps';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { getTokens } = frodo.login;\nconst { CLOUD_DEPLOYMENT_TYPE_KEY } = frodo.utils.constants;\nconst { isServiceAccountsFeatureAvailable } = frodo.cloud.serviceAccount;\nconst { addNewServiceAccount, saveConnectionProfile } = frodo.conn;\n\nconst program = new FrodoCommand('frodo conn save', ['realm']);\n\nprogram\n .alias('add')\n .description('Save connection profiles.')\n .addOption(new Option('--no-sa', 'Do not create and add service account.'))\n .addOption(\n new Option(\n '--log-api-key [key]',\n 'Log API key. If specified, must also include --log-api-secret. Ignored with --no-log-api.'\n )\n )\n .addOption(\n new Option(\n '--log-api-secret [secret]',\n 'Log API secret. If specified, must also include --log-api-key. Ignored with --no-log-api.'\n )\n )\n .addOption(\n new Option('--no-log-api', 'Do not create and add log API key and secret.')\n )\n .addOption(new Option('--no-validate', 'Do not validate connection.'))\n .addOption(\n new Option(\n '--authentication-service [service]',\n 'Name of the authentication service/tree to use.'\n )\n )\n .addOption(\n new Option(\n '--authentication-header-overrides [headers]',\n 'Map of headers: {\"host\":\"am.example.com:8081\"}.'\n )\n )\n .addHelpText(\n 'after',\n `Usage Examples:\\n` +\n ` Create a connection profile with a new log API key and secret and a new service account:\\n` +\n ` $ frodo conn save ${s.amBaseUrl} ${s.username} '${s.password}'\\n`[\n 'brightCyan'\n ] +\n ` Save an existing service account to an existing or new connection profile:\\n` +\n ` $ frodo conn save --sa-id ${s.saId} --sa-jwk-file ${s.saJwkFile} ${s.amBaseUrl}'\\n`[\n 'brightCyan'\n ] +\n ` Save an existing service account to an existing connection profile (partial host URL only updates an existing profile):\\n` +\n ` $ frodo conn save --sa-id ${s.saId} --sa-jwk-file ${s.saJwkFile} ${s.connId}'\\n`[\n 'brightCyan'\n ]\n )\n .action(\n // implement command logic inside action handler\n async (host, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(host, user, password, options, command);\n state.setLogApiKey(options.logApiKey);\n state.setLogApiSecret(options.logApiSecret);\n if (options.authenticationService) {\n state.setAuthenticationService(options.authenticationService);\n }\n if (options.authenticationHeaderOverrides) {\n state.setAuthenticationHeaderOverrides(\n JSON.parse(options.authenticationHeaderOverrides)\n );\n }\n const needSa =\n options.sa &&\n !state.getServiceAccountId() &&\n !state.getServiceAccountJwk();\n const needLogApiKey =\n options.logApi &&\n !state.getLogApiKey() &&\n !state.getLogApiSecret() &&\n needSa;\n const forceLoginAsUser = needSa || needLogApiKey;\n if (\n (options.validate && (await getTokens(forceLoginAsUser))) ||\n !options.validate\n ) {\n verboseMessage(\n `Saving connection profile for tenant ${state.getHost()}...`\n );\n // if cloud deployment add service account\n if (\n options.validate &&\n state.getDeploymentType() === CLOUD_DEPLOYMENT_TYPE_KEY &&\n options.sa &&\n (await isServiceAccountsFeatureAvailable())\n ) {\n // validate and add existing service account\n if (options.saId && options.saJwkFile) {\n verboseMessage(`Validating and adding service account...`);\n if (\n await addExistingServiceAccount(\n options.saId,\n options.saJwkFile,\n options.validate\n )\n ) {\n printMessage(\n `Validated and added service account with id ${options.saId} to profile.`\n );\n }\n }\n // add new service account if none already exists in the profile\n else if (!state.getServiceAccountId()) {\n try {\n verboseMessage(`Creating service account...`);\n const sa = await addNewServiceAccount();\n printMessage(\n `Created and added service account ${sa.name} with id ${sa._id} to profile.`\n );\n } catch (error) {\n printMessage(error.response?.data, 'error');\n printMessage(\n `Error creating service account: ${error.response?.data?.message}`,\n 'error'\n );\n process.exitCode = 1;\n }\n }\n }\n // add existing service account without validation\n else if (\n !options.validate &&\n options.saId &&\n options.saJwkFile &&\n options.sa\n ) {\n addExistingServiceAccount(\n options.saId,\n options.saJwkFile,\n options.validate\n );\n }\n // if cloud deployment add log api key and secret\n verboseMessage(options);\n verboseMessage(state);\n if (\n options.validate &&\n state.getDeploymentType() === CLOUD_DEPLOYMENT_TYPE_KEY &&\n needLogApiKey\n ) {\n // validate and add existing log api key and secret\n if (options.logApiKey && options.logApiSecret) {\n verboseMessage(`Validating and adding log api key and secret...`);\n if (\n await addExistingServiceAccount(\n options.logApiKey,\n options.logApiSecret,\n options.validate\n )\n ) {\n printMessage(\n `Added log API key ${options.logApiKey} to profile.`\n );\n }\n }\n // add new log api key and secret if none already exists in the profile\n else if (!state.getLogApiKey()) {\n try {\n const creds = await provisionCreds();\n state.setLogApiKey(creds.api_key_id as string);\n state.setLogApiSecret(creds.api_key_secret as string);\n printMessage(\n `Created log API key ${creds.api_key_id} and secret.`\n );\n } catch (error) {\n printMessage(error.response?.data, 'error');\n printMessage(\n `Error creating log API key and secret: ${error.response?.data?.message}`,\n 'error'\n );\n process.exitCode = 1;\n }\n }\n }\n // add existing log api key and secret without validation\n // storing log API key and secret in the connection profile is happening default, therefore no code required here\n if (await saveConnectionProfile(host)) {\n printMessage(`Saved connection profile ${state.getHost()}`);\n } else {\n process.exitCode = 1;\n }\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
1
+ {"version":3,"file":"conn-save.js","names":["frodo","state","Option","s","addExistingServiceAccount","provisionCreds","printMessage","verboseMessage","FrodoCommand","getTokens","login","CLOUD_DEPLOYMENT_TYPE_KEY","utils","constants","isServiceAccountsFeatureAvailable","cloud","serviceAccount","addNewServiceAccount","saveConnectionProfile","conn","program","alias","description","addOption","addHelpText","amBaseUrl","username","password","saId","saJwkFile","connId","action","host","user","options","command","handleDefaultArgsAndOpts","setLogApiKey","logApiKey","setLogApiSecret","logApiSecret","authenticationService","setAuthenticationService","authenticationHeaderOverrides","setAuthenticationHeaderOverrides","JSON","parse","needSa","sa","getServiceAccountId","getServiceAccountJwk","needLogApiKey","logApi","getLogApiKey","getLogApiSecret","forceLoginAsUser","validate","getHost","getDeploymentType","name","_id","error","_error$response","_error$response2","response","data","message","process","exitCode","creds","api_key_id","api_key_secret","_error$response3","_error$response4"],"sources":["../../../src/cli/conn/conn-save.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport * as s from '../../help/SampleData';\nimport { addExistingServiceAccount } from '../../ops/ConnectionProfileOps.js';\nimport { provisionCreds } from '../../ops/LogOps';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { getTokens } = frodo.login;\nconst { CLOUD_DEPLOYMENT_TYPE_KEY } = frodo.utils.constants;\nconst { isServiceAccountsFeatureAvailable } = frodo.cloud.serviceAccount;\nconst { addNewServiceAccount, saveConnectionProfile } = frodo.conn;\n\nconst program = new FrodoCommand('frodo conn save', ['realm']);\n\nprogram\n .alias('add')\n .description('Save connection profiles.')\n .addOption(new Option('--no-sa', 'Do not create and add service account.'))\n .addOption(\n new Option(\n '--log-api-key [key]',\n 'Log API key. If specified, must also include --log-api-secret. Ignored with --no-log-api.'\n )\n )\n .addOption(\n new Option(\n '--log-api-secret [secret]',\n 'Log API secret. If specified, must also include --log-api-key. Ignored with --no-log-api.'\n )\n )\n .addOption(\n new Option('--no-log-api', 'Do not create and add log API key and secret.')\n )\n .addOption(new Option('--no-validate', 'Do not validate connection.'))\n .addOption(\n new Option(\n '--authentication-service [service]',\n 'Name of the authentication service/tree to use.'\n )\n )\n .addOption(\n new Option(\n '--authentication-header-overrides [headers]',\n 'Map of headers: {\"host\":\"am.example.com:8081\"}.'\n )\n )\n .addHelpText(\n 'after',\n `Usage Examples:\\n` +\n ` Create a connection profile with a new log API key and secret and a new service account:\\n` +\n ` $ frodo conn save ${s.amBaseUrl} ${s.username} '${s.password}'\\n`[\n 'brightCyan'\n ] +\n ` Save an existing service account to an existing or new connection profile:\\n` +\n ` $ frodo conn save --sa-id ${s.saId} --sa-jwk-file ${s.saJwkFile} ${s.amBaseUrl}'\\n`[\n 'brightCyan'\n ] +\n ` Save an existing service account to an existing connection profile (partial host URL only updates an existing profile):\\n` +\n ` $ frodo conn save --sa-id ${s.saId} --sa-jwk-file ${s.saJwkFile} ${s.connId}'\\n`[\n 'brightCyan'\n ]\n )\n .action(\n // implement command logic inside action handler\n async (host, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(host, user, password, options, command);\n state.setLogApiKey(options.logApiKey);\n state.setLogApiSecret(options.logApiSecret);\n if (options.authenticationService) {\n state.setAuthenticationService(options.authenticationService);\n }\n if (options.authenticationHeaderOverrides) {\n state.setAuthenticationHeaderOverrides(\n JSON.parse(options.authenticationHeaderOverrides)\n );\n }\n const needSa =\n options.sa &&\n !state.getServiceAccountId() &&\n !state.getServiceAccountJwk();\n const needLogApiKey =\n options.logApi &&\n !state.getLogApiKey() &&\n !state.getLogApiSecret() &&\n needSa;\n const forceLoginAsUser = needSa || needLogApiKey;\n if (\n (options.validate && (await getTokens(forceLoginAsUser))) ||\n !options.validate\n ) {\n verboseMessage(\n `Saving connection profile for tenant ${state.getHost()}...`\n );\n // if cloud deployment add service account\n if (\n options.validate &&\n state.getDeploymentType() === CLOUD_DEPLOYMENT_TYPE_KEY &&\n options.sa &&\n (await isServiceAccountsFeatureAvailable())\n ) {\n // validate and add existing service account\n if (options.saId && options.saJwkFile) {\n verboseMessage(`Validating and adding service account...`);\n if (\n await addExistingServiceAccount(\n options.saId,\n options.saJwkFile,\n options.validate\n )\n ) {\n printMessage(\n `Validated and added service account with id ${options.saId} to profile.`\n );\n }\n }\n // add new service account if none already exists in the profile\n else if (!state.getServiceAccountId()) {\n try {\n verboseMessage(`Creating service account...`);\n const sa = await addNewServiceAccount();\n printMessage(\n `Created and added service account ${sa.name} with id ${sa._id} to profile.`\n );\n } catch (error) {\n printMessage(error.response?.data, 'error');\n printMessage(\n `Error creating service account: ${error.response?.data?.message}`,\n 'error'\n );\n process.exitCode = 1;\n }\n }\n }\n // add existing service account without validation\n else if (\n !options.validate &&\n options.saId &&\n options.saJwkFile &&\n options.sa\n ) {\n addExistingServiceAccount(\n options.saId,\n options.saJwkFile,\n options.validate\n );\n }\n // if cloud deployment add log api key and secret\n verboseMessage(options);\n verboseMessage(state);\n if (\n options.validate &&\n state.getDeploymentType() === CLOUD_DEPLOYMENT_TYPE_KEY &&\n needLogApiKey\n ) {\n // validate and add existing log api key and secret\n if (options.logApiKey && options.logApiSecret) {\n verboseMessage(`Validating and adding log api key and secret...`);\n if (\n await addExistingServiceAccount(\n options.logApiKey,\n options.logApiSecret,\n options.validate\n )\n ) {\n printMessage(\n `Added log API key ${options.logApiKey} to profile.`\n );\n }\n }\n // add new log api key and secret if none already exists in the profile\n else if (!state.getLogApiKey()) {\n try {\n const creds = await provisionCreds();\n state.setLogApiKey(creds.api_key_id as string);\n state.setLogApiSecret(creds.api_key_secret as string);\n printMessage(\n `Created log API key ${creds.api_key_id} and secret.`\n );\n } catch (error) {\n printMessage(error.response?.data, 'error');\n printMessage(\n `Error creating log API key and secret: ${error.response?.data?.message}`,\n 'error'\n );\n process.exitCode = 1;\n }\n }\n }\n // add existing log api key and secret without validation\n // storing log API key and secret in the connection profile is happening default, therefore no code required here\n if (await saveConnectionProfile(host)) {\n printMessage(`Saved connection profile ${state.getHost()}`);\n } else {\n process.exitCode = 1;\n }\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
@@ -11,7 +11,7 @@ const {
11
11
  } = frodo.info;
12
12
  export default function setup() {
13
13
  const program = new FrodoCommand('info', ['realm']);
14
- program.description('Print versions and tokens.').addOption(new Option('--json', 'Output in JSON format.')).addOption(new Option('-s, --scriptFriendly', 'Send output of operation to STDOUT in a script-friendly format (JSON) which can be piped to other commands. User messages/warnings are output to STDERR, and are not piped. For example, to only get bearer token: \n<<< frodo info my-tenant -s 2>/dev/null | jq -r .bearerToken >>>').default(false, 'Output as plain text').hideHelp()).addHelpText('after', `Usage Examples:\n` + ` Show human-readable output and login using AM base URL, username, and password (note the quotes around password to allow special characters):\n` + ` $ frodo info ${s.amBaseUrl} ${s.username} '${s.password}'\n`['brightCyan'] + ` Show human-readable output and login using a connection profile (identified by the full AM base URL):\n` + ` $ frodo info ${s.amBaseUrl}'\n`['brightCyan'] + ` Show human-readable output and login using a connection profile (identified by a unique substring of the AM base URL):\n` + ` $ frodo info ${s.connId}'\n`['brightCyan'] + ` Show JSON output and login using the AM base URL's unique substring to identify the connection profile:\n` + ` $ frodo info --json ${s.connId}'\n`['brightCyan']).action(async (host, user, password, options, command) => {
14
+ program.description('Print versions and tokens.').addOption(new Option('--json', 'Output in JSON format.')).addOption(new Option('-s, --scriptFriendly', 'Send output of operation to STDOUT in a script-friendly format (JSON) which can be piped to other commands. User messages/warnings are output to STDERR, and are not piped. For example, to only get bearer token: \n<<< frodo info my-tenant -s 2>/dev/null | jq -r .bearerToken >>>').default(false, 'Output as plain text').hideHelp()).addHelpText('after', `Usage Examples:\n` + ` Show human-readable output and login using AM base URL, username, and password (note the quotes around password to allow special characters):\n` + ` $ frodo info ${s.amBaseUrl} ${s.username} '${s.password}'\n`['brightCyan'] + ` Show human-readable output and login using a connection profile (identified by the full AM base URL):\n` + ` $ frodo info ${s.amBaseUrl}\n`['brightCyan'] + ` Show human-readable output and login using a connection profile (identified by a unique substring of the AM base URL):\n` + ` $ frodo info ${s.connId}\n`['brightCyan'] + ` Show JSON output and login using the AM base URL's unique substring to identify the connection profile:\n` + ` $ frodo info --json ${s.connId}\n`['brightCyan']).action(async (host, user, password, options, command) => {
15
15
  command.handleDefaultArgsAndOpts(host, user, password, options, command);
16
16
  if (await getTokens()) {
17
17
  const info = await getInfo();
@@ -1 +1 @@
1
- {"version":3,"file":"info.js","names":["frodo","state","Option","s","createObjectTable","printMessage","verboseMessage","FrodoCommand","getTokens","login","getInfo","info","setup","program","description","addOption","default","hideHelp","addHelpText","amBaseUrl","username","password","connId","action","host","user","options","command","handleDefaultArgsAndOpts","scriptFriendly","json","sessionToken","bearerToken","labels","amVersion","authenticatedSubject","config_promotion_done","cookieName","deploymentType","immutable","locked","placeholder_management","region","tier","table","toString","getCookieValue","getBearerToken","JSON","stringify","process","exitCode"],"sources":["../../../src/cli/info/info.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport * as s from '../../help/SampleData';\nimport {\n createObjectTable,\n printMessage,\n verboseMessage,\n} from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { getTokens } = frodo.login;\nconst { getInfo } = frodo.info;\n\nexport default function setup() {\n const program = new FrodoCommand('info', ['realm']);\n program\n .description('Print versions and tokens.')\n .addOption(new Option('--json', 'Output in JSON format.'))\n .addOption(\n new Option(\n '-s, --scriptFriendly',\n 'Send output of operation to STDOUT in a script-friendly format (JSON) which can be piped to other commands. User messages/warnings are output to STDERR, and are not piped. For example, to only get bearer token: \\n<<< frodo info my-tenant -s 2>/dev/null | jq -r .bearerToken >>>'\n )\n .default(false, 'Output as plain text')\n .hideHelp()\n )\n .addHelpText(\n 'after',\n `Usage Examples:\\n` +\n ` Show human-readable output and login using AM base URL, username, and password (note the quotes around password to allow special characters):\\n` +\n ` $ frodo info ${s.amBaseUrl} ${s.username} '${s.password}'\\n`[\n 'brightCyan'\n ] +\n ` Show human-readable output and login using a connection profile (identified by the full AM base URL):\\n` +\n ` $ frodo info ${s.amBaseUrl}'\\n`['brightCyan'] +\n ` Show human-readable output and login using a connection profile (identified by a unique substring of the AM base URL):\\n` +\n ` $ frodo info ${s.connId}'\\n`['brightCyan'] +\n ` Show JSON output and login using the AM base URL's unique substring to identify the connection profile:\\n` +\n ` $ frodo info --json ${s.connId}'\\n`['brightCyan']\n )\n .action(async (host, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(host, user, password, options, command);\n if (await getTokens()) {\n const info = await getInfo();\n if (!options.scriptFriendly && !options.json) {\n verboseMessage('Printing info, versions, and tokens...');\n delete info.sessionToken;\n delete info.bearerToken;\n const labels = {\n amVersion: 'AM Version',\n authenticatedSubject: 'Subject (Type)',\n config_promotion_done: 'Promotion Done',\n cookieName: 'Cookie Name',\n deploymentType: 'Deployment Type',\n host: 'Host URL',\n immutable: 'Immutable',\n locked: 'Locked',\n placeholder_management: 'Placeholder Management',\n region: 'Region',\n tier: 'Tier',\n };\n const table = createObjectTable(info, labels);\n printMessage(`\\n${table.toString()}`);\n if (state.getCookieValue()) {\n printMessage(`\\nSession token:`, 'info');\n printMessage(`${state.getCookieValue()}`);\n }\n if (state.getBearerToken()) {\n printMessage(`\\nBearer token:`, 'info');\n printMessage(`${state.getBearerToken()}`);\n }\n } else {\n printMessage(JSON.stringify(info, null, 2), 'data');\n }\n } else {\n process.exitCode = 1;\n }\n });\n return program;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"info.js","names":["frodo","state","Option","s","createObjectTable","printMessage","verboseMessage","FrodoCommand","getTokens","login","getInfo","info","setup","program","description","addOption","default","hideHelp","addHelpText","amBaseUrl","username","password","connId","action","host","user","options","command","handleDefaultArgsAndOpts","scriptFriendly","json","sessionToken","bearerToken","labels","amVersion","authenticatedSubject","config_promotion_done","cookieName","deploymentType","immutable","locked","placeholder_management","region","tier","table","toString","getCookieValue","getBearerToken","JSON","stringify","process","exitCode"],"sources":["../../../src/cli/info/info.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport * as s from '../../help/SampleData';\nimport {\n createObjectTable,\n printMessage,\n verboseMessage,\n} from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { getTokens } = frodo.login;\nconst { getInfo } = frodo.info;\n\nexport default function setup() {\n const program = new FrodoCommand('info', ['realm']);\n program\n .description('Print versions and tokens.')\n .addOption(new Option('--json', 'Output in JSON format.'))\n .addOption(\n new Option(\n '-s, --scriptFriendly',\n 'Send output of operation to STDOUT in a script-friendly format (JSON) which can be piped to other commands. User messages/warnings are output to STDERR, and are not piped. For example, to only get bearer token: \\n<<< frodo info my-tenant -s 2>/dev/null | jq -r .bearerToken >>>'\n )\n .default(false, 'Output as plain text')\n .hideHelp()\n )\n .addHelpText(\n 'after',\n `Usage Examples:\\n` +\n ` Show human-readable output and login using AM base URL, username, and password (note the quotes around password to allow special characters):\\n` +\n ` $ frodo info ${s.amBaseUrl} ${s.username} '${s.password}'\\n`[\n 'brightCyan'\n ] +\n ` Show human-readable output and login using a connection profile (identified by the full AM base URL):\\n` +\n ` $ frodo info ${s.amBaseUrl}\\n`['brightCyan'] +\n ` Show human-readable output and login using a connection profile (identified by a unique substring of the AM base URL):\\n` +\n ` $ frodo info ${s.connId}\\n`['brightCyan'] +\n ` Show JSON output and login using the AM base URL's unique substring to identify the connection profile:\\n` +\n ` $ frodo info --json ${s.connId}\\n`['brightCyan']\n )\n .action(async (host, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(host, user, password, options, command);\n if (await getTokens()) {\n const info = await getInfo();\n if (!options.scriptFriendly && !options.json) {\n verboseMessage('Printing info, versions, and tokens...');\n delete info.sessionToken;\n delete info.bearerToken;\n const labels = {\n amVersion: 'AM Version',\n authenticatedSubject: 'Subject (Type)',\n config_promotion_done: 'Promotion Done',\n cookieName: 'Cookie Name',\n deploymentType: 'Deployment Type',\n host: 'Host URL',\n immutable: 'Immutable',\n locked: 'Locked',\n placeholder_management: 'Placeholder Management',\n region: 'Region',\n tier: 'Tier',\n };\n const table = createObjectTable(info, labels);\n printMessage(`\\n${table.toString()}`);\n if (state.getCookieValue()) {\n printMessage(`\\nSession token:`, 'info');\n printMessage(`${state.getCookieValue()}`);\n }\n if (state.getBearerToken()) {\n printMessage(`\\nBearer token:`, 'info');\n printMessage(`${state.getBearerToken()}`);\n }\n } else {\n printMessage(JSON.stringify(info, null, 2), 'data');\n }\n } else {\n process.exitCode = 1;\n }\n });\n return program;\n}\n"],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { frodo } from '@rockcarver/frodo-lib';
2
+ import { Option } from 'commander';
3
+ import { FrodoCommand } from '../FrodoCommand';
4
+ const {
5
+ getTokens
6
+ } = frodo.login;
7
+ const program = new FrodoCommand('frodo oauth client delete');
8
+ program.description('Delete OAuth2 clients.').addOption(new Option('-i, --app-id <id>', 'OAuth2 application id/name. If specified, -a and -A are ignored.')).addOption(new Option('-a, --all', 'Delete all cmds in a realm. Ignored with -i.')).addOption(new Option('--no-deep', 'No deep delete. This leaves orphaned configuration artifacts behind.')).action(
9
+ // implement command logic inside action handler
10
+ async (host, realm, user, password, options, command) => {
11
+ command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
12
+ if (await getTokens()) {
13
+ // code goes here
14
+ } else {
15
+ process.exitCode = 1;
16
+ }
17
+ }
18
+ // end command logic inside action handler
19
+ );
20
+
21
+ program.parse();
22
+ //# sourceMappingURL=oauth-client-delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-client-delete.js","names":["frodo","Option","FrodoCommand","getTokens","login","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","process","exitCode","parse"],"sources":["../../../src/cli/oauth/oauth-client-delete.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { getTokens } = frodo.login;\n\nconst program = new FrodoCommand('frodo oauth client delete');\n\nprogram\n .description('Delete OAuth2 clients.')\n .addOption(\n new Option(\n '-i, --app-id <id>',\n 'OAuth2 application id/name. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option('-a, --all', 'Delete all cmds in a realm. Ignored with -i.')\n )\n .addOption(\n new Option(\n '--no-deep',\n 'No deep delete. This leaves orphaned configuration artifacts behind.'\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 // code goes here\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,MAAM,QAAQ,WAAW;AAElC,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAM;EAAEC;AAAU,CAAC,GAAGH,KAAK,CAACI,KAAK;AAEjC,MAAMC,OAAO,GAAG,IAAIH,YAAY,CAAC,2BAA2B,CAAC;AAE7DG,OAAO,CACJC,WAAW,CAAC,wBAAwB,CAAC,CACrCC,SAAS,CACR,IAAIN,MAAM,CACR,mBAAmB,EACnB,kEACF,CACF,CAAC,CACAM,SAAS,CACR,IAAIN,MAAM,CAAC,WAAW,EAAE,8CAA8C,CACxE,CAAC,CACAM,SAAS,CACR,IAAIN,MAAM,CACR,WAAW,EACX,sEACF,CACF,CAAC,CACAO,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,MAAMX,SAAS,CAAC,CAAC,EAAE;IACrB;EAAA,CACD,MAAM;IACLa,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;;AAEHZ,OAAO,CAACa,KAAK,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { frodo } from '@rockcarver/frodo-lib';
2
+ import { Option } from 'commander';
3
+ import { FrodoCommand } from '../FrodoCommand';
4
+ const {
5
+ getTokens
6
+ } = frodo.login;
7
+ const program = new FrodoCommand('frodo oauth client describe');
8
+ program.description('Describe OAuth2 application.').addOption(new Option('-i, --app-id <id>', 'OAuth2 application id/name.')).action(
9
+ // implement command logic inside action handler
10
+ async (host, realm, user, password, options, command) => {
11
+ command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
12
+ if (await getTokens()) {
13
+ // code goes here
14
+ } else {
15
+ process.exitCode = 1;
16
+ }
17
+ }
18
+ // end command logic inside action handler
19
+ );
20
+
21
+ program.parse();
22
+ //# sourceMappingURL=oauth-client-describe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-client-describe.js","names":["frodo","Option","FrodoCommand","getTokens","login","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","process","exitCode","parse"],"sources":["../../../src/cli/oauth/oauth-client-describe.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { getTokens } = frodo.login;\n\nconst program = new FrodoCommand('frodo oauth client describe');\n\nprogram\n .description('Describe OAuth2 application.')\n .addOption(new Option('-i, --app-id <id>', 'OAuth2 application id/name.'))\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 // code goes here\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,MAAM,QAAQ,WAAW;AAElC,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAM;EAAEC;AAAU,CAAC,GAAGH,KAAK,CAACI,KAAK;AAEjC,MAAMC,OAAO,GAAG,IAAIH,YAAY,CAAC,6BAA6B,CAAC;AAE/DG,OAAO,CACJC,WAAW,CAAC,8BAA8B,CAAC,CAC3CC,SAAS,CAAC,IAAIN,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,CAAC,CACzEO,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,MAAMX,SAAS,CAAC,CAAC,EAAE;IACrB;EAAA,CACD,MAAM;IACLa,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;;AAEHZ,OAAO,CAACa,KAAK,CAAC,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { frodo } from '@rockcarver/frodo-lib';
2
+ import { Option } from 'commander';
3
+ import { exportOAuth2ClientsToFile, exportOAuth2ClientsToFiles, exportOAuth2ClientToFile } from '../../ops/OAuth2ClientOps';
4
+ import { verboseMessage } from '../../utils/Console.js';
5
+ import { FrodoCommand } from '../FrodoCommand';
6
+ const {
7
+ getTokens
8
+ } = frodo.login;
9
+ const program = new FrodoCommand('frodo oauth client export');
10
+ program.description('Export OAuth2 applications.').addOption(new Option('-i, --app-id <app-id>', 'App id. If specified, -a and -A are ignored.')).addOption(new Option('-f, --file <file>', 'Name of the export file.')).addOption(new Option('-a, --all', 'Export all OAuth2 apps to a single file. Ignored with -i.')).addOption(new Option('-A, --all-separate', 'Export all OAuth2 apps to separate files (*.oauth2.app.json) in the current directory. Ignored with -i or -a.')).addOption(new Option('--no-deps', 'Do not include any dependencies (scripts).')).action(
11
+ // implement command logic inside action handler
12
+ async (host, realm, user, password, options, command) => {
13
+ command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
14
+ // export
15
+ if (options.appId && (await getTokens())) {
16
+ verboseMessage('Exporting OAuth2 application...');
17
+ const status = await exportOAuth2ClientToFile(options.appId, options.file, {
18
+ useStringArrays: true,
19
+ deps: options.deps
20
+ });
21
+ if (!status) process.exitCode = 1;
22
+ }
23
+ // -a/--all
24
+ else if (options.all && (await getTokens())) {
25
+ verboseMessage('Exporting all OAuth2 applications to file...');
26
+ const status = await exportOAuth2ClientsToFile(options.file, {
27
+ useStringArrays: true,
28
+ deps: options.deps
29
+ });
30
+ if (!status) process.exitCode = 1;
31
+ }
32
+ // -A/--all-separate
33
+ else if (options.allSeparate && (await getTokens())) {
34
+ verboseMessage('Exporting all applications to separate files...');
35
+ const status = await exportOAuth2ClientsToFiles({
36
+ useStringArrays: true,
37
+ deps: options.deps
38
+ });
39
+ if (!status) process.exitCode = 1;
40
+ }
41
+ // unrecognized combination of options or no options
42
+ else {
43
+ verboseMessage('Unrecognized combination of options or no options...');
44
+ program.help();
45
+ process.exitCode = 1;
46
+ }
47
+ }
48
+ // end command logic inside action handler
49
+ );
50
+
51
+ program.parse();
52
+ //# sourceMappingURL=oauth-client-export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-client-export.js","names":["frodo","Option","exportOAuth2ClientsToFile","exportOAuth2ClientsToFiles","exportOAuth2ClientToFile","verboseMessage","FrodoCommand","getTokens","login","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","appId","status","file","useStringArrays","deps","process","exitCode","all","allSeparate","help","parse"],"sources":["../../../src/cli/oauth/oauth-client-export.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport {\n exportOAuth2ClientsToFile,\n exportOAuth2ClientsToFiles,\n exportOAuth2ClientToFile,\n} from '../../ops/OAuth2ClientOps';\nimport { verboseMessage } from '../../utils/Console.js';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { getTokens } = frodo.login;\n\nconst program = new FrodoCommand('frodo oauth client export');\n\nprogram\n .description('Export OAuth2 applications.')\n .addOption(\n new Option(\n '-i, --app-id <app-id>',\n 'App id. If specified, -a and -A are ignored.'\n )\n )\n .addOption(new Option('-f, --file <file>', 'Name of the export file.'))\n .addOption(\n new Option(\n '-a, --all',\n 'Export all OAuth2 apps to a single file. Ignored with -i.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Export all OAuth2 apps to separate files (*.oauth2.app.json) in the current directory. Ignored with -i or -a.'\n )\n )\n .addOption(\n new Option('--no-deps', 'Do not include any dependencies (scripts).')\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 // export\n if (options.appId && (await getTokens())) {\n verboseMessage('Exporting OAuth2 application...');\n const status = await exportOAuth2ClientToFile(\n options.appId,\n options.file,\n {\n useStringArrays: true,\n deps: options.deps,\n }\n );\n if (!status) process.exitCode = 1;\n }\n // -a/--all\n else if (options.all && (await getTokens())) {\n verboseMessage('Exporting all OAuth2 applications to file...');\n const status = await exportOAuth2ClientsToFile(options.file, {\n useStringArrays: true,\n deps: options.deps,\n });\n if (!status) process.exitCode = 1;\n }\n // -A/--all-separate\n else if (options.allSeparate && (await getTokens())) {\n verboseMessage('Exporting all applications to separate files...');\n const status = await exportOAuth2ClientsToFiles({\n useStringArrays: true,\n deps: options.deps,\n });\n if (!status) process.exitCode = 1;\n }\n // unrecognized combination of options or no options\n else {\n verboseMessage('Unrecognized combination of options or no options...');\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,MAAM,QAAQ,WAAW;AAElC,SACEC,yBAAyB,EACzBC,0BAA0B,EAC1BC,wBAAwB,QACnB,2BAA2B;AAClC,SAASC,cAAc,QAAQ,wBAAwB;AACvD,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAM;EAAEC;AAAU,CAAC,GAAGP,KAAK,CAACQ,KAAK;AAEjC,MAAMC,OAAO,GAAG,IAAIH,YAAY,CAAC,2BAA2B,CAAC;AAE7DG,OAAO,CACJC,WAAW,CAAC,6BAA6B,CAAC,CAC1CC,SAAS,CACR,IAAIV,MAAM,CACR,uBAAuB,EACvB,8CACF,CACF,CAAC,CACAU,SAAS,CAAC,IAAIV,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC,CAAC,CACtEU,SAAS,CACR,IAAIV,MAAM,CACR,WAAW,EACX,2DACF,CACF,CAAC,CACAU,SAAS,CACR,IAAIV,MAAM,CACR,oBAAoB,EACpB,+GACF,CACF,CAAC,CACAU,SAAS,CACR,IAAIV,MAAM,CAAC,WAAW,EAAE,4CAA4C,CACtE,CAAC,CACAW,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;EACA,IAAID,OAAO,CAACG,KAAK,KAAK,MAAMb,SAAS,CAAC,CAAC,CAAC,EAAE;IACxCF,cAAc,CAAC,iCAAiC,CAAC;IACjD,MAAMgB,MAAM,GAAG,MAAMjB,wBAAwB,CAC3Ca,OAAO,CAACG,KAAK,EACbH,OAAO,CAACK,IAAI,EACZ;MACEC,eAAe,EAAE,IAAI;MACrBC,IAAI,EAAEP,OAAO,CAACO;IAChB,CACF,CAAC;IACD,IAAI,CAACH,MAAM,EAAEI,OAAO,CAACC,QAAQ,GAAG,CAAC;EACnC;EACA;EAAA,KACK,IAAIT,OAAO,CAACU,GAAG,KAAK,MAAMpB,SAAS,CAAC,CAAC,CAAC,EAAE;IAC3CF,cAAc,CAAC,8CAA8C,CAAC;IAC9D,MAAMgB,MAAM,GAAG,MAAMnB,yBAAyB,CAACe,OAAO,CAACK,IAAI,EAAE;MAC3DC,eAAe,EAAE,IAAI;MACrBC,IAAI,EAAEP,OAAO,CAACO;IAChB,CAAC,CAAC;IACF,IAAI,CAACH,MAAM,EAAEI,OAAO,CAACC,QAAQ,GAAG,CAAC;EACnC;EACA;EAAA,KACK,IAAIT,OAAO,CAACW,WAAW,KAAK,MAAMrB,SAAS,CAAC,CAAC,CAAC,EAAE;IACnDF,cAAc,CAAC,iDAAiD,CAAC;IACjE,MAAMgB,MAAM,GAAG,MAAMlB,0BAA0B,CAAC;MAC9CoB,eAAe,EAAE,IAAI;MACrBC,IAAI,EAAEP,OAAO,CAACO;IAChB,CAAC,CAAC;IACF,IAAI,CAACH,MAAM,EAAEI,OAAO,CAACC,QAAQ,GAAG,CAAC;EACnC;EACA;EAAA,KACK;IACHrB,cAAc,CAAC,sDAAsD,CAAC;IACtEI,OAAO,CAACoB,IAAI,CAAC,CAAC;IACdJ,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;;AAEHjB,OAAO,CAACqB,KAAK,CAAC,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { frodo } from '@rockcarver/frodo-lib';
2
+ import { Option } from 'commander';
3
+ import { importFirstOAuth2ClientFromFile, importOAuth2ClientFromFile, importOAuth2ClientsFromFile, importOAuth2ClientsFromFiles } from '../../ops/OAuth2ClientOps';
4
+ import { printMessage, verboseMessage } from '../../utils/Console.js';
5
+ import { FrodoCommand } from '../FrodoCommand';
6
+ const {
7
+ getTokens
8
+ } = frodo.login;
9
+ const program = new FrodoCommand('frodo oauth client import');
10
+ program.description('Import OAuth2 applications.').addOption(new Option('-i, --app-id <id>', 'Application id. If specified, only one application is imported and the options -a and -A are ignored.')).addOption(new Option('-f, --file <file>', 'Name of the file to import.')).addOption(new Option('-a, --all', 'Import all applications from single file. Ignored with -i.')).addOption(new Option('-A, --all-separate', 'Import all applications from separate files (*.app.json) in the current directory. Ignored with -i or -a.')).addOption(new Option('--no-deps', 'Do not include any dependencies (scripts).')).action(
11
+ // implement command logic inside action handler
12
+ async (host, realm, user, password, options, command) => {
13
+ command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
14
+ // import by id
15
+ if (options.file && options.idpId && (await getTokens())) {
16
+ verboseMessage(`Importing OAuth2 application "${options.appId}"...`);
17
+ const status = await importOAuth2ClientFromFile(options.appId, options.file, {
18
+ deps: options.deps
19
+ });
20
+ if (!status) process.exitCode = 1;
21
+ }
22
+ // --all -a
23
+ else if (options.all && options.file && (await getTokens())) {
24
+ verboseMessage(`Importing all OAuth2 applications from a single file (${options.file})...`);
25
+ const status = await importOAuth2ClientsFromFile(options.file, {
26
+ deps: options.deps
27
+ });
28
+ if (!status) process.exitCode = 1;
29
+ }
30
+ // --all-separate -A
31
+ else if (options.allSeparate && !options.file && (await getTokens())) {
32
+ verboseMessage('Importing all OAuth2 applications from separate files in current directory...');
33
+ const status = await importOAuth2ClientsFromFiles({
34
+ deps: options.deps
35
+ });
36
+ if (!status) process.exitCode = 1;
37
+ }
38
+ // import first provider from file
39
+ else if (options.file && (await getTokens())) {
40
+ verboseMessage(`Importing first OAuth2 application from file "${options.file}"...`);
41
+ const status = await importFirstOAuth2ClientFromFile(options.file, {
42
+ deps: options.deps
43
+ });
44
+ if (!status) process.exitCode = 1;
45
+ }
46
+ // unrecognized combination of options or no options
47
+ else {
48
+ printMessage('Unrecognized combination of options or no options...');
49
+ program.help();
50
+ process.exitCode = 1;
51
+ }
52
+ }
53
+ // end command logic inside action handler
54
+ );
55
+
56
+ program.parse();
57
+ //# sourceMappingURL=oauth-client-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-client-import.js","names":["frodo","Option","importFirstOAuth2ClientFromFile","importOAuth2ClientFromFile","importOAuth2ClientsFromFile","importOAuth2ClientsFromFiles","printMessage","verboseMessage","FrodoCommand","getTokens","login","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","file","idpId","appId","status","deps","process","exitCode","all","allSeparate","help","parse"],"sources":["../../../src/cli/oauth/oauth-client-import.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport {\n importFirstOAuth2ClientFromFile,\n importOAuth2ClientFromFile,\n importOAuth2ClientsFromFile,\n importOAuth2ClientsFromFiles,\n} from '../../ops/OAuth2ClientOps';\nimport { printMessage, verboseMessage } from '../../utils/Console.js';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { getTokens } = frodo.login;\n\nconst program = new FrodoCommand('frodo oauth client import');\n\nprogram\n .description('Import OAuth2 applications.')\n .addOption(\n new Option(\n '-i, --app-id <id>',\n 'Application id. If specified, only one application is imported and the options -a and -A are ignored.'\n )\n )\n .addOption(new Option('-f, --file <file>', 'Name of the file to import.'))\n .addOption(\n new Option(\n '-a, --all',\n 'Import all applications from single file. Ignored with -i.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Import all applications from separate files (*.app.json) in the current directory. Ignored with -i or -a.'\n )\n )\n .addOption(\n new Option('--no-deps', 'Do not include any dependencies (scripts).')\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 // import by id\n if (options.file && options.idpId && (await getTokens())) {\n verboseMessage(`Importing OAuth2 application \"${options.appId}\"...`);\n const status = await importOAuth2ClientFromFile(\n options.appId,\n options.file,\n {\n deps: options.deps,\n }\n );\n if (!status) process.exitCode = 1;\n }\n // --all -a\n else if (options.all && options.file && (await getTokens())) {\n verboseMessage(\n `Importing all OAuth2 applications from a single file (${options.file})...`\n );\n const status = await importOAuth2ClientsFromFile(options.file, {\n deps: options.deps,\n });\n if (!status) process.exitCode = 1;\n }\n // --all-separate -A\n else if (options.allSeparate && !options.file && (await getTokens())) {\n verboseMessage(\n 'Importing all OAuth2 applications from separate files in current directory...'\n );\n const status = await importOAuth2ClientsFromFiles({\n deps: options.deps,\n });\n if (!status) process.exitCode = 1;\n }\n // import first provider from file\n else if (options.file && (await getTokens())) {\n verboseMessage(\n `Importing first OAuth2 application from file \"${options.file}\"...`\n );\n const status = await importFirstOAuth2ClientFromFile(options.file, {\n deps: options.deps,\n });\n if (!status) process.exitCode = 1;\n }\n // unrecognized combination of options or no options\n else {\n printMessage('Unrecognized combination of options or no options...');\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { frodo } from '@rockcarver/frodo-lib';
2
+ import { Option } from 'commander';
3
+ import { listOAuth2Clients } from '../../ops/OAuth2ClientOps';
4
+ import { verboseMessage } from '../../utils/Console.js';
5
+ import { FrodoCommand } from '../FrodoCommand';
6
+ const {
7
+ getTokens
8
+ } = frodo.login;
9
+ const program = new FrodoCommand('frodo oauth client list');
10
+ program.description('List OAuth2 applications.').addOption(new Option('-l, --long', 'Long with all fields.').default(false, 'false')).action(
11
+ // implement command logic inside action handler
12
+ async (host, realm, user, password, options, command) => {
13
+ command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
14
+ if (await getTokens()) {
15
+ verboseMessage(`Listing OAuth2 applications...`);
16
+ await listOAuth2Clients(options.long);
17
+ } else {
18
+ process.exitCode = 1;
19
+ }
20
+ }
21
+ // end command logic inside action handler
22
+ );
23
+
24
+ program.parse();
25
+ //# sourceMappingURL=oauth-client-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-client-list.js","names":["frodo","Option","listOAuth2Clients","verboseMessage","FrodoCommand","getTokens","login","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","long","process","exitCode","parse"],"sources":["../../../src/cli/oauth/oauth-client-list.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport { listOAuth2Clients } from '../../ops/OAuth2ClientOps';\nimport { verboseMessage } from '../../utils/Console.js';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { getTokens } = frodo.login;\n\nconst program = new FrodoCommand('frodo oauth client list');\n\nprogram\n .description('List OAuth2 applications.')\n .addOption(\n new Option('-l, --long', 'Long with all fields.').default(false, 'false')\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(`Listing OAuth2 applications...`);\n await listOAuth2Clients(options.long);\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,MAAM,QAAQ,WAAW;AAElC,SAASC,iBAAiB,QAAQ,2BAA2B;AAC7D,SAASC,cAAc,QAAQ,wBAAwB;AACvD,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAM;EAAEC;AAAU,CAAC,GAAGL,KAAK,CAACM,KAAK;AAEjC,MAAMC,OAAO,GAAG,IAAIH,YAAY,CAAC,yBAAyB,CAAC;AAE3DG,OAAO,CACJC,WAAW,CAAC,2BAA2B,CAAC,CACxCC,SAAS,CACR,IAAIR,MAAM,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAACS,OAAO,CAAC,KAAK,EAAE,OAAO,CAC1E,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,MAAMZ,SAAS,CAAC,CAAC,EAAE;IACrBF,cAAc,CAAE,gCAA+B,CAAC;IAChD,MAAMD,iBAAiB,CAACc,OAAO,CAACG,IAAI,CAAC;EACvC,CAAC,MAAM;IACLC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;;AAEHd,OAAO,CAACe,KAAK,CAAC,CAAC"}