@rockcarver/frodo-cli 2.0.0-21 → 2.0.0-23

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 (50) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/esm/cli/FrodoCommand.js +3 -1
  3. package/esm/cli/FrodoCommand.js.map +1 -1
  4. package/esm/cli/agent/agent-web.js +2 -2
  5. package/esm/cli/agent/agent-web.js.map +1 -1
  6. package/esm/cli/app/app-import.js +1 -1
  7. package/esm/cli/app/app-import.js.map +1 -1
  8. package/esm/cli/idm/idm-export.js +14 -8
  9. package/esm/cli/idm/idm-export.js.map +1 -1
  10. package/esm/cli/idm/idm-import.js +14 -8
  11. package/esm/cli/idm/idm-import.js.map +1 -1
  12. package/esm/cli/journey/journey-export.js +2 -3
  13. package/esm/cli/journey/journey-export.js.map +1 -1
  14. package/esm/cli/oauth/oauth-client-import.js +1 -1
  15. package/esm/cli/oauth/oauth-client-import.js.map +1 -1
  16. package/esm/cli/service/service-import.js +2 -3
  17. package/esm/cli/service/service-import.js.map +1 -1
  18. package/esm/ops/AdminFederationOps.js +29 -20
  19. package/esm/ops/AdminFederationOps.js.map +1 -1
  20. package/esm/ops/AgentOps.js +41 -34
  21. package/esm/ops/AgentOps.js.map +1 -1
  22. package/esm/ops/ApplicationOps.js +23 -17
  23. package/esm/ops/ApplicationOps.js.map +1 -1
  24. package/esm/ops/CirclesOfTrustOps.js +27 -20
  25. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  26. package/esm/ops/EmailTemplateOps.js +19 -14
  27. package/esm/ops/EmailTemplateOps.js.map +1 -1
  28. package/esm/ops/IdmOps.js +14 -22
  29. package/esm/ops/IdmOps.js.map +1 -1
  30. package/esm/ops/IdpOps.js +27 -19
  31. package/esm/ops/IdpOps.js.map +1 -1
  32. package/esm/ops/JourneyOps.js +18 -51
  33. package/esm/ops/JourneyOps.js.map +1 -1
  34. package/esm/ops/OAuth2ClientOps.js +23 -17
  35. package/esm/ops/OAuth2ClientOps.js.map +1 -1
  36. package/esm/ops/PolicyOps.js +27 -20
  37. package/esm/ops/PolicyOps.js.map +1 -1
  38. package/esm/ops/PolicySetOps.js +23 -17
  39. package/esm/ops/PolicySetOps.js.map +1 -1
  40. package/esm/ops/ResourceTypeOps.js +27 -20
  41. package/esm/ops/ResourceTypeOps.js.map +1 -1
  42. package/esm/ops/Saml2Ops.js +22 -14
  43. package/esm/ops/Saml2Ops.js.map +1 -1
  44. package/esm/ops/ScriptOps.js +22 -15
  45. package/esm/ops/ScriptOps.js.map +1 -1
  46. package/esm/ops/ServiceOps.js +21 -16
  47. package/esm/ops/ServiceOps.js.map +1 -1
  48. package/esm/ops/ThemeOps.js +21 -15
  49. package/esm/ops/ThemeOps.js.map +1 -1
  50. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"AgentOps.js","names":["frodo","state","fs","createTable","debugMessage","failSpinner","printMessage","showSpinner","succeedSpinner","getTypedFilename","saveJsonToFile","titleCase","getRealmName","utils","createAgentExportTemplate","readAgents","readIdentityGatewayAgents","readJavaAgents","readWebAgents","exportAgents","exportIdentityGatewayAgents","exportJavaAgents","exportWebAgents","exportAgent","exportIdentityGatewayAgent","exportJavaAgent","exportWebAgent","importAgent","importIdentityGatewayAgent","importJavaAgent","importWebAgent","importAgents","importIdentityGatewayAgents","importJavaAgents","importWebAgents","agent","agentTypeToFileIdMap","IdentityGatewayAgent","J2EEAgent","WebAgent","listAgents","long","agents","table","status","_type","_id","push","name","toString","forEach","error","stack","listIdentityGatewayAgents","listJavaAgents","listWebAgents","exportAgentsToFile","file","exportData","fileName","getRealm","exportIdentityGatewayAgentsToFile","exportJavaAgentsToFile","exportWebAgentsToFile","exportAgentToFile","agentId","exportIdentityGatewayAgentToFile","exportJavaAgentToFile","exportWebAgentToFile","exportAgentsToFiles","length","exportIdentityGatewayAgentsToFiles","exportJavaAgentsToFiles","exportWebAgentsToFiles","importAgentFromFile","verbose","getVerbose","readFile","err","data","importData","JSON","parse","importError","importFirstAgentFromFile","Object","keys","values","importAgentsFromFile","message","response","importAgentsFromFiles","names","readdirSync","agentFiles","filter","toLowerCase","endsWith","importIdentityGatewayAgentFromFile","importFirstIdentityGatewayAgentFromFile","importIdentityGatewayAgentsFromFile","importIdentityGatewayAgentsFromFiles","importJavaAgentFromFile","importFirstJavaAgentFromFile","importJavaAgentsFromFile","importJavaAgentsFromFiles","importWebAgentFromFile","importFirstWebAgentFromFile","importWebAgentsFromFile","importWebAgentsFromFiles"],"sources":["../../src/ops/AgentOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { type AgentExportInterface } from '@rockcarver/frodo-lib/types/ops/AgentOps';\nimport fs from 'fs';\n\nimport {\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n succeedSpinner,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\n\nconst { getRealmName } = frodo.utils;\nconst {\n createAgentExportTemplate,\n readAgents,\n readIdentityGatewayAgents,\n readJavaAgents,\n readWebAgents,\n exportAgents,\n exportIdentityGatewayAgents,\n exportJavaAgents,\n exportWebAgents,\n exportAgent,\n exportIdentityGatewayAgent,\n exportJavaAgent,\n exportWebAgent,\n importAgent,\n importIdentityGatewayAgent,\n importJavaAgent,\n importWebAgent,\n importAgents,\n importIdentityGatewayAgents,\n importJavaAgents,\n importWebAgents,\n} = frodo.agent;\n\nconst agentTypeToFileIdMap = {\n IdentityGatewayAgent: 'gateway.agent',\n J2EEAgent: 'java.agent',\n WebAgent: 'web.agent',\n};\n\n/**\n * List agents\n */\nexport async function listAgents(long = false) {\n try {\n const agents = await readAgents();\n if (long) {\n const table = createTable(['Agent Id', 'Status', 'Agent Type']);\n for (const agent of agents) {\n let status = 'Unknown';\n switch (agent._type._id) {\n case 'J2EEAgent':\n status = agent['globalJ2EEAgentConfig']['status'];\n break;\n case 'WebAgent':\n status = agent['globalWebAgentConfig']['status'];\n break;\n default:\n status = agent.status as string;\n break;\n }\n table.push([\n agent._id,\n status === 'Active' ? 'Active'['brightGreen'] : status['brightRed'],\n agent._type.name,\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n agents.forEach((agent) => {\n printMessage(`${agent._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * List identity gateway agents\n */\nexport async function listIdentityGatewayAgents(long = false) {\n try {\n const agents = await readIdentityGatewayAgents();\n if (long) {\n const table = createTable(['Gateway Agent Id', 'Status']);\n for (const agent of agents) {\n table.push([\n agent._id,\n agent.status === 'Active'\n ? 'Active'['brightGreen']\n : agent.status['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n agents.forEach((agent) => {\n printMessage(`${agent._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing gateway agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * List java agents\n */\nexport async function listJavaAgents(long = false) {\n try {\n const agents = await readJavaAgents();\n if (long) {\n const table = createTable(['Java Agent Id', 'Status']);\n for (const agent of agents) {\n table.push([\n agent._id,\n agent['globalJ2EEAgentConfig']['status'] === 'Active'\n ? 'Active'['brightGreen']\n : agent['globalJ2EEAgentConfig']['status']['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n agents.forEach((agent) => {\n printMessage(`${agent._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing java agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * List web agents\n */\nexport async function listWebAgents(long = false) {\n try {\n const agents = await readWebAgents();\n if (long) {\n const table = createTable(['Web Agent Id', 'Status']);\n for (const agent of agents) {\n table.push([\n agent._id,\n agent['globalWebAgentConfig']['status'] === 'Active'\n ? 'Active'['brightGreen']\n : agent['globalWebAgentConfig']['status']['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n agents.forEach((agent) => {\n printMessage(`${agent._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing web agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * Export all agents to file\n * @param {string} file file name\n */\nexport async function exportAgentsToFile(file) {\n const exportData = await exportAgents();\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Agents`,\n 'agent'\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export all identity gateway agents to file\n * @param {string} file file name\n */\nexport async function exportIdentityGatewayAgentsToFile(file) {\n const exportData = await exportIdentityGatewayAgents();\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Agents`,\n agentTypeToFileIdMap['IdentityGatewayAgent']\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export all java agents to file\n * @param {string} file file name\n */\nexport async function exportJavaAgentsToFile(file) {\n const exportData = await exportJavaAgents();\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Agents`,\n agentTypeToFileIdMap['J2EEAgent']\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export all web agents to file\n * @param {string} file file name\n */\nexport async function exportWebAgentsToFile(file) {\n const exportData = await exportWebAgents();\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Agents`,\n agentTypeToFileIdMap['WebAgent']\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export agent to file\n * @param {string} agentId agent id\n * @param {string} file file name\n */\nexport async function exportAgentToFile(agentId, file) {\n const exportData = await exportAgent(agentId);\n let fileName = getTypedFilename(\n agentId,\n agentTypeToFileIdMap[exportData.agents[agentId]._type._id]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export identity gateway agent to file\n * @param {string} agentId agent id\n * @param {string} file file name\n */\nexport async function exportIdentityGatewayAgentToFile(agentId, file) {\n const exportData = await exportIdentityGatewayAgent(agentId);\n let fileName = getTypedFilename(\n agentId,\n agentTypeToFileIdMap[exportData.agents[agentId]._type._id]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export java agent to file\n * @param {string} agentId agent id\n * @param {string} file file name\n */\nexport async function exportJavaAgentToFile(agentId, file) {\n const exportData = await exportJavaAgent(agentId);\n let fileName = getTypedFilename(\n agentId,\n agentTypeToFileIdMap[exportData.agents[agentId]._type._id]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export web agent to file\n * @param {string} agentId agent id\n * @param {string} file file name\n */\nexport async function exportWebAgentToFile(agentId, file) {\n const exportData = await exportWebAgent(agentId);\n let fileName = getTypedFilename(\n agentId,\n agentTypeToFileIdMap[exportData.agents[agentId]._type._id]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export all agents to separate files\n */\nexport async function exportAgentsToFiles() {\n const agents = await readAgents();\n debugMessage(`exportAgentsToFiles: ${agents.length} agents`);\n for (const agent of agents) {\n const fileName = getTypedFilename(\n agent._id,\n agentTypeToFileIdMap[agent._type._id]\n );\n const exportData = createAgentExportTemplate();\n exportData.agents[agent._id] = agent;\n debugMessage(`exportAgentsToFiles: exporting ${agent._id} to ${fileName}`);\n saveJsonToFile(exportData, fileName);\n }\n debugMessage(`exportAgentsToFiles: done.`);\n}\n\n/**\n * Export all identity gateway agents to separate files\n */\nexport async function exportIdentityGatewayAgentsToFiles() {\n const agents = await readIdentityGatewayAgents();\n for (const agent of agents) {\n const fileName = getTypedFilename(\n agent._id,\n agentTypeToFileIdMap[agent._type._id]\n );\n const exportData = createAgentExportTemplate();\n exportData.agents[agent._id] = agent;\n saveJsonToFile(exportData, fileName);\n }\n}\n\n/**\n * Export all java agents to separate files\n */\nexport async function exportJavaAgentsToFiles() {\n const agents = await readJavaAgents();\n for (const agent of agents) {\n const fileName = getTypedFilename(\n agent._id,\n agentTypeToFileIdMap[agent._type._id]\n );\n const exportData = createAgentExportTemplate();\n exportData.agents[agent._id] = agent;\n saveJsonToFile(exportData, fileName);\n }\n}\n\n/**\n * Export all web agents to separate files\n */\nexport async function exportWebAgentsToFiles() {\n const agents = await readWebAgents();\n for (const agent of agents) {\n const fileName = getTypedFilename(\n agent._id,\n agentTypeToFileIdMap[agent._type._id]\n );\n const exportData = createAgentExportTemplate();\n exportData.agents[agent._id] = agent;\n saveJsonToFile(exportData, fileName);\n }\n}\n\n/**\n * Import an agent from file\n * @param {string} agentId agent id/name\n * @param {string} file import file name\n */\nexport async function importAgentFromFile(agentId: string, file: string) {\n const verbose = state.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n // check if this is a file with multiple agents and get agent by id\n if (importData.agents && importData.agents[agentId]) {\n const agent = importData.agents[agentId];\n importData.agents = {};\n importData.agents[agentId] = agent;\n } else if (importData.agents) {\n importData.agents = null;\n }\n // if an agentId was specified, only import the matching agent\n if (importData.agents) {\n if (!verbose) showSpinner(`Importing ${agentId}...`);\n try {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n await importAgent(agentId, importData);\n succeedSpinner(`Imported ${agentId}.`);\n } catch (importError) {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n failSpinner(`${importError}`);\n }\n } else {\n showSpinner(`Importing ${agentId}...`);\n failSpinner(`${agentId} not found!`);\n }\n });\n}\n\n/**\n * Import first agent from file\n * @param {string} file import file name\n */\nexport async function importFirstAgentFromFile(file: string) {\n const verbose = state.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (Object.keys(importData.agents).length > 0) {\n for (const agent of Object.values(importData.agents)) {\n if (!verbose) showSpinner(`Importing ${agent['_id']}...`);\n try {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n await importAgent(agent['_id'], importData);\n succeedSpinner(`Imported ${agent['_id']}.`);\n } catch (importError) {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n failSpinner(`${importError}`);\n }\n return;\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No agents found!`);\n }\n });\n}\n\n/**\n * Import agents from file\n * @param {String} file file name\n */\nexport async function importAgentsFromFile(file) {\n debugMessage(`importAgentsFromFile: start`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(`importAgentsFromFile: importing ${file}`);\n const importData = JSON.parse(data) as AgentExportInterface;\n try {\n await importAgents(importData);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`importAgentsFromFile: end`);\n });\n}\n\n/**\n * Import all agents from separate files\n */\nexport async function importAgentsFromFiles() {\n const names = fs.readdirSync('.');\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.agent.json')\n );\n for (const file of agentFiles) {\n await importAgentsFromFile(file);\n }\n}\n\n/**\n * Import an identity gateway agent from file\n * @param {string} agentId agent id/name\n * @param {string} file import file name\n */\nexport async function importIdentityGatewayAgentFromFile(\n agentId: string,\n file: string\n) {\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentFromFile: start`);\n const verbose = state.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n // check if this is a file with multiple agents and get agent by id\n if (importData.agents && importData.agents[agentId]) {\n const agent = importData.agents[agentId];\n importData.agents = {};\n importData.agents[agentId] = agent;\n } else if (importData.agents) {\n importData.agents = null;\n }\n // if an agentId was specified, only import the matching agent\n if (importData.agents) {\n if (!verbose) showSpinner(`Importing ${agentId}...`);\n try {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n await importIdentityGatewayAgent(agentId, importData);\n succeedSpinner(`Imported ${agentId}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n } else {\n showSpinner(`Importing ${agentId}...`);\n failSpinner(`${agentId} not found!`);\n }\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentFromFile: end`);\n });\n}\n\n/**\n * Import first identity gateway agent from file\n * @param {string} file import file name\n */\nexport async function importFirstIdentityGatewayAgentFromFile(file: string) {\n debugMessage(`cli.AgentOps.importFirstIdentityGatewayAgentFromFile: start`);\n const verbose = state.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (Object.keys(importData.agents).length > 0) {\n for (const agent of Object.values(importData.agents)) {\n if (!verbose) showSpinner(`Importing ${agent['_id']}...`);\n try {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n await importIdentityGatewayAgent(agent['_id'], importData);\n succeedSpinner(`Imported ${agent['_id']}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n return;\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No agents found!`);\n }\n debugMessage(`cli.AgentOps.importFirstIdentityGatewayAgentFromFile: end`);\n });\n}\n\n/**\n * Import identity gateway agents from file\n * @param {String} file file name\n */\nexport async function importIdentityGatewayAgentsFromFile(file) {\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFile: start`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(\n `cli.AgentOps.importIdentityGatewayAgentsFromFile: importing ${file}`\n );\n const importData = JSON.parse(data) as AgentExportInterface;\n try {\n await importIdentityGatewayAgents(importData);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFile: end`);\n });\n}\n\n/**\n * Import all identity gateway agents from separate files\n */\nexport async function importIdentityGatewayAgentsFromFiles() {\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFiles: start`);\n const names = fs.readdirSync('.');\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.agent.json')\n );\n for (const file of agentFiles) {\n await importIdentityGatewayAgentsFromFile(file);\n }\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFiles: end`);\n}\n\n/**\n * Import an java agent from file\n * @param {string} agentId agent id/name\n * @param {string} file import file name\n */\nexport async function importJavaAgentFromFile(agentId: string, file: string) {\n debugMessage(`cli.AgentOps.importJavaAgentFromFile: start`);\n const verbose = state.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n // check if this is a file with multiple agents and get agent by id\n if (importData.agents && importData.agents[agentId]) {\n const agent = importData.agents[agentId];\n importData.agents = {};\n importData.agents[agentId] = agent;\n } else if (importData.agents) {\n importData.agents = null;\n }\n // if an agentId was specified, only import the matching agent\n if (importData.agents) {\n if (!verbose) showSpinner(`Importing ${agentId}...`);\n try {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n await importJavaAgent(agentId, importData);\n succeedSpinner(`Imported ${agentId}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n } else {\n showSpinner(`Importing ${agentId}...`);\n failSpinner(`${agentId} not found!`);\n }\n debugMessage(`cli.AgentOps.importJavaAgentFromFile: end`);\n });\n}\n\n/**\n * Import first java agent from file\n * @param {string} file import file name\n */\nexport async function importFirstJavaAgentFromFile(file: string) {\n debugMessage(`cli.AgentOps.importFirstJavaAgentFromFile: start`);\n const verbose = state.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (Object.keys(importData.agents).length > 0) {\n for (const agent of Object.values(importData.agents)) {\n if (!verbose) showSpinner(`Importing ${agent['_id']}...`);\n try {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n await importJavaAgent(agent['_id'], importData);\n succeedSpinner(`Imported ${agent['_id']}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n return;\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No agents found!`);\n }\n debugMessage(`cli.AgentOps.importFirstJavaAgentFromFile: end`);\n });\n}\n\n/**\n * Import java agents from file\n * @param {String} file file name\n */\nexport async function importJavaAgentsFromFile(file) {\n debugMessage(`cli.AgentOps.importJavaAgentsFromFile: start`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(`cli.AgentOps.importJavaAgentsFromFile: importing ${file}`);\n const importData = JSON.parse(data) as AgentExportInterface;\n try {\n await importJavaAgents(importData);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`cli.AgentOps.importJavaAgentsFromFile: end`);\n });\n}\n\n/**\n * Import all java agents from separate files\n */\nexport async function importJavaAgentsFromFiles() {\n debugMessage(`cli.AgentOps.importJavaAgentsFromFiles: start`);\n const names = fs.readdirSync('.');\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.agent.json')\n );\n for (const file of agentFiles) {\n await importJavaAgentsFromFile(file);\n }\n debugMessage(`cli.AgentOps.importJavaAgentsFromFiles: end`);\n}\n\n/**\n * Import an web agent from file\n * @param {string} agentId agent id/name\n * @param {string} file import file name\n */\nexport async function importWebAgentFromFile(agentId: string, file: string) {\n debugMessage(`cli.AgentOps.importWebAgentFromFile: start`);\n const verbose = state.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n // check if this is a file with multiple agents and get agent by id\n if (importData.agents && importData.agents[agentId]) {\n const agent = importData.agents[agentId];\n importData.agents = {};\n importData.agents[agentId] = agent;\n } else if (importData.agents) {\n importData.agents = null;\n }\n // if an agentId was specified, only import the matching agent\n if (importData.agents) {\n if (!verbose) showSpinner(`Importing ${agentId}...`);\n try {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n await importWebAgent(agentId, importData);\n succeedSpinner(`Imported ${agentId}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n } else {\n showSpinner(`Importing ${agentId}...`);\n failSpinner(`${agentId} not found!`);\n }\n debugMessage(`cli.AgentOps.importWebAgentFromFile: end`);\n });\n}\n\n/**\n * Import web gateway agent from file\n * @param {string} file import file name\n */\nexport async function importFirstWebAgentFromFile(file: string) {\n debugMessage(`cli.AgentOps.importFirstWebAgentFromFile: start`);\n const verbose = state.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (Object.keys(importData.agents).length > 0) {\n for (const agent of Object.values(importData.agents)) {\n if (!verbose) showSpinner(`Importing ${agent['_id']}...`);\n try {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n await importWebAgent(agent['_id'], importData);\n succeedSpinner(`Imported ${agent['_id']}.`);\n } catch (importError) {\n failSpinner(`caught it here ${importError}`);\n }\n break;\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No agents found!`);\n }\n debugMessage(`cli.AgentOps.importFirstWebAgentFromFile: end`);\n });\n}\n\n/**\n * Import web agents from file\n * @param {String} file file name\n */\nexport async function importWebAgentsFromFile(file) {\n debugMessage(`cli.AgentOps.importWebAgentsFromFile: start`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(`cli.AgentOps.importWebAgentsFromFile: importing ${file}`);\n const importData = JSON.parse(data) as AgentExportInterface;\n try {\n await importWebAgents(importData);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`cli.AgentOps.importWebAgentsFromFile: end`);\n });\n}\n\n/**\n * Import all web agents from separate files\n */\nexport async function importWebAgentsFromFiles() {\n debugMessage(`cli.AgentOps.importWebAgentsFromFiles: start`);\n const names = fs.readdirSync('.');\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.agent.json')\n );\n for (const file of agentFiles) {\n await importWebAgentsFromFile(file);\n }\n debugMessage(`cli.AgentOps.importWebAgentsFromFiles: end`);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AgentOps.js","names":["frodo","state","fs","createTable","debugMessage","failSpinner","printMessage","showSpinner","succeedSpinner","getTypedFilename","saveJsonToFile","titleCase","getRealmName","getFilePath","getWorkingDirectory","utils","createAgentExportTemplate","readAgents","readIdentityGatewayAgents","readJavaAgents","readWebAgents","exportAgents","exportIdentityGatewayAgents","exportJavaAgents","exportWebAgents","exportAgent","exportIdentityGatewayAgent","exportJavaAgent","exportWebAgent","importAgent","importIdentityGatewayAgent","importJavaAgent","importWebAgent","importAgents","importIdentityGatewayAgents","importJavaAgents","importWebAgents","agent","agentTypeToFileIdMap","IdentityGatewayAgent","J2EEAgent","WebAgent","listAgents","long","agents","table","status","_type","_id","push","name","toString","forEach","error","stack","listIdentityGatewayAgents","listJavaAgents","listWebAgents","exportAgentsToFile","file","exportData","fileName","getRealm","exportIdentityGatewayAgentsToFile","exportJavaAgentsToFile","exportWebAgentsToFile","exportAgentToFile","agentId","exportIdentityGatewayAgentToFile","exportJavaAgentToFile","exportWebAgentToFile","exportAgentsToFiles","length","filePath","exportIdentityGatewayAgentsToFiles","exportJavaAgentsToFiles","exportWebAgentsToFiles","importAgentFromFile","verbose","getVerbose","readFile","err","data","importData","JSON","parse","importError","importFirstAgentFromFile","Object","keys","values","importAgentsFromFile","message","response","importAgentsFromFiles","names","readdirSync","agentFiles","filter","toLowerCase","endsWith","importIdentityGatewayAgentFromFile","importFirstIdentityGatewayAgentFromFile","importIdentityGatewayAgentsFromFile","importIdentityGatewayAgentsFromFiles","importJavaAgentFromFile","importFirstJavaAgentFromFile","importJavaAgentsFromFile","importJavaAgentsFromFiles","importWebAgentFromFile","importFirstWebAgentFromFile","importWebAgentsFromFile","importWebAgentsFromFiles"],"sources":["../../src/ops/AgentOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { type AgentExportInterface } from '@rockcarver/frodo-lib/types/ops/AgentOps';\nimport fs from 'fs';\n\nimport {\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n succeedSpinner,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\n\nconst { getRealmName, getFilePath, getWorkingDirectory } = frodo.utils;\nconst {\n createAgentExportTemplate,\n readAgents,\n readIdentityGatewayAgents,\n readJavaAgents,\n readWebAgents,\n exportAgents,\n exportIdentityGatewayAgents,\n exportJavaAgents,\n exportWebAgents,\n exportAgent,\n exportIdentityGatewayAgent,\n exportJavaAgent,\n exportWebAgent,\n importAgent,\n importIdentityGatewayAgent,\n importJavaAgent,\n importWebAgent,\n importAgents,\n importIdentityGatewayAgents,\n importJavaAgents,\n importWebAgents,\n} = frodo.agent;\n\nconst agentTypeToFileIdMap = {\n IdentityGatewayAgent: 'gateway.agent',\n J2EEAgent: 'java.agent',\n WebAgent: 'web.agent',\n};\n\n/**\n * List agents\n */\nexport async function listAgents(long = false) {\n try {\n const agents = await readAgents();\n if (long) {\n const table = createTable(['Agent Id', 'Status', 'Agent Type']);\n for (const agent of agents) {\n let status = 'Unknown';\n switch (agent._type._id) {\n case 'J2EEAgent':\n status = agent['globalJ2EEAgentConfig']['status'];\n break;\n case 'WebAgent':\n status = agent['globalWebAgentConfig']['status'];\n break;\n default:\n status = agent.status as string;\n break;\n }\n table.push([\n agent._id,\n status === 'Active' ? 'Active'['brightGreen'] : status['brightRed'],\n agent._type.name,\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n agents.forEach((agent) => {\n printMessage(`${agent._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * List identity gateway agents\n */\nexport async function listIdentityGatewayAgents(long = false) {\n try {\n const agents = await readIdentityGatewayAgents();\n if (long) {\n const table = createTable(['Gateway Agent Id', 'Status']);\n for (const agent of agents) {\n table.push([\n agent._id,\n agent.status === 'Active'\n ? 'Active'['brightGreen']\n : agent.status['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n agents.forEach((agent) => {\n printMessage(`${agent._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing gateway agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * List java agents\n */\nexport async function listJavaAgents(long = false) {\n try {\n const agents = await readJavaAgents();\n if (long) {\n const table = createTable(['Java Agent Id', 'Status']);\n for (const agent of agents) {\n table.push([\n agent._id,\n agent['globalJ2EEAgentConfig']['status'] === 'Active'\n ? 'Active'['brightGreen']\n : agent['globalJ2EEAgentConfig']['status']['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n agents.forEach((agent) => {\n printMessage(`${agent._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing java agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * List web agents\n */\nexport async function listWebAgents(long = false) {\n try {\n const agents = await readWebAgents();\n if (long) {\n const table = createTable(['Web Agent Id', 'Status']);\n for (const agent of agents) {\n table.push([\n agent._id,\n agent['globalWebAgentConfig']['status'] === 'Active'\n ? 'Active'['brightGreen']\n : agent['globalWebAgentConfig']['status']['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n agents.forEach((agent) => {\n printMessage(`${agent._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing web agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * Export all agents to file\n * @param {string} file file name\n */\nexport async function exportAgentsToFile(file) {\n const exportData = await exportAgents();\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Agents`,\n 'agent'\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, getFilePath(fileName, true));\n}\n\n/**\n * Export all identity gateway agents to file\n * @param {string} file file name\n */\nexport async function exportIdentityGatewayAgentsToFile(file) {\n const exportData = await exportIdentityGatewayAgents();\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Agents`,\n agentTypeToFileIdMap['IdentityGatewayAgent']\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, getFilePath(fileName, true));\n}\n\n/**\n * Export all java agents to file\n * @param {string} file file name\n */\nexport async function exportJavaAgentsToFile(file) {\n const exportData = await exportJavaAgents();\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Agents`,\n agentTypeToFileIdMap['J2EEAgent']\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, getFilePath(fileName, true));\n}\n\n/**\n * Export all web agents to file\n * @param {string} file file name\n */\nexport async function exportWebAgentsToFile(file) {\n const exportData = await exportWebAgents();\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Agents`,\n agentTypeToFileIdMap['WebAgent']\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, getFilePath(fileName, true));\n}\n\n/**\n * Export agent to file\n * @param {string} agentId agent id\n * @param {string} file file name\n */\nexport async function exportAgentToFile(agentId, file) {\n const exportData = await exportAgent(agentId);\n let fileName = getTypedFilename(\n agentId,\n agentTypeToFileIdMap[exportData.agents[agentId]._type._id]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, getFilePath(fileName, true));\n}\n\n/**\n * Export identity gateway agent to file\n * @param {string} agentId agent id\n * @param {string} file file name\n */\nexport async function exportIdentityGatewayAgentToFile(agentId, file) {\n const exportData = await exportIdentityGatewayAgent(agentId);\n let fileName = getTypedFilename(\n agentId,\n agentTypeToFileIdMap[exportData.agents[agentId]._type._id]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, getFilePath(fileName, true));\n}\n\n/**\n * Export java agent to file\n * @param {string} agentId agent id\n * @param {string} file file name\n */\nexport async function exportJavaAgentToFile(agentId, file) {\n const exportData = await exportJavaAgent(agentId);\n let fileName = getTypedFilename(\n agentId,\n agentTypeToFileIdMap[exportData.agents[agentId]._type._id]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, getFilePath(fileName, true));\n}\n\n/**\n * Export web agent to file\n * @param {string} agentId agent id\n * @param {string} file file name\n */\nexport async function exportWebAgentToFile(agentId, file) {\n const exportData = await exportWebAgent(agentId);\n let fileName = getTypedFilename(\n agentId,\n agentTypeToFileIdMap[exportData.agents[agentId]._type._id]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, getFilePath(fileName, true));\n}\n\n/**\n * Export all agents to separate files\n */\nexport async function exportAgentsToFiles() {\n const agents = await readAgents();\n debugMessage(`exportAgentsToFiles: ${agents.length} agents`);\n for (const agent of agents) {\n const fileName = getTypedFilename(\n agent._id,\n agentTypeToFileIdMap[agent._type._id]\n );\n const filePath = getFilePath(fileName, true);\n const exportData = createAgentExportTemplate();\n exportData.agents[agent._id] = agent;\n debugMessage(`exportAgentsToFiles: exporting ${agent._id} to ${filePath}`);\n saveJsonToFile(exportData, filePath);\n }\n debugMessage(`exportAgentsToFiles: done.`);\n}\n\n/**\n * Export all identity gateway agents to separate files\n */\nexport async function exportIdentityGatewayAgentsToFiles() {\n const agents = await readIdentityGatewayAgents();\n for (const agent of agents) {\n const fileName = getTypedFilename(\n agent._id,\n agentTypeToFileIdMap[agent._type._id]\n );\n const exportData = createAgentExportTemplate();\n exportData.agents[agent._id] = agent;\n saveJsonToFile(exportData, getFilePath(fileName, true));\n }\n}\n\n/**\n * Export all java agents to separate files\n */\nexport async function exportJavaAgentsToFiles() {\n const agents = await readJavaAgents();\n for (const agent of agents) {\n const fileName = getTypedFilename(\n agent._id,\n agentTypeToFileIdMap[agent._type._id]\n );\n const exportData = createAgentExportTemplate();\n exportData.agents[agent._id] = agent;\n saveJsonToFile(exportData, getFilePath(fileName, true));\n }\n}\n\n/**\n * Export all web agents to separate files\n */\nexport async function exportWebAgentsToFiles() {\n const agents = await readWebAgents();\n for (const agent of agents) {\n const fileName = getTypedFilename(\n agent._id,\n agentTypeToFileIdMap[agent._type._id]\n );\n const exportData = createAgentExportTemplate();\n exportData.agents[agent._id] = agent;\n saveJsonToFile(exportData, getFilePath(fileName, true));\n }\n}\n\n/**\n * Import an agent from file\n * @param {string} agentId agent id/name\n * @param {string} file import file name\n */\nexport async function importAgentFromFile(agentId: string, file: string) {\n const verbose = state.getVerbose();\n fs.readFile(getFilePath(file), 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n // check if this is a file with multiple agents and get agent by id\n if (importData.agents && importData.agents[agentId]) {\n const agent = importData.agents[agentId];\n importData.agents = {};\n importData.agents[agentId] = agent;\n } else if (importData.agents) {\n importData.agents = null;\n }\n // if an agentId was specified, only import the matching agent\n if (importData.agents) {\n if (!verbose) showSpinner(`Importing ${agentId}...`);\n try {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n await importAgent(agentId, importData);\n succeedSpinner(`Imported ${agentId}.`);\n } catch (importError) {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n failSpinner(`${importError}`);\n }\n } else {\n showSpinner(`Importing ${agentId}...`);\n failSpinner(`${agentId} not found!`);\n }\n });\n}\n\n/**\n * Import first agent from file\n * @param {string} file import file name\n */\nexport async function importFirstAgentFromFile(file: string) {\n const verbose = state.getVerbose();\n fs.readFile(getFilePath(file), 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (Object.keys(importData.agents).length > 0) {\n for (const agent of Object.values(importData.agents)) {\n if (!verbose) showSpinner(`Importing ${agent['_id']}...`);\n try {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n await importAgent(agent['_id'], importData);\n succeedSpinner(`Imported ${agent['_id']}.`);\n } catch (importError) {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n failSpinner(`${importError}`);\n }\n return;\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No agents found!`);\n }\n });\n}\n\n/**\n * Import agents from file\n * @param {String} file file name\n */\nexport async function importAgentsFromFile(file) {\n debugMessage(`importAgentsFromFile: start`);\n const filePath = getFilePath(file);\n fs.readFile(filePath, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(`importAgentsFromFile: importing ${filePath}`);\n const importData = JSON.parse(data) as AgentExportInterface;\n try {\n await importAgents(importData);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`importAgentsFromFile: end`);\n });\n}\n\n/**\n * Import all agents from separate files\n */\nexport async function importAgentsFromFiles() {\n const names = fs.readdirSync(getWorkingDirectory());\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.agent.json')\n );\n for (const file of agentFiles) {\n await importAgentsFromFile(file);\n }\n}\n\n/**\n * Import an identity gateway agent from file\n * @param {string} agentId agent id/name\n * @param {string} file import file name\n */\nexport async function importIdentityGatewayAgentFromFile(\n agentId: string,\n file: string\n) {\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentFromFile: start`);\n const verbose = state.getVerbose();\n fs.readFile(getFilePath(file), 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n // check if this is a file with multiple agents and get agent by id\n if (importData.agents && importData.agents[agentId]) {\n const agent = importData.agents[agentId];\n importData.agents = {};\n importData.agents[agentId] = agent;\n } else if (importData.agents) {\n importData.agents = null;\n }\n // if an agentId was specified, only import the matching agent\n if (importData.agents) {\n if (!verbose) showSpinner(`Importing ${agentId}...`);\n try {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n await importIdentityGatewayAgent(agentId, importData);\n succeedSpinner(`Imported ${agentId}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n } else {\n showSpinner(`Importing ${agentId}...`);\n failSpinner(`${agentId} not found!`);\n }\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentFromFile: end`);\n });\n}\n\n/**\n * Import first identity gateway agent from file\n * @param {string} file import file name\n */\nexport async function importFirstIdentityGatewayAgentFromFile(file: string) {\n debugMessage(`cli.AgentOps.importFirstIdentityGatewayAgentFromFile: start`);\n const verbose = state.getVerbose();\n fs.readFile(getFilePath(file), 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (Object.keys(importData.agents).length > 0) {\n for (const agent of Object.values(importData.agents)) {\n if (!verbose) showSpinner(`Importing ${agent['_id']}...`);\n try {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n await importIdentityGatewayAgent(agent['_id'], importData);\n succeedSpinner(`Imported ${agent['_id']}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n return;\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No agents found!`);\n }\n debugMessage(`cli.AgentOps.importFirstIdentityGatewayAgentFromFile: end`);\n });\n}\n\n/**\n * Import identity gateway agents from file\n * @param {String} file file name\n */\nexport async function importIdentityGatewayAgentsFromFile(file) {\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFile: start`);\n const filePath = getFilePath(file);\n fs.readFile(filePath, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(\n `cli.AgentOps.importIdentityGatewayAgentsFromFile: importing ${filePath}`\n );\n const importData = JSON.parse(data) as AgentExportInterface;\n try {\n await importIdentityGatewayAgents(importData);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFile: end`);\n });\n}\n\n/**\n * Import all identity gateway agents from separate files\n */\nexport async function importIdentityGatewayAgentsFromFiles() {\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFiles: start`);\n const names = fs.readdirSync(getWorkingDirectory());\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.agent.json')\n );\n for (const file of agentFiles) {\n await importIdentityGatewayAgentsFromFile(file);\n }\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFiles: end`);\n}\n\n/**\n * Import an java agent from file\n * @param {string} agentId agent id/name\n * @param {string} file import file name\n */\nexport async function importJavaAgentFromFile(agentId: string, file: string) {\n debugMessage(`cli.AgentOps.importJavaAgentFromFile: start`);\n const verbose = state.getVerbose();\n fs.readFile(getFilePath(file), 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n // check if this is a file with multiple agents and get agent by id\n if (importData.agents && importData.agents[agentId]) {\n const agent = importData.agents[agentId];\n importData.agents = {};\n importData.agents[agentId] = agent;\n } else if (importData.agents) {\n importData.agents = null;\n }\n // if an agentId was specified, only import the matching agent\n if (importData.agents) {\n if (!verbose) showSpinner(`Importing ${agentId}...`);\n try {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n await importJavaAgent(agentId, importData);\n succeedSpinner(`Imported ${agentId}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n } else {\n showSpinner(`Importing ${agentId}...`);\n failSpinner(`${agentId} not found!`);\n }\n debugMessage(`cli.AgentOps.importJavaAgentFromFile: end`);\n });\n}\n\n/**\n * Import first java agent from file\n * @param {string} file import file name\n */\nexport async function importFirstJavaAgentFromFile(file: string) {\n debugMessage(`cli.AgentOps.importFirstJavaAgentFromFile: start`);\n const verbose = state.getVerbose();\n fs.readFile(getFilePath(file), 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (Object.keys(importData.agents).length > 0) {\n for (const agent of Object.values(importData.agents)) {\n if (!verbose) showSpinner(`Importing ${agent['_id']}...`);\n try {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n await importJavaAgent(agent['_id'], importData);\n succeedSpinner(`Imported ${agent['_id']}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n return;\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No agents found!`);\n }\n debugMessage(`cli.AgentOps.importFirstJavaAgentFromFile: end`);\n });\n}\n\n/**\n * Import java agents from file\n * @param {String} file file name\n */\nexport async function importJavaAgentsFromFile(file) {\n debugMessage(`cli.AgentOps.importJavaAgentsFromFile: start`);\n const filePath = getFilePath(file);\n fs.readFile(filePath, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(\n `cli.AgentOps.importJavaAgentsFromFile: importing ${filePath}`\n );\n const importData = JSON.parse(data) as AgentExportInterface;\n try {\n await importJavaAgents(importData);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`cli.AgentOps.importJavaAgentsFromFile: end`);\n });\n}\n\n/**\n * Import all java agents from separate files\n */\nexport async function importJavaAgentsFromFiles() {\n debugMessage(`cli.AgentOps.importJavaAgentsFromFiles: start`);\n const names = fs.readdirSync(getWorkingDirectory());\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.agent.json')\n );\n for (const file of agentFiles) {\n await importJavaAgentsFromFile(file);\n }\n debugMessage(`cli.AgentOps.importJavaAgentsFromFiles: end`);\n}\n\n/**\n * Import an web agent from file\n * @param {string} agentId agent id/name\n * @param {string} file import file name\n */\nexport async function importWebAgentFromFile(agentId: string, file: string) {\n debugMessage(`cli.AgentOps.importWebAgentFromFile: start`);\n const verbose = state.getVerbose();\n fs.readFile(getFilePath(file), 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n // check if this is a file with multiple agents and get agent by id\n if (importData.agents && importData.agents[agentId]) {\n const agent = importData.agents[agentId];\n importData.agents = {};\n importData.agents[agentId] = agent;\n } else if (importData.agents) {\n importData.agents = null;\n }\n // if an agentId was specified, only import the matching agent\n if (importData.agents) {\n if (!verbose) showSpinner(`Importing ${agentId}...`);\n try {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n await importWebAgent(agentId, importData);\n succeedSpinner(`Imported ${agentId}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n } else {\n showSpinner(`Importing ${agentId}...`);\n failSpinner(`${agentId} not found!`);\n }\n debugMessage(`cli.AgentOps.importWebAgentFromFile: end`);\n });\n}\n\n/**\n * Import web gateway agent from file\n * @param {string} file import file name\n */\nexport async function importFirstWebAgentFromFile(file: string) {\n debugMessage(`cli.AgentOps.importFirstWebAgentFromFile: start`);\n const verbose = state.getVerbose();\n fs.readFile(getFilePath(file), 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (Object.keys(importData.agents).length > 0) {\n for (const agent of Object.values(importData.agents)) {\n if (!verbose) showSpinner(`Importing ${agent['_id']}...`);\n try {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n await importWebAgent(agent['_id'], importData);\n succeedSpinner(`Imported ${agent['_id']}.`);\n } catch (importError) {\n failSpinner(`caught it here ${importError}`);\n }\n break;\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No agents found!`);\n }\n debugMessage(`cli.AgentOps.importFirstWebAgentFromFile: end`);\n });\n}\n\n/**\n * Import web agents from file\n * @param {String} file file name\n */\nexport async function importWebAgentsFromFile(file) {\n debugMessage(`cli.AgentOps.importWebAgentsFromFile: start`);\n const filePath = getFilePath(file);\n fs.readFile(filePath, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(`cli.AgentOps.importWebAgentsFromFile: importing ${filePath}`);\n const importData = JSON.parse(data) as AgentExportInterface;\n try {\n await importWebAgents(importData);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`cli.AgentOps.importWebAgentsFromFile: end`);\n });\n}\n\n/**\n * Import all web agents from separate files\n */\nexport async function importWebAgentsFromFiles() {\n debugMessage(`cli.AgentOps.importWebAgentsFromFiles: start`);\n const names = fs.readdirSync(getWorkingDirectory());\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.agent.json')\n );\n for (const file of agentFiles) {\n await importWebAgentsFromFile(file);\n }\n debugMessage(`cli.AgentOps.importWebAgentsFromFiles: end`);\n}\n"],"mappings":"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"}
@@ -5,7 +5,9 @@ import { saveJsonToFile } from '../utils/ExportImportUtils';
5
5
  import wordwrap from './utils/Wordwrap';
6
6
  const {
7
7
  getTypedFilename,
8
- titleCase
8
+ titleCase,
9
+ getFilePath,
10
+ getWorkingDirectory
9
11
  } = frodo.utils;
10
12
  const {
11
13
  readApplications: _readApplications,
@@ -114,9 +116,10 @@ export async function exportApplicationToFile(applicationName, file, options = {
114
116
  if (file) {
115
117
  fileName = file;
116
118
  }
119
+ const filePath = getFilePath(fileName, true);
117
120
  const exportData = await _exportApplicationByName(applicationName, options);
118
- saveJsonToFile(exportData, fileName);
119
- succeedSpinner(`Exported ${applicationName} to ${fileName}.`);
121
+ saveJsonToFile(exportData, filePath);
122
+ succeedSpinner(`Exported ${applicationName} to ${filePath}.`);
120
123
  outcome = true;
121
124
  } catch (error) {
122
125
  failSpinner(`Error exporting ${applicationName}: ${error.message}`);
@@ -143,9 +146,10 @@ export async function exportApplicationsToFile(file, options = {
143
146
  if (file) {
144
147
  fileName = file;
145
148
  }
149
+ const filePath = getFilePath(fileName, true);
146
150
  const exportData = await _exportApplications(options);
147
- saveJsonToFile(exportData, fileName);
148
- succeedSpinner(`Exported all applications to ${fileName}.`);
151
+ saveJsonToFile(exportData, filePath);
152
+ succeedSpinner(`Exported all applications to ${filePath}.`);
149
153
  outcome = true;
150
154
  } catch (error) {
151
155
  failSpinner(`Error exporting all applications`);
@@ -173,7 +177,7 @@ export async function exportApplicationsToFiles(options = {
173
177
  const file = getTypedFilename(application.name, 'application');
174
178
  try {
175
179
  const exportData = await _exportApplication(application._id, options);
176
- saveJsonToFile(exportData, file);
180
+ saveJsonToFile(exportData, getFilePath(file, true));
177
181
  updateProgressBar(`Exported ${application._id}.`);
178
182
  } catch (error) {
179
183
  errors.push(error);
@@ -203,7 +207,7 @@ export async function importApplicationFromFile(applicationName, file, options =
203
207
  debugMessage(`cli.ApplicationOps.importApplicationFromFile: begin`);
204
208
  showSpinner(`Importing ${applicationName}...`);
205
209
  try {
206
- const data = fs.readFileSync(file, 'utf8');
210
+ const data = fs.readFileSync(getFilePath(file), 'utf8');
207
211
  const fileData = JSON.parse(data);
208
212
  await _importApplicationByName(applicationName, fileData, options);
209
213
  outcome = true;
@@ -227,15 +231,16 @@ export async function importFirstApplicationFromFile(file, options = {
227
231
  }) {
228
232
  let outcome = false;
229
233
  debugMessage(`cli.ApplicationOps.importFirstApplicationFromFile: begin`);
230
- showSpinner(`Importing ${file}...`);
234
+ const filePath = getFilePath(file);
235
+ showSpinner(`Importing ${filePath}...`);
231
236
  try {
232
- const data = fs.readFileSync(file, 'utf8');
237
+ const data = fs.readFileSync(filePath, 'utf8');
233
238
  const fileData = JSON.parse(data);
234
239
  await _importFirstApplication(fileData, options);
235
240
  outcome = true;
236
- succeedSpinner(`Imported ${file}.`);
241
+ succeedSpinner(`Imported ${filePath}.`);
237
242
  } catch (error) {
238
- failSpinner(`Error importing ${file}.`);
243
+ failSpinner(`Error importing ${filePath}.`);
239
244
  printMessage(error, 'error');
240
245
  }
241
246
  debugMessage(`cli.ApplicationOps.importFirstApplicationFromFile: end`);
@@ -253,15 +258,16 @@ export async function importApplicationsFromFile(file, options = {
253
258
  }) {
254
259
  let outcome = false;
255
260
  debugMessage(`cli.ApplicationOps.importApplicationsFromFile: begin`);
256
- showSpinner(`Importing ${file}...`);
261
+ const filePath = getFilePath(file);
262
+ showSpinner(`Importing ${filePath}...`);
257
263
  try {
258
- const data = fs.readFileSync(file, 'utf8');
264
+ const data = fs.readFileSync(filePath, 'utf8');
259
265
  const applicationData = JSON.parse(data);
260
266
  await _importApplications(applicationData, options);
261
267
  outcome = true;
262
- succeedSpinner(`Imported ${file}.`);
268
+ succeedSpinner(`Imported ${filePath}.`);
263
269
  } catch (error) {
264
- failSpinner(`Error importing ${file}.`);
270
+ failSpinner(`Error importing ${filePath}.`);
265
271
  printMessage(error, 'error');
266
272
  }
267
273
  debugMessage(`cli.ApplicationOps.importApplicationsFromFile: end`);
@@ -279,8 +285,8 @@ export async function importApplicationsFromFiles(options = {
279
285
  const errors = [];
280
286
  try {
281
287
  debugMessage(`cli.ApplicationOps.importApplicationsFromFiles: begin`);
282
- const names = fs.readdirSync('.');
283
- const files = names.filter(name => name.toLowerCase().endsWith('.application.json'));
288
+ const names = fs.readdirSync(getWorkingDirectory());
289
+ const files = names.filter(name => name.toLowerCase().endsWith('.application.json')).map(name => getFilePath(name));
284
290
  createProgressBar(files.length, 'Importing applications...');
285
291
  let total = 0;
286
292
  for (const file of files) {
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationOps.js","names":["frodo","state","fs","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","saveJsonToFile","wordwrap","getTypedFilename","titleCase","utils","readApplications","_readApplications","deleteApplicationByName","_deleteApplicationByName","deleteApplications","_deleteApplications","exportApplication","_exportApplication","exportApplicationByName","_exportApplicationByName","exportApplications","_exportApplications","importApplicationByName","_importApplicationByName","importFirstApplication","_importFirstApplication","importApplications","_importApplications","app","listApplications","long","applications","sort","a","b","name","localeCompare","table","hAlign","content","forEach","push","_id","templateName","templateVersion","authoritative","description","toString","error","deleteApplication","applicationName","deep","outcome","message","deleted","length","exportApplicationToFile","file","options","useStringArrays","deps","fileName","exportData","exportApplicationsToFile","getRealmName","getRealm","exportApplicationsToFiles","errors","application","importApplicationFromFile","data","readFileSync","fileData","JSON","parse","importFirstApplicationFromFile","importApplicationsFromFile","applicationData","importApplicationsFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","total","count","Object","keys"],"sources":["../../src/ops/ApplicationOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport type {\n ApplicationExportInterface,\n ApplicationExportOptions,\n ApplicationImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/ApplicationOps';\nimport fs from 'fs';\n\nimport {\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport { saveJsonToFile } from '../utils/ExportImportUtils';\nimport wordwrap from './utils/Wordwrap';\n\nconst { getTypedFilename, titleCase } = frodo.utils;\nconst {\n readApplications: _readApplications,\n deleteApplicationByName: _deleteApplicationByName,\n deleteApplications: _deleteApplications,\n exportApplication: _exportApplication,\n exportApplicationByName: _exportApplicationByName,\n exportApplications: _exportApplications,\n importApplicationByName: _importApplicationByName,\n importFirstApplication: _importFirstApplication,\n importApplications: _importApplications,\n} = frodo.app;\n\n/**\n * List applications\n */\nexport async function listApplications(long = false) {\n try {\n const applications = await _readApplications();\n applications.sort((a, b) => a.name.localeCompare(b.name));\n if (long) {\n const table = createTable([\n 'Name',\n 'Id',\n 'Template',\n {\n hAlign: 'right',\n content: 'Version',\n },\n {\n hAlign: 'right',\n content: 'Authoritative',\n },\n 'Description',\n ]);\n applications.forEach((app) => {\n table.push([\n app.name,\n app._id,\n app.templateName,\n {\n hAlign: 'right',\n content: app.templateVersion,\n },\n {\n hAlign: 'right',\n content: app.authoritative,\n },\n wordwrap(app.description, 30),\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n applications.forEach((app) => {\n printMessage(`${app.name}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing applications - ${error}`, 'error');\n }\n}\n\n/**\n * Delete application\n * @param {string} applicationName application name\n * @param {boolean} deep deep delete (include dependencies)\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteApplication(\n applicationName: string,\n deep: boolean\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ApplicationOps.deleteApplication: begin`);\n showSpinner(`Deleting ${applicationName}...`);\n try {\n await _deleteApplicationByName(applicationName, deep);\n outcome = true;\n succeedSpinner(`Deleted ${applicationName}`);\n } catch (error) {\n failSpinner(`Error deleting ${applicationName}: ${error.message}`);\n }\n debugMessage(`cli.ApplicationOps.deleteApplication: end`);\n return outcome;\n}\n\n/**\n * Delete all applications\n * @param {boolean} deep deep delete (include dependencies)\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteApplications(deep: boolean): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ApplicationOps.deleteApplications: begin`);\n showSpinner(`Deleting all applications...`);\n try {\n const deleted = await _deleteApplications(deep);\n outcome = true;\n succeedSpinner(`Deleted ${deleted.length} applications`);\n } catch (error) {\n failSpinner(`Error deleting applications: ${error.message}`);\n }\n debugMessage(`cli.ApplicationOps.deleteApplications: end`);\n return outcome;\n}\n\n/**\n * Export application to file\n * @param {string} applicationName application 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 exportApplicationToFile(\n applicationName: string,\n file: string,\n options: ApplicationExportOptions = { useStringArrays: true, deps: true }\n) {\n let outcome = false;\n debugMessage(`cli.ApplicationOps.exportApplicationToFile: begin`);\n showSpinner(`Exporting ${applicationName}...`);\n try {\n let fileName = getTypedFilename(applicationName, 'application');\n if (file) {\n fileName = file;\n }\n const exportData = await _exportApplicationByName(applicationName, options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${applicationName} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${applicationName}: ${error.message}`);\n }\n debugMessage(`cli.ApplicationOps.exportApplicationToFile: end`);\n return outcome;\n}\n\n/**\n * Export all applications to file\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 exportApplicationsToFile(\n file: string,\n options: ApplicationExportOptions = { useStringArrays: true, deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ApplicationOps.exportApplicationsToFile: begin`);\n showSpinner(`Exporting all applications...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(frodo.utils.getRealmName(state.getRealm()))}Applications`,\n 'application'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await _exportApplications(options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all applications to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting all applications`);\n printMessage(`${error.message}`, 'error');\n }\n debugMessage(`cli.ApplicationOps.exportApplicationsToFile: end [${outcome}]`);\n return outcome;\n}\n\n/**\n * Export all applications to separate files\n * @param {ApplicationExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportApplicationsToFiles(\n options: ApplicationExportOptions = { useStringArrays: true, deps: true }\n) {\n debugMessage(`cli.ApplicationOps.exportApplicationsToFiles: begin`);\n const errors = [];\n try {\n const applications = await _readApplications();\n createProgressBar(applications.length, 'Exporting applications...');\n for (const application of applications) {\n const file = getTypedFilename(application.name, 'application');\n try {\n const exportData = await _exportApplication(application._id, options);\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${application._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${application._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting applications(s) to file(s)`);\n }\n debugMessage(`cli.ApplicationOps.exportApplicationsToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import application from file\n * @param {string} applicationName client id\n * @param {string} file file name\n * @param {ApplicationImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importApplicationFromFile(\n applicationName: string,\n file: string,\n options: ApplicationImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ApplicationOps.importApplicationFromFile: begin`);\n showSpinner(`Importing ${applicationName}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await _importApplicationByName(applicationName, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${applicationName}.`);\n } catch (error) {\n failSpinner(`Error importing ${applicationName}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ApplicationOps.importApplicationFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first application from file\n * @param {string} file file name\n * @param {ApplicationImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstApplicationFromFile(\n file: string,\n options: ApplicationImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ApplicationOps.importFirstApplicationFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await _importFirstApplication(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ApplicationOps.importFirstApplicationFromFile: end`);\n return outcome;\n}\n\n/**\n * Import applications from file\n * @param {string} file file name\n * @param {ApplicationImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importApplicationsFromFile(\n file: string,\n options: ApplicationImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ApplicationOps.importApplicationsFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const applicationData = JSON.parse(data);\n await _importApplications(applicationData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ApplicationOps.importApplicationsFromFile: end`);\n return outcome;\n}\n\n/**\n * Import applications from files\n * @param {ApplicationImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importApplicationsFromFiles(\n options: ApplicationImportOptions = { deps: true }\n): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.ApplicationOps.importApplicationsFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.application.json')\n );\n createProgressBar(files.length, 'Importing applications...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: ApplicationExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.application).length;\n total += count;\n await _importApplications(fileData, options);\n updateProgressBar(`Imported ${count} application(s) from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing application(s) from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} application(s) from ${files.length} file(s).`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing application(s) from file(s).`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ApplicationOps.importApplicationsFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ApplicationOps.js","names":["frodo","state","fs","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","saveJsonToFile","wordwrap","getTypedFilename","titleCase","getFilePath","getWorkingDirectory","utils","readApplications","_readApplications","deleteApplicationByName","_deleteApplicationByName","deleteApplications","_deleteApplications","exportApplication","_exportApplication","exportApplicationByName","_exportApplicationByName","exportApplications","_exportApplications","importApplicationByName","_importApplicationByName","importFirstApplication","_importFirstApplication","importApplications","_importApplications","app","listApplications","long","applications","sort","a","b","name","localeCompare","table","hAlign","content","forEach","push","_id","templateName","templateVersion","authoritative","description","toString","error","deleteApplication","applicationName","deep","outcome","message","deleted","length","exportApplicationToFile","file","options","useStringArrays","deps","fileName","filePath","exportData","exportApplicationsToFile","getRealmName","getRealm","exportApplicationsToFiles","errors","application","importApplicationFromFile","data","readFileSync","fileData","JSON","parse","importFirstApplicationFromFile","importApplicationsFromFile","applicationData","importApplicationsFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","map","total","count","Object","keys"],"sources":["../../src/ops/ApplicationOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport type {\n ApplicationExportInterface,\n ApplicationExportOptions,\n ApplicationImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/ApplicationOps';\nimport fs from 'fs';\n\nimport {\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport { saveJsonToFile } from '../utils/ExportImportUtils';\nimport wordwrap from './utils/Wordwrap';\n\nconst { getTypedFilename, titleCase, getFilePath, getWorkingDirectory } =\n frodo.utils;\nconst {\n readApplications: _readApplications,\n deleteApplicationByName: _deleteApplicationByName,\n deleteApplications: _deleteApplications,\n exportApplication: _exportApplication,\n exportApplicationByName: _exportApplicationByName,\n exportApplications: _exportApplications,\n importApplicationByName: _importApplicationByName,\n importFirstApplication: _importFirstApplication,\n importApplications: _importApplications,\n} = frodo.app;\n\n/**\n * List applications\n */\nexport async function listApplications(long = false) {\n try {\n const applications = await _readApplications();\n applications.sort((a, b) => a.name.localeCompare(b.name));\n if (long) {\n const table = createTable([\n 'Name',\n 'Id',\n 'Template',\n {\n hAlign: 'right',\n content: 'Version',\n },\n {\n hAlign: 'right',\n content: 'Authoritative',\n },\n 'Description',\n ]);\n applications.forEach((app) => {\n table.push([\n app.name,\n app._id,\n app.templateName,\n {\n hAlign: 'right',\n content: app.templateVersion,\n },\n {\n hAlign: 'right',\n content: app.authoritative,\n },\n wordwrap(app.description, 30),\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n applications.forEach((app) => {\n printMessage(`${app.name}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing applications - ${error}`, 'error');\n }\n}\n\n/**\n * Delete application\n * @param {string} applicationName application name\n * @param {boolean} deep deep delete (include dependencies)\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteApplication(\n applicationName: string,\n deep: boolean\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ApplicationOps.deleteApplication: begin`);\n showSpinner(`Deleting ${applicationName}...`);\n try {\n await _deleteApplicationByName(applicationName, deep);\n outcome = true;\n succeedSpinner(`Deleted ${applicationName}`);\n } catch (error) {\n failSpinner(`Error deleting ${applicationName}: ${error.message}`);\n }\n debugMessage(`cli.ApplicationOps.deleteApplication: end`);\n return outcome;\n}\n\n/**\n * Delete all applications\n * @param {boolean} deep deep delete (include dependencies)\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteApplications(deep: boolean): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ApplicationOps.deleteApplications: begin`);\n showSpinner(`Deleting all applications...`);\n try {\n const deleted = await _deleteApplications(deep);\n outcome = true;\n succeedSpinner(`Deleted ${deleted.length} applications`);\n } catch (error) {\n failSpinner(`Error deleting applications: ${error.message}`);\n }\n debugMessage(`cli.ApplicationOps.deleteApplications: end`);\n return outcome;\n}\n\n/**\n * Export application to file\n * @param {string} applicationName application 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 exportApplicationToFile(\n applicationName: string,\n file: string,\n options: ApplicationExportOptions = { useStringArrays: true, deps: true }\n) {\n let outcome = false;\n debugMessage(`cli.ApplicationOps.exportApplicationToFile: begin`);\n showSpinner(`Exporting ${applicationName}...`);\n try {\n let fileName = getTypedFilename(applicationName, 'application');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await _exportApplicationByName(applicationName, options);\n saveJsonToFile(exportData, filePath);\n succeedSpinner(`Exported ${applicationName} to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${applicationName}: ${error.message}`);\n }\n debugMessage(`cli.ApplicationOps.exportApplicationToFile: end`);\n return outcome;\n}\n\n/**\n * Export all applications to file\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 exportApplicationsToFile(\n file: string,\n options: ApplicationExportOptions = { useStringArrays: true, deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ApplicationOps.exportApplicationsToFile: begin`);\n showSpinner(`Exporting all applications...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(frodo.utils.getRealmName(state.getRealm()))}Applications`,\n 'application'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await _exportApplications(options);\n saveJsonToFile(exportData, filePath);\n succeedSpinner(`Exported all applications to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting all applications`);\n printMessage(`${error.message}`, 'error');\n }\n debugMessage(`cli.ApplicationOps.exportApplicationsToFile: end [${outcome}]`);\n return outcome;\n}\n\n/**\n * Export all applications to separate files\n * @param {ApplicationExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportApplicationsToFiles(\n options: ApplicationExportOptions = { useStringArrays: true, deps: true }\n) {\n debugMessage(`cli.ApplicationOps.exportApplicationsToFiles: begin`);\n const errors = [];\n try {\n const applications = await _readApplications();\n createProgressBar(applications.length, 'Exporting applications...');\n for (const application of applications) {\n const file = getTypedFilename(application.name, 'application');\n try {\n const exportData = await _exportApplication(application._id, options);\n saveJsonToFile(exportData, getFilePath(file, true));\n updateProgressBar(`Exported ${application._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${application._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting applications(s) to file(s)`);\n }\n debugMessage(`cli.ApplicationOps.exportApplicationsToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import application from file\n * @param {string} applicationName client id\n * @param {string} file file name\n * @param {ApplicationImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importApplicationFromFile(\n applicationName: string,\n file: string,\n options: ApplicationImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ApplicationOps.importApplicationFromFile: begin`);\n showSpinner(`Importing ${applicationName}...`);\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data);\n await _importApplicationByName(applicationName, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${applicationName}.`);\n } catch (error) {\n failSpinner(`Error importing ${applicationName}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ApplicationOps.importApplicationFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first application from file\n * @param {string} file file name\n * @param {ApplicationImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstApplicationFromFile(\n file: string,\n options: ApplicationImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ApplicationOps.importFirstApplicationFromFile: 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 _importFirstApplication(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${filePath}.`);\n } catch (error) {\n failSpinner(`Error importing ${filePath}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ApplicationOps.importFirstApplicationFromFile: end`);\n return outcome;\n}\n\n/**\n * Import applications from file\n * @param {string} file file name\n * @param {ApplicationImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importApplicationsFromFile(\n file: string,\n options: ApplicationImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ApplicationOps.importApplicationsFromFile: begin`);\n const filePath = getFilePath(file);\n showSpinner(`Importing ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const applicationData = JSON.parse(data);\n await _importApplications(applicationData, options);\n outcome = true;\n succeedSpinner(`Imported ${filePath}.`);\n } catch (error) {\n failSpinner(`Error importing ${filePath}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ApplicationOps.importApplicationsFromFile: end`);\n return outcome;\n}\n\n/**\n * Import applications from files\n * @param {ApplicationImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importApplicationsFromFiles(\n options: ApplicationImportOptions = { deps: true }\n): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.ApplicationOps.importApplicationsFromFiles: begin`);\n const names = fs.readdirSync(getWorkingDirectory());\n const files = names\n .filter((name) => name.toLowerCase().endsWith('.application.json'))\n .map((name) => getFilePath(name));\n createProgressBar(files.length, 'Importing applications...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: ApplicationExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.application).length;\n total += count;\n await _importApplications(fileData, options);\n updateProgressBar(`Imported ${count} application(s) from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing application(s) from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} application(s) from ${files.length} file(s).`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing application(s) from file(s).`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ApplicationOps.importApplicationsFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
@@ -3,7 +3,9 @@ import fs from 'fs';
3
3
  import { createProgressBar, createTable, debugMessage, failSpinner, printMessage, showSpinner, stopProgressBar, succeedSpinner, updateProgressBar } from '../utils/Console';
4
4
  import { getTypedFilename, saveJsonToFile, titleCase } from '../utils/ExportImportUtils';
5
5
  const {
6
- getRealmName
6
+ getRealmName,
7
+ getFilePath,
8
+ getWorkingDirectory
7
9
  } = frodo.utils;
8
10
  const {
9
11
  readCirclesOfTrust,
@@ -89,9 +91,10 @@ export async function exportCircleOfTrustToFile(cotId, file = null) {
89
91
  if (file) {
90
92
  fileName = file;
91
93
  }
94
+ const filePath = getFilePath(fileName, true);
92
95
  const exportData = await exportCircleOfTrust(cotId);
93
- saveJsonToFile(exportData, fileName);
94
- succeedSpinner(`Exported ${cotId} to ${fileName}.`);
96
+ saveJsonToFile(exportData, filePath);
97
+ succeedSpinner(`Exported ${cotId} to ${filePath}.`);
95
98
  outcome = true;
96
99
  } catch (error) {
97
100
  failSpinner(`Error exporting ${cotId}: ${error.message}`);
@@ -113,9 +116,10 @@ export async function exportCirclesOfTrustToFile(file = null) {
113
116
  if (file) {
114
117
  fileName = file;
115
118
  }
119
+ const filePath = getFilePath(fileName, true);
116
120
  const exportData = await exportCirclesOfTrust();
117
- saveJsonToFile(exportData, fileName);
118
- succeedSpinner(`Exported all circles of trust to ${fileName}.`);
121
+ saveJsonToFile(exportData, filePath);
122
+ succeedSpinner(`Exported all circles of trust to ${filePath}.`);
119
123
  outcome = true;
120
124
  } catch (error) {
121
125
  failSpinner(`Error exporting circles of trust: ${error.message}`);
@@ -137,7 +141,7 @@ export async function exportCirclesOfTrustToFiles() {
137
141
  const file = getTypedFilename(cot._id, 'cot.saml');
138
142
  try {
139
143
  const exportData = await exportCircleOfTrust(cot._id);
140
- saveJsonToFile(exportData, file);
144
+ saveJsonToFile(exportData, getFilePath(file, true));
141
145
  updateProgressBar(`Exported ${cot.name}.`);
142
146
  } catch (error) {
143
147
  errors.push(error);
@@ -160,17 +164,18 @@ export async function exportCirclesOfTrustToFiles() {
160
164
  */
161
165
  export async function importCircleOfTrustFromFile(cotId, file) {
162
166
  let outcome = false;
163
- showSpinner(`Importing circle of trust ${cotId} from ${file}...`);
164
- fs.readFile(file, 'utf8', async (err, data) => {
167
+ const filePath = getFilePath(file);
168
+ showSpinner(`Importing circle of trust ${cotId} from ${filePath}...`);
169
+ fs.readFile(filePath, 'utf8', async (err, data) => {
165
170
  if (err) throw err;
166
171
  try {
167
172
  const fileData = JSON.parse(data);
168
173
  await importCircleOfTrust(cotId, fileData);
169
174
  outcome = true;
170
- succeedSpinner(`Imported circle of trust ${cotId} from ${file}.`);
175
+ succeedSpinner(`Imported circle of trust ${cotId} from ${filePath}.`);
171
176
  } catch (error) {
172
177
  var _error$response;
173
- failSpinner(`Error importing circle of trust ${cotId} from ${file}.`);
178
+ failSpinner(`Error importing circle of trust ${cotId} from ${filePath}.`);
174
179
  printMessage(((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data) || error, 'error');
175
180
  }
176
181
  });
@@ -183,17 +188,18 @@ export async function importCircleOfTrustFromFile(cotId, file) {
183
188
  */
184
189
  export async function importFirstCircleOfTrustFromFile(file) {
185
190
  let outcome = false;
186
- showSpinner(`Importing first circle of trust from ${file}...`);
187
- fs.readFile(file, 'utf8', async (err, data) => {
191
+ const filePath = getFilePath(file);
192
+ showSpinner(`Importing first circle of trust from ${filePath}...`);
193
+ fs.readFile(filePath, 'utf8', async (err, data) => {
188
194
  if (err) throw err;
189
195
  try {
190
196
  const fileData = JSON.parse(data);
191
197
  await importFirstCircleOfTrust(fileData);
192
198
  outcome = true;
193
- succeedSpinner(`Imported first circle of trust from ${file}.`);
199
+ succeedSpinner(`Imported first circle of trust from ${filePath}.`);
194
200
  } catch (error) {
195
201
  var _error$response2;
196
- failSpinner(`Error importing first circle of trust from ${file}.`);
202
+ failSpinner(`Error importing first circle of trust from ${filePath}.`);
197
203
  printMessage(((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : _error$response2.data) || error, 'error');
198
204
  }
199
205
  });
@@ -206,17 +212,18 @@ export async function importFirstCircleOfTrustFromFile(file) {
206
212
  */
207
213
  export async function importCirclesOfTrustFromFile(file) {
208
214
  let outcome = false;
209
- showSpinner(`Importing circles of trust from ${file}...`);
210
- fs.readFile(file, 'utf8', async (err, data) => {
215
+ const filePath = getFilePath(file);
216
+ showSpinner(`Importing circles of trust from ${filePath}...`);
217
+ fs.readFile(filePath, 'utf8', async (err, data) => {
211
218
  if (err) throw err;
212
219
  try {
213
220
  const fileData = JSON.parse(data);
214
221
  await importCirclesOfTrust(fileData);
215
222
  outcome = true;
216
- succeedSpinner(`Imported circles of trust from ${file}.`);
223
+ succeedSpinner(`Imported circles of trust from ${filePath}.`);
217
224
  } catch (error) {
218
225
  var _error$response3;
219
- failSpinner(`Error importing circles of trust from ${file}.`);
226
+ failSpinner(`Error importing circles of trust from ${filePath}.`);
220
227
  printMessage(((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.data) || error, 'error');
221
228
  }
222
229
  });
@@ -230,8 +237,8 @@ export async function importCirclesOfTrustFromFiles() {
230
237
  const errors = [];
231
238
  try {
232
239
  debugMessage(`cli.CirclesOfTrustOps.importCirclesOfTrustFromFiles: begin`);
233
- const names = fs.readdirSync('.');
234
- const files = names.filter(name => name.toLowerCase().endsWith('.cot.saml.json'));
240
+ const names = fs.readdirSync(getWorkingDirectory());
241
+ const files = names.filter(name => name.toLowerCase().endsWith('.cot.saml.json')).map(name => getFilePath(name));
235
242
  createProgressBar(files.length, 'Importing circles of trust...');
236
243
  let total = 0;
237
244
  for (const file of files) {