@rockcarver/frodo-lib 0.12.5 → 0.12.6

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 (74) hide show
  1. package/CHANGELOG.md +23 -8
  2. package/cjs/api/ApiTypes.js +42 -0
  3. package/cjs/api/ApiTypes.js.map +1 -0
  4. package/cjs/api/Saml2Api.js +1 -1
  5. package/cjs/api/Saml2Api.js.map +1 -1
  6. package/cjs/index.js +9 -1
  7. package/cjs/index.js.map +1 -1
  8. package/cjs/ops/CirclesOfTrustOps.js +12 -1
  9. package/cjs/ops/CirclesOfTrustOps.js.map +1 -1
  10. package/cjs/ops/EmailTemplateOps.js +12 -0
  11. package/cjs/ops/EmailTemplateOps.js.map +1 -1
  12. package/cjs/ops/IdpOps.js +12 -1
  13. package/cjs/ops/IdpOps.js.map +1 -1
  14. package/cjs/ops/JourneyOps.js +388 -140
  15. package/cjs/ops/JourneyOps.js.map +1 -1
  16. package/cjs/ops/NodeOps.js +13 -0
  17. package/cjs/ops/NodeOps.js.map +1 -1
  18. package/cjs/ops/OpsTypes.js +6 -0
  19. package/cjs/ops/OpsTypes.js.map +1 -0
  20. package/cjs/ops/Saml2Ops.js +24 -1
  21. package/cjs/ops/Saml2Ops.js.map +1 -1
  22. package/cjs/ops/ScriptOps.js +12 -0
  23. package/cjs/ops/ScriptOps.js.map +1 -1
  24. package/cjs/ops/ThemeOps.js +12 -0
  25. package/cjs/ops/ThemeOps.js.map +1 -1
  26. package/cjs/ops/utils/Console.js +18 -1
  27. package/cjs/ops/utils/Console.js.map +1 -1
  28. package/cjs/ops/utils/ExportImportUtils.js.map +1 -1
  29. package/cjs/storage/SessionStorage.js +4 -0
  30. package/cjs/storage/SessionStorage.js.map +1 -1
  31. package/esm/api/ApiTypes.mjs +33 -0
  32. package/esm/api/Saml2Api.mjs +1 -1
  33. package/esm/index.mjs +2 -0
  34. package/esm/ops/CirclesOfTrustOps.mjs +11 -1
  35. package/esm/ops/EmailTemplateOps.mjs +11 -1
  36. package/esm/ops/IdpOps.mjs +11 -1
  37. package/esm/ops/JourneyOps.mjs +269 -82
  38. package/esm/ops/NodeOps.mjs +11 -0
  39. package/esm/ops/OpsTypes.mjs +2 -0
  40. package/esm/ops/Saml2Ops.mjs +20 -2
  41. package/esm/ops/ScriptOps.mjs +10 -0
  42. package/esm/ops/ThemeOps.mjs +10 -0
  43. package/esm/ops/utils/Console.mjs +16 -1
  44. package/esm/storage/SessionStorage.mjs +4 -0
  45. package/package.json +1 -1
  46. package/types/api/ApiTypes.d.ts +102 -0
  47. package/types/api/ApiTypes.d.ts.map +1 -0
  48. package/types/api/Saml2Api.d.ts +1 -1
  49. package/types/api/Saml2Api.d.ts.map +1 -1
  50. package/types/index.d.ts +2 -0
  51. package/types/index.d.ts.map +1 -1
  52. package/types/ops/CirclesOfTrustOps.d.ts +7 -0
  53. package/types/ops/CirclesOfTrustOps.d.ts.map +1 -1
  54. package/types/ops/EmailTemplateOps.d.ts +7 -0
  55. package/types/ops/EmailTemplateOps.d.ts.map +1 -1
  56. package/types/ops/IdpOps.d.ts +7 -0
  57. package/types/ops/IdpOps.d.ts.map +1 -1
  58. package/types/ops/JourneyOps.d.ts +107 -89
  59. package/types/ops/JourneyOps.d.ts.map +1 -1
  60. package/types/ops/NodeOps.d.ts +8 -0
  61. package/types/ops/NodeOps.d.ts.map +1 -1
  62. package/types/ops/OpsTypes.d.ts +66 -0
  63. package/types/ops/OpsTypes.d.ts.map +1 -0
  64. package/types/ops/Saml2Ops.d.ts +13 -0
  65. package/types/ops/Saml2Ops.d.ts.map +1 -1
  66. package/types/ops/ScriptOps.d.ts +7 -0
  67. package/types/ops/ScriptOps.d.ts.map +1 -1
  68. package/types/ops/ThemeOps.d.ts +7 -0
  69. package/types/ops/ThemeOps.d.ts.map +1 -1
  70. package/types/ops/utils/Console.d.ts +9 -1
  71. package/types/ops/utils/Console.d.ts.map +1 -1
  72. package/types/ops/utils/ExportImportUtils.d.ts.map +1 -1
  73. package/types/storage/SessionStorage.d.ts +4 -0
  74. package/types/storage/SessionStorage.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"IdpOps.js","names":["getFileDataTemplate","meta","script","idp","listSocialProviders","providers","getSocialIdentityProviders","result","sort","a","b","_id","localeCompare","forEach","socialIdentityProvider","printMessage","err","message","getSocialProvider","providerId","then","response","foundProviders","filter","provider","length","Error","exportSocialProviderToFile","file","fileName","getTypedFilename","createProgressIndicator","idpData","updateProgressIndicator","fileData","transform","scriptData","getScript","convertBase64TextToArray","saveJsonToFile","stopProgressIndicator","exportSocialProvidersToFile","getRealmString","allIdpsData","exportSocialProvidersToFiles","importSocialProviderFromFile","fs","readFile","data","JSON","parse","validateImport","found","idpId","hasOwnProperty","call","scriptId","convertTextArrayToBase64","createOrUpdateScript","putProviderByTypeAndId","_type","catch","importProviderErr","brightCyan","importFirstSocialProviderFromFile","importSocialProvidersFromFile","Object","keys","name","importSocialProvidersFromFiles","names","readdirSync","jsonFiles","toLowerCase","endsWith","total","readFileSync","count"],"sources":["ops/IdpOps.ts"],"sourcesContent":["import fs from 'fs';\nimport {\n getSocialIdentityProviders,\n putProviderByTypeAndId,\n} from '../api/SocialIdentityProvidersApi';\nimport { getScript } from '../api/ScriptApi';\nimport { createOrUpdateScript } from './ScriptOps';\nimport {\n convertBase64TextToArray,\n convertTextArrayToBase64,\n getRealmString,\n getTypedFilename,\n saveJsonToFile,\n validateImport,\n} from './utils/ExportImportUtils';\nimport {\n printMessage,\n createProgressIndicator,\n updateProgressIndicator,\n stopProgressIndicator,\n} from './utils/Console';\n\n// use a function vs a template variable to avoid problems in loops\nfunction getFileDataTemplate() {\n return {\n meta: {},\n script: {},\n idp: {},\n };\n}\n\n/**\n * List providers\n */\nexport async function listSocialProviders() {\n try {\n const providers = await getSocialIdentityProviders();\n providers.result.sort((a, b) => a._id.localeCompare(b._id));\n providers.result.forEach((socialIdentityProvider) => {\n printMessage(`${socialIdentityProvider._id}`, 'data');\n });\n } catch (err) {\n printMessage(`listSocialProviders ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n}\n\n/**\n * Get social identity provider by id\n * @param {String} providerId social identity provider id/name\n * @returns {Promise} a promise that resolves a social identity provider object\n */\nexport async function getSocialProvider(providerId) {\n return getSocialIdentityProviders().then((response) => {\n const foundProviders = response.result.filter(\n (provider) => provider._id === providerId\n );\n switch (foundProviders.length) {\n case 1:\n return foundProviders[0];\n case 0:\n throw new Error(`Provider '${providerId}' not found`);\n default:\n throw new Error(\n `${foundProviders.length} providers '${providerId}' found`\n );\n }\n });\n}\n\n/**\n * Export provider by id\n * @param {String} providerId provider id/name\n * @param {String} file optional export file name\n */\nexport async function exportSocialProviderToFile(providerId, file = '') {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(providerId, 'idp');\n }\n createProgressIndicator(1, `Exporting ${providerId}`);\n try {\n const idpData = await getSocialProvider(providerId);\n updateProgressIndicator(`Writing file ${fileName}`);\n const fileData = getFileDataTemplate();\n fileData.idp[idpData._id] = idpData;\n if (idpData.transform) {\n const scriptData = await getScript(idpData.transform);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n fileData.script[idpData.transform] = scriptData;\n }\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `Exported ${providerId['brightCyan']} to ${fileName['brightCyan']}.`\n );\n } catch (err) {\n stopProgressIndicator(`${err}`);\n printMessage(`${err}`, 'error');\n }\n}\n\n/**\n * Export all providers\n * @param {String} file optional export file name\n */\nexport async function exportSocialProvidersToFile(file) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(`all${getRealmString()}Providers`, 'idp');\n }\n const fileData = getFileDataTemplate();\n const allIdpsData = (await getSocialIdentityProviders()).result;\n createProgressIndicator(allIdpsData.length, 'Exporting providers');\n for (const idpData of allIdpsData) {\n updateProgressIndicator(`Exporting provider ${idpData._id}`);\n fileData.idp[idpData._id] = idpData;\n if (idpData.transform) {\n // eslint-disable-next-line no-await-in-loop\n const scriptData = await getScript(idpData.transform);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n fileData.script[idpData.transform] = scriptData;\n }\n }\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `${allIdpsData.length} providers exported to ${fileName}.`\n );\n}\n\n/**\n * Export all providers to individual files\n */\nexport async function exportSocialProvidersToFiles() {\n const allIdpsData = await (await getSocialIdentityProviders()).result;\n // printMessage(allIdpsData, 'data');\n createProgressIndicator(allIdpsData.length, 'Exporting providers');\n for (const idpData of allIdpsData) {\n updateProgressIndicator(`Writing provider ${idpData._id}`);\n const fileName = getTypedFilename(idpData._id, 'idp');\n const fileData = getFileDataTemplate();\n fileData.idp[idpData._id] = idpData;\n if (idpData.transform) {\n // eslint-disable-next-line no-await-in-loop\n const scriptData = await getScript(idpData.transform);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n fileData.script[idpData.transform] = scriptData;\n }\n saveJsonToFile(fileData, fileName);\n }\n stopProgressIndicator(`${allIdpsData.length} providers exported.`);\n}\n\n/**\n * Import provider by id/name\n * @param {String} providerId provider id/name\n * @param {String} file import file name\n */\nexport async function importSocialProviderFromFile(providerId, file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(1, 'Importing provider...');\n let found = false;\n for (const idpId in fileData.idp) {\n if ({}.hasOwnProperty.call(fileData.idp, idpId)) {\n if (idpId === providerId) {\n found = true;\n updateProgressIndicator(`Importing ${fileData.idp[idpId]._id}`);\n const scriptId = fileData.idp[idpId].transform;\n const scriptData = fileData.script[scriptId];\n if (scriptId && scriptData) {\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n // eslint-disable-next-line no-await-in-loop\n await createOrUpdateScript(\n fileData.idp[idpId].transform,\n fileData.script[fileData.idp[idpId].transform]\n );\n }\n putProviderByTypeAndId(\n fileData.idp[idpId]._type._id,\n idpId,\n fileData.idp[idpId]\n )\n .then(() => {\n stopProgressIndicator(\n `Successfully imported provider ${providerId}.`\n );\n })\n .catch((importProviderErr) => {\n stopProgressIndicator(\n `Error importing provider ${fileData.idp[idpId]._id}`\n );\n printMessage(\n `\\nError importing provider ${providerId}`,\n 'error'\n );\n printMessage(importProviderErr.response.data, 'error');\n });\n break;\n }\n }\n }\n if (!found) {\n stopProgressIndicator(\n `Provider ${providerId.brightCyan} not found in ${file.brightCyan}!`\n );\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import first provider from file\n * @param {String} file import file name\n */\nexport async function importFirstSocialProviderFromFile(file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(1, 'Importing provider...');\n for (const idpId in fileData.idp) {\n if ({}.hasOwnProperty.call(fileData.idp, idpId)) {\n updateProgressIndicator(`Importing ${fileData.idp[idpId]._id}`);\n const scriptId = fileData.idp[idpId].transform;\n const scriptData = fileData.script[scriptId];\n if (scriptId && scriptData) {\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n // eslint-disable-next-line no-await-in-loop\n await createOrUpdateScript(\n fileData.idp[idpId].transform,\n fileData.script[fileData.idp[idpId].transform]\n );\n }\n putProviderByTypeAndId(\n fileData.idp[idpId]._type._id,\n idpId,\n fileData.idp[idpId]\n ).then((result) => {\n if (result == null) {\n stopProgressIndicator(\n `Error importing provider ${fileData.idp[idpId]._id}`\n );\n printMessage(\n `Error importing provider ${fileData.idp[idpId]._id}`,\n 'error'\n );\n } else {\n stopProgressIndicator(\n `Successfully imported provider ${fileData.idp[idpId]._id}.`\n );\n }\n });\n break;\n }\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all providers from file\n * @param {String} file import file name\n */\nexport async function importSocialProvidersFromFile(file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(\n Object.keys(fileData.idp).length,\n 'Importing providers...'\n );\n for (const idpId in fileData.idp) {\n if ({}.hasOwnProperty.call(fileData.idp, idpId)) {\n const scriptId = fileData.idp[idpId].transform;\n const scriptData = fileData.script[scriptId];\n if (scriptId && scriptData) {\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n // eslint-disable-next-line no-await-in-loop\n await createOrUpdateScript(\n fileData.idp[idpId].transform,\n fileData.script[fileData.idp[idpId].transform]\n );\n }\n // eslint-disable-next-line no-await-in-loop\n const result = await putProviderByTypeAndId(\n fileData.idp[idpId]._type._id,\n idpId,\n fileData.idp[idpId]\n );\n if (!result) {\n updateProgressIndicator(\n `Successfully imported ${fileData.idp[idpId].name}`\n );\n }\n }\n }\n stopProgressIndicator(`Providers imported.`);\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import providers from *.idp.json files in current working directory\n */\nexport async function importSocialProvidersFromFiles() {\n const names = fs.readdirSync('.');\n const jsonFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.idp.json')\n );\n\n createProgressIndicator(jsonFiles.length, 'Importing providers...');\n let total = 0;\n for (const file of jsonFiles) {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n const count = Object.keys(fileData.idp).length;\n total += count;\n for (const idpId in fileData.idp) {\n if ({}.hasOwnProperty.call(fileData.idp, idpId)) {\n // eslint-disable-next-line no-await-in-loop\n const result = await putProviderByTypeAndId(\n fileData.idp[idpId]._type._id,\n idpId,\n fileData.idp[idpId]\n );\n if (result == null) {\n printMessage(\n `Error importing ${count} providers from ${file}`,\n 'error'\n );\n }\n }\n }\n updateProgressIndicator(`Imported ${count} provider(s) from ${file}`);\n } else {\n printMessage(`Validation of ${file} failed!`, 'error');\n }\n }\n stopProgressIndicator(\n `Finished importing ${total} provider(s) from ${jsonFiles.length} file(s).`\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"IdpOps.js","names":["getOneLineDescription","socialIdpObj","description","_id","_type","getFileDataTemplate","meta","script","idp","listSocialProviders","providers","getSocialIdentityProviders","result","sort","a","b","localeCompare","forEach","socialIdentityProvider","printMessage","err","message","getSocialProvider","providerId","then","response","foundProviders","filter","provider","length","Error","exportSocialProviderToFile","file","fileName","getTypedFilename","createProgressIndicator","idpData","updateProgressIndicator","fileData","transform","scriptData","getScript","convertBase64TextToArray","saveJsonToFile","stopProgressIndicator","exportSocialProvidersToFile","getRealmString","allIdpsData","exportSocialProvidersToFiles","importSocialProviderFromFile","fs","readFile","data","JSON","parse","validateImport","found","idpId","hasOwnProperty","call","scriptId","convertTextArrayToBase64","createOrUpdateScript","putProviderByTypeAndId","catch","importProviderErr","brightCyan","importFirstSocialProviderFromFile","importSocialProvidersFromFile","Object","keys","name","importSocialProvidersFromFiles","names","readdirSync","jsonFiles","toLowerCase","endsWith","total","readFileSync","count"],"sources":["ops/IdpOps.ts"],"sourcesContent":["import fs from 'fs';\nimport {\n getSocialIdentityProviders,\n putProviderByTypeAndId,\n} from '../api/SocialIdentityProvidersApi';\nimport { getScript } from '../api/ScriptApi';\nimport { createOrUpdateScript } from './ScriptOps';\nimport {\n convertBase64TextToArray,\n convertTextArrayToBase64,\n getRealmString,\n getTypedFilename,\n saveJsonToFile,\n validateImport,\n} from './utils/ExportImportUtils';\nimport {\n printMessage,\n createProgressIndicator,\n updateProgressIndicator,\n stopProgressIndicator,\n} from './utils/Console';\nimport { SocialIdpSkeleton } from '../api/ApiTypes';\n\n/**\n * Get a one-line description of the social idp object\n * @param {SocialIdpSkeleton} socialIdpObj social idp object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(socialIdpObj: SocialIdpSkeleton): string {\n const description = `[${socialIdpObj._id['brightCyan']}] ${socialIdpObj._type._id}`;\n return description;\n}\n\n// use a function vs a template variable to avoid problems in loops\nfunction getFileDataTemplate() {\n return {\n meta: {},\n script: {},\n idp: {},\n };\n}\n\n/**\n * List providers\n */\nexport async function listSocialProviders() {\n try {\n const providers = await getSocialIdentityProviders();\n providers.result.sort((a, b) => a._id.localeCompare(b._id));\n providers.result.forEach((socialIdentityProvider) => {\n printMessage(`${socialIdentityProvider._id}`, 'data');\n });\n } catch (err) {\n printMessage(`listSocialProviders ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n}\n\n/**\n * Get social identity provider by id\n * @param {String} providerId social identity provider id/name\n * @returns {Promise} a promise that resolves a social identity provider object\n */\nexport async function getSocialProvider(providerId) {\n return getSocialIdentityProviders().then((response) => {\n const foundProviders = response.result.filter(\n (provider) => provider._id === providerId\n );\n switch (foundProviders.length) {\n case 1:\n return foundProviders[0];\n case 0:\n throw new Error(`Provider '${providerId}' not found`);\n default:\n throw new Error(\n `${foundProviders.length} providers '${providerId}' found`\n );\n }\n });\n}\n\n/**\n * Export provider by id\n * @param {String} providerId provider id/name\n * @param {String} file optional export file name\n */\nexport async function exportSocialProviderToFile(providerId, file = '') {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(providerId, 'idp');\n }\n createProgressIndicator(1, `Exporting ${providerId}`);\n try {\n const idpData = await getSocialProvider(providerId);\n updateProgressIndicator(`Writing file ${fileName}`);\n const fileData = getFileDataTemplate();\n fileData.idp[idpData._id] = idpData;\n if (idpData.transform) {\n const scriptData = await getScript(idpData.transform);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n fileData.script[idpData.transform] = scriptData;\n }\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `Exported ${providerId['brightCyan']} to ${fileName['brightCyan']}.`\n );\n } catch (err) {\n stopProgressIndicator(`${err}`);\n printMessage(`${err}`, 'error');\n }\n}\n\n/**\n * Export all providers\n * @param {String} file optional export file name\n */\nexport async function exportSocialProvidersToFile(file) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(`all${getRealmString()}Providers`, 'idp');\n }\n const fileData = getFileDataTemplate();\n const allIdpsData = (await getSocialIdentityProviders()).result;\n createProgressIndicator(allIdpsData.length, 'Exporting providers');\n for (const idpData of allIdpsData) {\n updateProgressIndicator(`Exporting provider ${idpData._id}`);\n fileData.idp[idpData._id] = idpData;\n if (idpData.transform) {\n // eslint-disable-next-line no-await-in-loop\n const scriptData = await getScript(idpData.transform);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n fileData.script[idpData.transform] = scriptData;\n }\n }\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `${allIdpsData.length} providers exported to ${fileName}.`\n );\n}\n\n/**\n * Export all providers to individual files\n */\nexport async function exportSocialProvidersToFiles() {\n const allIdpsData = await (await getSocialIdentityProviders()).result;\n // printMessage(allIdpsData, 'data');\n createProgressIndicator(allIdpsData.length, 'Exporting providers');\n for (const idpData of allIdpsData) {\n updateProgressIndicator(`Writing provider ${idpData._id}`);\n const fileName = getTypedFilename(idpData._id, 'idp');\n const fileData = getFileDataTemplate();\n fileData.idp[idpData._id] = idpData;\n if (idpData.transform) {\n // eslint-disable-next-line no-await-in-loop\n const scriptData = await getScript(idpData.transform);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n fileData.script[idpData.transform] = scriptData;\n }\n saveJsonToFile(fileData, fileName);\n }\n stopProgressIndicator(`${allIdpsData.length} providers exported.`);\n}\n\n/**\n * Import provider by id/name\n * @param {String} providerId provider id/name\n * @param {String} file import file name\n */\nexport async function importSocialProviderFromFile(providerId, file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(1, 'Importing provider...');\n let found = false;\n for (const idpId in fileData.idp) {\n if ({}.hasOwnProperty.call(fileData.idp, idpId)) {\n if (idpId === providerId) {\n found = true;\n updateProgressIndicator(`Importing ${fileData.idp[idpId]._id}`);\n const scriptId = fileData.idp[idpId].transform;\n const scriptData = fileData.script[scriptId];\n if (scriptId && scriptData) {\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n // eslint-disable-next-line no-await-in-loop\n await createOrUpdateScript(\n fileData.idp[idpId].transform,\n fileData.script[fileData.idp[idpId].transform]\n );\n }\n putProviderByTypeAndId(\n fileData.idp[idpId]._type._id,\n idpId,\n fileData.idp[idpId]\n )\n .then(() => {\n stopProgressIndicator(\n `Successfully imported provider ${providerId}.`\n );\n })\n .catch((importProviderErr) => {\n stopProgressIndicator(\n `Error importing provider ${fileData.idp[idpId]._id}`\n );\n printMessage(\n `\\nError importing provider ${providerId}`,\n 'error'\n );\n printMessage(importProviderErr.response.data, 'error');\n });\n break;\n }\n }\n }\n if (!found) {\n stopProgressIndicator(\n `Provider ${providerId.brightCyan} not found in ${file.brightCyan}!`\n );\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import first provider from file\n * @param {String} file import file name\n */\nexport async function importFirstSocialProviderFromFile(file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(1, 'Importing provider...');\n for (const idpId in fileData.idp) {\n if ({}.hasOwnProperty.call(fileData.idp, idpId)) {\n updateProgressIndicator(`Importing ${fileData.idp[idpId]._id}`);\n const scriptId = fileData.idp[idpId].transform;\n const scriptData = fileData.script[scriptId];\n if (scriptId && scriptData) {\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n // eslint-disable-next-line no-await-in-loop\n await createOrUpdateScript(\n fileData.idp[idpId].transform,\n fileData.script[fileData.idp[idpId].transform]\n );\n }\n putProviderByTypeAndId(\n fileData.idp[idpId]._type._id,\n idpId,\n fileData.idp[idpId]\n ).then((result) => {\n if (result == null) {\n stopProgressIndicator(\n `Error importing provider ${fileData.idp[idpId]._id}`\n );\n printMessage(\n `Error importing provider ${fileData.idp[idpId]._id}`,\n 'error'\n );\n } else {\n stopProgressIndicator(\n `Successfully imported provider ${fileData.idp[idpId]._id}.`\n );\n }\n });\n break;\n }\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all providers from file\n * @param {String} file import file name\n */\nexport async function importSocialProvidersFromFile(file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(\n Object.keys(fileData.idp).length,\n 'Importing providers...'\n );\n for (const idpId in fileData.idp) {\n if ({}.hasOwnProperty.call(fileData.idp, idpId)) {\n const scriptId = fileData.idp[idpId].transform;\n const scriptData = fileData.script[scriptId];\n if (scriptId && scriptData) {\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n // eslint-disable-next-line no-await-in-loop\n await createOrUpdateScript(\n fileData.idp[idpId].transform,\n fileData.script[fileData.idp[idpId].transform]\n );\n }\n // eslint-disable-next-line no-await-in-loop\n const result = await putProviderByTypeAndId(\n fileData.idp[idpId]._type._id,\n idpId,\n fileData.idp[idpId]\n );\n if (!result) {\n updateProgressIndicator(\n `Successfully imported ${fileData.idp[idpId].name}`\n );\n }\n }\n }\n stopProgressIndicator(`Providers imported.`);\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import providers from *.idp.json files in current working directory\n */\nexport async function importSocialProvidersFromFiles() {\n const names = fs.readdirSync('.');\n const jsonFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.idp.json')\n );\n\n createProgressIndicator(jsonFiles.length, 'Importing providers...');\n let total = 0;\n for (const file of jsonFiles) {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n const count = Object.keys(fileData.idp).length;\n total += count;\n for (const idpId in fileData.idp) {\n if ({}.hasOwnProperty.call(fileData.idp, idpId)) {\n // eslint-disable-next-line no-await-in-loop\n const result = await putProviderByTypeAndId(\n fileData.idp[idpId]._type._id,\n idpId,\n fileData.idp[idpId]\n );\n if (result == null) {\n printMessage(\n `Error importing ${count} providers from ${file}`,\n 'error'\n );\n }\n }\n }\n updateProgressIndicator(`Imported ${count} provider(s) from ${file}`);\n } else {\n printMessage(`Validation of ${file} failed!`, 'error');\n }\n }\n stopProgressIndicator(\n `Finished importing ${total} provider(s) from ${jsonFiles.length} file(s).`\n );\n}\n"],"mappings":"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"}