@rockcarver/frodo-lib 0.12.1 → 0.12.2-2

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 (159) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/cjs/api/BaseApi.js +36 -8
  3. package/cjs/api/BaseApi.js.map +1 -1
  4. package/cjs/api/NodeApi.js +190 -0
  5. package/cjs/api/NodeApi.js.map +1 -0
  6. package/cjs/api/NodeApi.test.js.map +1 -0
  7. package/cjs/api/OAuth2ClientApi.js +3 -1
  8. package/cjs/api/OAuth2ClientApi.js.map +1 -1
  9. package/cjs/api/SecretsApi.js +59 -29
  10. package/cjs/api/SecretsApi.js.map +1 -1
  11. package/cjs/api/StartupApi.js +21 -8
  12. package/cjs/api/StartupApi.js.map +1 -1
  13. package/cjs/api/StartupApi.test.js.map +1 -0
  14. package/cjs/api/TreeApi.js +30 -161
  15. package/cjs/api/TreeApi.js.map +1 -1
  16. package/cjs/api/TreeApi.test.js.map +1 -0
  17. package/cjs/api/VariablesApi.js +35 -20
  18. package/cjs/api/VariablesApi.js.map +1 -1
  19. package/cjs/index.js +15 -5
  20. package/cjs/index.js.map +1 -1
  21. package/cjs/ops/AuthenticateOps.js +1 -1
  22. package/cjs/ops/AuthenticateOps.js.map +1 -1
  23. package/cjs/ops/IdpOps.js +1 -1
  24. package/cjs/ops/IdpOps.js.map +1 -1
  25. package/cjs/ops/JourneyOps.js +233 -204
  26. package/cjs/ops/JourneyOps.js.map +1 -1
  27. package/cjs/ops/OAuth2ClientOps.js +27 -20
  28. package/cjs/ops/OAuth2ClientOps.js.map +1 -1
  29. package/cjs/ops/SecretsOps.js +9 -7
  30. package/cjs/ops/SecretsOps.js.map +1 -1
  31. package/cjs/ops/StartupOps.js +61 -71
  32. package/cjs/ops/StartupOps.js.map +1 -1
  33. package/cjs/ops/VariablesOps.js +3 -3
  34. package/cjs/ops/VariablesOps.js.map +1 -1
  35. package/cjs/ops/utils/Console.js +3 -2
  36. package/cjs/ops/utils/Console.js.map +1 -1
  37. package/cjs/ops/utils/ExportImportUtils.js +1 -0
  38. package/cjs/ops/utils/ExportImportUtils.js.map +1 -1
  39. package/esm/api/BaseApi.mjs +35 -7
  40. package/esm/api/NodeApi.mjs +114 -0
  41. package/esm/api/NodeApi.test.mjs +105 -0
  42. package/esm/api/OAuth2ClientApi.mjs +4 -2
  43. package/esm/api/SecretsApi.mjs +59 -29
  44. package/esm/api/StartupApi.mjs +18 -8
  45. package/esm/api/StartupApi.test.mjs +56 -0
  46. package/esm/api/TreeApi.mjs +29 -99
  47. package/esm/api/TreeApi.test.mjs +175 -0
  48. package/esm/api/VariablesApi.mjs +35 -20
  49. package/esm/index.mjs +7 -5
  50. package/esm/ops/AuthenticateOps.mjs +1 -1
  51. package/esm/ops/IdpOps.mjs +1 -1
  52. package/esm/ops/JourneyOps.mjs +186 -154
  53. package/esm/ops/OAuth2ClientOps.mjs +9 -4
  54. package/esm/ops/SecretsOps.mjs +9 -7
  55. package/esm/ops/StartupOps.mjs +59 -62
  56. package/esm/ops/VariablesOps.mjs +3 -3
  57. package/esm/ops/utils/Console.mjs +3 -2
  58. package/esm/ops/utils/ExportImportUtils.mjs +1 -0
  59. package/package.json +7 -4
  60. package/types/api/AuthenticateApi.d.ts +2 -0
  61. package/types/api/AuthenticateApi.d.ts.map +1 -0
  62. package/types/api/BaseApi.d.ts +50 -0
  63. package/types/api/BaseApi.d.ts.map +1 -0
  64. package/types/api/CirclesOfTrustApi.d.ts +24 -0
  65. package/types/api/CirclesOfTrustApi.d.ts.map +1 -0
  66. package/types/api/EmailTemplateApi.d.ts +22 -0
  67. package/types/api/EmailTemplateApi.d.ts.map +1 -0
  68. package/types/api/IdmConfigApi.d.ts +39 -0
  69. package/types/api/IdmConfigApi.d.ts.map +1 -0
  70. package/types/api/LogApi.d.ts +4 -0
  71. package/types/api/LogApi.d.ts.map +1 -0
  72. package/types/api/ManagedObjectApi.d.ts +21 -0
  73. package/types/api/ManagedObjectApi.d.ts.map +1 -0
  74. package/types/api/NodeApi.d.ts +38 -0
  75. package/types/api/NodeApi.d.ts.map +1 -0
  76. package/types/api/OAuth2ClientApi.d.ts +18 -0
  77. package/types/api/OAuth2ClientApi.d.ts.map +1 -0
  78. package/types/api/OAuth2OIDCApi.d.ts +22 -0
  79. package/types/api/OAuth2OIDCApi.d.ts.map +1 -0
  80. package/types/api/OAuth2ProviderApi.d.ts +5 -0
  81. package/types/api/OAuth2ProviderApi.d.ts.map +1 -0
  82. package/types/api/RealmApi.d.ts +30 -0
  83. package/types/api/RealmApi.d.ts.map +1 -0
  84. package/types/api/Saml2Api.d.ts +52 -0
  85. package/types/api/Saml2Api.d.ts.map +1 -0
  86. package/types/api/ScriptApi.d.ts +24 -0
  87. package/types/api/ScriptApi.d.ts.map +1 -0
  88. package/types/api/SecretsApi.d.ts +10 -0
  89. package/types/api/SecretsApi.d.ts.map +1 -0
  90. package/types/api/ServerInfoApi.d.ts +10 -0
  91. package/types/api/ServerInfoApi.d.ts.map +1 -0
  92. package/types/api/SocialIdentityProvidersApi.d.ts +31 -0
  93. package/types/api/SocialIdentityProvidersApi.d.ts.map +1 -0
  94. package/types/api/StartupApi.d.ts +14 -0
  95. package/types/api/StartupApi.d.ts.map +1 -0
  96. package/types/api/ThemeApi.d.ts +54 -0
  97. package/types/api/ThemeApi.d.ts.map +1 -0
  98. package/types/api/TreeApi.d.ts +24 -0
  99. package/types/api/TreeApi.d.ts.map +1 -0
  100. package/types/api/VariablesApi.d.ts +32 -0
  101. package/types/api/VariablesApi.d.ts.map +1 -0
  102. package/types/api/utils/ApiUtils.d.ts +29 -0
  103. package/types/api/utils/ApiUtils.d.ts.map +1 -0
  104. package/types/api/utils/Base64.d.ts +30 -0
  105. package/types/api/utils/Base64.d.ts.map +1 -0
  106. package/types/index.d.ts +26 -0
  107. package/types/index.d.ts.map +1 -0
  108. package/types/ops/AdminOps.d.ts +11 -0
  109. package/types/ops/AdminOps.d.ts.map +1 -0
  110. package/types/ops/AuthenticateOps.d.ts +6 -0
  111. package/types/ops/AuthenticateOps.d.ts.map +1 -0
  112. package/types/ops/CirclesOfTrustOps.d.ts +40 -0
  113. package/types/ops/CirclesOfTrustOps.d.ts.map +1 -0
  114. package/types/ops/ConnectionProfileOps.d.ts +47 -0
  115. package/types/ops/ConnectionProfileOps.d.ts.map +1 -0
  116. package/types/ops/EmailTemplateOps.d.ts +40 -0
  117. package/types/ops/EmailTemplateOps.d.ts.map +1 -0
  118. package/types/ops/IdmOps.d.ts +27 -0
  119. package/types/ops/IdmOps.d.ts.map +1 -0
  120. package/types/ops/IdpOps.d.ts +45 -0
  121. package/types/ops/IdpOps.d.ts.map +1 -0
  122. package/types/ops/JourneyOps.d.ts +151 -0
  123. package/types/ops/JourneyOps.d.ts.map +1 -0
  124. package/types/ops/LogOps.d.ts +5 -0
  125. package/types/ops/LogOps.d.ts.map +1 -0
  126. package/types/ops/ManagedObjectOps.d.ts +14 -0
  127. package/types/ops/ManagedObjectOps.d.ts.map +1 -0
  128. package/types/ops/OAuth2ClientOps.d.ts +24 -0
  129. package/types/ops/OAuth2ClientOps.d.ts.map +1 -0
  130. package/types/ops/OrganizationOps.d.ts +11 -0
  131. package/types/ops/OrganizationOps.d.ts.map +1 -0
  132. package/types/ops/RealmOps.d.ts +22 -0
  133. package/types/ops/RealmOps.d.ts.map +1 -0
  134. package/types/ops/SamlOps.d.ts +51 -0
  135. package/types/ops/SamlOps.d.ts.map +1 -0
  136. package/types/ops/ScriptOps.d.ts +30 -0
  137. package/types/ops/ScriptOps.d.ts.map +1 -0
  138. package/types/ops/SecretsOps.d.ts +63 -0
  139. package/types/ops/SecretsOps.d.ts.map +1 -0
  140. package/types/ops/StartupOps.d.ts +25 -0
  141. package/types/ops/StartupOps.d.ts.map +1 -0
  142. package/types/ops/ThemeOps.d.ts +66 -0
  143. package/types/ops/ThemeOps.d.ts.map +1 -0
  144. package/types/ops/VariablesOps.d.ts +39 -0
  145. package/types/ops/VariablesOps.d.ts.map +1 -0
  146. package/types/ops/utils/Console.d.ts +63 -0
  147. package/types/ops/utils/Console.d.ts.map +1 -0
  148. package/types/ops/utils/DataProtection.d.ts +6 -0
  149. package/types/ops/utils/DataProtection.d.ts.map +1 -0
  150. package/types/ops/utils/ExportImportUtils.d.ts +22 -0
  151. package/types/ops/utils/ExportImportUtils.d.ts.map +1 -0
  152. package/types/ops/utils/OpsUtils.d.ts +27 -0
  153. package/types/ops/utils/OpsUtils.d.ts.map +1 -0
  154. package/types/ops/utils/Wordwrap.d.ts +1 -0
  155. package/types/ops/utils/Wordwrap.d.ts.map +1 -0
  156. package/types/storage/SessionStorage.d.ts +47 -0
  157. package/types/storage/SessionStorage.d.ts.map +1 -0
  158. package/types/storage/StaticStorage.d.ts +14 -0
  159. package/types/storage/StaticStorage.d.ts.map +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"TreeApi.js","names":["nodeURLTemplate","queryAllNodesByTypeURLTemplate","queryAllNodesURLTemplate","queryAllNodeTypesURLTemplate","treeByIdURLTemplate","queryAllTreesURLTemplate","apiVersion","getTreeApiConfig","configPath","getCurrentRealmPath","path","getNodeTypes","urlString","util","format","storage","session","getTenant","generateAmApi","post","withCredentials","headers","getNodes","getNodesByType","type","get","getNode","id","nodeType","putNode","nodeData","data","deleteDeepByKey","put","deleteNode","delete","getTrees","getTree","putTree","deleteTree"],"sources":["api/TreeApi.ts"],"sourcesContent":["import util from 'util';\nimport { deleteDeepByKey, getCurrentRealmPath } from './utils/ApiUtils';\nimport { generateAmApi } from './BaseApi';\nimport storage from '../storage/SessionStorage';\n\nconst nodeURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/nodes/%s/%s';\nconst queryAllNodesByTypeURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/nodes/%s?_queryFilter=true';\nconst queryAllNodesURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/nodes?_action=nextdescendents';\nconst queryAllNodeTypesURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/nodes?_action=getAllTypes';\nconst treeByIdURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/trees/%s';\nconst queryAllTreesURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/trees?_queryFilter=true';\n\nconst apiVersion = 'protocol=2.1,resource=1.0';\nconst getTreeApiConfig = () => {\n const configPath = getCurrentRealmPath();\n return {\n path: `${configPath}/authentication/authenticationtrees`,\n apiVersion,\n };\n};\n\nexport async function getNodeTypes() {\n const urlString = util.format(\n queryAllNodeTypesURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath()\n );\n return generateAmApi(getTreeApiConfig()).post(\n urlString,\n {},\n {\n withCredentials: true,\n headers: { 'Accept-Encoding': 'gzip, deflate, br' },\n }\n );\n}\n\n/**\n * Get all nodes\n * @returns {Promise} a promise that resolves to an object containing an array of all node objects\n */\nexport async function getNodes() {\n const urlString = util.format(\n queryAllNodesURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath()\n );\n return generateAmApi(getTreeApiConfig()).post(\n urlString,\n {},\n {\n withCredentials: true,\n headers: { 'Accept-Encoding': 'gzip, deflate, br' },\n }\n );\n}\n\n/**\n * Get all nodes by type\n * @param {*} type node type\n * @returns {Promise} a promise that resolves to an object containing an array of node objects of the requested type\n */\nexport async function getNodesByType(type) {\n const urlString = util.format(\n queryAllNodesByTypeURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n type\n );\n return generateAmApi(getTreeApiConfig()).get(urlString, {\n withCredentials: true,\n });\n}\n\n/**\n * Get node by uuid and type\n * @param {String} id node uuid\n * @param {String} nodeType node type\n * @returns {Promise} a promise that resolves to an object containing a node object\n */\nexport async function getNode(id, nodeType) {\n const urlString = util.format(\n nodeURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n nodeType,\n id\n );\n return generateAmApi(getTreeApiConfig()).get(urlString, {\n withCredentials: true,\n });\n}\n\n/**\n * Put node by uuid and type\n * @param {String} id node uuid\n * @param {String} nodeType node type\n * @param {Object} data node object\n * @returns {Promise} a promise that resolves to an object containing a node object\n */\nexport async function putNode(id, nodeType, nodeData) {\n // until we figure out a way to use transport keys in Frodo,\n // we'll have to drop those encrypted attributes.\n const data = deleteDeepByKey(nodeData, '-encrypted');\n const urlString = util.format(\n nodeURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n nodeType,\n id\n );\n return generateAmApi(getTreeApiConfig()).put(urlString, data, {\n withCredentials: true,\n });\n}\n\n/**\n * Delete node by uuid and type\n * @param {String} id node uuid\n * @param {String} nodeType node type\n * @returns {Promise} a promise that resolves to an object containing a node object\n */\nexport async function deleteNode(id, nodeType) {\n const urlString = util.format(\n nodeURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n nodeType,\n id\n );\n return generateAmApi(getTreeApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n}\n\n/**\n * Get all trees\n * @returns {Promise} a promise that resolves to an object containing an array of tree objects\n */\nexport async function getTrees() {\n const urlString = util.format(\n queryAllTreesURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath()\n );\n return generateAmApi(getTreeApiConfig()).get(urlString, {\n withCredentials: true,\n });\n}\n\n/**\n * Get tree by id/name\n * @param {String} id tree id/name\n * @returns {Promise} a promise that resolves to an object containing a tree object\n */\nexport async function getTree(id) {\n const urlString = util.format(\n treeByIdURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n id\n );\n return generateAmApi(getTreeApiConfig()).get(urlString, {\n withCredentials: true,\n });\n}\n\n/**\n * Put tree by id/name\n * @param {String} id tree id/name\n * @param {Object} data tree object\n * @returns {Promise} a promise that resolves to an object containing a tree object\n */\nexport async function putTree(id, data) {\n const urlString = util.format(\n treeByIdURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n id\n );\n return generateAmApi(getTreeApiConfig()).put(urlString, data, {\n withCredentials: true,\n });\n}\n\n/**\n * Delete tree by id/name\n * @param {String} id tree id/name\n * @returns {Promise} a promise that resolves to an object containing a tree object\n */\nexport async function deleteTree(id) {\n const urlString = util.format(\n treeByIdURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n id\n );\n return generateAmApi(getTreeApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TreeApi.js","names":["treeByIdURLTemplate","queryAllTreesURLTemplate","apiVersion","getTreeApiConfig","configPath","getCurrentRealmPath","path","getTrees","urlString","util","format","storage","session","getTenant","data","generateAmApi","get","withCredentials","result","getTree","id","putTree","treeId","treeData","put","deleteTree","delete"],"sources":["api/TreeApi.ts"],"sourcesContent":["import util from 'util';\nimport { getCurrentRealmPath } from './utils/ApiUtils';\nimport { generateAmApi } from './BaseApi';\nimport storage from '../storage/SessionStorage';\n\nconst treeByIdURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/trees/%s';\nconst queryAllTreesURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/trees?_queryFilter=true';\n\nconst apiVersion = 'protocol=2.1,resource=1.0';\nconst getTreeApiConfig = () => {\n const configPath = getCurrentRealmPath();\n return {\n path: `${configPath}/authentication/authenticationtrees`,\n apiVersion,\n };\n};\n\n/**\n * Get all trees\n * @returns {Promise<unknown[]>} a promise that resolves to an array of tree objects\n */\nexport async function getTrees() {\n const urlString = util.format(\n queryAllTreesURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath()\n );\n const { data } = await generateAmApi(getTreeApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data.result;\n}\n\n/**\n * Get tree by id/name\n * @param {String} id tree id/name\n * @returns {Promise} a promise that resolves to a tree object\n */\nexport async function getTree(id) {\n const urlString = util.format(\n treeByIdURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n id\n );\n const { data } = await generateAmApi(getTreeApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Put tree by id/name\n * @param {String} treeId tree id/name\n * @param {Object} treeData tree object\n * @returns {Promise} a promise that resolves to a tree object\n */\nexport async function putTree(treeId: string, treeData) {\n const urlString = util.format(\n treeByIdURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n treeId\n );\n const { data } = await generateAmApi(getTreeApiConfig()).put(\n urlString,\n treeData,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Delete tree by id/name\n * @param {String} treeId tree id/name\n * @returns {Promise} a promise that resolves to a tree object\n */\nexport async function deleteTree(treeId) {\n const urlString = util.format(\n treeByIdURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n treeId\n );\n const { data } = await generateAmApi(getTreeApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n"],"mappings":";;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;AAEA,IAAMA,mBAAmB,GACvB,oEADF;AAEA,IAAMC,wBAAwB,GAC5B,mFADF;AAGA,IAAMC,UAAU,GAAG,2BAAnB;;AACA,IAAMC,gBAAgB,GAAG,MAAM;EAC7B,IAAMC,UAAU,GAAG,IAAAC,6BAAA,GAAnB;EACA,OAAO;IACLC,IAAI,YAAKF,UAAL,wCADC;IAELF;EAFK,CAAP;AAID,CAND;AAQA;AACA;AACA;AACA;;;SACsBK,Q;;;AAYtB;AACA;AACA;AACA;AACA;;;;gCAhBO,aAA0B;IAC/B,IAAMC,SAAS,GAAGC,aAAA,CAAKC,MAAL,CAChBT,wBADgB,EAEhBU,uBAAA,CAAQC,OAAR,CAAgBC,SAAhB,EAFgB,EAGhB,IAAAR,6BAAA,GAHgB,CAAlB;;IAKA,IAAM;MAAES;IAAF,UAAiB,IAAAC,sBAAA,EAAcZ,gBAAgB,EAA9B,EAAkCa,GAAlC,CAAsCR,SAAtC,EAAiD;MACtES,eAAe,EAAE;IADqD,CAAjD,CAAvB;IAGA,OAAOH,IAAI,CAACI,MAAZ;EACD,C;;;;SAOqBC,O;;;AAatB;AACA;AACA;AACA;AACA;AACA;;;;+BAlBO,WAAuBC,EAAvB,EAA2B;IAChC,IAAMZ,SAAS,GAAGC,aAAA,CAAKC,MAAL,CAChBV,mBADgB,EAEhBW,uBAAA,CAAQC,OAAR,CAAgBC,SAAhB,EAFgB,EAGhB,IAAAR,6BAAA,GAHgB,EAIhBe,EAJgB,CAAlB;;IAMA,IAAM;MAAEN;IAAF,UAAiB,IAAAC,sBAAA,EAAcZ,gBAAgB,EAA9B,EAAkCa,GAAlC,CAAsCR,SAAtC,EAAiD;MACtES,eAAe,EAAE;IADqD,CAAjD,CAAvB;IAGA,OAAOH,IAAP;EACD,C;;;;SAQqBO,O;;;AAiBtB;AACA;AACA;AACA;AACA;;;;+BArBO,WAAuBC,MAAvB,EAAuCC,QAAvC,EAAiD;IACtD,IAAMf,SAAS,GAAGC,aAAA,CAAKC,MAAL,CAChBV,mBADgB,EAEhBW,uBAAA,CAAQC,OAAR,CAAgBC,SAAhB,EAFgB,EAGhB,IAAAR,6BAAA,GAHgB,EAIhBiB,MAJgB,CAAlB;;IAMA,IAAM;MAAER;IAAF,UAAiB,IAAAC,sBAAA,EAAcZ,gBAAgB,EAA9B,EAAkCqB,GAAlC,CACrBhB,SADqB,EAErBe,QAFqB,EAGrB;MACEN,eAAe,EAAE;IADnB,CAHqB,CAAvB;IAOA,OAAOH,IAAP;EACD,C;;;;SAOqBW,U;;;;;kCAAf,WAA0BH,MAA1B,EAAkC;IACvC,IAAMd,SAAS,GAAGC,aAAA,CAAKC,MAAL,CAChBV,mBADgB,EAEhBW,uBAAA,CAAQC,OAAR,CAAgBC,SAAhB,EAFgB,EAGhB,IAAAR,6BAAA,GAHgB,EAIhBiB,MAJgB,CAAlB;;IAMA,IAAM;MAAER;IAAF,UAAiB,IAAAC,sBAAA,EAAcZ,gBAAgB,EAA9B,EAAkCuB,MAAlC,CAAyClB,SAAzC,EAAoD;MACzES,eAAe,EAAE;IADwD,CAApD,CAAvB;IAGA,OAAOH,IAAP;EACD,C"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeApi.test.js","names":["__dirname","path","dirname","fileURLToPath","mock","MockAdapter","axios","state","default","session","setTenant","setRealm","setCookieName","setCookieValue","describe","test","response","JSON","parse","fs","readFileSync","resolve","onGet","reply","trees","TreeRaw","getTrees","expect","toBeTruthy","length","toBe","tree","getTree","_id","toEqual","code","reason","message","assertions","error","data","toMatchObject","onPut","putTree","request","detail","validAttributes","onDelete","deleteTree"],"sources":["api/TreeApi.test.ts"],"sourcesContent":["import axios from 'axios';\nimport MockAdapter from 'axios-mock-adapter';\nimport { TreeRaw, state } from '../index';\nimport fs from 'fs';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst mock = new MockAdapter(axios);\n\nstate.default.session.setTenant('');\nstate.default.session.setRealm('alpha');\nstate.default.session.setCookieName('cookieName');\nstate.default.session.setCookieValue('cookieValue');\n\ndescribe('TreeApi - getTrees()', () => {\n test('getTrees() 1: Get all trees', async () => {\n const response = JSON.parse(\n fs.readFileSync(\n path.resolve(__dirname, '../../test/mocks/TreeApi/getTrees/trees.json'),\n 'utf8'\n )\n );\n mock\n .onGet(\n '/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/trees?_queryFilter=true'\n )\n .reply(200, response);\n const trees = await TreeRaw.getTrees();\n expect(trees).toBeTruthy();\n expect(trees.length).toBe(92);\n });\n});\n\ndescribe('TreeApi - getTree()', () => {\n test('getTree() 1: Get existing tree', async () => {\n const response = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n '../../test/mocks/TreeApi/getTree/FrodoTest.json'\n ),\n 'utf8'\n )\n );\n mock\n .onGet(\n '/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/trees/FrodoTest'\n )\n .reply(200, response);\n const tree = await TreeRaw.getTree('FrodoTest');\n expect(tree).toBeTruthy();\n expect(tree._id).toEqual('FrodoTest');\n });\n\n test('getTree() 2: Get non-existing tree', async () => {\n mock\n .onGet(\n '/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/trees/DoesNotExist'\n )\n .reply(404, {\n code: 404,\n reason: 'Not Found',\n message: 'Not Found',\n });\n expect.assertions(2);\n try {\n await TreeRaw.getTree('DoesNotExist');\n } catch (error) {\n expect(error.response).toBeTruthy();\n expect(error.response.data).toMatchObject({\n code: 404,\n reason: 'Not Found',\n message: 'Not Found',\n });\n }\n });\n});\n\ndescribe('TreeApi - putTree()', () => {\n test('putTree() 1: Put valid tree', async () => {\n const response = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n '../../test/mocks/TreeApi/putTree/FrodoTest.json'\n ),\n 'utf8'\n )\n );\n mock\n .onPut(\n '/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/trees/FrodoTest'\n )\n .reply(201, response);\n const tree = await TreeRaw.putTree('FrodoTest', response);\n expect(tree).toBeTruthy();\n expect(tree._id).toEqual('FrodoTest');\n });\n\n test('putTree() 2: Put invalid tree [trailing data]', async () => {\n const request = fs.readFileSync(\n path.resolve(\n __dirname,\n '../../test/mocks/TreeApi/putTree/Invalid_trailing-data.txt'\n ),\n 'utf8'\n );\n mock\n .onPut(\n '/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/trees/Invalid'\n )\n .reply(400, {\n code: 400,\n reason: 'Bad Request',\n message:\n 'The request could not be processed because there is trailing data after the JSON content',\n });\n expect.assertions(2);\n try {\n await TreeRaw.putTree('Invalid', request);\n } catch (error) {\n expect(error.response).toBeTruthy();\n expect(error.response.data).toMatchObject({\n code: 400,\n reason: 'Bad Request',\n message:\n 'The request could not be processed because there is trailing data after the JSON content',\n });\n }\n });\n\n test('putTree() 3: Put invalid tree [invalid attribute]', async () => {\n const request = fs.readFileSync(\n path.resolve(\n __dirname,\n '../../test/mocks/TreeApi/putTree/Invalid_invalid-attribute.json'\n ),\n 'utf8'\n );\n mock\n .onPut(\n '/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/trees/Invalid'\n )\n .reply(400, {\n code: 400,\n reason: 'Bad Request',\n message: 'Invalid attribute specified.',\n detail: {\n validAttributes: [\n 'description',\n 'enabled',\n 'entryNodeId',\n 'identityResource',\n 'nodes',\n 'staticNodes',\n 'uiConfig',\n ],\n },\n });\n expect.assertions(2);\n try {\n await TreeRaw.putTree('Invalid', request);\n } catch (error) {\n expect(error.response).toBeTruthy();\n expect(error.response.data).toMatchObject({\n code: 400,\n reason: 'Bad Request',\n message: 'Invalid attribute specified.',\n detail: {\n validAttributes: [\n 'description',\n 'enabled',\n 'entryNodeId',\n 'identityResource',\n 'nodes',\n 'staticNodes',\n 'uiConfig',\n ],\n },\n });\n }\n });\n\n test('putTree() 4: Put invalid tree [no entry node]', async () => {\n const request = fs.readFileSync(\n path.resolve(\n __dirname,\n '../../test/mocks/TreeApi/putTree/Invalid_no-entry-node.json'\n ),\n 'utf8'\n );\n mock\n .onPut(\n '/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/trees/Invalid'\n )\n .reply(400, {\n code: 400,\n reason: 'Bad Request',\n message: 'Node with ID entryNodeId must exist in the tree.',\n });\n expect.assertions(2);\n try {\n await TreeRaw.putTree('Invalid', request);\n } catch (error) {\n expect(error.response).toBeTruthy();\n expect(error.response.data).toMatchObject({\n code: 400,\n reason: 'Bad Request',\n message: 'Node with ID entryNodeId must exist in the tree.',\n });\n }\n });\n\n test('putTree() 5: Put invalid tree [invalid nodes]', async () => {\n const request = fs.readFileSync(\n path.resolve(\n __dirname,\n '../../test/mocks/TreeApi/putTree/Invalid_invalid-nodes.json'\n ),\n 'utf8'\n );\n mock\n .onPut(\n '/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/trees/Invalid'\n )\n .reply(400, {\n code: 400,\n reason: 'Bad Request',\n message: 'Node with ID entryNodeId must exist in the tree.',\n });\n expect.assertions(2);\n try {\n await TreeRaw.putTree('Invalid', request);\n } catch (error) {\n expect(error.response).toBeTruthy();\n expect(error.response.data).toMatchObject({\n code: 400,\n reason: 'Bad Request',\n message: 'Node with ID entryNodeId must exist in the tree.',\n });\n }\n });\n});\n\ndescribe('TreeApi - deleteTree()', () => {\n test('deleteTree() 1: Delete existing tree', async () => {\n const response = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n '../../test/mocks/TreeApi/deleteTree/FrodoTest.json'\n ),\n 'utf8'\n )\n );\n mock\n .onDelete(\n '/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/trees/FrodoTest'\n )\n .reply(200, response);\n const tree = await TreeRaw.deleteTree('FrodoTest');\n expect(tree).toBeTruthy();\n expect(tree._id).toEqual('FrodoTest');\n });\n\n test('deleteTree() 2: Delete non-existing tree', async () => {\n mock\n .onDelete(\n '/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/trees/DoesNotExist'\n )\n .reply(404, {\n code: 404,\n reason: 'Not Found',\n message: 'Not Found',\n });\n expect.assertions(2);\n try {\n await TreeRaw.deleteTree('DoesNotExist');\n } catch (error) {\n expect(error.response).toBeTruthy();\n expect(error.response.data).toMatchObject({\n code: 404,\n reason: 'Not Found',\n message: 'Not Found',\n });\n }\n });\n});\n"],"mappings":"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"}
@@ -48,7 +48,7 @@ function getVariables() {
48
48
  }
49
49
  /**
50
50
  * Get variable by id/name
51
- * @param {String} id variable id/name
51
+ * @param {String} variableId variable id/name
52
52
  * @returns {Promise} a promise that resolves to an object containing a variable object
53
53
  */
54
54
 
@@ -57,9 +57,12 @@ function _getVariables() {
57
57
  _getVariables = _asyncToGenerator(function* () {
58
58
  var urlString = _util.default.format(variablesListURLTemplate, (0, _ApiUtils.getTenantURL)(_SessionStorage.default.session.getTenant()));
59
59
 
60
- return (0, _BaseApi.generateESVApi)(getApiConfig()).get(urlString, {
60
+ var {
61
+ data
62
+ } = yield (0, _BaseApi.generateESVApi)(getApiConfig()).get(urlString, {
61
63
  withCredentials: true
62
64
  });
65
+ return data.result;
63
66
  });
64
67
  return _getVariables.apply(this, arguments);
65
68
  }
@@ -69,7 +72,7 @@ function getVariable(_x) {
69
72
  }
70
73
  /**
71
74
  * Put variable by id/name
72
- * @param {String} id variable id/name
75
+ * @param {String} variableId variable id/name
73
76
  * @param {String} value variable value
74
77
  * @param {String} description variable description
75
78
  * @returns {Promise} a promise that resolves to an object containing a variable object
@@ -77,12 +80,15 @@ function getVariable(_x) {
77
80
 
78
81
 
79
82
  function _getVariable() {
80
- _getVariable = _asyncToGenerator(function* (id) {
81
- var urlString = _util.default.format(variableURLTemplate, (0, _ApiUtils.getTenantURL)(_SessionStorage.default.session.getTenant()), id);
83
+ _getVariable = _asyncToGenerator(function* (variableId) {
84
+ var urlString = _util.default.format(variableURLTemplate, (0, _ApiUtils.getTenantURL)(_SessionStorage.default.session.getTenant()), variableId);
82
85
 
83
- return (0, _BaseApi.generateESVApi)(getApiConfig()).get(urlString, {
86
+ var {
87
+ data
88
+ } = yield (0, _BaseApi.generateESVApi)(getApiConfig()).get(urlString, {
84
89
  withCredentials: true
85
90
  });
91
+ return data;
86
92
  });
87
93
  return _getVariable.apply(this, arguments);
88
94
  }
@@ -92,23 +98,26 @@ function putVariable(_x2, _x3, _x4) {
92
98
  }
93
99
  /**
94
100
  * Set variable description
95
- * @param {*} id variable id/name
101
+ * @param {*} variableId variable id/name
96
102
  * @param {*} description variable description
97
103
  * @returns {Promise} a promise that resolves to an object containing a status object
98
104
  */
99
105
 
100
106
 
101
107
  function _putVariable() {
102
- _putVariable = _asyncToGenerator(function* (id, value, description) {
103
- var data = {};
104
- if (value) data['valueBase64'] = (0, _Base.encode)(value);
105
- if (description) data['description'] = description;
108
+ _putVariable = _asyncToGenerator(function* (variableId, value, description) {
109
+ var variableData = {};
110
+ if (value) variableData['valueBase64'] = (0, _Base.encode)(value);
111
+ if (description) variableData['description'] = description;
106
112
 
107
- var urlString = _util.default.format(variableURLTemplate, (0, _ApiUtils.getTenantURL)(_SessionStorage.default.session.getTenant()), id);
113
+ var urlString = _util.default.format(variableURLTemplate, (0, _ApiUtils.getTenantURL)(_SessionStorage.default.session.getTenant()), variableId);
108
114
 
109
- return (0, _BaseApi.generateESVApi)(getApiConfig()).put(urlString, data, {
115
+ var {
116
+ data
117
+ } = yield (0, _BaseApi.generateESVApi)(getApiConfig()).put(urlString, variableData, {
110
118
  withCredentials: true
111
119
  });
120
+ return data;
112
121
  });
113
122
  return _putVariable.apply(this, arguments);
114
123
  }
@@ -118,20 +127,23 @@ function setVariableDescription(_x5, _x6) {
118
127
  }
119
128
  /**
120
129
  * Delete variable by id/name
121
- * @param {String} id variable id/name
130
+ * @param {String} variableId variable id/name
122
131
  * @returns {Promise} a promise that resolves to an object containing a variable object
123
132
  */
124
133
 
125
134
 
126
135
  function _setVariableDescription() {
127
- _setVariableDescription = _asyncToGenerator(function* (id, description) {
128
- var urlString = _util.default.format(variableSetDescriptionURLTemplate, (0, _ApiUtils.getTenantURL)(_SessionStorage.default.session.getTenant()), id);
136
+ _setVariableDescription = _asyncToGenerator(function* (variableId, description) {
137
+ var urlString = _util.default.format(variableSetDescriptionURLTemplate, (0, _ApiUtils.getTenantURL)(_SessionStorage.default.session.getTenant()), variableId);
129
138
 
130
- return (0, _BaseApi.generateESVApi)(getApiConfig()).post(urlString, {
139
+ var {
140
+ data
141
+ } = yield (0, _BaseApi.generateESVApi)(getApiConfig()).post(urlString, {
131
142
  description
132
143
  }, {
133
144
  withCredentials: true
134
145
  });
146
+ return data;
135
147
  });
136
148
  return _setVariableDescription.apply(this, arguments);
137
149
  }
@@ -141,12 +153,15 @@ function deleteVariable(_x7) {
141
153
  }
142
154
 
143
155
  function _deleteVariable() {
144
- _deleteVariable = _asyncToGenerator(function* (id) {
145
- var urlString = _util.default.format(variableURLTemplate, (0, _ApiUtils.getTenantURL)(_SessionStorage.default.session.getTenant()), id);
156
+ _deleteVariable = _asyncToGenerator(function* (variableId) {
157
+ var urlString = _util.default.format(variableURLTemplate, (0, _ApiUtils.getTenantURL)(_SessionStorage.default.session.getTenant()), variableId);
146
158
 
147
- return (0, _BaseApi.generateESVApi)(getApiConfig()).delete(urlString, {
159
+ var {
160
+ data
161
+ } = yield (0, _BaseApi.generateESVApi)(getApiConfig()).delete(urlString, {
148
162
  withCredentials: true
149
163
  });
164
+ return data;
150
165
  });
151
166
  return _deleteVariable.apply(this, arguments);
152
167
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VariablesApi.js","names":["variablesListURLTemplate","variableURLTemplate","variableSetDescriptionURLTemplate","apiVersion","getApiConfig","configPath","getCurrentRealmPath","path","getVariables","urlString","util","format","getTenantURL","storage","session","getTenant","generateESVApi","get","withCredentials","getVariable","id","putVariable","value","description","data","encode","put","setVariableDescription","post","deleteVariable","delete"],"sources":["api/VariablesApi.ts"],"sourcesContent":["import util from 'util';\nimport { encode } from './utils/Base64';\nimport { getTenantURL, getCurrentRealmPath } from './utils/ApiUtils';\nimport { generateESVApi } from './BaseApi';\nimport storage from '../storage/SessionStorage';\n\nconst variablesListURLTemplate = '%s/environment/variables';\nconst variableURLTemplate = '%s/environment/variables/%s';\nconst variableSetDescriptionURLTemplate = `${variableURLTemplate}?_action=setDescription`;\n\nconst apiVersion = 'protocol=1.0,resource=1.0';\nconst getApiConfig = () => {\n const configPath = getCurrentRealmPath();\n return {\n path: `${configPath}/environment/secrets`,\n apiVersion,\n };\n};\n\n/**\n * Get all variables\n * @returns {Promise} a promise that resolves to an object containing an array of variable objects\n */\nexport async function getVariables() {\n const urlString = util.format(\n variablesListURLTemplate,\n getTenantURL(storage.session.getTenant())\n );\n return generateESVApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n}\n\n/**\n * Get variable by id/name\n * @param {String} id variable id/name\n * @returns {Promise} a promise that resolves to an object containing a variable object\n */\nexport async function getVariable(id) {\n const urlString = util.format(\n variableURLTemplate,\n getTenantURL(storage.session.getTenant()),\n id\n );\n return generateESVApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n}\n\n/**\n * Put variable by id/name\n * @param {String} id variable id/name\n * @param {String} value variable value\n * @param {String} description variable description\n * @returns {Promise} a promise that resolves to an object containing a variable object\n */\nexport async function putVariable(id, value, description) {\n const data = {};\n if (value) data['valueBase64'] = encode(value);\n if (description) data['description'] = description;\n const urlString = util.format(\n variableURLTemplate,\n getTenantURL(storage.session.getTenant()),\n id\n );\n return generateESVApi(getApiConfig()).put(urlString, data, {\n withCredentials: true,\n });\n}\n\n/**\n * Set variable description\n * @param {*} id variable id/name\n * @param {*} description variable description\n * @returns {Promise} a promise that resolves to an object containing a status object\n */\nexport async function setVariableDescription(id, description) {\n const urlString = util.format(\n variableSetDescriptionURLTemplate,\n getTenantURL(storage.session.getTenant()),\n id\n );\n return generateESVApi(getApiConfig()).post(\n urlString,\n { description },\n { withCredentials: true }\n );\n}\n\n/**\n * Delete variable by id/name\n * @param {String} id variable id/name\n * @returns {Promise} a promise that resolves to an object containing a variable object\n */\nexport async function deleteVariable(id) {\n const urlString = util.format(\n variableURLTemplate,\n getTenantURL(storage.session.getTenant()),\n id\n );\n return generateESVApi(getApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"VariablesApi.js","names":["variablesListURLTemplate","variableURLTemplate","variableSetDescriptionURLTemplate","apiVersion","getApiConfig","configPath","getCurrentRealmPath","path","getVariables","urlString","util","format","getTenantURL","storage","session","getTenant","data","generateESVApi","get","withCredentials","result","getVariable","variableId","putVariable","value","description","variableData","encode","put","setVariableDescription","post","deleteVariable","delete"],"sources":["api/VariablesApi.ts"],"sourcesContent":["import util from 'util';\nimport { encode } from './utils/Base64';\nimport { getTenantURL, getCurrentRealmPath } from './utils/ApiUtils';\nimport { generateESVApi } from './BaseApi';\nimport storage from '../storage/SessionStorage';\n\nconst variablesListURLTemplate = '%s/environment/variables';\nconst variableURLTemplate = '%s/environment/variables/%s';\nconst variableSetDescriptionURLTemplate = `${variableURLTemplate}?_action=setDescription`;\n\nconst apiVersion = 'protocol=1.0,resource=1.0';\nconst getApiConfig = () => {\n const configPath = getCurrentRealmPath();\n return {\n path: `${configPath}/environment/secrets`,\n apiVersion,\n };\n};\n\n/**\n * Get all variables\n * @returns {Promise} a promise that resolves to an object containing an array of variable objects\n */\nexport async function getVariables() {\n const urlString = util.format(\n variablesListURLTemplate,\n getTenantURL(storage.session.getTenant())\n );\n const { data } = await generateESVApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data.result;\n}\n\n/**\n * Get variable by id/name\n * @param {String} variableId variable id/name\n * @returns {Promise} a promise that resolves to an object containing a variable object\n */\nexport async function getVariable(variableId) {\n const urlString = util.format(\n variableURLTemplate,\n getTenantURL(storage.session.getTenant()),\n variableId\n );\n const { data } = await generateESVApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Put variable by id/name\n * @param {String} variableId variable id/name\n * @param {String} value variable value\n * @param {String} description variable description\n * @returns {Promise} a promise that resolves to an object containing a variable object\n */\nexport async function putVariable(variableId, value, description) {\n const variableData = {};\n if (value) variableData['valueBase64'] = encode(value);\n if (description) variableData['description'] = description;\n const urlString = util.format(\n variableURLTemplate,\n getTenantURL(storage.session.getTenant()),\n variableId\n );\n const { data } = await generateESVApi(getApiConfig()).put(\n urlString,\n variableData,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Set variable description\n * @param {*} variableId variable id/name\n * @param {*} description variable description\n * @returns {Promise} a promise that resolves to an object containing a status object\n */\nexport async function setVariableDescription(variableId, description) {\n const urlString = util.format(\n variableSetDescriptionURLTemplate,\n getTenantURL(storage.session.getTenant()),\n variableId\n );\n const { data } = await generateESVApi(getApiConfig()).post(\n urlString,\n { description },\n { withCredentials: true }\n );\n return data;\n}\n\n/**\n * Delete variable by id/name\n * @param {String} variableId variable id/name\n * @returns {Promise} a promise that resolves to an object containing a variable object\n */\nexport async function deleteVariable(variableId) {\n const urlString = util.format(\n variableURLTemplate,\n getTenantURL(storage.session.getTenant()),\n variableId\n );\n const { data } = await generateESVApi(getApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n"],"mappings":"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"}
package/cjs/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.Variables = exports.Utils = exports.Theme = exports.Startup = exports.Secrets = exports.Script = exports.Saml = exports.Realm = exports.Organization = exports.OAuth2OIDCApi = exports.OAuth2Client = exports.ManagedObject = exports.Log = exports.Journey = exports.Idp = exports.Idm = exports.EmailTemplate = exports.ConnectionProfile = exports.CirclesOfTrust = exports.Authenticate = exports.Admin = void 0;
6
+ exports.Variables = exports.Utils = exports.TreeRaw = exports.Theme = exports.StartupRaw = exports.Startup = exports.Secrets = exports.Script = exports.Saml = exports.Realm = exports.Organization = exports.OAuth2OIDCApi = exports.OAuth2Client = exports.NodeRaw = exports.ManagedObject = exports.Log = exports.Journey = exports.Idp = exports.Idm = exports.EmailTemplate = exports.ConnectionProfile = exports.CirclesOfTrust = exports.Authenticate = exports.Admin = void 0;
7
7
  exports.getVersion = getVersion;
8
8
  exports.state = void 0;
9
9
 
@@ -13,6 +13,18 @@ var _path = _interopRequireDefault(require("path"));
13
13
 
14
14
  var _url = require("url");
15
15
 
16
+ var _NodeRaw = _interopRequireWildcard(require("./api/NodeApi"));
17
+
18
+ exports.NodeRaw = _NodeRaw;
19
+
20
+ var _TreeRaw = _interopRequireWildcard(require("./api/TreeApi"));
21
+
22
+ exports.TreeRaw = _TreeRaw;
23
+
24
+ var _StartupRaw = _interopRequireWildcard(require("./api/StartupApi"));
25
+
26
+ exports.StartupRaw = _StartupRaw;
27
+
16
28
  var _Admin = _interopRequireWildcard(require("./ops/AdminOps"));
17
29
 
18
30
  exports.Admin = _Admin;
@@ -107,11 +119,9 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
107
119
 
108
120
  var _dirname = _path.default.dirname((0, _url.fileURLToPath)(require('url').pathToFileURL(__filename).toString()));
109
121
 
110
- var pkg = JSON.parse(_fs.default.readFileSync(_path.default.resolve(_dirname, '../package.json'), 'utf8')); // const pkg = JSON.parse(
111
- // fs.readFileSync(new URL('../package.json', import.meta.url), 'utf-8')
112
- // );
122
+ var pkg = JSON.parse(_fs.default.readFileSync(_path.default.resolve(_dirname, '../package.json'), 'utf8'));
113
123
 
114
124
  function getVersion() {
115
125
  return "v".concat(pkg.version);
116
- }
126
+ } // Api Layer
117
127
  //# sourceMappingURL=index.js.map
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["__dirname","path","dirname","fileURLToPath","pkg","JSON","parse","fs","readFileSync","resolve","getVersion","version"],"sources":["index.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst pkg = JSON.parse(\n fs.readFileSync(path.resolve(__dirname, '../package.json'), 'utf8')\n);\n\n// const pkg = JSON.parse(\n// fs.readFileSync(new URL('../package.json', import.meta.url), 'utf-8')\n// );\n\nexport function getVersion() {\n return `v${pkg.version}`;\n}\n\nexport * as Admin from './ops/AdminOps';\nexport * as Authenticate from './ops/AuthenticateOps';\nexport * as CirclesOfTrust from './ops/CirclesOfTrustOps';\nexport * as ConnectionProfile from './ops/ConnectionProfileOps';\nexport * as EmailTemplate from './ops/EmailTemplateOps';\nexport * as Idm from './ops/IdmOps';\nexport * as Idp from './ops/IdmOps';\nexport * as Journey from './ops/JourneyOps';\nexport * as Log from './ops/LogOps';\nexport * as ManagedObject from './ops/ManagedObjectOps';\nexport * as OAuth2Client from './ops/OAuth2ClientOps';\nexport * as Organization from './ops/OrganizationOps';\nexport * as Realm from './ops/RealmOps';\nexport * as Saml from './ops/SamlOps';\nexport * as Script from './ops/ScriptOps';\nexport * as Secrets from './ops/SecretsOps';\nexport * as Startup from './ops/StartupOps';\nexport * as Theme from './ops/ThemeOps';\nexport * as Variables from './ops/VariablesOps';\n// TODO: revisit if there are better ways\nexport * as Utils from './ops/utils/OpsUtils';\n// TODO: reconsider the aproach to pass in state from client\n// lib should be stateless, an aplication should own its state\nexport * as state from './storage/SessionStorage';\n// TODO: need to figure out if this is the right approach or if we should even\n// use a public oauth2/oidc library. might be ok for now since there is only\n// one place where the cli needs to execute an oauth flow.\nexport * as OAuth2OIDCApi from './api/OAuth2OIDCApi';\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAMA,QAAS,GAAGC,aAAA,CAAKC,OAAL,CAAa,IAAAC,kBAAA,sDAAb,CAAlB;;AAEA,IAAMC,GAAG,GAAGC,IAAI,CAACC,KAAL,CACVC,WAAA,CAAGC,YAAH,CAAgBP,aAAA,CAAKQ,OAAL,CAAaT,QAAb,EAAwB,iBAAxB,CAAhB,EAA4D,MAA5D,CADU,CAAZ,C,CAIA;AACA;AACA;;AAEO,SAASU,UAAT,GAAsB;EAC3B,kBAAWN,GAAG,CAACO,OAAf;AACD"}
1
+ {"version":3,"file":"index.js","names":["__dirname","path","dirname","fileURLToPath","pkg","JSON","parse","fs","readFileSync","resolve","getVersion","version"],"sources":["index.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst pkg = JSON.parse(\n fs.readFileSync(path.resolve(__dirname, '../package.json'), 'utf8')\n);\n\nexport function getVersion() {\n return `v${pkg.version}`;\n}\n\n// Api Layer\nexport * as NodeRaw from './api/NodeApi';\nexport * as TreeRaw from './api/TreeApi';\nexport * as StartupRaw from './api/StartupApi';\n\n// Ops Layer\nexport * as Admin from './ops/AdminOps';\nexport * as Authenticate from './ops/AuthenticateOps';\nexport * as CirclesOfTrust from './ops/CirclesOfTrustOps';\nexport * as ConnectionProfile from './ops/ConnectionProfileOps';\nexport * as EmailTemplate from './ops/EmailTemplateOps';\nexport * as Idm from './ops/IdmOps';\nexport * as Idp from './ops/IdmOps';\nexport * as Journey from './ops/JourneyOps';\nexport * as Log from './ops/LogOps';\nexport * as ManagedObject from './ops/ManagedObjectOps';\nexport * as OAuth2Client from './ops/OAuth2ClientOps';\nexport * as Organization from './ops/OrganizationOps';\nexport * as Realm from './ops/RealmOps';\nexport * as Saml from './ops/SamlOps';\nexport * as Script from './ops/ScriptOps';\nexport * as Secrets from './ops/SecretsOps';\nexport * as Startup from './ops/StartupOps';\nexport * as Theme from './ops/ThemeOps';\nexport * as Variables from './ops/VariablesOps';\n// TODO: revisit if there are better ways\nexport * as Utils from './ops/utils/OpsUtils';\n// TODO: reconsider the aproach to pass in state from client\n// lib should be stateless, an aplication should own its state\nexport * as state from './storage/SessionStorage';\n// TODO: need to figure out if this is the right approach or if we should even\n// use a public oauth2/oidc library. might be ok for now since there is only\n// one place where the cli needs to execute an oauth flow.\nexport * as OAuth2OIDCApi from './api/OAuth2OIDCApi';\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAMA,QAAS,GAAGC,aAAA,CAAKC,OAAL,CAAa,IAAAC,kBAAA,sDAAb,CAAlB;;AAEA,IAAMC,GAAG,GAAGC,IAAI,CAACC,KAAL,CACVC,WAAA,CAAGC,YAAH,CAAgBP,aAAA,CAAKQ,OAAL,CAAaT,QAAb,EAAwB,iBAAxB,CAAhB,EAA4D,MAA5D,CADU,CAAZ;;AAIO,SAASU,UAAT,GAAsB;EAC3B,kBAAWN,GAAG,CAACO,OAAf;AACD,C,CAED"}
@@ -252,7 +252,7 @@ function _authenticate() {
252
252
 
253
253
  var versionInfo = (yield (0, _ServerInfoApi.getServerVersionInfo)()).data;
254
254
  (0, _Console.printMessage)("Connected to ".concat(versionInfo.fullVersion));
255
- var version = getSemanticVersion(versionInfo);
255
+ var version = yield getSemanticVersion(versionInfo);
256
256
 
257
257
  _SessionStorage.default.session.setAmVersion(version);
258
258
 
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticateOps.js","names":["adminClientPassword","redirectUrlTemplate","idmAdminScope","adminClientId","getCookieName","getServerInfo","data","cookieName","error","printMessage","checkAndHandle2FA","payload","element","callbacks","type","input","value","includes","need2fa","output","code","readlineSync","question","determineDefaultRealm","deploymentType","storage","session","getRealm","global","DEFAULT_REALM_KEY","setRealm","DEPLOYMENT_TYPE_REALM_MAP","determineDeploymentType","fidcClientId","forgeopsClientId","verifier","encodeBase64Url","randomBytes","challenge","createHash","update","digest","challengeMethod","redirectURL","url","resolve","getTenant","config","maxRedirects","bodyFormData","getCookieValue","CLASSIC_DEPLOYMENT_TYPE_KEY","authorize","e","response","status","CLOUD_DEPLOYMENT_TYPE_KEY","ex","FORGEOPS_DEPLOYMENT_TYPE_KEY","getSemanticVersion","versionInfo","versionString","version","rx","match","Error","authenticate","setCookieName","headers","getUsername","getPassword","response1","step","skip2FA","response2","setCookieValue","getDeploymentType","setDeploymentType","getServerVersionInfo","fullVersion","setAmVersion","message","getAuthCode","codeChallenge","codeChallengeMethod","redirectLocationURL","request","res","responseUrl","queryObject","parse","query","getAccessToken","authCode","auth","username","password","accessToken","setBearerToken","access_token","getTokens","save","credsFromParameters","conn","getConnectionProfile","setTenant","tenant","setUsername","setPassword","getBearerToken","saveConnectionProfile"],"sources":["ops/AuthenticateOps.ts"],"sourcesContent":["import url from 'url';\nimport { createHash, randomBytes } from 'crypto';\nimport readlineSync from 'readline-sync';\nimport { encodeBase64Url } from '../api/utils/Base64';\nimport storage from '../storage/SessionStorage';\nimport * as global from '../storage/StaticStorage';\nimport { printMessage } from './utils/Console';\nimport { getServerInfo, getServerVersionInfo } from '../api/ServerInfoApi';\nimport { step } from '../api/AuthenticateApi';\nimport { accessToken, authorize } from '../api/OAuth2OIDCApi';\nimport {\n getConnectionProfile,\n saveConnectionProfile,\n} from './ConnectionProfileOps';\n\nconst adminClientPassword = 'doesnotmatter';\nconst redirectUrlTemplate = '/platform/appAuthHelperRedirect.html';\n\nconst idmAdminScope = 'fr:idm:* openid';\n\nlet adminClientId = 'idmAdminClient';\n\n/**\n * Helper function to get cookie name\n * @returns {String} cookie name\n */\nasync function getCookieName() {\n try {\n return (await getServerInfo()).data.cookieName;\n } catch (error) {\n printMessage(`Error getting cookie name: ${error}`, 'error');\n return null;\n }\n}\n\n/**\n * Helper function to determine if this is a setup mfa prompt in the ID Cloud tenant admin login journey\n * @param {Object} payload response from the previous authentication journey step\n * @returns {Object} an object indicating if 2fa is required and the original payload\n */\nfunction checkAndHandle2FA(payload) {\n // let skippable = false;\n if ('callbacks' in payload) {\n for (const element of payload.callbacks) {\n if (element.type === 'HiddenValueCallback') {\n if (element.input[0].value.includes('skip')) {\n // skippable = true;\n element.input[0].value = 'Skip';\n return {\n need2fa: true,\n payload,\n };\n }\n }\n if (element.type === 'NameCallback') {\n if (element.output[0].value.includes('code')) {\n // skippable = false;\n printMessage('2FA is enabled and required for this user...');\n const code = readlineSync.question(`${element.output[0].value}: `);\n element.input[0].value = code;\n return {\n need2fa: true,\n payload,\n };\n }\n }\n }\n // console.info(\"NO2FA\");\n return {\n need2fa: false,\n payload,\n };\n }\n // console.info(\"NO2FA\");\n return {\n need2fa: false,\n payload,\n };\n}\n\n/**\n * Helper function to set the default realm by deployment type\n * @param {String} deploymentType deployment type\n */\nfunction determineDefaultRealm(deploymentType) {\n if (storage.session.getRealm() === global.DEFAULT_REALM_KEY) {\n storage.session.setRealm(global.DEPLOYMENT_TYPE_REALM_MAP[deploymentType]);\n }\n}\n\n/**\n * Helper function to determine the deployment type\n * @returns {String} deployment type\n */\nasync function determineDeploymentType() {\n const fidcClientId = 'idmAdminClient';\n const forgeopsClientId = 'idm-admin-ui';\n\n const verifier = encodeBase64Url(randomBytes(32));\n const challenge = encodeBase64Url(\n createHash('sha256').update(verifier).digest()\n );\n const challengeMethod = 'S256';\n const redirectURL = url.resolve(\n storage.session.getTenant(),\n redirectUrlTemplate\n );\n\n const config = {\n maxRedirects: 0,\n };\n let bodyFormData = `redirect_uri=${redirectURL}&scope=${idmAdminScope}&response_type=code&client_id=${fidcClientId}&csrf=${storage.session.getCookieValue()}&decision=allow&code_challenge=${challenge}&code_challenge_method=${challengeMethod}`;\n\n let deploymentType = global.CLASSIC_DEPLOYMENT_TYPE_KEY;\n try {\n await authorize(bodyFormData, config);\n } catch (e) {\n if (e.response && e.response.status === 302) {\n printMessage('ForgeRock Identity Cloud ', 'info', false);\n deploymentType = global.CLOUD_DEPLOYMENT_TYPE_KEY;\n } else {\n try {\n bodyFormData = `redirect_uri=${redirectURL}&scope=${idmAdminScope}&response_type=code&client_id=${forgeopsClientId}&csrf=${storage.session.getCookieValue()}&decision=allow&code_challenge=${challenge}&code_challenge_method=${challengeMethod}`;\n await authorize(bodyFormData, config);\n } catch (ex) {\n if (ex.response.status === 302) {\n adminClientId = forgeopsClientId;\n printMessage('ForgeOps deployment ', 'info', false);\n deploymentType = global.FORGEOPS_DEPLOYMENT_TYPE_KEY;\n } else {\n printMessage('Classic deployment ', 'info', false);\n }\n }\n }\n printMessage('detected.');\n }\n determineDefaultRealm(deploymentType);\n return deploymentType;\n}\n\n/**\n * Helper function to extract the semantic version string from a version info object\n * @param {Object} versionInfo version info object\n * @returns {String} semantic version\n */\nasync function getSemanticVersion(versionInfo) {\n if ('version' in versionInfo) {\n const versionString = versionInfo.version;\n const rx = /([\\d]\\.[\\d]\\.[\\d](\\.[\\d])*)/g;\n const version = versionString.match(rx);\n return version[0];\n }\n throw new Error('Cannot extract semantic version from version info object.');\n}\n\n/**\n * Helper function to authenticate and obtain and store session cookie\n * @returns {String} empty string or null\n */\nasync function authenticate() {\n storage.session.setCookieName(await getCookieName());\n try {\n const config = {\n headers: {\n 'X-OpenAM-Username': storage.session.getUsername(),\n 'X-OpenAM-Password': storage.session.getPassword(),\n },\n };\n const response1 = (await step({}, config)).data;\n const skip2FA = checkAndHandle2FA(response1);\n let response2 = {};\n if (skip2FA.need2fa) {\n response2 = (await step(skip2FA.payload)).data;\n } else {\n response2 = skip2FA.payload;\n }\n if ('tokenId' in response2) {\n storage.session.setCookieValue(response2['tokenId']);\n if (!storage.session.getDeploymentType()) {\n storage.session.setDeploymentType(await determineDeploymentType());\n } else {\n determineDefaultRealm(storage.session.getDeploymentType());\n }\n const versionInfo = (await getServerVersionInfo()).data;\n printMessage(`Connected to ${versionInfo.fullVersion}`);\n const version = getSemanticVersion(versionInfo);\n storage.session.setAmVersion(version);\n return '';\n }\n printMessage(`error authenticating`, 'error');\n printMessage('+++ likely cause, bad credentials!!! +++', 'error');\n return null;\n } catch (e) {\n if (e.response && e.response.status === 401) {\n printMessage(`error authenticating - ${e.message}`, 'error');\n printMessage('+++ likely cause, bad credentials +++', 'error');\n }\n if (e.message && e.message === 'self signed certificate') {\n printMessage(`error authenticating - ${e.message}`, 'error');\n printMessage('+++ use -k, --insecure option to allow +++', 'error');\n } else {\n printMessage(`error authenticating - ${e.message}`, 'error');\n }\n return null;\n }\n}\n\n/**\n * Helper function to obtain an oauth2 authorization code\n * @param {String} redirectURL oauth2 redirect uri\n * @param {String} codeChallenge PKCE code challenge\n * @param {String} codeChallengeMethod PKCE code challenge method\n * @returns {String} oauth2 authorization code or null\n */\nasync function getAuthCode(redirectURL, codeChallenge, codeChallengeMethod) {\n try {\n const bodyFormData = `redirect_uri=${redirectURL}&scope=${idmAdminScope}&response_type=code&client_id=${adminClientId}&csrf=${storage.session.getCookieValue()}&decision=allow&code_challenge=${codeChallenge}&code_challenge_method=${codeChallengeMethod}`;\n const config = {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n };\n const response = await authorize(bodyFormData, config);\n if (response.status < 200 || response.status > 399) {\n printMessage('error getting auth code', 'error');\n printMessage(\n 'likely cause: mismatched parameters with OAuth client config',\n 'error'\n );\n return null;\n }\n const redirectLocationURL = response.request.res.responseUrl;\n const queryObject = url.parse(redirectLocationURL, true).query;\n if ('code' in queryObject) {\n return queryObject.code;\n }\n printMessage('auth code not found', 'error');\n return null;\n } catch (error) {\n printMessage(`error getting auth code - ${error.message}`, 'error');\n printMessage(error.response.data, 'error');\n return null;\n }\n}\n\n/**\n * Helper function to obtain oauth2 access token\n * @returns {String} empty string or null\n */\nasync function getAccessToken() {\n try {\n const verifier = encodeBase64Url(randomBytes(32));\n const challenge = encodeBase64Url(\n createHash('sha256').update(verifier).digest()\n );\n const challengeMethod = 'S256';\n const redirectURL = url.resolve(\n storage.session.getTenant(),\n redirectUrlTemplate\n );\n const authCode = await getAuthCode(redirectURL, challenge, challengeMethod);\n if (authCode == null) {\n printMessage('error getting auth code', 'error');\n return null;\n }\n let response = null;\n if (\n storage.session.getDeploymentType() === global.CLOUD_DEPLOYMENT_TYPE_KEY\n ) {\n const config = {\n auth: {\n username: adminClientId,\n password: adminClientPassword,\n },\n };\n const bodyFormData = `redirect_uri=${redirectURL}&grant_type=authorization_code&code=${authCode}&code_verifier=${verifier}`;\n response = await accessToken(bodyFormData, config);\n } else {\n const bodyFormData = `client_id=${adminClientId}&redirect_uri=${redirectURL}&grant_type=authorization_code&code=${authCode}&code_verifier=${verifier}`;\n response = await accessToken(bodyFormData);\n }\n if (response.status < 200 || response.status > 399) {\n printMessage(`access token call returned ${response.status}`, 'error');\n return null;\n }\n if ('access_token' in response.data) {\n storage.session.setBearerToken(response.data.access_token);\n return '';\n }\n printMessage(\"can't get access token\", 'error');\n return null;\n } catch (e) {\n printMessage('error getting access token - ', 'error');\n return null;\n }\n}\n\n/**\n * Get tokens\n * @param {boolean} save true to save a connection profile upon successful authentication, false otherwise\n * @returns {boolean} true if tokens were successfully obtained, false otherwise\n */\nexport async function getTokens(save = false) {\n let credsFromParameters = true;\n // if username/password on cli are empty, try to read from connections.json\n if (\n storage.session.getUsername() == null &&\n storage.session.getPassword() == null\n ) {\n credsFromParameters = false;\n const conn = await getConnectionProfile();\n if (conn) {\n storage.session.setTenant(conn.tenant);\n storage.session.setUsername(conn.username);\n storage.session.setPassword(conn.password);\n } else {\n return false;\n }\n }\n await authenticate();\n if (\n storage.session.getCookieValue() &&\n !storage.session.getBearerToken() &&\n (storage.session.getDeploymentType() === global.CLOUD_DEPLOYMENT_TYPE_KEY ||\n storage.session.getDeploymentType() ===\n global.FORGEOPS_DEPLOYMENT_TYPE_KEY)\n ) {\n await getAccessToken();\n }\n if (save && storage.session.getCookieValue() && credsFromParameters) {\n // valid cookie, which means valid username/password combo. Save it in connections.json\n saveConnectionProfile();\n return true;\n }\n if (!storage.session.getCookieValue()) {\n return false;\n }\n return true;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AuthenticateOps.js","names":["adminClientPassword","redirectUrlTemplate","idmAdminScope","adminClientId","getCookieName","getServerInfo","data","cookieName","error","printMessage","checkAndHandle2FA","payload","element","callbacks","type","input","value","includes","need2fa","output","code","readlineSync","question","determineDefaultRealm","deploymentType","storage","session","getRealm","global","DEFAULT_REALM_KEY","setRealm","DEPLOYMENT_TYPE_REALM_MAP","determineDeploymentType","fidcClientId","forgeopsClientId","verifier","encodeBase64Url","randomBytes","challenge","createHash","update","digest","challengeMethod","redirectURL","url","resolve","getTenant","config","maxRedirects","bodyFormData","getCookieValue","CLASSIC_DEPLOYMENT_TYPE_KEY","authorize","e","response","status","CLOUD_DEPLOYMENT_TYPE_KEY","ex","FORGEOPS_DEPLOYMENT_TYPE_KEY","getSemanticVersion","versionInfo","versionString","version","rx","match","Error","authenticate","setCookieName","headers","getUsername","getPassword","response1","step","skip2FA","response2","setCookieValue","getDeploymentType","setDeploymentType","getServerVersionInfo","fullVersion","setAmVersion","message","getAuthCode","codeChallenge","codeChallengeMethod","redirectLocationURL","request","res","responseUrl","queryObject","parse","query","getAccessToken","authCode","auth","username","password","accessToken","setBearerToken","access_token","getTokens","save","credsFromParameters","conn","getConnectionProfile","setTenant","tenant","setUsername","setPassword","getBearerToken","saveConnectionProfile"],"sources":["ops/AuthenticateOps.ts"],"sourcesContent":["import url from 'url';\nimport { createHash, randomBytes } from 'crypto';\nimport readlineSync from 'readline-sync';\nimport { encodeBase64Url } from '../api/utils/Base64';\nimport storage from '../storage/SessionStorage';\nimport * as global from '../storage/StaticStorage';\nimport { printMessage } from './utils/Console';\nimport { getServerInfo, getServerVersionInfo } from '../api/ServerInfoApi';\nimport { step } from '../api/AuthenticateApi';\nimport { accessToken, authorize } from '../api/OAuth2OIDCApi';\nimport {\n getConnectionProfile,\n saveConnectionProfile,\n} from './ConnectionProfileOps';\n\nconst adminClientPassword = 'doesnotmatter';\nconst redirectUrlTemplate = '/platform/appAuthHelperRedirect.html';\n\nconst idmAdminScope = 'fr:idm:* openid';\n\nlet adminClientId = 'idmAdminClient';\n\n/**\n * Helper function to get cookie name\n * @returns {String} cookie name\n */\nasync function getCookieName() {\n try {\n return (await getServerInfo()).data.cookieName;\n } catch (error) {\n printMessage(`Error getting cookie name: ${error}`, 'error');\n return null;\n }\n}\n\n/**\n * Helper function to determine if this is a setup mfa prompt in the ID Cloud tenant admin login journey\n * @param {Object} payload response from the previous authentication journey step\n * @returns {Object} an object indicating if 2fa is required and the original payload\n */\nfunction checkAndHandle2FA(payload) {\n // let skippable = false;\n if ('callbacks' in payload) {\n for (const element of payload.callbacks) {\n if (element.type === 'HiddenValueCallback') {\n if (element.input[0].value.includes('skip')) {\n // skippable = true;\n element.input[0].value = 'Skip';\n return {\n need2fa: true,\n payload,\n };\n }\n }\n if (element.type === 'NameCallback') {\n if (element.output[0].value.includes('code')) {\n // skippable = false;\n printMessage('2FA is enabled and required for this user...');\n const code = readlineSync.question(`${element.output[0].value}: `);\n element.input[0].value = code;\n return {\n need2fa: true,\n payload,\n };\n }\n }\n }\n // console.info(\"NO2FA\");\n return {\n need2fa: false,\n payload,\n };\n }\n // console.info(\"NO2FA\");\n return {\n need2fa: false,\n payload,\n };\n}\n\n/**\n * Helper function to set the default realm by deployment type\n * @param {String} deploymentType deployment type\n */\nfunction determineDefaultRealm(deploymentType) {\n if (storage.session.getRealm() === global.DEFAULT_REALM_KEY) {\n storage.session.setRealm(global.DEPLOYMENT_TYPE_REALM_MAP[deploymentType]);\n }\n}\n\n/**\n * Helper function to determine the deployment type\n * @returns {String} deployment type\n */\nasync function determineDeploymentType() {\n const fidcClientId = 'idmAdminClient';\n const forgeopsClientId = 'idm-admin-ui';\n\n const verifier = encodeBase64Url(randomBytes(32));\n const challenge = encodeBase64Url(\n createHash('sha256').update(verifier).digest()\n );\n const challengeMethod = 'S256';\n const redirectURL = url.resolve(\n storage.session.getTenant(),\n redirectUrlTemplate\n );\n\n const config = {\n maxRedirects: 0,\n };\n let bodyFormData = `redirect_uri=${redirectURL}&scope=${idmAdminScope}&response_type=code&client_id=${fidcClientId}&csrf=${storage.session.getCookieValue()}&decision=allow&code_challenge=${challenge}&code_challenge_method=${challengeMethod}`;\n\n let deploymentType = global.CLASSIC_DEPLOYMENT_TYPE_KEY;\n try {\n await authorize(bodyFormData, config);\n } catch (e) {\n if (e.response && e.response.status === 302) {\n printMessage('ForgeRock Identity Cloud ', 'info', false);\n deploymentType = global.CLOUD_DEPLOYMENT_TYPE_KEY;\n } else {\n try {\n bodyFormData = `redirect_uri=${redirectURL}&scope=${idmAdminScope}&response_type=code&client_id=${forgeopsClientId}&csrf=${storage.session.getCookieValue()}&decision=allow&code_challenge=${challenge}&code_challenge_method=${challengeMethod}`;\n await authorize(bodyFormData, config);\n } catch (ex) {\n if (ex.response.status === 302) {\n adminClientId = forgeopsClientId;\n printMessage('ForgeOps deployment ', 'info', false);\n deploymentType = global.FORGEOPS_DEPLOYMENT_TYPE_KEY;\n } else {\n printMessage('Classic deployment ', 'info', false);\n }\n }\n }\n printMessage('detected.');\n }\n determineDefaultRealm(deploymentType);\n return deploymentType;\n}\n\n/**\n * Helper function to extract the semantic version string from a version info object\n * @param {Object} versionInfo version info object\n * @returns {String} semantic version\n */\nasync function getSemanticVersion(versionInfo) {\n if ('version' in versionInfo) {\n const versionString = versionInfo.version;\n const rx = /([\\d]\\.[\\d]\\.[\\d](\\.[\\d])*)/g;\n const version = versionString.match(rx);\n return version[0];\n }\n throw new Error('Cannot extract semantic version from version info object.');\n}\n\n/**\n * Helper function to authenticate and obtain and store session cookie\n * @returns {String} empty string or null\n */\nasync function authenticate() {\n storage.session.setCookieName(await getCookieName());\n try {\n const config = {\n headers: {\n 'X-OpenAM-Username': storage.session.getUsername(),\n 'X-OpenAM-Password': storage.session.getPassword(),\n },\n };\n const response1 = (await step({}, config)).data;\n const skip2FA = checkAndHandle2FA(response1);\n let response2 = {};\n if (skip2FA.need2fa) {\n response2 = (await step(skip2FA.payload)).data;\n } else {\n response2 = skip2FA.payload;\n }\n if ('tokenId' in response2) {\n storage.session.setCookieValue(response2['tokenId']);\n if (!storage.session.getDeploymentType()) {\n storage.session.setDeploymentType(await determineDeploymentType());\n } else {\n determineDefaultRealm(storage.session.getDeploymentType());\n }\n const versionInfo = (await getServerVersionInfo()).data;\n printMessage(`Connected to ${versionInfo.fullVersion}`);\n const version = await getSemanticVersion(versionInfo);\n storage.session.setAmVersion(version);\n return '';\n }\n printMessage(`error authenticating`, 'error');\n printMessage('+++ likely cause, bad credentials!!! +++', 'error');\n return null;\n } catch (e) {\n if (e.response && e.response.status === 401) {\n printMessage(`error authenticating - ${e.message}`, 'error');\n printMessage('+++ likely cause, bad credentials +++', 'error');\n }\n if (e.message && e.message === 'self signed certificate') {\n printMessage(`error authenticating - ${e.message}`, 'error');\n printMessage('+++ use -k, --insecure option to allow +++', 'error');\n } else {\n printMessage(`error authenticating - ${e.message}`, 'error');\n }\n return null;\n }\n}\n\n/**\n * Helper function to obtain an oauth2 authorization code\n * @param {String} redirectURL oauth2 redirect uri\n * @param {String} codeChallenge PKCE code challenge\n * @param {String} codeChallengeMethod PKCE code challenge method\n * @returns {String} oauth2 authorization code or null\n */\nasync function getAuthCode(redirectURL, codeChallenge, codeChallengeMethod) {\n try {\n const bodyFormData = `redirect_uri=${redirectURL}&scope=${idmAdminScope}&response_type=code&client_id=${adminClientId}&csrf=${storage.session.getCookieValue()}&decision=allow&code_challenge=${codeChallenge}&code_challenge_method=${codeChallengeMethod}`;\n const config = {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n };\n const response = await authorize(bodyFormData, config);\n if (response.status < 200 || response.status > 399) {\n printMessage('error getting auth code', 'error');\n printMessage(\n 'likely cause: mismatched parameters with OAuth client config',\n 'error'\n );\n return null;\n }\n const redirectLocationURL = response.request.res.responseUrl;\n const queryObject = url.parse(redirectLocationURL, true).query;\n if ('code' in queryObject) {\n return queryObject.code;\n }\n printMessage('auth code not found', 'error');\n return null;\n } catch (error) {\n printMessage(`error getting auth code - ${error.message}`, 'error');\n printMessage(error.response.data, 'error');\n return null;\n }\n}\n\n/**\n * Helper function to obtain oauth2 access token\n * @returns {String} empty string or null\n */\nasync function getAccessToken() {\n try {\n const verifier = encodeBase64Url(randomBytes(32));\n const challenge = encodeBase64Url(\n createHash('sha256').update(verifier).digest()\n );\n const challengeMethod = 'S256';\n const redirectURL = url.resolve(\n storage.session.getTenant(),\n redirectUrlTemplate\n );\n const authCode = await getAuthCode(redirectURL, challenge, challengeMethod);\n if (authCode == null) {\n printMessage('error getting auth code', 'error');\n return null;\n }\n let response = null;\n if (\n storage.session.getDeploymentType() === global.CLOUD_DEPLOYMENT_TYPE_KEY\n ) {\n const config = {\n auth: {\n username: adminClientId,\n password: adminClientPassword,\n },\n };\n const bodyFormData = `redirect_uri=${redirectURL}&grant_type=authorization_code&code=${authCode}&code_verifier=${verifier}`;\n response = await accessToken(bodyFormData, config);\n } else {\n const bodyFormData = `client_id=${adminClientId}&redirect_uri=${redirectURL}&grant_type=authorization_code&code=${authCode}&code_verifier=${verifier}`;\n response = await accessToken(bodyFormData);\n }\n if (response.status < 200 || response.status > 399) {\n printMessage(`access token call returned ${response.status}`, 'error');\n return null;\n }\n if ('access_token' in response.data) {\n storage.session.setBearerToken(response.data.access_token);\n return '';\n }\n printMessage(\"can't get access token\", 'error');\n return null;\n } catch (e) {\n printMessage('error getting access token - ', 'error');\n return null;\n }\n}\n\n/**\n * Get tokens\n * @param {boolean} save true to save a connection profile upon successful authentication, false otherwise\n * @returns {boolean} true if tokens were successfully obtained, false otherwise\n */\nexport async function getTokens(save = false) {\n let credsFromParameters = true;\n // if username/password on cli are empty, try to read from connections.json\n if (\n storage.session.getUsername() == null &&\n storage.session.getPassword() == null\n ) {\n credsFromParameters = false;\n const conn = await getConnectionProfile();\n if (conn) {\n storage.session.setTenant(conn.tenant);\n storage.session.setUsername(conn.username);\n storage.session.setPassword(conn.password);\n } else {\n return false;\n }\n }\n await authenticate();\n if (\n storage.session.getCookieValue() &&\n !storage.session.getBearerToken() &&\n (storage.session.getDeploymentType() === global.CLOUD_DEPLOYMENT_TYPE_KEY ||\n storage.session.getDeploymentType() ===\n global.FORGEOPS_DEPLOYMENT_TYPE_KEY)\n ) {\n await getAccessToken();\n }\n if (save && storage.session.getCookieValue() && credsFromParameters) {\n // valid cookie, which means valid username/password combo. Save it in connections.json\n saveConnectionProfile();\n return true;\n }\n if (!storage.session.getCookieValue()) {\n return false;\n }\n return true;\n}\n"],"mappings":"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"}
package/cjs/ops/IdpOps.js CHANGED
@@ -132,7 +132,7 @@ function _exportProvider() {
132
132
  }
133
133
 
134
134
  (0, _ExportImportUtils.saveJsonToFile)(fileData, fileName);
135
- (0, _Console.stopProgressIndicator)("Exported ".concat(id.brightCyan, " to ").concat(fileName.brightCyan, "."));
135
+ (0, _Console.stopProgressIndicator)("Exported ".concat(id['brightCyan'], " to ").concat(fileName['brightCyan'], "."));
136
136
  } catch (err) {
137
137
  (0, _Console.stopProgressIndicator)("".concat(err));
138
138
  (0, _Console.printMessage)("".concat(err), 'error');
@@ -1 +1 @@
1
- {"version":3,"file":"IdpOps.js","names":["getFileDataTemplate","meta","script","idp","listProviders","getSocialIdentityProviders","then","response","data","result","sort","a","b","_id","localeCompare","forEach","socialIdentityProvider","printMessage","catch","err","message","getSocialIdentityProviderById","id","foundProviders","filter","provider","length","Error","exportProvider","file","fileName","getTypedFilename","createProgressIndicator","idpData","updateProgressIndicator","fileData","transform","scriptData","getScript","convertBase64TextToArray","saveJsonToFile","stopProgressIndicator","brightCyan","exportProvidersToFile","getRealmString","allIdpsData","exportProvidersToFiles","importProviderById","fs","readFile","JSON","parse","validateImport","found","idpId","hasOwnProperty","call","scriptId","convertTextArrayToBase64","createOrUpdateScript","putProviderByTypeAndId","_type","importProviderErr","importFirstProvider","importProvidersFromFile","Object","keys","name","importProvidersFromFiles","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 listProviders() {\n getSocialIdentityProviders()\n .then((response) => {\n response.data.result.sort((a, b) => a._id.localeCompare(b._id));\n response.data.result.forEach((socialIdentityProvider) => {\n printMessage(`${socialIdentityProvider._id}`, 'data');\n });\n })\n .catch((err) => {\n printMessage(`listProviders ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n });\n}\n\n/**\n * Get social identity provider by id\n * @param {String} id social identity provider id/name\n * @returns {Promise} a promise that resolves a social identity provider object\n */\nexport async function getSocialIdentityProviderById(id) {\n return getSocialIdentityProviders().then((response) => {\n const foundProviders = response.data.result.filter(\n (provider) => provider._id === id\n );\n switch (foundProviders.length) {\n case 1:\n return foundProviders[0];\n case 0:\n throw new Error(`Provider '${id}' not found`);\n default:\n throw new Error(`${foundProviders.length} providers '${id}' found`);\n }\n });\n}\n\n/**\n * Export provider by id\n * @param {String} id provider id/name\n * @param {String} file optional export file name\n */\nexport async function exportProvider(id, file = '') {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(id, 'idp');\n }\n createProgressIndicator(1, `Exporting ${id}`);\n try {\n const idpData = await getSocialIdentityProviderById(id);\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)).data;\n scriptData.script = convertBase64TextToArray(scriptData.script);\n fileData.script[idpData.transform] = scriptData;\n }\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `Exported ${id.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 exportProvidersToFile(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()).data.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)).data;\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 exportProvidersToFiles() {\n const allIdpsData = await (await getSocialIdentityProviders()).data.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)).data;\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} id provider id/name\n * @param {String} file import file name\n */\nexport async function importProviderById(id, 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 === id) {\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(`Successfully imported provider ${id}.`);\n })\n .catch((importProviderErr) => {\n stopProgressIndicator(\n `Error importing provider ${fileData.idp[idpId]._id}`\n );\n printMessage(`\\nError importing provider ${id}`, 'error');\n printMessage(importProviderErr.response.data, 'error');\n });\n break;\n }\n }\n }\n if (!found) {\n stopProgressIndicator(\n `Provider ${id.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 importFirstProvider(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 importProvidersFromFile(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 importProvidersFromFiles() {\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":["getFileDataTemplate","meta","script","idp","listProviders","getSocialIdentityProviders","then","response","data","result","sort","a","b","_id","localeCompare","forEach","socialIdentityProvider","printMessage","catch","err","message","getSocialIdentityProviderById","id","foundProviders","filter","provider","length","Error","exportProvider","file","fileName","getTypedFilename","createProgressIndicator","idpData","updateProgressIndicator","fileData","transform","scriptData","getScript","convertBase64TextToArray","saveJsonToFile","stopProgressIndicator","exportProvidersToFile","getRealmString","allIdpsData","exportProvidersToFiles","importProviderById","fs","readFile","JSON","parse","validateImport","found","idpId","hasOwnProperty","call","scriptId","convertTextArrayToBase64","createOrUpdateScript","putProviderByTypeAndId","_type","importProviderErr","brightCyan","importFirstProvider","importProvidersFromFile","Object","keys","name","importProvidersFromFiles","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 listProviders() {\n getSocialIdentityProviders()\n .then((response) => {\n response.data.result.sort((a, b) => a._id.localeCompare(b._id));\n response.data.result.forEach((socialIdentityProvider) => {\n printMessage(`${socialIdentityProvider._id}`, 'data');\n });\n })\n .catch((err) => {\n printMessage(`listProviders ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n });\n}\n\n/**\n * Get social identity provider by id\n * @param {String} id social identity provider id/name\n * @returns {Promise} a promise that resolves a social identity provider object\n */\nexport async function getSocialIdentityProviderById(id) {\n return getSocialIdentityProviders().then((response) => {\n const foundProviders = response.data.result.filter(\n (provider) => provider._id === id\n );\n switch (foundProviders.length) {\n case 1:\n return foundProviders[0];\n case 0:\n throw new Error(`Provider '${id}' not found`);\n default:\n throw new Error(`${foundProviders.length} providers '${id}' found`);\n }\n });\n}\n\n/**\n * Export provider by id\n * @param {String} id provider id/name\n * @param {String} file optional export file name\n */\nexport async function exportProvider(id, file = '') {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(id, 'idp');\n }\n createProgressIndicator(1, `Exporting ${id}`);\n try {\n const idpData = await getSocialIdentityProviderById(id);\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)).data;\n scriptData.script = convertBase64TextToArray(scriptData.script);\n fileData.script[idpData.transform] = scriptData;\n }\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `Exported ${id['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 exportProvidersToFile(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()).data.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)).data;\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 exportProvidersToFiles() {\n const allIdpsData = await (await getSocialIdentityProviders()).data.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)).data;\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} id provider id/name\n * @param {String} file import file name\n */\nexport async function importProviderById(id, 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 === id) {\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(`Successfully imported provider ${id}.`);\n })\n .catch((importProviderErr) => {\n stopProgressIndicator(\n `Error importing provider ${fileData.idp[idpId]._id}`\n );\n printMessage(`\\nError importing provider ${id}`, 'error');\n printMessage(importProviderErr.response.data, 'error');\n });\n break;\n }\n }\n }\n if (!found) {\n stopProgressIndicator(\n `Provider ${id.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 importFirstProvider(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 importProvidersFromFile(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 importProvidersFromFiles() {\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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"}