@rockcarver/frodo-cli 2.0.0-28 → 2.0.0-29

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 (46) hide show
  1. package/CHANGELOG.md +22 -1
  2. package/esm/app.js +4 -0
  3. package/esm/app.js.map +1 -1
  4. package/esm/cli/FrodoCommand.js +10 -4
  5. package/esm/cli/FrodoCommand.js.map +1 -1
  6. package/esm/cli/admin/admin-get-access-token.js +1 -1
  7. package/esm/cli/admin/admin-get-access-token.js.map +1 -1
  8. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +1 -1
  9. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
  10. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +1 -1
  11. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
  12. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +1 -1
  13. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
  14. package/esm/cli/admin/admin-list-static-user-mappings.js +1 -1
  15. package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
  16. package/esm/cli/authz/authz-policy-delete.js +2 -2
  17. package/esm/cli/authz/authz-policy-delete.js.map +1 -1
  18. package/esm/cli/authz/authz-set-delete.js +2 -2
  19. package/esm/cli/authz/authz-set-delete.js.map +1 -1
  20. package/esm/cli/authz/authz-type-delete.js +3 -3
  21. package/esm/cli/authz/authz-type-delete.js.map +1 -1
  22. package/esm/cli/esv/esv-variable-delete.js +2 -2
  23. package/esm/cli/esv/esv-variable-delete.js.map +1 -1
  24. package/esm/cli/journey/journey-describe.js +1 -0
  25. package/esm/cli/journey/journey-describe.js.map +1 -1
  26. package/esm/cli/journey/journey-export.js +11 -1
  27. package/esm/cli/journey/journey-export.js.map +1 -1
  28. package/esm/ops/CirclesOfTrustOps.js +1 -1
  29. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  30. package/esm/ops/OAuth2ClientOps.js.map +1 -1
  31. package/esm/ops/PolicyOps.js +5 -15
  32. package/esm/ops/PolicyOps.js.map +1 -1
  33. package/esm/ops/PolicySetOps.js +11 -10
  34. package/esm/ops/PolicySetOps.js.map +1 -1
  35. package/esm/ops/RealmOps.js +3 -3
  36. package/esm/ops/RealmOps.js.map +1 -1
  37. package/esm/ops/ResourceTypeOps.js +11 -25
  38. package/esm/ops/ResourceTypeOps.js.map +1 -1
  39. package/esm/ops/Saml2Ops.js +2 -2
  40. package/esm/ops/Saml2Ops.js.map +1 -1
  41. package/esm/ops/SecretsOps.js +4 -4
  42. package/esm/ops/SecretsOps.js.map +1 -1
  43. package/esm/ops/VariablesOps.js +6 -4
  44. package/esm/ops/VariablesOps.js.map +1 -1
  45. package/global-jest-setup.js +4 -0
  46. package/package.json +4 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Saml2Ops.js","names":["frodo","fs","createObjectTable","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","saveTextToFile","decodeBase64","getFilePath","getWorkingDirectory","utils","getTypedFilename","saveJsonToFile","getRealmString","validateImport","readSaml2ProviderStubs","readSaml2Provider","readSaml2ProviderStub","getSaml2ProviderMetadataUrl","getSaml2ProviderMetadata","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","rawProviderData","_rev","metadataUrl","error","message","exportSaml2MetadataToFile","file","fileName","filePath","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","total","readFileSync","result"],"sources":["../../src/ops/Saml2Ops.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { type Saml2ProviderSkeleton } from '@rockcarver/frodo-lib/types/api/Saml2Api';\nimport { type Saml2ExportInterface } from '@rockcarver/frodo-lib/types/ops/Saml2Ops';\nimport fs from 'fs';\n\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';\n\nconst { decodeBase64, getFilePath, getWorkingDirectory } = frodo.utils;\nconst { getTypedFilename, saveJsonToFile, getRealmString, validateImport } =\n frodo.utils;\nconst {\n readSaml2ProviderStubs,\n readSaml2Provider,\n readSaml2ProviderStub,\n getSaml2ProviderMetadataUrl,\n getSaml2ProviderMetadata,\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 readSaml2ProviderStubs();\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 readSaml2ProviderStub(entityId);\n const { location } = stub;\n const roles = stub.roles.map((role: string) => roleMap[role]).join(', ');\n const rawProviderData = await readSaml2Provider(entityId);\n delete rawProviderData._id;\n delete rawProviderData._rev;\n rawProviderData.location = location;\n rawProviderData.roles = roles;\n rawProviderData.metadataUrl = getSaml2ProviderMetadataUrl(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 const filePath = getFilePath(fileName, true);\n createProgressBar(1, `Exporting metadata for: ${entityId}`);\n try {\n updateProgressBar(`Writing file ${filePath}`);\n const metaData = await getSaml2ProviderMetadata(entityId);\n saveTextToFile(metaData, filePath);\n updateProgressBar(`Exported provider ${entityId}`);\n stopProgressBar(\n // @ts-expect-error - brightCyan colors the string, even though it is not a property of string\n `Exported ${entityId.brightCyan} metadata to ${filePath.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 const filePath = getFilePath(fileName, true);\n try {\n createProgressBar(1, `Exporting provider ${entityId}`);\n const fileData = await exportSaml2Provider(entityId);\n saveJsonToFile(fileData, filePath);\n updateProgressBar(`Exported provider ${entityId}`);\n stopProgressBar(\n // @ts-expect-error - brightCyan colors the string, even though it is not a property of string\n `Exported ${entityId.brightCyan} to ${filePath.brightCyan}.`\n );\n } catch (err) {\n stopProgressBar(`${err}`);\n printMessage(err, 'error');\n }\n debugMessage(\n `cli.Saml2Ops.exportSaml2ProviderToFile: end [entityId=${entityId}, file=${filePath}]`\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, getFilePath(fileName, true));\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 readSaml2ProviderStubs();\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, getFilePath(fileName, true));\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(getFilePath(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(getFilePath(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(getFilePath(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(getWorkingDirectory());\n const jsonFiles = names\n .filter((name) => name.toLowerCase().endsWith('.saml.json'))\n .map((name) => getFilePath(name));\n createProgressBar(jsonFiles.length, 'Importing providers...');\n let total = 0;\n for (const file of jsonFiles) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n const result = await importSaml2Providers(fileData);\n total += result.length;\n updateProgressBar(\n `Imported ${result.length} provider(s) from ${file}.`\n );\n } else {\n printMessage(`Validation of ${file} failed!`, 'error');\n }\n } catch (error) {\n printMessage(\n `Error importing providers from ${file}: ${error.message}`,\n 'error'\n );\n }\n }\n stopProgressBar(\n `Imported ${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","getFilePath","getWorkingDirectory","utils","getTypedFilename","saveJsonToFile","getRealmString","validateImport","readSaml2ProviderStubs","readSaml2Provider","readSaml2ProviderStub","getSaml2ProviderMetadataUrl","getSaml2ProviderMetadata","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","rawProviderData","_rev","metadataUrl","error","message","exportSaml2MetadataToFile","file","fileName","filePath","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","total","readFileSync","result"],"sources":["../../src/ops/Saml2Ops.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { type Saml2ProviderSkeleton } from '@rockcarver/frodo-lib/types/api/Saml2Api';\nimport { type Saml2ExportInterface } from '@rockcarver/frodo-lib/types/ops/Saml2Ops';\nimport fs from 'fs';\n\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';\n\nconst { decodeBase64, getFilePath, getWorkingDirectory } = frodo.utils;\nconst { getTypedFilename, saveJsonToFile, getRealmString, validateImport } =\n frodo.utils;\nconst {\n readSaml2ProviderStubs,\n readSaml2Provider,\n readSaml2ProviderStub,\n getSaml2ProviderMetadataUrl,\n getSaml2ProviderMetadata,\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 readSaml2ProviderStubs();\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(), 'data');\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 readSaml2ProviderStub(entityId);\n const { location } = stub;\n const roles = stub.roles.map((role: string) => roleMap[role]).join(', ');\n const rawProviderData = await readSaml2Provider(entityId);\n delete rawProviderData._id;\n delete rawProviderData._rev;\n rawProviderData.location = location;\n rawProviderData.roles = roles;\n rawProviderData.metadataUrl = getSaml2ProviderMetadataUrl(entityId);\n const table = createObjectTable(rawProviderData);\n printMessage(table.toString(), 'data');\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 const filePath = getFilePath(fileName, true);\n createProgressBar(1, `Exporting metadata for: ${entityId}`);\n try {\n updateProgressBar(`Writing file ${filePath}`);\n const metaData = await getSaml2ProviderMetadata(entityId);\n saveTextToFile(metaData, filePath);\n updateProgressBar(`Exported provider ${entityId}`);\n stopProgressBar(\n // @ts-expect-error - brightCyan colors the string, even though it is not a property of string\n `Exported ${entityId.brightCyan} metadata to ${filePath.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 const filePath = getFilePath(fileName, true);\n try {\n createProgressBar(1, `Exporting provider ${entityId}`);\n const fileData = await exportSaml2Provider(entityId);\n saveJsonToFile(fileData, filePath);\n updateProgressBar(`Exported provider ${entityId}`);\n stopProgressBar(\n // @ts-expect-error - brightCyan colors the string, even though it is not a property of string\n `Exported ${entityId.brightCyan} to ${filePath.brightCyan}.`\n );\n } catch (err) {\n stopProgressBar(`${err}`);\n printMessage(err, 'error');\n }\n debugMessage(\n `cli.Saml2Ops.exportSaml2ProviderToFile: end [entityId=${entityId}, file=${filePath}]`\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, getFilePath(fileName, true));\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 readSaml2ProviderStubs();\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, getFilePath(fileName, true));\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(getFilePath(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(getFilePath(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(getFilePath(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(getWorkingDirectory());\n const jsonFiles = names\n .filter((name) => name.toLowerCase().endsWith('.saml.json'))\n .map((name) => getFilePath(name));\n createProgressBar(jsonFiles.length, 'Importing providers...');\n let total = 0;\n for (const file of jsonFiles) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n const result = await importSaml2Providers(fileData);\n total += result.length;\n updateProgressBar(\n `Imported ${result.length} provider(s) from ${file}.`\n );\n } else {\n printMessage(`Validation of ${file} failed!`, 'error');\n }\n } catch (error) {\n printMessage(\n `Error importing providers from ${file}: ${error.message}`,\n 'error'\n );\n }\n }\n stopProgressBar(\n `Imported ${total} provider(s) from ${jsonFiles.length} file(s).`\n );\n}\n"],"mappings":"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"}
@@ -75,7 +75,7 @@ export async function createSecret(id, value, description, encoding, useInPlaceh
75
75
  await _createSecret(id, value, description, encoding, useInPlaceholders);
76
76
  succeedSpinner(`Created secret ${id}`);
77
77
  } catch (error) {
78
- failSpinner(`Error: ${error.response.data.code} - ${error.response.data.message}`);
78
+ failSpinner(error.response ? `Error: ${error.response.data.code} - ${error.response.data.message}` : error);
79
79
  }
80
80
  }
81
81
 
@@ -157,7 +157,7 @@ export async function listSecretVersions(secretId) {
157
157
  content: version.version
158
158
  }, statusMap[version.status], version.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'], new Date(version.createDate).toLocaleString()]);
159
159
  }
160
- printMessage(table.toString());
160
+ printMessage(table.toString(), 'data');
161
161
  }
162
162
 
163
163
  /**
@@ -177,8 +177,8 @@ export async function describeSecret(secretId) {
177
177
  table.push(['Modifier UUID'['brightCyan'], secret.lastChangedBy]);
178
178
  table.push(['Encoding'['brightCyan'], secret.encoding]);
179
179
  table.push(['Use In Placeholders'['brightCyan'], secret.useInPlaceholders]);
180
- printMessage(table.toString());
181
- printMessage('\nSecret Versions:');
180
+ printMessage(table.toString(), 'data');
181
+ printMessage('\nSecret Versions:', 'data');
182
182
  await listSecretVersions(secretId);
183
183
  }
184
184
 
@@ -1 +1 @@
1
- {"version":3,"file":"SecretsOps.js","names":["frodo","state","createKeyValueTable","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","saveToFile","titleCase","wordwrap","resolveUserName","idm","managed","readSecrets","createSecret","_createSecret","readVersionsOfSecret","readSecret","exportSecret","exportSecrets","enableVersionOfSecret","disableVersionOfSecret","createVersionOfSecret","_createVersionOfSecret","updateSecretDescription","deleteSecret","_deleteSecret","deleteVersionOfSecret","_deleteVersionOfSecret","cloud","secret","getFilePath","utils","listSecrets","long","secrets","sort","a","b","_id","localeCompare","error","message","response","data","table","hAlign","content","push","activeVersion","loadedVersion","loaded","description","getUseBearerTokenForAmApis","lastChangedBy","Date","lastChangeDate","toUTCString","toString","forEach","id","value","encoding","useInPlaceholders","code","setSecretDescription","secretId","deleteSecrets","length","listSecretVersions","versions","statusMap","ENABLED","DISABLED","DESTROYED","version","status","createDate","toLocaleString","describeSecret","exportSecretToFile","file","fileName","filePath","fileData","brightCyan","err","exportSecretsToFile","getRealm","secretsExport","_error$response","exportSecretsToFiles","allSecretsData","activateVersionOfSecret","deactivateVersionOfSecret"],"sources":["../../src/ops/SecretsOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\n\nimport {\n createKeyValueTable,\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n saveToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport wordwrap from './utils/Wordwrap';\n\nconst { resolveUserName } = frodo.idm.managed;\nconst {\n readSecrets,\n createSecret: _createSecret,\n readVersionsOfSecret,\n readSecret,\n exportSecret,\n exportSecrets,\n enableVersionOfSecret,\n disableVersionOfSecret,\n createVersionOfSecret: _createVersionOfSecret,\n updateSecretDescription,\n deleteSecret: _deleteSecret,\n deleteVersionOfSecret: _deleteVersionOfSecret,\n} = frodo.cloud.secret;\n\nconst { getFilePath } = frodo.utils;\n\n/**\n * List secrets\n * @param {boolean} long Long version, all the fields\n */\nexport async function listSecrets(long) {\n let secrets = [];\n try {\n secrets = await readSecrets();\n secrets.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 { hAlign: 'right', content: 'Active\\nVersion'['brightCyan'] },\n { hAlign: 'right', content: 'Loaded\\nVersion'['brightCyan'] },\n 'Status'['brightCyan'],\n 'Description'['brightCyan'],\n 'Modifier'['brightCyan'],\n 'Modified (UTC)'['brightCyan'],\n ]);\n for (const secret of secrets) {\n table.push([\n secret._id,\n { hAlign: 'right', content: secret.activeVersion },\n { hAlign: 'right', content: secret.loadedVersion },\n secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n wordwrap(secret.description, 40),\n state.getUseBearerTokenForAmApis()\n ? secret.lastChangedBy\n : await resolveUserName('teammember', secret.lastChangedBy),\n new Date(secret.lastChangeDate).toUTCString(),\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n secrets.forEach((secret) => {\n printMessage(secret._id, 'data');\n });\n }\n}\n\n/**\n * Create secret\n * @param {String} id secret id\n * @param {String} value secret value\n * @param {String} description secret description\n * @param {String} encoding secret encoding\n * @param {boolean} useInPlaceholders use secret in placeholders\n */\nexport async function createSecret(\n id,\n value,\n description,\n encoding,\n useInPlaceholders\n) {\n showSpinner(`Creating secret ${id}...`);\n try {\n await _createSecret(id, value, description, encoding, useInPlaceholders);\n succeedSpinner(`Created secret ${id}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Set description of secret\n * @param {String} secretId secret id\n * @param {String} description secret description\n */\nexport async function setSecretDescription(secretId, description) {\n showSpinner(`Setting description of secret ${secretId}...`);\n try {\n await updateSecretDescription(secretId, description);\n succeedSpinner(`Set description of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete a secret\n * @param {String} secretId secret id\n */\nexport async function deleteSecret(secretId) {\n showSpinner(`Deleting secret ${secretId}...`);\n try {\n await _deleteSecret(secretId);\n succeedSpinner(`Deleted secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete all secrets\n */\nexport async function deleteSecrets() {\n try {\n const secrets = await readSecrets();\n createProgressBar(secrets.length, `Deleting secrets...`);\n for (const secret of secrets) {\n try {\n await _deleteSecret(secret._id);\n updateProgressBar(`Deleted secret ${secret._id}`);\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n }\n stopProgressBar(`Secrets deleted.`);\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n}\n\n/**\n * List all the versions of the secret\n * @param {String} secretId secret id\n */\nexport async function listSecretVersions(secretId) {\n let versions = [];\n try {\n versions = await readVersionsOfSecret(secretId);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.data, 'error');\n }\n const table = createTable([\n { hAlign: 'right', content: 'Version'['brightCyan'] },\n 'Status'['brightCyan'],\n 'Loaded'['brightCyan'],\n 'Created'['brightCyan'],\n ]);\n // versions.sort((a, b) => a._id.localeCompare(b._id));\n const statusMap = {\n ENABLED: 'active'['brightGreen'],\n DISABLED: 'inactive'['brightRed'],\n DESTROYED: 'deleted'['brightRed'],\n };\n for (const version of versions) {\n table.push([\n { hAlign: 'right', content: version.version },\n statusMap[version.status],\n version.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n new Date(version.createDate).toLocaleString(),\n ]);\n }\n printMessage(table.toString());\n}\n\n/**\n * Describe a secret\n * @param {String} secretId Secret id\n */\nexport async function describeSecret(secretId) {\n const secret = await readSecret(secretId);\n const table = createKeyValueTable();\n table.push(['Name'['brightCyan'], secret._id]);\n table.push(['Active Version'['brightCyan'], secret.activeVersion]);\n table.push(['Loaded Version'['brightCyan'], secret.loadedVersion]);\n table.push([\n 'Status'['brightCyan'],\n secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n ]);\n table.push(['Description'['brightCyan'], wordwrap(secret.description, 60)]);\n table.push([\n 'Modified'['brightCyan'],\n new Date(secret.lastChangeDate).toLocaleString(),\n ]);\n table.push([\n 'Modifier'['brightCyan'],\n await resolveUserName('teammember', secret.lastChangedBy),\n ]);\n table.push(['Modifier UUID'['brightCyan'], secret.lastChangedBy]);\n table.push(['Encoding'['brightCyan'], secret.encoding]);\n table.push(['Use In Placeholders'['brightCyan'], secret.useInPlaceholders]);\n printMessage(table.toString());\n printMessage('\\nSecret Versions:');\n await listSecretVersions(secretId);\n}\n\n/**\n * Export a single secret to file\n * @param {String} secretId Secret id\n * @param {String} file Optional filename\n */\nexport async function exportSecretToFile(\n secretId: string,\n file: string | null\n) {\n debugMessage(\n `Cli.SecretsOps.exportSecretToFile: start [secretId=${secretId}, file=${file}]`\n );\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(secretId, 'secret');\n }\n const filePath = getFilePath(fileName, true);\n try {\n createProgressBar(1, `Exporting secret ${secretId}`);\n const fileData = await exportSecret(secretId);\n saveJsonToFile(fileData, filePath);\n updateProgressBar(`Exported secret ${secretId}`);\n stopProgressBar(\n // @ts-expect-error - brightCyan colors the string, even though it is not a property of string\n `Exported ${secretId.brightCyan} to ${filePath.brightCyan}.`\n );\n } catch (err) {\n stopProgressBar(`${err}`);\n printMessage(err, 'error');\n }\n debugMessage(\n `Cli.SecretsOps.exportSecretToFile: end [secretId=${secretId}, file=${file}]`\n );\n}\n\n/**\n * Export all secrets to single file\n * @param {string} file Optional filename\n */\nexport async function exportSecretsToFile(file: string) {\n debugMessage(`Cli.SecretsOps.exportSecretsToFile: start [file=${file}]`);\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(\n `all${titleCase(state.getRealm())}Secrets`,\n 'secret'\n );\n }\n try {\n const secretsExport = await exportSecrets();\n saveJsonToFile(secretsExport, getFilePath(fileName, true));\n } catch (error) {\n printMessage(error.message, 'error');\n printMessage(`exportSecretsToFile: ${error.response?.status}`, 'error');\n }\n debugMessage(`Cli.SecretsOps.exportSecretsToFile: end [file=${file}]`);\n}\n\n/**\n * Export all secrets to individual files\n */\nexport async function exportSecretsToFiles() {\n const allSecretsData = await readSecrets();\n createProgressBar(allSecretsData.length, 'Exporting secrets');\n for (const secret of allSecretsData) {\n updateProgressBar(`Writing secret ${secret._id}`);\n const fileName = getTypedFilename(secret._id, 'secret');\n saveToFile('secret', secret, '_id', getFilePath(fileName, true));\n }\n stopProgressBar(`${allSecretsData.length} secrets exported.`);\n}\n\n/**\n * Create new version of secret\n * @param {String} secretId secret id\n * @param {String} value secret value\n */\nexport async function createVersionOfSecret(secretId, value) {\n showSpinner(`Creating new version of secret ${secretId}...`);\n try {\n const version = await _createVersionOfSecret(secretId, value);\n succeedSpinner(`Created version ${version.version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Activate a version of a secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function activateVersionOfSecret(secretId, version) {\n showSpinner(`Activating version ${version} of secret ${secretId}...`);\n try {\n await enableVersionOfSecret(secretId, version);\n succeedSpinner(`Activated version ${version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Deactivate a version of a secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function deactivateVersionOfSecret(secretId, version) {\n showSpinner(`Deactivating version ${version} of secret ${secretId}...`);\n try {\n await disableVersionOfSecret(secretId, version);\n succeedSpinner(`Deactivated version ${version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete version of secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function deleteVersionOfSecret(secretId, version) {\n showSpinner(`Deleting version ${version} of secret ${secretId}...`);\n try {\n await _deleteVersionOfSecret(secretId, version);\n succeedSpinner(`Deleted version ${version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SecretsOps.js","names":["frodo","state","createKeyValueTable","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","saveToFile","titleCase","wordwrap","resolveUserName","idm","managed","readSecrets","createSecret","_createSecret","readVersionsOfSecret","readSecret","exportSecret","exportSecrets","enableVersionOfSecret","disableVersionOfSecret","createVersionOfSecret","_createVersionOfSecret","updateSecretDescription","deleteSecret","_deleteSecret","deleteVersionOfSecret","_deleteVersionOfSecret","cloud","secret","getFilePath","utils","listSecrets","long","secrets","sort","a","b","_id","localeCompare","error","message","response","data","table","hAlign","content","push","activeVersion","loadedVersion","loaded","description","getUseBearerTokenForAmApis","lastChangedBy","Date","lastChangeDate","toUTCString","toString","forEach","id","value","encoding","useInPlaceholders","code","setSecretDescription","secretId","deleteSecrets","length","listSecretVersions","versions","statusMap","ENABLED","DISABLED","DESTROYED","version","status","createDate","toLocaleString","describeSecret","exportSecretToFile","file","fileName","filePath","fileData","brightCyan","err","exportSecretsToFile","getRealm","secretsExport","_error$response","exportSecretsToFiles","allSecretsData","activateVersionOfSecret","deactivateVersionOfSecret"],"sources":["../../src/ops/SecretsOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\n\nimport {\n createKeyValueTable,\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n saveToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport wordwrap from './utils/Wordwrap';\n\nconst { resolveUserName } = frodo.idm.managed;\nconst {\n readSecrets,\n createSecret: _createSecret,\n readVersionsOfSecret,\n readSecret,\n exportSecret,\n exportSecrets,\n enableVersionOfSecret,\n disableVersionOfSecret,\n createVersionOfSecret: _createVersionOfSecret,\n updateSecretDescription,\n deleteSecret: _deleteSecret,\n deleteVersionOfSecret: _deleteVersionOfSecret,\n} = frodo.cloud.secret;\n\nconst { getFilePath } = frodo.utils;\n\n/**\n * List secrets\n * @param {boolean} long Long version, all the fields\n */\nexport async function listSecrets(long) {\n let secrets = [];\n try {\n secrets = await readSecrets();\n secrets.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 { hAlign: 'right', content: 'Active\\nVersion'['brightCyan'] },\n { hAlign: 'right', content: 'Loaded\\nVersion'['brightCyan'] },\n 'Status'['brightCyan'],\n 'Description'['brightCyan'],\n 'Modifier'['brightCyan'],\n 'Modified (UTC)'['brightCyan'],\n ]);\n for (const secret of secrets) {\n table.push([\n secret._id,\n { hAlign: 'right', content: secret.activeVersion },\n { hAlign: 'right', content: secret.loadedVersion },\n secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n wordwrap(secret.description, 40),\n state.getUseBearerTokenForAmApis()\n ? secret.lastChangedBy\n : await resolveUserName('teammember', secret.lastChangedBy),\n new Date(secret.lastChangeDate).toUTCString(),\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n secrets.forEach((secret) => {\n printMessage(secret._id, 'data');\n });\n }\n}\n\n/**\n * Create secret\n * @param {String} id secret id\n * @param {String} value secret value\n * @param {String} description secret description\n * @param {String} encoding secret encoding\n * @param {boolean} useInPlaceholders use secret in placeholders\n */\nexport async function createSecret(\n id,\n value,\n description,\n encoding,\n useInPlaceholders\n) {\n showSpinner(`Creating secret ${id}...`);\n try {\n await _createSecret(id, value, description, encoding, useInPlaceholders);\n succeedSpinner(`Created secret ${id}`);\n } catch (error) {\n failSpinner(\n error.response\n ? `Error: ${error.response.data.code} - ${error.response.data.message}`\n : error\n );\n }\n}\n\n/**\n * Set description of secret\n * @param {String} secretId secret id\n * @param {String} description secret description\n */\nexport async function setSecretDescription(secretId, description) {\n showSpinner(`Setting description of secret ${secretId}...`);\n try {\n await updateSecretDescription(secretId, description);\n succeedSpinner(`Set description of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete a secret\n * @param {String} secretId secret id\n */\nexport async function deleteSecret(secretId) {\n showSpinner(`Deleting secret ${secretId}...`);\n try {\n await _deleteSecret(secretId);\n succeedSpinner(`Deleted secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete all secrets\n */\nexport async function deleteSecrets() {\n try {\n const secrets = await readSecrets();\n createProgressBar(secrets.length, `Deleting secrets...`);\n for (const secret of secrets) {\n try {\n await _deleteSecret(secret._id);\n updateProgressBar(`Deleted secret ${secret._id}`);\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n }\n stopProgressBar(`Secrets deleted.`);\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n}\n\n/**\n * List all the versions of the secret\n * @param {String} secretId secret id\n */\nexport async function listSecretVersions(secretId) {\n let versions = [];\n try {\n versions = await readVersionsOfSecret(secretId);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.data, 'error');\n }\n const table = createTable([\n { hAlign: 'right', content: 'Version'['brightCyan'] },\n 'Status'['brightCyan'],\n 'Loaded'['brightCyan'],\n 'Created'['brightCyan'],\n ]);\n // versions.sort((a, b) => a._id.localeCompare(b._id));\n const statusMap = {\n ENABLED: 'active'['brightGreen'],\n DISABLED: 'inactive'['brightRed'],\n DESTROYED: 'deleted'['brightRed'],\n };\n for (const version of versions) {\n table.push([\n { hAlign: 'right', content: version.version },\n statusMap[version.status],\n version.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n new Date(version.createDate).toLocaleString(),\n ]);\n }\n printMessage(table.toString(), 'data');\n}\n\n/**\n * Describe a secret\n * @param {String} secretId Secret id\n */\nexport async function describeSecret(secretId) {\n const secret = await readSecret(secretId);\n const table = createKeyValueTable();\n table.push(['Name'['brightCyan'], secret._id]);\n table.push(['Active Version'['brightCyan'], secret.activeVersion]);\n table.push(['Loaded Version'['brightCyan'], secret.loadedVersion]);\n table.push([\n 'Status'['brightCyan'],\n secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n ]);\n table.push(['Description'['brightCyan'], wordwrap(secret.description, 60)]);\n table.push([\n 'Modified'['brightCyan'],\n new Date(secret.lastChangeDate).toLocaleString(),\n ]);\n table.push([\n 'Modifier'['brightCyan'],\n await resolveUserName('teammember', secret.lastChangedBy),\n ]);\n table.push(['Modifier UUID'['brightCyan'], secret.lastChangedBy]);\n table.push(['Encoding'['brightCyan'], secret.encoding]);\n table.push(['Use In Placeholders'['brightCyan'], secret.useInPlaceholders]);\n printMessage(table.toString(), 'data');\n printMessage('\\nSecret Versions:', 'data');\n await listSecretVersions(secretId);\n}\n\n/**\n * Export a single secret to file\n * @param {String} secretId Secret id\n * @param {String} file Optional filename\n */\nexport async function exportSecretToFile(\n secretId: string,\n file: string | null\n) {\n debugMessage(\n `Cli.SecretsOps.exportSecretToFile: start [secretId=${secretId}, file=${file}]`\n );\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(secretId, 'secret');\n }\n const filePath = getFilePath(fileName, true);\n try {\n createProgressBar(1, `Exporting secret ${secretId}`);\n const fileData = await exportSecret(secretId);\n saveJsonToFile(fileData, filePath);\n updateProgressBar(`Exported secret ${secretId}`);\n stopProgressBar(\n // @ts-expect-error - brightCyan colors the string, even though it is not a property of string\n `Exported ${secretId.brightCyan} to ${filePath.brightCyan}.`\n );\n } catch (err) {\n stopProgressBar(`${err}`);\n printMessage(err, 'error');\n }\n debugMessage(\n `Cli.SecretsOps.exportSecretToFile: end [secretId=${secretId}, file=${file}]`\n );\n}\n\n/**\n * Export all secrets to single file\n * @param {string} file Optional filename\n */\nexport async function exportSecretsToFile(file: string) {\n debugMessage(`Cli.SecretsOps.exportSecretsToFile: start [file=${file}]`);\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(\n `all${titleCase(state.getRealm())}Secrets`,\n 'secret'\n );\n }\n try {\n const secretsExport = await exportSecrets();\n saveJsonToFile(secretsExport, getFilePath(fileName, true));\n } catch (error) {\n printMessage(error.message, 'error');\n printMessage(`exportSecretsToFile: ${error.response?.status}`, 'error');\n }\n debugMessage(`Cli.SecretsOps.exportSecretsToFile: end [file=${file}]`);\n}\n\n/**\n * Export all secrets to individual files\n */\nexport async function exportSecretsToFiles() {\n const allSecretsData = await readSecrets();\n createProgressBar(allSecretsData.length, 'Exporting secrets');\n for (const secret of allSecretsData) {\n updateProgressBar(`Writing secret ${secret._id}`);\n const fileName = getTypedFilename(secret._id, 'secret');\n saveToFile('secret', secret, '_id', getFilePath(fileName, true));\n }\n stopProgressBar(`${allSecretsData.length} secrets exported.`);\n}\n\n/**\n * Create new version of secret\n * @param {String} secretId secret id\n * @param {String} value secret value\n */\nexport async function createVersionOfSecret(secretId, value) {\n showSpinner(`Creating new version of secret ${secretId}...`);\n try {\n const version = await _createVersionOfSecret(secretId, value);\n succeedSpinner(`Created version ${version.version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Activate a version of a secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function activateVersionOfSecret(secretId, version) {\n showSpinner(`Activating version ${version} of secret ${secretId}...`);\n try {\n await enableVersionOfSecret(secretId, version);\n succeedSpinner(`Activated version ${version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Deactivate a version of a secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function deactivateVersionOfSecret(secretId, version) {\n showSpinner(`Deactivating version ${version} of secret ${secretId}...`);\n try {\n await disableVersionOfSecret(secretId, version);\n succeedSpinner(`Deactivated version ${version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete version of secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function deleteVersionOfSecret(secretId, version) {\n showSpinner(`Deleting version ${version} of secret ${secretId}...`);\n try {\n await _deleteVersionOfSecret(secretId, version);\n succeedSpinner(`Deleted version ${version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n"],"mappings":"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"}
@@ -14,6 +14,8 @@ const {
14
14
  readVariable,
15
15
  exportVariable,
16
16
  exportVariables,
17
+ deleteVariable,
18
+ updateVariableDescription,
17
19
  updateVariable: _updateVariable
18
20
  } = frodo.cloud.variable;
19
21
 
@@ -56,7 +58,7 @@ export async function createVariable(variableId, value, description, type = 'str
56
58
  await _updateVariable(variableId, value, description, type);
57
59
  succeedSpinner(`Created variable ${variableId}`);
58
60
  } catch (error) {
59
- failSpinner(`Error: ${error.response.data.code} - ${error.response.data.message}`);
61
+ failSpinner(error.response ? `Error: ${error.response.data.code} - ${error.response.data.message}` : error);
60
62
  }
61
63
  }
62
64
 
@@ -84,7 +86,7 @@ export async function updateVariable(variableId, value, description) {
84
86
  export async function setVariableDescription(variableId, description) {
85
87
  showSpinner(`Setting description of variable ${variableId}...`);
86
88
  try {
87
- await setVariableDescription(variableId, description);
89
+ await updateVariableDescription(variableId, description);
88
90
  succeedSpinner(`Set description of variable ${variableId}`);
89
91
  } catch (error) {
90
92
  failSpinner(`Error: ${error.response.data.code} - ${error.response.data.message}`);
@@ -95,7 +97,7 @@ export async function setVariableDescription(variableId, description) {
95
97
  * Delete a variable
96
98
  * @param {string} variableId variable id
97
99
  */
98
- export async function deleteVariable(variableId) {
100
+ export async function deleteVariableById(variableId) {
99
101
  showSpinner(`Deleting variable ${variableId}...`);
100
102
  try {
101
103
  await deleteVariable(variableId);
@@ -141,7 +143,7 @@ export async function describeVariable(variableId) {
141
143
  table.push(['Modified'['brightCyan'], new Date(variable.lastChangeDate).toLocaleString()]);
142
144
  table.push(['Modifier'['brightCyan'], await resolveUserName('teammember', variable.lastChangedBy)]);
143
145
  table.push(['Modifier UUID'['brightCyan'], variable.lastChangedBy]);
144
- printMessage(table.toString());
146
+ printMessage(table.toString(), 'data');
145
147
  }
146
148
 
147
149
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"VariablesOps.js","names":["frodo","state","createKeyValueTable","createProgressBar","createProgressIndicator","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","stopProgressIndicator","succeedSpinner","updateProgressBar","updateProgressIndicator","getTypedFilename","saveJsonToFile","saveToFile","titleCase","wordwrap","decodeBase64","getFilePath","utils","resolveUserName","idm","managed","readVariables","readVariable","exportVariable","exportVariables","updateVariable","_updateVariable","cloud","variable","listVariables","long","variables","sort","a","b","_id","localeCompare","error","message","response","data","table","push","valueBase64","loaded","description","getUseBearerTokenForAmApis","lastChangedBy","Date","lastChangeDate","toUTCString","toString","forEach","createVariable","variableId","value","type","code","setVariableDescription","deleteVariable","deleteVariables","length","describeVariable","toLocaleString","exportVariableToFile","file","noDecode","fileName","filePath","fileData","brightCyan","err","exportVariablesToFile","getRealm","variablesExport","_error$response","status","exportVariablesToFiles","variableList"],"sources":["../../src/ops/VariablesOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { VariableExpressionType } from '@rockcarver/frodo-lib/types/api/cloud/VariablesApi';\n\nimport {\n createKeyValueTable,\n createProgressBar,\n createProgressIndicator,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n stopProgressIndicator,\n succeedSpinner,\n updateProgressBar,\n updateProgressIndicator,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n saveToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport wordwrap from './utils/Wordwrap';\n\nconst { decodeBase64, getFilePath } = frodo.utils;\nconst { resolveUserName } = frodo.idm.managed;\nconst {\n readVariables,\n readVariable,\n exportVariable,\n exportVariables,\n updateVariable: _updateVariable,\n} = 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 readVariables();\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 (UTC)'['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 state.getUseBearerTokenForAmApis()\n ? variable.lastChangedBy\n : await resolveUserName('teammember', variable.lastChangedBy),\n new Date(variable.lastChangeDate).toUTCString(),\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n variables.forEach((variable) => {\n printMessage(variable._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 _updateVariable(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 _updateVariable(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 readVariables();\n createProgressBar(variables.length, `Deleting variable...`);\n for (const variable of variables) {\n try {\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 readVariable(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\n/**\n * Export a single variable to file\n * @param {String} variableId Variable id\n * @param {String} file Optional filename\n * @param {boolean} noDecode Do not include decoded variable value in export\n */\nexport async function exportVariableToFile(\n variableId: string,\n file: string | null,\n noDecode: boolean\n) {\n debugMessage(\n `Cli.VariablesOps.exportVariableToFile: start [variableId=${variableId}, file=${file}]`\n );\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(variableId, 'variable');\n }\n const filePath = getFilePath(fileName, true);\n try {\n createProgressBar(1, `Exporting variable ${variableId}`);\n const fileData = await exportVariable(variableId, noDecode);\n saveJsonToFile(fileData, filePath);\n updateProgressBar(`Exported variable ${variableId}`);\n stopProgressBar(\n // @ts-expect-error - brightCyan colors the string, even though it is not a property of string\n `Exported ${variableId.brightCyan} to ${filePath.brightCyan}.`\n );\n } catch (err) {\n stopProgressBar(`${err}`);\n printMessage(err, 'error');\n }\n debugMessage(\n `Cli.VariablesOps.exportVariableToFile: end [variableId=${variableId}, file=${file}]`\n );\n}\n\n/**\n * Export all variables to single file\n * @param {string} file Optional filename\n * @param {boolean} noDecode Do not include decoded variable value in export\n */\nexport async function exportVariablesToFile(\n file: string | null,\n noDecode: boolean\n) {\n debugMessage(`Cli.VariablesOps.exportVariablesToFile: start [file=${file}]`);\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(\n `all${titleCase(state.getRealm())}Variables`,\n 'variable'\n );\n }\n try {\n const variablesExport = await exportVariables(noDecode);\n saveJsonToFile(variablesExport, getFilePath(fileName, true));\n } catch (error) {\n printMessage(error.message, 'error');\n printMessage(`exportVariablesToFile: ${error.response?.status}`, 'error');\n }\n debugMessage(`Cli.VariablesOps.exportVariablesToFile: end [file=${file}]`);\n}\n\n/**\n * Export all variables to seperate files\n * @param {boolean} noDecode Do not include decoded variable value in export\n */\nexport async function exportVariablesToFiles(noDecode: boolean) {\n const variableList = await readVariables();\n createProgressIndicator(\n 'determinate',\n variableList.length,\n 'Exporting variables'\n );\n for (const variable of variableList) {\n if (!noDecode) {\n variable.value = decodeBase64(variable.valueBase64);\n }\n updateProgressIndicator(`Writing variable ${variable._id}`);\n const fileName = getTypedFilename(variable._id, 'variable');\n saveToFile('variable', variable, '_id', getFilePath(fileName, true));\n }\n stopProgressIndicator(`${variableList.length} variables exported`);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"VariablesOps.js","names":["frodo","state","createKeyValueTable","createProgressBar","createProgressIndicator","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","stopProgressIndicator","succeedSpinner","updateProgressBar","updateProgressIndicator","getTypedFilename","saveJsonToFile","saveToFile","titleCase","wordwrap","decodeBase64","getFilePath","utils","resolveUserName","idm","managed","readVariables","readVariable","exportVariable","exportVariables","deleteVariable","updateVariableDescription","updateVariable","_updateVariable","cloud","variable","listVariables","long","variables","sort","a","b","_id","localeCompare","error","message","response","data","table","push","valueBase64","loaded","description","getUseBearerTokenForAmApis","lastChangedBy","Date","lastChangeDate","toUTCString","toString","forEach","createVariable","variableId","value","type","code","setVariableDescription","deleteVariableById","deleteVariables","length","describeVariable","toLocaleString","exportVariableToFile","file","noDecode","fileName","filePath","fileData","brightCyan","err","exportVariablesToFile","getRealm","variablesExport","_error$response","status","exportVariablesToFiles","variableList"],"sources":["../../src/ops/VariablesOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { VariableExpressionType } from '@rockcarver/frodo-lib/types/api/cloud/VariablesApi';\n\nimport {\n createKeyValueTable,\n createProgressBar,\n createProgressIndicator,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n stopProgressIndicator,\n succeedSpinner,\n updateProgressBar,\n updateProgressIndicator,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n saveToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport wordwrap from './utils/Wordwrap';\n\nconst { decodeBase64, getFilePath } = frodo.utils;\nconst { resolveUserName } = frodo.idm.managed;\nconst {\n readVariables,\n readVariable,\n exportVariable,\n exportVariables,\n deleteVariable,\n updateVariableDescription,\n updateVariable: _updateVariable,\n} = 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 readVariables();\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 (UTC)'['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 state.getUseBearerTokenForAmApis()\n ? variable.lastChangedBy\n : await resolveUserName('teammember', variable.lastChangedBy),\n new Date(variable.lastChangeDate).toUTCString(),\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n variables.forEach((variable) => {\n printMessage(variable._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 _updateVariable(variableId, value, description, type);\n succeedSpinner(`Created variable ${variableId}`);\n } catch (error) {\n failSpinner(\n error.response\n ? `Error: ${error.response.data.code} - ${error.response.data.message}`\n : error\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 _updateVariable(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 updateVariableDescription(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 deleteVariableById(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 readVariables();\n createProgressBar(variables.length, `Deleting variable...`);\n for (const variable of variables) {\n try {\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 readVariable(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(), 'data');\n}\n\n/**\n * Export a single variable to file\n * @param {String} variableId Variable id\n * @param {String} file Optional filename\n * @param {boolean} noDecode Do not include decoded variable value in export\n */\nexport async function exportVariableToFile(\n variableId: string,\n file: string | null,\n noDecode: boolean\n) {\n debugMessage(\n `Cli.VariablesOps.exportVariableToFile: start [variableId=${variableId}, file=${file}]`\n );\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(variableId, 'variable');\n }\n const filePath = getFilePath(fileName, true);\n try {\n createProgressBar(1, `Exporting variable ${variableId}`);\n const fileData = await exportVariable(variableId, noDecode);\n saveJsonToFile(fileData, filePath);\n updateProgressBar(`Exported variable ${variableId}`);\n stopProgressBar(\n // @ts-expect-error - brightCyan colors the string, even though it is not a property of string\n `Exported ${variableId.brightCyan} to ${filePath.brightCyan}.`\n );\n } catch (err) {\n stopProgressBar(`${err}`);\n printMessage(err, 'error');\n }\n debugMessage(\n `Cli.VariablesOps.exportVariableToFile: end [variableId=${variableId}, file=${file}]`\n );\n}\n\n/**\n * Export all variables to single file\n * @param {string} file Optional filename\n * @param {boolean} noDecode Do not include decoded variable value in export\n */\nexport async function exportVariablesToFile(\n file: string | null,\n noDecode: boolean\n) {\n debugMessage(`Cli.VariablesOps.exportVariablesToFile: start [file=${file}]`);\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(\n `all${titleCase(state.getRealm())}Variables`,\n 'variable'\n );\n }\n try {\n const variablesExport = await exportVariables(noDecode);\n saveJsonToFile(variablesExport, getFilePath(fileName, true));\n } catch (error) {\n printMessage(error.message, 'error');\n printMessage(`exportVariablesToFile: ${error.response?.status}`, 'error');\n }\n debugMessage(`Cli.VariablesOps.exportVariablesToFile: end [file=${file}]`);\n}\n\n/**\n * Export all variables to seperate files\n * @param {boolean} noDecode Do not include decoded variable value in export\n */\nexport async function exportVariablesToFiles(noDecode: boolean) {\n const variableList = await readVariables();\n createProgressIndicator(\n 'determinate',\n variableList.length,\n 'Exporting variables'\n );\n for (const variable of variableList) {\n if (!noDecode) {\n variable.value = decodeBase64(variable.valueBase64);\n }\n updateProgressIndicator(`Writing variable ${variable._id}`);\n const fileName = getTypedFilename(variable._id, 'variable');\n saveToFile('variable', variable, '_id', getFilePath(fileName, true));\n }\n stopProgressIndicator(`${variableList.length} variables exported`);\n}\n"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export default async () => {
2
+ process.env.TZ = 'UTC';
3
+ process.env.FRODO_NO_CACHE = 'true';
4
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rockcarver/frodo-cli",
3
- "version": "2.0.0-28",
3
+ "version": "2.0.0-29",
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": [
@@ -52,7 +52,8 @@
52
52
  "testTimeout": 30000,
53
53
  "testMatch": [
54
54
  "**/?(*.)(test).js"
55
- ]
55
+ ],
56
+ "globalSetup": "./global-jest-setup.js"
56
57
  },
57
58
  "contributors": [
58
59
  {
@@ -107,7 +108,7 @@
107
108
  ]
108
109
  },
109
110
  "dependencies": {
110
- "@rockcarver/frodo-lib": "2.0.0-46",
111
+ "@rockcarver/frodo-lib": "2.0.0-47",
111
112
  "chokidar": "^3.5.3",
112
113
  "cli-progress": "^3.11.2",
113
114
  "cli-table3": "^0.6.3",