@rockcarver/frodo-cli 2.0.0-37 → 2.0.0-39

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 (104) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/esm/cli/_template/something-else-export.js +1 -1
  3. package/esm/cli/_template/something-else-export.js.map +1 -1
  4. package/esm/cli/_template/something-export.js +1 -1
  5. package/esm/cli/_template/something-export.js.map +1 -1
  6. package/esm/cli/_template/something-other-export.js +1 -1
  7. package/esm/cli/_template/something-other-export.js.map +1 -1
  8. package/esm/cli/admin/admin-federation-export.js +4 -4
  9. package/esm/cli/admin/admin-federation-export.js.map +1 -1
  10. package/esm/cli/agent/agent-export.js +4 -4
  11. package/esm/cli/agent/agent-export.js.map +1 -1
  12. package/esm/cli/agent/agent-gateway-export.js +4 -4
  13. package/esm/cli/agent/agent-gateway-export.js.map +1 -1
  14. package/esm/cli/agent/agent-java-export.js +4 -4
  15. package/esm/cli/agent/agent-java-export.js.map +1 -1
  16. package/esm/cli/agent/agent-web-export.js +4 -4
  17. package/esm/cli/agent/agent-web-export.js.map +1 -1
  18. package/esm/cli/app/app-export.js +4 -4
  19. package/esm/cli/app/app-export.js.map +1 -1
  20. package/esm/cli/authn/authn-export.js +2 -2
  21. package/esm/cli/authn/authn-export.js.map +1 -1
  22. package/esm/cli/authz/authz-policy-export.js +6 -6
  23. package/esm/cli/authz/authz-policy-export.js.map +1 -1
  24. package/esm/cli/authz/authz-set-export.js +4 -4
  25. package/esm/cli/authz/authz-set-export.js.map +1 -1
  26. package/esm/cli/authz/authz-type-export.js +5 -5
  27. package/esm/cli/authz/authz-type-export.js.map +1 -1
  28. package/esm/cli/config/config-export.js +3 -3
  29. package/esm/cli/config/config-export.js.map +1 -1
  30. package/esm/cli/email/email-template-export.js +4 -4
  31. package/esm/cli/email/email-template-export.js.map +1 -1
  32. package/esm/cli/esv/esv-secret-export.js +4 -4
  33. package/esm/cli/esv/esv-secret-export.js.map +1 -1
  34. package/esm/cli/esv/esv-secret-list.js +2 -2
  35. package/esm/cli/esv/esv-secret-list.js.map +1 -1
  36. package/esm/cli/esv/esv-variable-export.js +4 -4
  37. package/esm/cli/esv/esv-variable-export.js.map +1 -1
  38. package/esm/cli/esv/esv-variable-list.js +2 -2
  39. package/esm/cli/esv/esv-variable-list.js.map +1 -1
  40. package/esm/cli/idp/idp-export.js +4 -4
  41. package/esm/cli/idp/idp-export.js.map +1 -1
  42. package/esm/cli/journey/journey-describe.js +3 -1
  43. package/esm/cli/journey/journey-describe.js.map +1 -1
  44. package/esm/cli/journey/journey-export.js +4 -4
  45. package/esm/cli/journey/journey-export.js.map +1 -1
  46. package/esm/cli/oauth/oauth-client-export.js +4 -4
  47. package/esm/cli/oauth/oauth-client-export.js.map +1 -1
  48. package/esm/cli/saml/saml-cot-export.js +4 -4
  49. package/esm/cli/saml/saml-cot-export.js.map +1 -1
  50. package/esm/cli/saml/saml-export.js +4 -4
  51. package/esm/cli/saml/saml-export.js.map +1 -1
  52. package/esm/cli/script/script-export.js +4 -4
  53. package/esm/cli/script/script-export.js.map +1 -1
  54. package/esm/cli/script/script-list.js +2 -2
  55. package/esm/cli/script/script-list.js.map +1 -1
  56. package/esm/cli/service/service-export.js +4 -4
  57. package/esm/cli/service/service-export.js.map +1 -1
  58. package/esm/cli/theme/theme-export.js +5 -5
  59. package/esm/cli/theme/theme-export.js.map +1 -1
  60. package/esm/ops/AdminFederationOps.js +11 -7
  61. package/esm/ops/AdminFederationOps.js.map +1 -1
  62. package/esm/ops/AgentOps.js +39 -25
  63. package/esm/ops/AgentOps.js.map +1 -1
  64. package/esm/ops/ApplicationOps.js +11 -8
  65. package/esm/ops/ApplicationOps.js.map +1 -1
  66. package/esm/ops/AuthenticationSettingsOps.js +4 -3
  67. package/esm/ops/AuthenticationSettingsOps.js.map +1 -1
  68. package/esm/ops/CirclesOfTrustOps.js +12 -7
  69. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  70. package/esm/ops/ConfigOps.js +9 -7
  71. package/esm/ops/ConfigOps.js.map +1 -1
  72. package/esm/ops/EmailTemplateOps.js +11 -7
  73. package/esm/ops/EmailTemplateOps.js.map +1 -1
  74. package/esm/ops/IdmOps.js +3 -2
  75. package/esm/ops/IdmOps.js.map +1 -1
  76. package/esm/ops/IdpOps.js +14 -7
  77. package/esm/ops/IdpOps.js.map +1 -1
  78. package/esm/ops/JourneyOps.js +15 -6
  79. package/esm/ops/JourneyOps.js.map +1 -1
  80. package/esm/ops/OAuth2ClientOps.js +10 -7
  81. package/esm/ops/OAuth2ClientOps.js.map +1 -1
  82. package/esm/ops/PolicyOps.js +18 -11
  83. package/esm/ops/PolicyOps.js.map +1 -1
  84. package/esm/ops/PolicySetOps.js +12 -7
  85. package/esm/ops/PolicySetOps.js.map +1 -1
  86. package/esm/ops/ResourceTypeOps.js +15 -9
  87. package/esm/ops/ResourceTypeOps.js.map +1 -1
  88. package/esm/ops/Saml2Ops.js +10 -7
  89. package/esm/ops/Saml2Ops.js.map +1 -1
  90. package/esm/ops/ScriptOps.js +73 -36
  91. package/esm/ops/ScriptOps.js.map +1 -1
  92. package/esm/ops/SecretsOps.js +76 -48
  93. package/esm/ops/SecretsOps.js.map +1 -1
  94. package/esm/ops/ServiceOps.js +10 -9
  95. package/esm/ops/ServiceOps.js.map +1 -1
  96. package/esm/ops/ThemeOps.js +15 -9
  97. package/esm/ops/ThemeOps.js.map +1 -1
  98. package/esm/ops/VariablesOps.js +49 -23
  99. package/esm/ops/VariablesOps.js.map +1 -1
  100. package/esm/utils/Config.js +147 -1
  101. package/esm/utils/Config.js.map +1 -1
  102. package/package.json +2 -2
  103. package/esm/utils/ExportImportUtils.js +0 -48
  104. package/esm/utils/ExportImportUtils.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PolicyOps.js","names":["frodo","state","fs","createObjectTable","createProgressIndicator","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressIndicator","succeedSpinner","updateProgressIndicator","getTypedFilename","saveJsonToFile","titleCase","getRealmName","getFilePath","getWorkingDirectory","utils","readPolicies","readPoliciesByPolicySet","readPolicy","exportPolicy","exportPolicies","exportPoliciesByPolicySet","importPolicy","importFirstPolicy","importPolicies","deletePolicy","authz","policy","listPolicies","long","outcome","policies","sort","a","b","_id","localeCompare","table","push","description","active","toString","err","message","listPoliciesByPolicySet","policySetId","describePolicy","policyId","json","policySet","deletePolicyById","error","deletePolicies","errors","indicatorId","length","errorMessages","map","join","deletePoliciesByPolicySet","exportPolicyToFile","file","options","deps","prereqs","useStringArrays","fileName","filePath","exportData","exportPoliciesToFile","getRealm","exportPoliciesByPolicySetToFile","exportPoliciesToFiles","exportPoliciesByPolicySetToFiles","importPolicyFromFile","data","readFileSync","fileData","JSON","parse","importFirstPolicyFromFile","importPoliciesFromFile","policySetName","importPoliciesFromFiles","names","readdirSync","files","filter","name","toLowerCase","endsWith","total","count","Object","keys","policyset"],"sources":["../../src/ops/PolicyOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { type PolicySkeleton } from '@rockcarver/frodo-lib/types/api/PoliciesApi';\nimport type {\n PolicyExportInterface,\n PolicyExportOptions,\n PolicyImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/PolicyOps';\nimport fs from 'fs';\n\nimport {\n createObjectTable,\n createProgressIndicator,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressIndicator,\n succeedSpinner,\n updateProgressIndicator,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\n\nconst { getRealmName, getFilePath, getWorkingDirectory } = frodo.utils;\nconst {\n readPolicies,\n readPoliciesByPolicySet,\n readPolicy,\n exportPolicy,\n exportPolicies,\n exportPoliciesByPolicySet,\n importPolicy,\n importFirstPolicy,\n importPolicies,\n deletePolicy,\n} = frodo.authz.policy;\n\n/**\n * List policies\n * @param {boolean} long list with details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPolicies(long = false): Promise<boolean> {\n let outcome = false;\n try {\n const policies = await readPolicies();\n policies.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable(['Id', 'Description', 'Status']);\n for (const policy of policies) {\n table.push([\n `${policy._id}`,\n `${policy.description}`,\n policy.active ? 'active'['brightGreen'] : 'inactive'['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const policy of policies) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicies ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * List policies by policy set\n * @param {string} policySetId policy set id/name\n * @param {boolean} long list with details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPoliciesByPolicySet(\n policySetId: string,\n long = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const policies = await readPoliciesByPolicySet(policySetId);\n policies.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable(['Id', 'Description', 'Status']);\n for (const policy of policies) {\n table.push([\n `${policy._id}`,\n `${policy.description}`,\n policy.active ? 'active'['brightGreen'] : 'inactive'['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const policy of policies) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicies ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe policy\n * @param {string} policyId policy id/name\n * @param {Object} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describePolicy(\n policyId: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n const policySet = await readPolicy(policyId);\n outcome = true;\n if (json) {\n printMessage(policySet, 'data');\n } else {\n const table = createObjectTable(policySet);\n printMessage(table.toString(), 'data');\n }\n return outcome;\n}\n\n/**\n * Delete policy\n * @param {string} policyId policy id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicyById(policyId: string): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePolicy: begin`);\n showSpinner(`Deleting ${policyId}...`);\n let outcome = false;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await deletePolicy(policyId);\n succeedSpinner(`Deleted ${policyId}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error deleting policy ${policyId}: ${error}`);\n }\n debugMessage(`cli.PolicyOps.deletePolicy: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policies\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicies(): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePolicies: begin`);\n let outcome = false;\n const errors = [];\n let policies: PolicySkeleton[] = [];\n let indicatorId: string;\n try {\n showSpinner(`Retrieving all policies...`);\n try {\n policies = await readPolicies();\n succeedSpinner(`Found ${policies.length} policies.`);\n } catch (error) {\n error.message = `Error retrieving all policies: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policies.length)\n indicatorId = createProgressIndicator(\n 'determinate',\n policies.length,\n `Deleting ${policies.length} policies...`\n );\n for (const policy of policies) {\n const policyId = policy._id;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await deletePolicy(policyId);\n updateProgressIndicator(indicatorId, `Deleted ${policyId}`);\n } catch (error) {\n error.message = `Error deleting policy ${policyId}: ${error}`;\n updateProgressIndicator(indicatorId, error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policies: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policies.length)\n stopProgressIndicator(\n indicatorId,\n `Error deleting all policies: ${errorMessages}`\n );\n } else {\n if (policies.length)\n stopProgressIndicator(\n indicatorId,\n `Deleted ${policies.length} policies.`\n );\n outcome = true;\n }\n }\n debugMessage(`cli.PolicyOps.deletePolicies: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policies in policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePoliciesByPolicySet(\n policySetId: string\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePoliciesByPolicySet: begin`);\n let outcome = false;\n const errors = [];\n let policies: PolicySkeleton[] = [];\n let indicatorId: string;\n try {\n showSpinner(`Retrieving all policies from policy set ${policySetId}...`);\n try {\n policies = await readPoliciesByPolicySet(policySetId);\n succeedSpinner(\n `Found ${policies.length} policies in policy set ${policySetId}.`\n );\n } catch (error) {\n error.message = `Error retrieving all policies from policy set ${policySetId}: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policies.length)\n indicatorId = createProgressIndicator(\n 'determinate',\n policies.length,\n `Deleting ${policies.length} policies from policy set ${policySetId}...`\n );\n for (const policy of policies) {\n const policyId = policy._id;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await deletePolicy(policyId);\n updateProgressIndicator(indicatorId, `Deleted ${policyId}`);\n } catch (error) {\n error.message = `Error deleting policy ${policyId} from policy set ${policySetId}: ${error}`;\n updateProgressIndicator(indicatorId, error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policies from policy set ${policySetId}: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policies.length)\n stopProgressIndicator(\n indicatorId,\n `Error deleting all policies from policy set ${policySetId}: ${errorMessages}`\n );\n } else {\n if (policies.length)\n stopProgressIndicator(\n indicatorId,\n `Deleted ${policies.length} policies.`\n );\n outcome = true;\n }\n }\n debugMessage(\n `cli.PolicyOps.deletePoliciesByPolicySet: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export policy to file\n * @param {string} policyId policy id/name\n * @param {string} file file name\n * @param {ApplicationExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicyToFile(\n policyId: string,\n file: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPolicyToFile: begin`);\n showSpinner(`Exporting ${policyId}...`);\n try {\n let fileName = getTypedFilename(policyId, 'policy.authz');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPolicy(policyId, options);\n saveJsonToFile(exportData, filePath);\n succeedSpinner(`Exported ${policyId} to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${policyId}: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPolicyToFile: end`);\n return outcome;\n}\n\n/**\n * Export policies to file\n * @param {string} file file name\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesToFile(\n file: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Policies`,\n 'policy.authz'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPolicies(options);\n saveJsonToFile(exportData, filePath);\n succeedSpinner(`Exported all policy sets to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: end`);\n return outcome;\n}\n\n/**\n * Export policies to file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesByPolicySetToFile(\n policySetId: string,\n file: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${\n titleCase(getRealmName(state.getRealm())) + titleCase(policySetId)\n }Policies`,\n 'policy.authz'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPoliciesByPolicySet(policySetId, options);\n saveJsonToFile(exportData, filePath);\n succeedSpinner(`Exported all policy sets to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: end`);\n return outcome;\n}\n\n/**\n * Export all policies to separate files\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesToFiles(\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);\n const errors = [];\n let indicatorId: string;\n try {\n const policies: PolicySkeleton[] = await readPolicies();\n indicatorId = createProgressIndicator(\n 'determinate',\n policies.length,\n 'Exporting policy sets...'\n );\n for (const policy of policies) {\n const file = getTypedFilename(policy._id, 'policy.authz');\n try {\n const exportData: PolicyExportInterface = await exportPolicy(\n policy._id,\n options\n );\n saveJsonToFile(exportData, getFilePath(file, true));\n updateProgressIndicator(indicatorId, `Exported ${policy._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(indicatorId, `Error exporting ${policy._id}.`);\n }\n }\n stopProgressIndicator(indicatorId, `Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(indicatorId, `Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Export all policies to separate files\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesByPolicySetToFiles(\n policySetId: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);\n const errors = [];\n let indicatorId: string;\n try {\n const policies: PolicySkeleton[] =\n await readPoliciesByPolicySet(policySetId);\n indicatorId = createProgressIndicator(\n 'determinate',\n policies.length,\n `Exporting policies in policy set ${policySetId}...`\n );\n for (const policy of policies) {\n const file = getTypedFilename(policy._id, 'policy.authz');\n try {\n const exportData: PolicyExportInterface = await exportPolicy(\n policy._id,\n options\n );\n saveJsonToFile(exportData, getFilePath(file, true));\n updateProgressIndicator(indicatorId, `Exported ${policy._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(indicatorId, `Error exporting ${policy._id}.`);\n }\n }\n stopProgressIndicator(indicatorId, `Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(indicatorId, `Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import policy from file\n * @param {string} policyId policy id/name\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicyFromFile(\n policyId: string,\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.importPolicyFromFile: begin`);\n showSpinner(`Importing ${policyId}...`);\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data);\n await importPolicy(policyId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${policyId}.`);\n } catch (error) {\n failSpinner(`Error importing ${policyId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPolicyFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first policy from file\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstPolicyFromFile(\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: begin`);\n const filePath = getFilePath(file);\n showSpinner(`Importing first policy from ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n const policy = await importFirstPolicy(fileData, options);\n outcome = true;\n succeedSpinner(\n `Imported first policy with id '${policy._id}' from ${filePath}.`\n );\n } catch (error) {\n failSpinner(`Error importing first policy from ${filePath}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policies from file\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPoliciesFromFile(\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.importPoliciesFromFile: begin`);\n const filePath = getFilePath(file);\n showSpinner(`Importing ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicies(fileData, options);\n outcome = true;\n succeedSpinner(\n `Imported ${filePath}${\n options.policySetName\n ? ' into policy set ' + options.policySetName\n : '.'\n }`\n );\n } catch (error) {\n failSpinner(\n `Error importing ${filePath}${\n options.policySetName\n ? ' into policy set ' + options.policySetName\n : '.'\n }`\n );\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPoliciesFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policies from files\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPoliciesFromFiles(\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n const errors = [];\n let indicatorId: string;\n try {\n debugMessage(`cli.PolicyOps.importPoliciesFromFiles: begin`);\n const names = fs.readdirSync(getWorkingDirectory());\n const files = names\n .filter((name) => name.toLowerCase().endsWith('.policy.authz.json'))\n .map((name) => getFilePath(name));\n indicatorId = createProgressIndicator(\n 'determinate',\n files.length,\n 'Importing policies...'\n );\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: PolicyExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.policyset).length;\n total += count;\n await importPolicies(fileData, options);\n updateProgressIndicator(\n indicatorId,\n `Imported ${count} policies from ${file}`\n );\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(\n indicatorId,\n `Error importing policies from ${file}`\n );\n printMessage(error, 'error');\n }\n }\n stopProgressIndicator(\n indicatorId,\n `Finished importing ${total} policies from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(indicatorId, `Error importing policies from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPoliciesFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"PolicyOps.js","names":["frodo","state","fs","createObjectTable","createProgressIndicator","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressIndicator","succeedSpinner","updateProgressIndicator","getRealmName","getTypedFilename","saveJsonToFile","titleCase","getFilePath","getWorkingDirectory","utils","readPolicies","readPoliciesByPolicySet","readPolicy","exportPolicy","exportPolicies","exportPoliciesByPolicySet","importPolicy","importFirstPolicy","importPolicies","deletePolicy","authz","policy","listPolicies","long","outcome","policies","sort","a","b","_id","localeCompare","table","push","description","active","toString","err","message","listPoliciesByPolicySet","policySetId","describePolicy","policyId","json","policySet","deletePolicyById","error","deletePolicies","errors","indicatorId","length","errorMessages","map","join","deletePoliciesByPolicySet","exportPolicyToFile","file","includeMeta","options","deps","prereqs","useStringArrays","fileName","filePath","exportData","exportPoliciesToFile","getRealm","exportPoliciesByPolicySetToFile","exportPoliciesToFiles","exportPoliciesByPolicySetToFiles","importPolicyFromFile","data","readFileSync","fileData","JSON","parse","importFirstPolicyFromFile","importPoliciesFromFile","policySetName","importPoliciesFromFiles","names","readdirSync","files","filter","name","toLowerCase","endsWith","total","count","Object","keys","policyset"],"sources":["../../src/ops/PolicyOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { type PolicySkeleton } from '@rockcarver/frodo-lib/types/api/PoliciesApi';\nimport type {\n PolicyExportInterface,\n PolicyExportOptions,\n PolicyImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/PolicyOps';\nimport fs from 'fs';\n\nimport {\n createObjectTable,\n createProgressIndicator,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressIndicator,\n succeedSpinner,\n updateProgressIndicator,\n} from '../utils/Console';\n\nconst {\n getRealmName,\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n getFilePath,\n getWorkingDirectory,\n} = frodo.utils;\nconst {\n readPolicies,\n readPoliciesByPolicySet,\n readPolicy,\n exportPolicy,\n exportPolicies,\n exportPoliciesByPolicySet,\n importPolicy,\n importFirstPolicy,\n importPolicies,\n deletePolicy,\n} = frodo.authz.policy;\n\n/**\n * List policies\n * @param {boolean} long list with details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPolicies(long = false): Promise<boolean> {\n let outcome = false;\n try {\n const policies = await readPolicies();\n policies.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable(['Id', 'Description', 'Status']);\n for (const policy of policies) {\n table.push([\n `${policy._id}`,\n `${policy.description}`,\n policy.active ? 'active'['brightGreen'] : 'inactive'['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const policy of policies) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicies ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * List policies by policy set\n * @param {string} policySetId policy set id/name\n * @param {boolean} long list with details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPoliciesByPolicySet(\n policySetId: string,\n long = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const policies = await readPoliciesByPolicySet(policySetId);\n policies.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable(['Id', 'Description', 'Status']);\n for (const policy of policies) {\n table.push([\n `${policy._id}`,\n `${policy.description}`,\n policy.active ? 'active'['brightGreen'] : 'inactive'['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const policy of policies) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicies ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe policy\n * @param {string} policyId policy id/name\n * @param {Object} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describePolicy(\n policyId: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n const policySet = await readPolicy(policyId);\n outcome = true;\n if (json) {\n printMessage(policySet, 'data');\n } else {\n const table = createObjectTable(policySet);\n printMessage(table.toString(), 'data');\n }\n return outcome;\n}\n\n/**\n * Delete policy\n * @param {string} policyId policy id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicyById(policyId: string): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePolicy: begin`);\n showSpinner(`Deleting ${policyId}...`);\n let outcome = false;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await deletePolicy(policyId);\n succeedSpinner(`Deleted ${policyId}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error deleting policy ${policyId}: ${error}`);\n }\n debugMessage(`cli.PolicyOps.deletePolicy: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policies\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicies(): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePolicies: begin`);\n let outcome = false;\n const errors = [];\n let policies: PolicySkeleton[] = [];\n let indicatorId: string;\n try {\n showSpinner(`Retrieving all policies...`);\n try {\n policies = await readPolicies();\n succeedSpinner(`Found ${policies.length} policies.`);\n } catch (error) {\n error.message = `Error retrieving all policies: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policies.length)\n indicatorId = createProgressIndicator(\n 'determinate',\n policies.length,\n `Deleting ${policies.length} policies...`\n );\n for (const policy of policies) {\n const policyId = policy._id;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await deletePolicy(policyId);\n updateProgressIndicator(indicatorId, `Deleted ${policyId}`);\n } catch (error) {\n error.message = `Error deleting policy ${policyId}: ${error}`;\n updateProgressIndicator(indicatorId, error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policies: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policies.length)\n stopProgressIndicator(\n indicatorId,\n `Error deleting all policies: ${errorMessages}`\n );\n } else {\n if (policies.length)\n stopProgressIndicator(\n indicatorId,\n `Deleted ${policies.length} policies.`\n );\n outcome = true;\n }\n }\n debugMessage(`cli.PolicyOps.deletePolicies: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policies in policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePoliciesByPolicySet(\n policySetId: string\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePoliciesByPolicySet: begin`);\n let outcome = false;\n const errors = [];\n let policies: PolicySkeleton[] = [];\n let indicatorId: string;\n try {\n showSpinner(`Retrieving all policies from policy set ${policySetId}...`);\n try {\n policies = await readPoliciesByPolicySet(policySetId);\n succeedSpinner(\n `Found ${policies.length} policies in policy set ${policySetId}.`\n );\n } catch (error) {\n error.message = `Error retrieving all policies from policy set ${policySetId}: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policies.length)\n indicatorId = createProgressIndicator(\n 'determinate',\n policies.length,\n `Deleting ${policies.length} policies from policy set ${policySetId}...`\n );\n for (const policy of policies) {\n const policyId = policy._id;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await deletePolicy(policyId);\n updateProgressIndicator(indicatorId, `Deleted ${policyId}`);\n } catch (error) {\n error.message = `Error deleting policy ${policyId} from policy set ${policySetId}: ${error}`;\n updateProgressIndicator(indicatorId, error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policies from policy set ${policySetId}: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policies.length)\n stopProgressIndicator(\n indicatorId,\n `Error deleting all policies from policy set ${policySetId}: ${errorMessages}`\n );\n } else {\n if (policies.length)\n stopProgressIndicator(\n indicatorId,\n `Deleted ${policies.length} policies.`\n );\n outcome = true;\n }\n }\n debugMessage(\n `cli.PolicyOps.deletePoliciesByPolicySet: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export policy to file\n * @param {string} policyId policy id/name\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {ApplicationExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicyToFile(\n policyId: string,\n file: string,\n includeMeta = true,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPolicyToFile: begin`);\n showSpinner(`Exporting ${policyId}...`);\n try {\n let fileName = getTypedFilename(policyId, 'policy.authz');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPolicy(policyId, options);\n saveJsonToFile(exportData, filePath, includeMeta);\n succeedSpinner(`Exported ${policyId} to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${policyId}: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPolicyToFile: end`);\n return outcome;\n}\n\n/**\n * Export policies to file\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesToFile(\n file: string,\n includeMeta = true,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Policies`,\n 'policy.authz'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPolicies(options);\n saveJsonToFile(exportData, filePath, includeMeta);\n succeedSpinner(`Exported all policy sets to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: end`);\n return outcome;\n}\n\n/**\n * Export policies to file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesByPolicySetToFile(\n policySetId: string,\n file: string,\n includeMeta = true,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${\n titleCase(getRealmName(state.getRealm())) + titleCase(policySetId)\n }Policies`,\n 'policy.authz'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPoliciesByPolicySet(policySetId, options);\n saveJsonToFile(exportData, filePath, includeMeta);\n succeedSpinner(`Exported all policy sets to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: end`);\n return outcome;\n}\n\n/**\n * Export all policies to separate files\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesToFiles(\n includeMeta = true,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);\n const errors = [];\n let indicatorId: string;\n try {\n const policies: PolicySkeleton[] = await readPolicies();\n indicatorId = createProgressIndicator(\n 'determinate',\n policies.length,\n 'Exporting policy sets...'\n );\n for (const policy of policies) {\n const file = getTypedFilename(policy._id, 'policy.authz');\n try {\n const exportData: PolicyExportInterface = await exportPolicy(\n policy._id,\n options\n );\n saveJsonToFile(exportData, getFilePath(file, true), includeMeta);\n updateProgressIndicator(indicatorId, `Exported ${policy._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(indicatorId, `Error exporting ${policy._id}.`);\n }\n }\n stopProgressIndicator(indicatorId, `Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(indicatorId, `Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Export all policies to separate files\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesByPolicySetToFiles(\n policySetId: string,\n includeMeta = true,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);\n const errors = [];\n let indicatorId: string;\n try {\n const policies: PolicySkeleton[] =\n await readPoliciesByPolicySet(policySetId);\n indicatorId = createProgressIndicator(\n 'determinate',\n policies.length,\n `Exporting policies in policy set ${policySetId}...`\n );\n for (const policy of policies) {\n const file = getTypedFilename(policy._id, 'policy.authz');\n try {\n const exportData: PolicyExportInterface = await exportPolicy(\n policy._id,\n options\n );\n saveJsonToFile(exportData, getFilePath(file, true), includeMeta);\n updateProgressIndicator(indicatorId, `Exported ${policy._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(indicatorId, `Error exporting ${policy._id}.`);\n }\n }\n stopProgressIndicator(indicatorId, `Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(indicatorId, `Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import policy from file\n * @param {string} policyId policy id/name\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicyFromFile(\n policyId: string,\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.importPolicyFromFile: begin`);\n showSpinner(`Importing ${policyId}...`);\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data);\n await importPolicy(policyId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${policyId}.`);\n } catch (error) {\n failSpinner(`Error importing ${policyId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPolicyFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first policy from file\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstPolicyFromFile(\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: begin`);\n const filePath = getFilePath(file);\n showSpinner(`Importing first policy from ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n const policy = await importFirstPolicy(fileData, options);\n outcome = true;\n succeedSpinner(\n `Imported first policy with id '${policy._id}' from ${filePath}.`\n );\n } catch (error) {\n failSpinner(`Error importing first policy from ${filePath}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policies from file\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPoliciesFromFile(\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.importPoliciesFromFile: begin`);\n const filePath = getFilePath(file);\n showSpinner(`Importing ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicies(fileData, options);\n outcome = true;\n succeedSpinner(\n `Imported ${filePath}${\n options.policySetName\n ? ' into policy set ' + options.policySetName\n : '.'\n }`\n );\n } catch (error) {\n failSpinner(\n `Error importing ${filePath}${\n options.policySetName\n ? ' into policy set ' + options.policySetName\n : '.'\n }`\n );\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPoliciesFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policies from files\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPoliciesFromFiles(\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n const errors = [];\n let indicatorId: string;\n try {\n debugMessage(`cli.PolicyOps.importPoliciesFromFiles: begin`);\n const names = fs.readdirSync(getWorkingDirectory());\n const files = names\n .filter((name) => name.toLowerCase().endsWith('.policy.authz.json'))\n .map((name) => getFilePath(name));\n indicatorId = createProgressIndicator(\n 'determinate',\n files.length,\n 'Importing policies...'\n );\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: PolicyExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.policyset).length;\n total += count;\n await importPolicies(fileData, options);\n updateProgressIndicator(\n indicatorId,\n `Imported ${count} policies from ${file}`\n );\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(\n indicatorId,\n `Error importing policies from ${file}`\n );\n printMessage(error, 'error');\n }\n }\n stopProgressIndicator(\n indicatorId,\n `Finished importing ${total} policies from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(indicatorId, `Error importing policies from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPoliciesFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  import { frodo, state } from '@rockcarver/frodo-lib';
2
2
  import fs from 'fs';
3
3
  import { createObjectTable, createProgressIndicator, debugMessage, printMessage, stopProgressIndicator, updateProgressIndicator } from '../utils/Console';
4
- import { getTypedFilename, saveJsonToFile, titleCase } from '../utils/ExportImportUtils';
5
4
  const {
6
5
  getRealmName,
6
+ getTypedFilename,
7
+ saveJsonToFile,
8
+ titleCase,
7
9
  getFilePath,
8
10
  getWorkingDirectory
9
11
  } = frodo.utils;
@@ -167,10 +169,11 @@ export async function deletePolicySets() {
167
169
  * Export policy set to file
168
170
  * @param {string} policySetId policy set id/name
169
171
  * @param {string} file file name
172
+ * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
170
173
  * @param {PolicySetExportOptions} options export options
171
174
  * @returns {Promise<boolean>} true if successful, false otherwise
172
175
  */
173
- export async function exportPolicySetToFile(policySetId, file, options = {
176
+ export async function exportPolicySetToFile(policySetId, file, includeMeta = true, options = {
174
177
  deps: true,
175
178
  prereqs: false,
176
179
  useStringArrays: true
@@ -185,7 +188,7 @@ export async function exportPolicySetToFile(policySetId, file, options = {
185
188
  }
186
189
  const filePath = getFilePath(fileName, true);
187
190
  const exportData = await exportPolicySet(policySetId, options);
188
- saveJsonToFile(exportData, filePath);
191
+ saveJsonToFile(exportData, filePath, includeMeta);
189
192
  stopProgressIndicator(indicatorId, `Exported ${policySetId} to ${filePath}.`, 'success');
190
193
  outcome = true;
191
194
  } catch (error) {
@@ -198,10 +201,11 @@ export async function exportPolicySetToFile(policySetId, file, options = {
198
201
  /**
199
202
  * Export policy sets to file
200
203
  * @param {string} file file name
204
+ * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
201
205
  * @param {PolicySetExportOptions} options export options
202
206
  * @returns {Promise<boolean>} true if successful, false otherwise
203
207
  */
204
- export async function exportPolicySetsToFile(file, options = {
208
+ export async function exportPolicySetsToFile(file, includeMeta = true, options = {
205
209
  deps: true,
206
210
  prereqs: false,
207
211
  useStringArrays: true
@@ -216,7 +220,7 @@ export async function exportPolicySetsToFile(file, options = {
216
220
  }
217
221
  const filePath = getFilePath(fileName, true);
218
222
  const exportData = await exportPolicySets(options);
219
- saveJsonToFile(exportData, filePath);
223
+ saveJsonToFile(exportData, filePath, includeMeta);
220
224
  stopProgressIndicator(indicatorId, `Exported all policy sets to ${filePath}.`, 'success');
221
225
  outcome = true;
222
226
  } catch (error) {
@@ -228,10 +232,11 @@ export async function exportPolicySetsToFile(file, options = {
228
232
 
229
233
  /**
230
234
  * Export all policy sets to separate files
235
+ * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
231
236
  * @param {PolicySetExportOptions} options export options
232
237
  * @returns {Promise<boolean>} true if successful, false otherwise
233
238
  */
234
- export async function exportPolicySetsToFiles(options = {
239
+ export async function exportPolicySetsToFiles(includeMeta = true, options = {
235
240
  deps: true,
236
241
  prereqs: false,
237
242
  useStringArrays: true
@@ -246,7 +251,7 @@ export async function exportPolicySetsToFiles(options = {
246
251
  const file = getTypedFilename(policySet.name, 'policyset.authz');
247
252
  try {
248
253
  const exportData = await exportPolicySet(policySet.name, options);
249
- saveJsonToFile(exportData, getFilePath(file, true));
254
+ saveJsonToFile(exportData, getFilePath(file, true), includeMeta);
250
255
  updateProgressIndicator(indicatorId, `Exported ${policySet.name}.`);
251
256
  } catch (error) {
252
257
  errors.push(error);
@@ -1 +1 @@
1
- {"version":3,"file":"PolicySetOps.js","names":["frodo","state","fs","createObjectTable","createProgressIndicator","debugMessage","printMessage","stopProgressIndicator","updateProgressIndicator","getTypedFilename","saveJsonToFile","titleCase","getRealmName","getFilePath","getWorkingDirectory","utils","readPoliciesByPolicySet","deletePolicy","authz","policy","readPolicySets","readPolicySet","exportPolicySet","exportPolicySets","importPolicySet","importFirstPolicySet","importPolicySets","deletePolicySet","policySet","listPolicySets","outcome","policySets","sort","a","b","name","localeCompare","err","message","describePolicySet","policySetId","json","table","toString","deletePolicySetById","indicatorId","errors","policies","_id","error","push","length","errorMessages","map","join","deletePolicySets","indicatorId2","exportPolicySetToFile","file","options","deps","prereqs","useStringArrays","fileName","filePath","exportData","exportPolicySetsToFile","getRealm","exportPolicySetsToFiles","importPolicySetFromFile","data","readFileSync","fileData","JSON","parse","importFirstPolicySetFromFile","importPolicySetsFromFile","importPolicySetsFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","total","count","Object","keys","policyset"],"sources":["../../src/ops/PolicySetOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { type PolicySkeleton } from '@rockcarver/frodo-lib/types/api/PoliciesApi';\nimport { type PolicySetSkeleton } from '@rockcarver/frodo-lib/types/api/PolicySetApi';\nimport {\n type PolicySetExportInterface,\n type PolicySetExportOptions,\n type PolicySetImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/PolicySetOps';\nimport fs from 'fs';\n\nimport {\n createObjectTable,\n createProgressIndicator,\n debugMessage,\n printMessage,\n stopProgressIndicator,\n updateProgressIndicator,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\n\nconst { getRealmName, getFilePath, getWorkingDirectory } = frodo.utils;\nconst { readPoliciesByPolicySet, deletePolicy } = frodo.authz.policy;\nconst {\n readPolicySets,\n readPolicySet,\n exportPolicySet,\n exportPolicySets,\n importPolicySet,\n importFirstPolicySet,\n importPolicySets,\n deletePolicySet,\n} = frodo.authz.policySet;\n\n/**\n * List policy sets\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPolicySets(): Promise<boolean> {\n let outcome = false;\n try {\n const policySets = await readPolicySets();\n policySets.sort((a, b) => a.name.localeCompare(b.name));\n for (const policySet of policySets) {\n printMessage(`${policySet.name}`, 'data');\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicySets ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe policy set\n * @param {string} policySetId policy set id/name\n * @param {Object} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describePolicySet(\n policySetId: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n const policySet = await readPolicySet(policySetId);\n outcome = true;\n if (json) {\n printMessage(policySet, 'data');\n } else {\n const table = createObjectTable(policySet);\n printMessage(table.toString(), 'data');\n }\n return outcome;\n}\n\n/**\n * Delete policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicySetById(\n policySetId: string\n): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.deletePolicySet: begin`);\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Deleting ${policySetId}...`\n );\n let outcome = false;\n const errors = [];\n const policies: PolicySkeleton[] = await readPoliciesByPolicySet(policySetId);\n for (const policy of policies) {\n try {\n debugMessage(`Deleting policy ${policy._id}`);\n await deletePolicy(policy._id);\n } catch (error) {\n error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;\n errors.push(error);\n }\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n stopProgressIndicator(\n indicatorId,\n `Error deleting policies in policy set ${policySetId}: ${errorMessages}`,\n 'fail'\n );\n } else {\n try {\n debugMessage(`Deleting policy set ${policySetId}`);\n await deletePolicySet(policySetId);\n stopProgressIndicator(indicatorId, `Deleted ${policySetId}.`, 'success');\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error deleting policy set ${policySetId}: ${error}`,\n 'fail'\n );\n }\n }\n debugMessage(`cli.PolicySetOps.deletePolicySet: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policy sets\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicySets(): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.deletePolicySets: begin`);\n let outcome = false;\n const errors = [];\n let policySets: PolicySetSkeleton[] = [];\n let indicatorId: string;\n let indicatorId2: string;\n try {\n indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Retrieving all policy sets...`\n );\n try {\n policySets = await readPolicySets();\n stopProgressIndicator(\n indicatorId,\n `Found ${policySets.length} policy sets.`,\n 'success'\n );\n } catch (error) {\n error.message = `Error retrieving all policy sets: ${error.message}`;\n stopProgressIndicator(indicatorId, error.message, 'fail');\n throw error;\n }\n if (policySets.length)\n indicatorId2 = createProgressIndicator(\n 'determinate',\n policySets.length,\n `Deleting ${policySets.length} policy sets...`\n );\n for (const policySet of policySets) {\n const policySetId = policySet.name;\n try {\n const policies: PolicySkeleton[] =\n await readPoliciesByPolicySet(policySetId);\n for (const policy of policies) {\n try {\n debugMessage(`Deleting policy ${policy._id}`);\n await deletePolicy(policy._id);\n } catch (error) {\n error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;\n printMessage(error.message, 'error');\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n try {\n debugMessage(`Deleting policy set ${policySetId}`);\n await deletePolicySet(policySetId);\n updateProgressIndicator(indicatorId2, `Deleted ${policySetId}`);\n } catch (error) {\n error.message = `Error deleting policy set ${policySetId}: ${error}`;\n updateProgressIndicator(indicatorId2, error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policy sets: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policySets.length)\n stopProgressIndicator(\n indicatorId2,\n `Error deleting all policy sets: ${errorMessages}`\n );\n } else {\n if (policySets.length)\n stopProgressIndicator(\n indicatorId2,\n `Deleted ${policySets.length} policy sets.`\n );\n outcome = true;\n }\n }\n debugMessage(`cli.PolicySetOps.deletePolicySets: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Export policy set to file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetToFile(\n policySetId: string,\n file: string,\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.exportPolicySetToFile: begin`);\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Exporting ${policySetId}...`\n );\n try {\n let fileName = getTypedFilename(policySetId, 'policyset.authz');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPolicySet(policySetId, options);\n saveJsonToFile(exportData, filePath);\n stopProgressIndicator(\n indicatorId,\n `Exported ${policySetId} to ${filePath}.`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error exporting ${policySetId}: ${error.message}`,\n 'fail'\n );\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetToFile: end`);\n return outcome;\n}\n\n/**\n * Export policy sets to file\n * @param {string} file file name\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetsToFile(\n file: string,\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: begin`);\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Exporting all policy sets...`\n );\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}PolicySets`,\n 'policyset.authz'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPolicySets(options);\n saveJsonToFile(exportData, filePath);\n stopProgressIndicator(\n indicatorId,\n `Exported all policy sets to ${filePath}.`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error exporting policy sets: ${error.message}`,\n 'fail'\n );\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: end`);\n return outcome;\n}\n\n/**\n * Export all policy sets to separate files\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetsToFiles(\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: begin`);\n const errors = [];\n let indicatorId: string;\n try {\n const policySets: PolicySetSkeleton[] = await readPolicySets();\n indicatorId = createProgressIndicator(\n 'determinate',\n policySets.length,\n 'Exporting policy sets...'\n );\n for (const policySet of policySets) {\n const file = getTypedFilename(policySet.name, 'policyset.authz');\n try {\n const exportData: PolicySetExportInterface = await exportPolicySet(\n policySet.name,\n options\n );\n saveJsonToFile(exportData, getFilePath(file, true));\n updateProgressIndicator(indicatorId, `Exported ${policySet.name}.`);\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(\n indicatorId,\n `Error exporting ${policySet.name}.`\n );\n }\n }\n stopProgressIndicator(indicatorId, `Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(indicatorId, `Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import policy set from file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetFromFile(\n policySetId: string,\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importPolicySetFromFile: begin`);\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Importing ${policySetId}...`\n );\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data);\n await importPolicySet(policySetId, fileData, options);\n outcome = true;\n stopProgressIndicator(indicatorId, `Imported ${policySetId}.`, 'success');\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error importing ${policySetId}.`,\n 'fail'\n );\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first policy set from file\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstPolicySetFromFile(\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: begin`);\n const filePath = getFilePath(file);\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Importing first policy set from ${filePath}...`\n );\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n const policySet = await importFirstPolicySet(fileData, options);\n outcome = true;\n stopProgressIndicator(\n indicatorId,\n `Imported first policy set with name '${policySet.name}' from ${filePath}.`,\n 'success'\n );\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error importing first policy set from ${filePath}.`,\n 'fail'\n );\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policy sets from file\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetsFromFile(\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: begin`);\n const filePath = getFilePath(file);\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Importing ${filePath}...`\n );\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicySets(fileData, options);\n outcome = true;\n stopProgressIndicator(indicatorId, `Imported ${filePath}.`, 'success');\n } catch (error) {\n stopProgressIndicator(indicatorId, `Error importing ${filePath}.`, 'fail');\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policy sets from files\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetsFromFiles(\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n const errors = [];\n let indicatorId: string;\n try {\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: begin`);\n const names = fs.readdirSync(getWorkingDirectory());\n const files = names\n .filter((name) => name.toLowerCase().endsWith('.policyset.authz.json'))\n .map((name) => getFilePath(name));\n indicatorId = createProgressIndicator(\n 'determinate',\n files.length,\n 'Importing policy sets...'\n );\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: PolicySetExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.policyset).length;\n total += count;\n await importPolicySets(fileData, options);\n updateProgressIndicator(\n indicatorId,\n `Imported ${count} policy sets from ${file}`\n );\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(\n indicatorId,\n `Error importing policy sets from ${file}`\n );\n printMessage(error, 'error');\n }\n }\n stopProgressIndicator(\n indicatorId,\n `Finished importing ${total} policy sets from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(\n indicatorId,\n `Error importing policy sets from files.`\n );\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"PolicySetOps.js","names":["frodo","state","fs","createObjectTable","createProgressIndicator","debugMessage","printMessage","stopProgressIndicator","updateProgressIndicator","getRealmName","getTypedFilename","saveJsonToFile","titleCase","getFilePath","getWorkingDirectory","utils","readPoliciesByPolicySet","deletePolicy","authz","policy","readPolicySets","readPolicySet","exportPolicySet","exportPolicySets","importPolicySet","importFirstPolicySet","importPolicySets","deletePolicySet","policySet","listPolicySets","outcome","policySets","sort","a","b","name","localeCompare","err","message","describePolicySet","policySetId","json","table","toString","deletePolicySetById","indicatorId","errors","policies","_id","error","push","length","errorMessages","map","join","deletePolicySets","indicatorId2","exportPolicySetToFile","file","includeMeta","options","deps","prereqs","useStringArrays","fileName","filePath","exportData","exportPolicySetsToFile","getRealm","exportPolicySetsToFiles","importPolicySetFromFile","data","readFileSync","fileData","JSON","parse","importFirstPolicySetFromFile","importPolicySetsFromFile","importPolicySetsFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","total","count","Object","keys","policyset"],"sources":["../../src/ops/PolicySetOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { type PolicySkeleton } from '@rockcarver/frodo-lib/types/api/PoliciesApi';\nimport { type PolicySetSkeleton } from '@rockcarver/frodo-lib/types/api/PolicySetApi';\nimport {\n type PolicySetExportInterface,\n type PolicySetExportOptions,\n type PolicySetImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/PolicySetOps';\nimport fs from 'fs';\n\nimport {\n createObjectTable,\n createProgressIndicator,\n debugMessage,\n printMessage,\n stopProgressIndicator,\n updateProgressIndicator,\n} from '../utils/Console';\n\nconst {\n getRealmName,\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n getFilePath,\n getWorkingDirectory,\n} = frodo.utils;\nconst { readPoliciesByPolicySet, deletePolicy } = frodo.authz.policy;\nconst {\n readPolicySets,\n readPolicySet,\n exportPolicySet,\n exportPolicySets,\n importPolicySet,\n importFirstPolicySet,\n importPolicySets,\n deletePolicySet,\n} = frodo.authz.policySet;\n\n/**\n * List policy sets\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPolicySets(): Promise<boolean> {\n let outcome = false;\n try {\n const policySets = await readPolicySets();\n policySets.sort((a, b) => a.name.localeCompare(b.name));\n for (const policySet of policySets) {\n printMessage(`${policySet.name}`, 'data');\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicySets ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe policy set\n * @param {string} policySetId policy set id/name\n * @param {Object} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describePolicySet(\n policySetId: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n const policySet = await readPolicySet(policySetId);\n outcome = true;\n if (json) {\n printMessage(policySet, 'data');\n } else {\n const table = createObjectTable(policySet);\n printMessage(table.toString(), 'data');\n }\n return outcome;\n}\n\n/**\n * Delete policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicySetById(\n policySetId: string\n): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.deletePolicySet: begin`);\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Deleting ${policySetId}...`\n );\n let outcome = false;\n const errors = [];\n const policies: PolicySkeleton[] = await readPoliciesByPolicySet(policySetId);\n for (const policy of policies) {\n try {\n debugMessage(`Deleting policy ${policy._id}`);\n await deletePolicy(policy._id);\n } catch (error) {\n error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;\n errors.push(error);\n }\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n stopProgressIndicator(\n indicatorId,\n `Error deleting policies in policy set ${policySetId}: ${errorMessages}`,\n 'fail'\n );\n } else {\n try {\n debugMessage(`Deleting policy set ${policySetId}`);\n await deletePolicySet(policySetId);\n stopProgressIndicator(indicatorId, `Deleted ${policySetId}.`, 'success');\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error deleting policy set ${policySetId}: ${error}`,\n 'fail'\n );\n }\n }\n debugMessage(`cli.PolicySetOps.deletePolicySet: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policy sets\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicySets(): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.deletePolicySets: begin`);\n let outcome = false;\n const errors = [];\n let policySets: PolicySetSkeleton[] = [];\n let indicatorId: string;\n let indicatorId2: string;\n try {\n indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Retrieving all policy sets...`\n );\n try {\n policySets = await readPolicySets();\n stopProgressIndicator(\n indicatorId,\n `Found ${policySets.length} policy sets.`,\n 'success'\n );\n } catch (error) {\n error.message = `Error retrieving all policy sets: ${error.message}`;\n stopProgressIndicator(indicatorId, error.message, 'fail');\n throw error;\n }\n if (policySets.length)\n indicatorId2 = createProgressIndicator(\n 'determinate',\n policySets.length,\n `Deleting ${policySets.length} policy sets...`\n );\n for (const policySet of policySets) {\n const policySetId = policySet.name;\n try {\n const policies: PolicySkeleton[] =\n await readPoliciesByPolicySet(policySetId);\n for (const policy of policies) {\n try {\n debugMessage(`Deleting policy ${policy._id}`);\n await deletePolicy(policy._id);\n } catch (error) {\n error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;\n printMessage(error.message, 'error');\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n try {\n debugMessage(`Deleting policy set ${policySetId}`);\n await deletePolicySet(policySetId);\n updateProgressIndicator(indicatorId2, `Deleted ${policySetId}`);\n } catch (error) {\n error.message = `Error deleting policy set ${policySetId}: ${error}`;\n updateProgressIndicator(indicatorId2, error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policy sets: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policySets.length)\n stopProgressIndicator(\n indicatorId2,\n `Error deleting all policy sets: ${errorMessages}`\n );\n } else {\n if (policySets.length)\n stopProgressIndicator(\n indicatorId2,\n `Deleted ${policySets.length} policy sets.`\n );\n outcome = true;\n }\n }\n debugMessage(`cli.PolicySetOps.deletePolicySets: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Export policy set to file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetToFile(\n policySetId: string,\n file: string,\n includeMeta = true,\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.exportPolicySetToFile: begin`);\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Exporting ${policySetId}...`\n );\n try {\n let fileName = getTypedFilename(policySetId, 'policyset.authz');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPolicySet(policySetId, options);\n saveJsonToFile(exportData, filePath, includeMeta);\n stopProgressIndicator(\n indicatorId,\n `Exported ${policySetId} to ${filePath}.`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error exporting ${policySetId}: ${error.message}`,\n 'fail'\n );\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetToFile: end`);\n return outcome;\n}\n\n/**\n * Export policy sets to file\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetsToFile(\n file: string,\n includeMeta = true,\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: begin`);\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Exporting all policy sets...`\n );\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}PolicySets`,\n 'policyset.authz'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPolicySets(options);\n saveJsonToFile(exportData, filePath, includeMeta);\n stopProgressIndicator(\n indicatorId,\n `Exported all policy sets to ${filePath}.`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error exporting policy sets: ${error.message}`,\n 'fail'\n );\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: end`);\n return outcome;\n}\n\n/**\n * Export all policy sets to separate files\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetsToFiles(\n includeMeta = true,\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: begin`);\n const errors = [];\n let indicatorId: string;\n try {\n const policySets: PolicySetSkeleton[] = await readPolicySets();\n indicatorId = createProgressIndicator(\n 'determinate',\n policySets.length,\n 'Exporting policy sets...'\n );\n for (const policySet of policySets) {\n const file = getTypedFilename(policySet.name, 'policyset.authz');\n try {\n const exportData: PolicySetExportInterface = await exportPolicySet(\n policySet.name,\n options\n );\n saveJsonToFile(exportData, getFilePath(file, true), includeMeta);\n updateProgressIndicator(indicatorId, `Exported ${policySet.name}.`);\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(\n indicatorId,\n `Error exporting ${policySet.name}.`\n );\n }\n }\n stopProgressIndicator(indicatorId, `Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(indicatorId, `Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import policy set from file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetFromFile(\n policySetId: string,\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importPolicySetFromFile: begin`);\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Importing ${policySetId}...`\n );\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data);\n await importPolicySet(policySetId, fileData, options);\n outcome = true;\n stopProgressIndicator(indicatorId, `Imported ${policySetId}.`, 'success');\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error importing ${policySetId}.`,\n 'fail'\n );\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first policy set from file\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstPolicySetFromFile(\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: begin`);\n const filePath = getFilePath(file);\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Importing first policy set from ${filePath}...`\n );\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n const policySet = await importFirstPolicySet(fileData, options);\n outcome = true;\n stopProgressIndicator(\n indicatorId,\n `Imported first policy set with name '${policySet.name}' from ${filePath}.`,\n 'success'\n );\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error importing first policy set from ${filePath}.`,\n 'fail'\n );\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policy sets from file\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetsFromFile(\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: begin`);\n const filePath = getFilePath(file);\n const indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Importing ${filePath}...`\n );\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicySets(fileData, options);\n outcome = true;\n stopProgressIndicator(indicatorId, `Imported ${filePath}.`, 'success');\n } catch (error) {\n stopProgressIndicator(indicatorId, `Error importing ${filePath}.`, 'fail');\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policy sets from files\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetsFromFiles(\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n const errors = [];\n let indicatorId: string;\n try {\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: begin`);\n const names = fs.readdirSync(getWorkingDirectory());\n const files = names\n .filter((name) => name.toLowerCase().endsWith('.policyset.authz.json'))\n .map((name) => getFilePath(name));\n indicatorId = createProgressIndicator(\n 'determinate',\n files.length,\n 'Importing policy sets...'\n );\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: PolicySetExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.policyset).length;\n total += count;\n await importPolicySets(fileData, options);\n updateProgressIndicator(\n indicatorId,\n `Imported ${count} policy sets from ${file}`\n );\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(\n indicatorId,\n `Error importing policy sets from ${file}`\n );\n printMessage(error, 'error');\n }\n }\n stopProgressIndicator(\n indicatorId,\n `Finished importing ${total} policy sets from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(\n indicatorId,\n `Error importing policy sets from files.`\n );\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  import { frodo, state } from '@rockcarver/frodo-lib';
2
2
  import fs from 'fs';
3
3
  import { createObjectTable, createProgressIndicator, createTable, debugMessage, failSpinner, printMessage, showSpinner, stopProgressIndicator, succeedSpinner, updateProgressIndicator } from '../utils/Console';
4
- import { getTypedFilename, saveJsonToFile, titleCase } from '../utils/ExportImportUtils';
5
4
  const {
6
5
  getRealmName,
6
+ getTypedFilename,
7
+ saveJsonToFile,
8
+ titleCase,
7
9
  getFilePath,
8
10
  getWorkingDirectory
9
11
  } = frodo.utils;
@@ -206,9 +208,10 @@ export async function deleteResourceTypes() {
206
208
  * Export resource type to file
207
209
  * @param {string} resourceTypeUuid resource type uuid
208
210
  * @param {string} file file name
211
+ * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
209
212
  * @returns {Promise<boolean>} true if successful, false otherwise
210
213
  */
211
- export async function exportResourceTypeToFile(resourceTypeUuid, file) {
214
+ export async function exportResourceTypeToFile(resourceTypeUuid, file, includeMeta = true) {
212
215
  let outcome = false;
213
216
  debugMessage(`cli.ResourceTypeOps.exportResourceTypeToFile: begin`);
214
217
  showSpinner(`Exporting ${resourceTypeUuid}...`);
@@ -219,7 +222,7 @@ export async function exportResourceTypeToFile(resourceTypeUuid, file) {
219
222
  }
220
223
  const filePath = getFilePath(fileName, true);
221
224
  const exportData = await exportResourceType(resourceTypeUuid);
222
- saveJsonToFile(exportData, filePath);
225
+ saveJsonToFile(exportData, filePath, includeMeta);
223
226
  succeedSpinner(`Exported ${resourceTypeUuid} to ${filePath}.`);
224
227
  outcome = true;
225
228
  } catch (error) {
@@ -233,9 +236,10 @@ export async function exportResourceTypeToFile(resourceTypeUuid, file) {
233
236
  * Export resource type by name to file
234
237
  * @param {string} resourceTypeName resource type name
235
238
  * @param {string} file file name
239
+ * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
236
240
  * @returns {Promise<boolean>} true if successful, false otherwise
237
241
  */
238
- export async function exportResourceTypeByNameToFile(resourceTypeName, file) {
242
+ export async function exportResourceTypeByNameToFile(resourceTypeName, file, includeMeta = true) {
239
243
  let outcome = false;
240
244
  debugMessage(`cli.ResourceTypeOps.exportResourceTypeByNameToFile: begin`);
241
245
  showSpinner(`Exporting ${resourceTypeName}...`);
@@ -246,7 +250,7 @@ export async function exportResourceTypeByNameToFile(resourceTypeName, file) {
246
250
  }
247
251
  const filePath = getFilePath(fileName, true);
248
252
  const exportData = await exportResourceTypeByName(resourceTypeName);
249
- saveJsonToFile(exportData, filePath);
253
+ saveJsonToFile(exportData, filePath, includeMeta);
250
254
  succeedSpinner(`Exported ${resourceTypeName} to ${filePath}.`);
251
255
  outcome = true;
252
256
  } catch (error) {
@@ -259,9 +263,10 @@ export async function exportResourceTypeByNameToFile(resourceTypeName, file) {
259
263
  /**
260
264
  * Export resource types to file
261
265
  * @param {string} file file name
266
+ * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
262
267
  * @returns {Promise<boolean>} true if successful, false otherwise
263
268
  */
264
- export async function exportResourceTypesToFile(file) {
269
+ export async function exportResourceTypesToFile(file, includeMeta = true) {
265
270
  let outcome = false;
266
271
  debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFile: begin`);
267
272
  showSpinner(`Exporting all resource types...`);
@@ -272,7 +277,7 @@ export async function exportResourceTypesToFile(file) {
272
277
  }
273
278
  const filePath = getFilePath(fileName, true);
274
279
  const exportData = await exportResourceTypes();
275
- saveJsonToFile(exportData, filePath);
280
+ saveJsonToFile(exportData, filePath, includeMeta);
276
281
  succeedSpinner(`Exported all resource types to ${filePath}.`);
277
282
  outcome = true;
278
283
  } catch (error) {
@@ -284,9 +289,10 @@ export async function exportResourceTypesToFile(file) {
284
289
 
285
290
  /**
286
291
  * Export all resource types to separate files
292
+ * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
287
293
  * @returns {Promise<boolean>} true if successful, false otherwise
288
294
  */
289
- export async function exportResourceTypesToFiles() {
295
+ export async function exportResourceTypesToFiles(includeMeta = true) {
290
296
  debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: begin`);
291
297
  const errors = [];
292
298
  let indicatorId;
@@ -297,7 +303,7 @@ export async function exportResourceTypesToFiles() {
297
303
  const file = getTypedFilename(resourceType.name, 'resourcetype.authz');
298
304
  try {
299
305
  const exportData = await exportResourceType(resourceType.uuid);
300
- saveJsonToFile(exportData, getFilePath(file, true));
306
+ saveJsonToFile(exportData, getFilePath(file, true), includeMeta);
301
307
  updateProgressIndicator(indicatorId, `Exported ${resourceType.name}.`);
302
308
  } catch (error) {
303
309
  errors.push(error);