@rockcarver/frodo-lib 2.0.0-45 → 2.0.0-47

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 (137) hide show
  1. package/build.zip +0 -0
  2. package/cjs/api/ApiTypes.js.map +1 -1
  3. package/cjs/api/NodeApi.js.map +1 -1
  4. package/cjs/api/OAuth2ClientApi.js.map +1 -1
  5. package/cjs/api/OAuth2OIDCApi.js +7 -5
  6. package/cjs/api/OAuth2OIDCApi.js.map +1 -1
  7. package/cjs/api/OAuth2OIDCApi.test.js +8 -4
  8. package/cjs/api/OAuth2OIDCApi.test.js.map +1 -1
  9. package/cjs/api/SessionApi.js +49 -0
  10. package/cjs/api/SessionApi.js.map +1 -0
  11. package/cjs/api/cloud/StartupApi.test.js +6 -1
  12. package/cjs/api/cloud/StartupApi.test.js.map +1 -1
  13. package/cjs/lib/FrodoLib.js +2 -0
  14. package/cjs/lib/FrodoLib.js.map +1 -1
  15. package/cjs/ops/AdminOps.js +189 -16
  16. package/cjs/ops/AdminOps.js.map +1 -1
  17. package/cjs/ops/AuthenticateOps.js +327 -110
  18. package/cjs/ops/AuthenticateOps.js.map +1 -1
  19. package/cjs/ops/ConnectionProfileOps.js +4 -42
  20. package/cjs/ops/ConnectionProfileOps.js.map +1 -1
  21. package/cjs/ops/JourneyOps.js +36 -3
  22. package/cjs/ops/JourneyOps.js.map +1 -1
  23. package/cjs/ops/OAuth2OidcOps.js +94 -28
  24. package/cjs/ops/OAuth2OidcOps.js.map +1 -1
  25. package/cjs/ops/SessionOps.js +45 -0
  26. package/cjs/ops/SessionOps.js.map +1 -0
  27. package/cjs/ops/TokenCacheOps.js +734 -0
  28. package/cjs/ops/TokenCacheOps.js.map +1 -0
  29. package/cjs/ops/cloud/SecretsOps.js +117 -23
  30. package/cjs/ops/cloud/SecretsOps.js.map +1 -1
  31. package/cjs/ops/cloud/SecretsOps.test.js +177 -0
  32. package/cjs/ops/cloud/SecretsOps.test.js.map +1 -0
  33. package/cjs/ops/cloud/VariablesOps.js +113 -16
  34. package/cjs/ops/cloud/VariablesOps.js.map +1 -1
  35. package/cjs/ops/cloud/VariablesOps.test.js +186 -0
  36. package/cjs/ops/cloud/VariablesOps.test.js.map +1 -0
  37. package/cjs/shared/Constants.js +3 -1
  38. package/cjs/shared/Constants.js.map +1 -1
  39. package/cjs/shared/State.js +33 -502
  40. package/cjs/shared/State.js.map +1 -1
  41. package/cjs/test/mocks/JourneyOps/importJourney/FrodoTestJourney3.journey.json +742 -565
  42. package/cjs/utils/AutoSetupPolly.js +6 -1
  43. package/cjs/utils/AutoSetupPolly.js.map +1 -1
  44. package/cjs/utils/DataProtection.js +19 -14
  45. package/cjs/utils/DataProtection.js.map +1 -1
  46. package/cjs/utils/ForgeRockUtils.js +1 -0
  47. package/cjs/utils/ForgeRockUtils.js.map +1 -1
  48. package/cjs/utils/JsonUtils.js +15 -2
  49. package/cjs/utils/JsonUtils.js.map +1 -1
  50. package/esm/api/ApiTypes.js.map +1 -1
  51. package/esm/api/NodeApi.js.map +1 -1
  52. package/esm/api/OAuth2ClientApi.js.map +1 -1
  53. package/esm/api/OAuth2OIDCApi.js +7 -5
  54. package/esm/api/OAuth2OIDCApi.js.map +1 -1
  55. package/esm/api/OAuth2OIDCApi.test.js +8 -4
  56. package/esm/api/OAuth2OIDCApi.test.js.map +1 -1
  57. package/esm/api/SessionApi.js +33 -0
  58. package/esm/api/SessionApi.js.map +1 -0
  59. package/esm/api/cloud/StartupApi.test.js +6 -1
  60. package/esm/api/cloud/StartupApi.test.js.map +1 -1
  61. package/esm/lib/FrodoLib.js +2 -0
  62. package/esm/lib/FrodoLib.js.map +1 -1
  63. package/esm/ops/AdminOps.js +172 -14
  64. package/esm/ops/AdminOps.js.map +1 -1
  65. package/esm/ops/AuthenticateOps.js +266 -72
  66. package/esm/ops/AuthenticateOps.js.map +1 -1
  67. package/esm/ops/ConnectionProfileOps.js +4 -42
  68. package/esm/ops/ConnectionProfileOps.js.map +1 -1
  69. package/esm/ops/JourneyOps.js +35 -3
  70. package/esm/ops/JourneyOps.js.map +1 -1
  71. package/esm/ops/OAuth2OidcOps.js +60 -3
  72. package/esm/ops/OAuth2OidcOps.js.map +1 -1
  73. package/esm/ops/SessionOps.js +27 -0
  74. package/esm/ops/SessionOps.js.map +1 -0
  75. package/esm/ops/TokenCacheOps.js +606 -0
  76. package/esm/ops/TokenCacheOps.js.map +1 -0
  77. package/esm/ops/cloud/SecretsOps.js +79 -3
  78. package/esm/ops/cloud/SecretsOps.js.map +1 -1
  79. package/esm/ops/cloud/SecretsOps.test.js +164 -0
  80. package/esm/ops/cloud/SecretsOps.test.js.map +1 -0
  81. package/esm/ops/cloud/VariablesOps.js +77 -0
  82. package/esm/ops/cloud/VariablesOps.js.map +1 -1
  83. package/esm/ops/cloud/VariablesOps.test.js +173 -0
  84. package/esm/ops/cloud/VariablesOps.test.js.map +1 -0
  85. package/esm/shared/Constants.js +3 -1
  86. package/esm/shared/Constants.js.map +1 -1
  87. package/esm/shared/State.js +33 -502
  88. package/esm/shared/State.js.map +1 -1
  89. package/esm/test/mocks/JourneyOps/importJourney/FrodoTestJourney3.journey.json +742 -565
  90. package/esm/utils/AutoSetupPolly.js +6 -1
  91. package/esm/utils/AutoSetupPolly.js.map +1 -1
  92. package/esm/utils/DataProtection.js +19 -14
  93. package/esm/utils/DataProtection.js.map +1 -1
  94. package/esm/utils/ForgeRockUtils.js +1 -0
  95. package/esm/utils/ForgeRockUtils.js.map +1 -1
  96. package/esm/utils/JsonUtils.js +12 -0
  97. package/esm/utils/JsonUtils.js.map +1 -1
  98. package/package.json +1 -1
  99. package/types/api/ApiTypes.d.ts +3 -3
  100. package/types/api/ApiTypes.d.ts.map +1 -1
  101. package/types/api/NodeApi.d.ts +1 -0
  102. package/types/api/NodeApi.d.ts.map +1 -1
  103. package/types/api/OAuth2ClientApi.d.ts +11 -11
  104. package/types/api/OAuth2ClientApi.d.ts.map +1 -1
  105. package/types/api/OAuth2OIDCApi.d.ts +37 -8
  106. package/types/api/OAuth2OIDCApi.d.ts.map +1 -1
  107. package/types/api/SessionApi.d.ts +23 -0
  108. package/types/api/SessionApi.d.ts.map +1 -0
  109. package/types/lib/FrodoLib.d.ts +2 -0
  110. package/types/lib/FrodoLib.d.ts.map +1 -1
  111. package/types/ops/AdminOps.d.ts +33 -1
  112. package/types/ops/AdminOps.d.ts.map +1 -1
  113. package/types/ops/AuthenticateOps.d.ts +37 -11
  114. package/types/ops/AuthenticateOps.d.ts.map +1 -1
  115. package/types/ops/ConnectionProfileOps.d.ts.map +1 -1
  116. package/types/ops/JourneyOps.d.ts +1 -0
  117. package/types/ops/JourneyOps.d.ts.map +1 -1
  118. package/types/ops/OAuth2OidcOps.d.ts +35 -6
  119. package/types/ops/OAuth2OidcOps.d.ts.map +1 -1
  120. package/types/ops/SessionOps.d.ts +22 -0
  121. package/types/ops/SessionOps.d.ts.map +1 -0
  122. package/types/ops/TokenCacheOps.d.ts +166 -0
  123. package/types/ops/TokenCacheOps.d.ts.map +1 -0
  124. package/types/ops/cloud/SecretsOps.d.ts +32 -2
  125. package/types/ops/cloud/SecretsOps.d.ts.map +1 -1
  126. package/types/ops/cloud/VariablesOps.d.ts +30 -0
  127. package/types/ops/cloud/VariablesOps.d.ts.map +1 -1
  128. package/types/shared/Constants.d.ts +1 -0
  129. package/types/shared/Constants.d.ts.map +1 -1
  130. package/types/shared/State.d.ts +19 -13
  131. package/types/shared/State.d.ts.map +1 -1
  132. package/types/utils/AutoSetupPolly.d.ts.map +1 -1
  133. package/types/utils/DataProtection.d.ts +2 -1
  134. package/types/utils/DataProtection.d.ts.map +1 -1
  135. package/types/utils/ForgeRockUtils.d.ts.map +1 -1
  136. package/types/utils/JsonUtils.d.ts +2 -0
  137. package/types/utils/JsonUtils.d.ts.map +1 -1
package/build.zip CHANGED
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"ApiTypes.js","names":[],"sources":["../../src/api/ApiTypes.ts"],"sourcesContent":["export interface NoIdObjectSkeletonInterface {\n _rev?: string;\n [k: string]:\n | string\n | number\n | boolean\n | string[]\n | IdObjectSkeletonInterface\n | object\n | undefined;\n}\n\nexport interface IdObjectSkeletonInterface extends NoIdObjectSkeletonInterface {\n _id?: string;\n}\n\nexport type ReadableStrings = string[];\n\nexport type WritableStrings = {\n inherited: boolean;\n value: string[];\n};\n\nexport type QueryResult<Type> = {\n result: Type[];\n};\n\nexport type PagedResult<Type> = {\n result: Type[];\n resultCount: number;\n pagedResultsCookie: string;\n totalPagedResultsPolicy: 'EXACT';\n totalPagedResults: number;\n remainingPagedResults: number;\n};\n"],"mappings":""}
1
+ {"version":3,"file":"ApiTypes.js","names":[],"sources":["../../src/api/ApiTypes.ts"],"sourcesContent":["export interface NoIdObjectSkeletonInterface {\n _rev?: string;\n [k: string]:\n | string\n | number\n | boolean\n | string[]\n | IdObjectSkeletonInterface\n | object\n | undefined;\n}\n\nexport interface IdObjectSkeletonInterface extends NoIdObjectSkeletonInterface {\n _id?: string;\n}\n\nexport type Readable<Type> = Type;\n\nexport type Writable<Type> = {\n inherited: boolean;\n value: Type;\n};\n\nexport type QueryResult<Type> = {\n result: Type[];\n};\n\nexport type PagedResult<Type> = {\n result: Type[];\n resultCount: number;\n pagedResultsCookie: string;\n totalPagedResultsPolicy: 'EXACT';\n totalPagedResults: number;\n remainingPagedResults: number;\n};\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"NodeApi.js","names":["_util","_interopRequireDefault","require","_ForgeRockUtils","_JsonUtils","_BaseApi","obj","__esModule","default","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","queryAllNodeTypesURLTemplate","queryAllNodesByTypeURLTemplate","queryAllNodesURLTemplate","nodeURLTemplate","createNodeURLTemplate","apiVersion","getNodeApiConfig","getNodeTypes","_x","_getNodeTypes","_ref","state","urlString","util","format","getHost","getCurrentRealmPath","data","generateAmApi","resource","post","withCredentials","headers","getNodes","_x2","_getNodes","_ref2","getNodesByType","_x3","_getNodesByType","_ref3","nodeType","get","getNode","_x4","_getNode","_ref4","nodeId","createNode","_x5","_createNode","_ref5","nodeData","putNode","_x6","_putNode","_ref6","cleanData","deleteDeepByKey","put","deleteNode","_x7","_deleteNode","_ref7","delete"],"sources":["../../src/api/NodeApi.ts"],"sourcesContent":["import util from 'util';\n\nimport { State } from '../shared/State';\nimport { getCurrentRealmPath } from '../utils/ForgeRockUtils';\nimport { deleteDeepByKey } from '../utils/JsonUtils';\nimport {\n type IdObjectSkeletonInterface,\n type NoIdObjectSkeletonInterface,\n type PagedResult,\n type QueryResult,\n} from './ApiTypes';\nimport { generateAmApi } from './BaseApi';\nimport { type AmServiceType } from './ServiceApi';\n\nconst queryAllNodeTypesURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/nodes?_action=getAllTypes';\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 nodeURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/nodes/%s/%s';\nconst createNodeURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/nodes/%s?_action=create';\n\nconst apiVersion = 'protocol=2.1,resource=1.0';\nconst getNodeApiConfig = () => {\n return {\n apiVersion,\n };\n};\n\nexport interface NodeRefSkeletonInterface {\n connections: Record<string, string>;\n displayName: string;\n nodeType: string;\n x: number;\n y: number;\n}\n\nexport interface InnerNodeRefSkeletonInterface {\n _id: string;\n displayName: string;\n nodeType: string;\n}\n\nexport type NodeSkeleton = IdObjectSkeletonInterface & {\n _type: AmServiceType;\n nodes?: InnerNodeRefSkeletonInterface[];\n tree?: string;\n identityResource?: string;\n script?: string;\n emailTemplateName?: string;\n filteredProviders?: string[];\n};\n\nexport type NodeTypeSkeleton = IdObjectSkeletonInterface & {\n name: string;\n collection: boolean;\n tags: string[];\n metadata: {\n tags: string[];\n [k: string]: string | number | boolean | string[];\n };\n help: string;\n};\n\n/**\n * Get all node types\n * @returns {Promise<QueryResult<NodeTypeSkeleton>>} a promise that resolves to an array of node type objects\n */\nexport async function getNodeTypes({\n state,\n}: {\n state: State;\n}): Promise<QueryResult<NodeTypeSkeleton>> {\n const urlString = util.format(\n queryAllNodeTypesURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state)\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).post(\n urlString,\n {},\n {\n withCredentials: true,\n headers: { 'Accept-Encoding': 'gzip, deflate, br' },\n }\n );\n return data;\n}\n\n/**\n * Get all nodes\n * @returns {Promise} a promise that resolves to an object containing an array of node objects\n */\nexport async function getNodes({\n state,\n}: {\n state: State;\n}): Promise<QueryResult<NodeSkeleton>> {\n const urlString = util.format(\n queryAllNodesURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state)\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).post(\n urlString,\n {},\n {\n withCredentials: true,\n headers: { 'Accept-Encoding': 'gzip, deflate, br' },\n }\n );\n return data;\n}\n\n/**\n * Get all nodes by type\n * @param {string} nodeType node type\n * @returns {Promise<PagedResult<NodeSkeleton>>} a promise that resolves to an object containing an array of node objects of the requested type\n */\nexport async function getNodesByType({\n nodeType,\n state,\n}: {\n nodeType: string;\n state: State;\n}): Promise<PagedResult<NodeSkeleton>> {\n const urlString = util.format(\n queryAllNodesByTypeURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n nodeType\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Get node by uuid and type\n * @param {string} nodeId node uuid\n * @param {string} nodeType node type\n * @returns {Promise<NodeSkeleton>} a promise that resolves to a node object\n */\nexport async function getNode({\n nodeId,\n nodeType,\n state,\n}: {\n nodeId: string;\n nodeType: string;\n state: State;\n}): Promise<NodeSkeleton> {\n const urlString = util.format(\n nodeURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n nodeType,\n nodeId\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Create node by type\n * @param {string} nodeType node type\n * @param {object} nodeData node object\n * @returns {Promise<NodeSkeleton>} a promise that resolves to a node object\n */\nexport async function createNode({\n nodeType,\n nodeData,\n state,\n}: {\n nodeType: string;\n nodeData: NodeSkeleton;\n state: State;\n}): Promise<NodeSkeleton> {\n const urlString = util.format(\n createNodeURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n nodeType\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).post(urlString, nodeData, {\n withCredentials: true,\n headers: { 'Accept-Encoding': 'gzip, deflate, br' },\n });\n return data;\n}\n\n/**\n * Put node by uuid and type\n * @param {string} nodeId node uuid\n * @param {string} nodeType node type\n * @param {object} nodeData node object\n * @returns {Promise} a promise that resolves to an object containing a node object\n */\nexport async function putNode({\n nodeId,\n nodeType,\n nodeData,\n state,\n}: {\n nodeId: string;\n nodeType: string;\n nodeData: NodeSkeleton | NoIdObjectSkeletonInterface;\n state: State;\n}) {\n // until we figure out a way to use transport keys in Frodo,\n // we'll have to drop those encrypted attributes.\n const cleanData = deleteDeepByKey(nodeData, '-encrypted');\n const urlString = util.format(\n nodeURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n nodeType,\n nodeId\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).put(urlString, cleanData, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Delete node by uuid and type\n * @param {String} nodeId 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({\n nodeId,\n nodeType,\n state,\n}: {\n nodeId: string;\n nodeType: string;\n state: State;\n}) {\n const urlString = util.format(\n nodeURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n nodeType,\n nodeId\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"NodeApi.js","names":["_util","_interopRequireDefault","require","_ForgeRockUtils","_JsonUtils","_BaseApi","obj","__esModule","default","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","queryAllNodeTypesURLTemplate","queryAllNodesByTypeURLTemplate","queryAllNodesURLTemplate","nodeURLTemplate","createNodeURLTemplate","apiVersion","getNodeApiConfig","getNodeTypes","_x","_getNodeTypes","_ref","state","urlString","util","format","getHost","getCurrentRealmPath","data","generateAmApi","resource","post","withCredentials","headers","getNodes","_x2","_getNodes","_ref2","getNodesByType","_x3","_getNodesByType","_ref3","nodeType","get","getNode","_x4","_getNode","_ref4","nodeId","createNode","_x5","_createNode","_ref5","nodeData","putNode","_x6","_putNode","_ref6","cleanData","deleteDeepByKey","put","deleteNode","_x7","_deleteNode","_ref7","delete"],"sources":["../../src/api/NodeApi.ts"],"sourcesContent":["import util from 'util';\n\nimport { State } from '../shared/State';\nimport { getCurrentRealmPath } from '../utils/ForgeRockUtils';\nimport { deleteDeepByKey } from '../utils/JsonUtils';\nimport {\n type IdObjectSkeletonInterface,\n type NoIdObjectSkeletonInterface,\n type PagedResult,\n type QueryResult,\n} from './ApiTypes';\nimport { generateAmApi } from './BaseApi';\nimport { type AmServiceType } from './ServiceApi';\n\nconst queryAllNodeTypesURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/nodes?_action=getAllTypes';\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 nodeURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/nodes/%s/%s';\nconst createNodeURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/nodes/%s?_action=create';\n\nconst apiVersion = 'protocol=2.1,resource=1.0';\nconst getNodeApiConfig = () => {\n return {\n apiVersion,\n };\n};\n\nexport interface NodeRefSkeletonInterface {\n connections: Record<string, string>;\n displayName: string;\n nodeType: string;\n x: number;\n y: number;\n}\n\nexport interface InnerNodeRefSkeletonInterface {\n _id: string;\n displayName: string;\n nodeType: string;\n}\n\nexport type NodeSkeleton = IdObjectSkeletonInterface & {\n _type: AmServiceType;\n nodes?: InnerNodeRefSkeletonInterface[];\n tree?: string;\n identityResource?: string;\n script?: string;\n emailTemplateName?: string;\n filteredProviders?: string[];\n useScript?: boolean;\n};\n\nexport type NodeTypeSkeleton = IdObjectSkeletonInterface & {\n name: string;\n collection: boolean;\n tags: string[];\n metadata: {\n tags: string[];\n [k: string]: string | number | boolean | string[];\n };\n help: string;\n};\n\n/**\n * Get all node types\n * @returns {Promise<QueryResult<NodeTypeSkeleton>>} a promise that resolves to an array of node type objects\n */\nexport async function getNodeTypes({\n state,\n}: {\n state: State;\n}): Promise<QueryResult<NodeTypeSkeleton>> {\n const urlString = util.format(\n queryAllNodeTypesURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state)\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).post(\n urlString,\n {},\n {\n withCredentials: true,\n headers: { 'Accept-Encoding': 'gzip, deflate, br' },\n }\n );\n return data;\n}\n\n/**\n * Get all nodes\n * @returns {Promise} a promise that resolves to an object containing an array of node objects\n */\nexport async function getNodes({\n state,\n}: {\n state: State;\n}): Promise<QueryResult<NodeSkeleton>> {\n const urlString = util.format(\n queryAllNodesURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state)\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).post(\n urlString,\n {},\n {\n withCredentials: true,\n headers: { 'Accept-Encoding': 'gzip, deflate, br' },\n }\n );\n return data;\n}\n\n/**\n * Get all nodes by type\n * @param {string} nodeType node type\n * @returns {Promise<PagedResult<NodeSkeleton>>} a promise that resolves to an object containing an array of node objects of the requested type\n */\nexport async function getNodesByType({\n nodeType,\n state,\n}: {\n nodeType: string;\n state: State;\n}): Promise<PagedResult<NodeSkeleton>> {\n const urlString = util.format(\n queryAllNodesByTypeURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n nodeType\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Get node by uuid and type\n * @param {string} nodeId node uuid\n * @param {string} nodeType node type\n * @returns {Promise<NodeSkeleton>} a promise that resolves to a node object\n */\nexport async function getNode({\n nodeId,\n nodeType,\n state,\n}: {\n nodeId: string;\n nodeType: string;\n state: State;\n}): Promise<NodeSkeleton> {\n const urlString = util.format(\n nodeURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n nodeType,\n nodeId\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Create node by type\n * @param {string} nodeType node type\n * @param {object} nodeData node object\n * @returns {Promise<NodeSkeleton>} a promise that resolves to a node object\n */\nexport async function createNode({\n nodeType,\n nodeData,\n state,\n}: {\n nodeType: string;\n nodeData: NodeSkeleton;\n state: State;\n}): Promise<NodeSkeleton> {\n const urlString = util.format(\n createNodeURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n nodeType\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).post(urlString, nodeData, {\n withCredentials: true,\n headers: { 'Accept-Encoding': 'gzip, deflate, br' },\n });\n return data;\n}\n\n/**\n * Put node by uuid and type\n * @param {string} nodeId node uuid\n * @param {string} nodeType node type\n * @param {object} nodeData node object\n * @returns {Promise} a promise that resolves to an object containing a node object\n */\nexport async function putNode({\n nodeId,\n nodeType,\n nodeData,\n state,\n}: {\n nodeId: string;\n nodeType: string;\n nodeData: NodeSkeleton | NoIdObjectSkeletonInterface;\n state: State;\n}) {\n // until we figure out a way to use transport keys in Frodo,\n // we'll have to drop those encrypted attributes.\n const cleanData = deleteDeepByKey(nodeData, '-encrypted');\n const urlString = util.format(\n nodeURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n nodeType,\n nodeId\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).put(urlString, cleanData, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Delete node by uuid and type\n * @param {String} nodeId 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({\n nodeId,\n nodeType,\n state,\n}: {\n nodeId: string;\n nodeType: string;\n state: State;\n}) {\n const urlString = util.format(\n nodeURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n nodeType,\n nodeId\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"OAuth2ClientApi.js","names":["_util","_interopRequireDefault","require","_ForgeRockUtils","_JsonUtils","_BaseApi","obj","__esModule","default","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","oauth2ClientURLTemplate","oauth2ClientListURLTemplate","apiVersion","getApiConfig","getOAuth2Clients","_x","_getOAuth2Clients","_ref","state","urlString","util","format","getHost","getCurrentRealmPath","data","generateAmApi","resource","get","withCredentials","getOAuth2Client","_x2","_getOAuth2Client","_ref2","id","putOAuth2Client","_x3","_putOAuth2Client","_ref3","clientData","client","deleteDeepByKey","_provider","_rev","put","deleteOAuth2Client","_x4","_deleteOAuth2Client","_ref4","delete"],"sources":["../../src/api/OAuth2ClientApi.ts"],"sourcesContent":["import util from 'util';\n\nimport { State } from '../shared/State';\nimport { getCurrentRealmPath } from '../utils/ForgeRockUtils';\nimport { deleteDeepByKey } from '../utils/JsonUtils';\nimport {\n type IdObjectSkeletonInterface,\n type NoIdObjectSkeletonInterface,\n type PagedResult,\n type ReadableStrings,\n type WritableStrings,\n} from './ApiTypes';\nimport { generateAmApi } from './BaseApi';\nimport { AmServiceType } from './ServiceApi';\n\nconst oauth2ClientURLTemplate = '%s/json%s/realm-config/agents/OAuth2Client/%s';\nconst oauth2ClientListURLTemplate =\n '%s/json%s/realm-config/agents/OAuth2Client?_queryFilter=true';\nconst apiVersion = 'protocol=2.1,resource=1.0';\nconst getApiConfig = () => {\n return {\n apiVersion,\n };\n};\n\nexport type OAuth2ClientSkeleton = IdObjectSkeletonInterface & {\n overrideOAuth2ClientConfig?: {\n [k: string]: string | number | boolean | string[] | object | undefined;\n };\n advancedOAuth2ClientConfig?: {\n descriptions: {\n inherited: boolean;\n value: string[];\n };\n grantTypes?: ReadableStrings | WritableStrings;\n [k: string]: string | number | boolean | string[] | object | undefined;\n };\n signEncOAuth2ClientConfig?: {\n [k: string]: string | number | boolean | string[] | object | undefined;\n };\n coreOpenIDClientConfig?: {\n [k: string]: string | number | boolean | string[] | object | undefined;\n };\n coreOAuth2ClientConfig?: {\n userpassword?: string;\n clientName?: {\n inherited: boolean;\n value: string[];\n };\n accessTokenLifetime?: {\n inherited: boolean;\n value: number;\n };\n scopes?: ReadableStrings | WritableStrings;\n defaultScopes?: {\n value: string[];\n [k: string]: string | number | boolean | string[] | object | undefined;\n };\n [k: string]: string | number | boolean | string[] | object | undefined;\n };\n coreUmaClientConfig?: {\n [k: string]: string | number | boolean | string[] | object | undefined;\n };\n _type: AmServiceType;\n};\n\n/**\n * Get OAuth2 Clients\n * @returns {Promise<PagedResult>} a promise that resolves to a PagedResults object containing an array of oauth2client objects\n */\nexport async function getOAuth2Clients({\n state,\n}: {\n state: State;\n}): Promise<PagedResult<OAuth2ClientSkeleton>> {\n const urlString = util.format(\n oauth2ClientListURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state)\n );\n const { data } = await generateAmApi({ resource: getApiConfig(), state }).get(\n urlString,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Get OAuth2 Client\n * @param {string} id client id\n * @returns {Promise<OAuth2ClientSkeleton>} a promise that resolves to an oauth2 client object\n */\nexport async function getOAuth2Client({\n id,\n state,\n}: {\n id: string;\n state: State;\n}): Promise<OAuth2ClientSkeleton> {\n const urlString = util.format(\n oauth2ClientURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n id\n );\n const { data } = await generateAmApi({ resource: getApiConfig(), state }).get(\n urlString,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Put OAuth2 Client\n * @param {string} id client id\n * @param {OAuth2ClientSkeleton} clientData oauth2client object\n * @returns {Promise<OAuth2ClientSkeleton>} a promise that resolves to an oauth2 client object\n */\nexport async function putOAuth2Client({\n id,\n clientData,\n state,\n}: {\n id: string;\n clientData: OAuth2ClientSkeleton | NoIdObjectSkeletonInterface;\n state: State;\n}): Promise<OAuth2ClientSkeleton> {\n // until we figure out a way to use transport keys in Frodo,\n // we'll have to drop those encrypted attributes.\n const client = deleteDeepByKey(clientData, '-encrypted');\n delete client._provider;\n delete client._rev;\n const urlString = util.format(\n oauth2ClientURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n id\n );\n const { data } = await generateAmApi({ resource: getApiConfig(), state }).put(\n urlString,\n client,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Delete OAuth2 Client\n * @param {string} id OAuth2 Client\n * @returns {Promise<OAuth2ClientSkeleton>} a promise that resolves to an oauth2client object\n */\nexport async function deleteOAuth2Client({\n id,\n state,\n}: {\n id: string;\n state: State;\n}): Promise<OAuth2ClientSkeleton> {\n const urlString = util.format(\n oauth2ClientURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n id\n );\n const { data } = await generateAmApi({\n resource: getApiConfig(),\n state,\n }).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"OAuth2ClientApi.js","names":["_util","_interopRequireDefault","require","_ForgeRockUtils","_JsonUtils","_BaseApi","obj","__esModule","default","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","oauth2ClientURLTemplate","oauth2ClientListURLTemplate","apiVersion","getApiConfig","getOAuth2Clients","_x","_getOAuth2Clients","_ref","state","urlString","util","format","getHost","getCurrentRealmPath","data","generateAmApi","resource","get","withCredentials","getOAuth2Client","_x2","_getOAuth2Client","_ref2","id","putOAuth2Client","_x3","_putOAuth2Client","_ref3","clientData","client","deleteDeepByKey","_provider","_rev","put","deleteOAuth2Client","_x4","_deleteOAuth2Client","_ref4","delete"],"sources":["../../src/api/OAuth2ClientApi.ts"],"sourcesContent":["import util from 'util';\n\nimport { State } from '../shared/State';\nimport { getCurrentRealmPath } from '../utils/ForgeRockUtils';\nimport { deleteDeepByKey } from '../utils/JsonUtils';\nimport {\n type IdObjectSkeletonInterface,\n type NoIdObjectSkeletonInterface,\n type PagedResult,\n type Readable,\n type Writable,\n} from './ApiTypes';\nimport { generateAmApi } from './BaseApi';\nimport { AmServiceType } from './ServiceApi';\n\nconst oauth2ClientURLTemplate = '%s/json%s/realm-config/agents/OAuth2Client/%s';\nconst oauth2ClientListURLTemplate =\n '%s/json%s/realm-config/agents/OAuth2Client?_queryFilter=true';\nconst apiVersion = 'protocol=2.1,resource=1.0';\nconst getApiConfig = () => {\n return {\n apiVersion,\n };\n};\n\nexport type OAuth2ClientSkeleton = IdObjectSkeletonInterface & {\n overrideOAuth2ClientConfig?: {\n [k: string]: string | number | boolean | string[] | object | undefined;\n };\n advancedOAuth2ClientConfig?: {\n descriptions: {\n inherited: boolean;\n value: string[];\n };\n grantTypes?: Readable<string[]> | Writable<string[]>;\n isConsentImplied?: Readable<boolean> | Writable<boolean>;\n tokenEndpointAuthMethod?: Readable<string> | Writable<string>;\n responseTypes?: Readable<string[]> | Writable<string[]>;\n [k: string]: string | number | boolean | string[] | object | undefined;\n };\n signEncOAuth2ClientConfig?: {\n jwkSet?: Readable<string> | Writable<string>;\n publicKeyLocation?: Readable<string> | Writable<string>;\n [k: string]: string | number | boolean | string[] | object | undefined;\n };\n coreOpenIDClientConfig?: {\n [k: string]: string | number | boolean | string[] | object | undefined;\n };\n coreOAuth2ClientConfig?: {\n userpassword?: string;\n clientName?: Readable<string[]> | Writable<string[]>;\n clientType?: Readable<string> | Writable<string>;\n accessTokenLifetime?: Readable<number> | Writable<number>;\n scopes?: Readable<string[]> | Writable<string[]>;\n defaultScopes?: {\n value: string[];\n [k: string]: string | number | boolean | string[] | object | undefined;\n };\n [k: string]: string | number | boolean | string[] | object | undefined;\n };\n coreUmaClientConfig?: {\n [k: string]: string | number | boolean | string[] | object | undefined;\n };\n _type: AmServiceType;\n};\n\n/**\n * Get OAuth2 Clients\n * @returns {Promise<PagedResult>} a promise that resolves to a PagedResults object containing an array of oauth2client objects\n */\nexport async function getOAuth2Clients({\n state,\n}: {\n state: State;\n}): Promise<PagedResult<OAuth2ClientSkeleton>> {\n const urlString = util.format(\n oauth2ClientListURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state)\n );\n const { data } = await generateAmApi({ resource: getApiConfig(), state }).get(\n urlString,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Get OAuth2 Client\n * @param {string} id client id\n * @returns {Promise<OAuth2ClientSkeleton>} a promise that resolves to an oauth2 client object\n */\nexport async function getOAuth2Client({\n id,\n state,\n}: {\n id: string;\n state: State;\n}): Promise<OAuth2ClientSkeleton> {\n const urlString = util.format(\n oauth2ClientURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n id\n );\n const { data } = await generateAmApi({ resource: getApiConfig(), state }).get(\n urlString,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Put OAuth2 Client\n * @param {string} id client id\n * @param {OAuth2ClientSkeleton} clientData oauth2client object\n * @returns {Promise<OAuth2ClientSkeleton>} a promise that resolves to an oauth2 client object\n */\nexport async function putOAuth2Client({\n id,\n clientData,\n state,\n}: {\n id: string;\n clientData: OAuth2ClientSkeleton | NoIdObjectSkeletonInterface;\n state: State;\n}): Promise<OAuth2ClientSkeleton> {\n // until we figure out a way to use transport keys in Frodo,\n // we'll have to drop those encrypted attributes.\n const client = deleteDeepByKey(clientData, '-encrypted');\n delete client._provider;\n delete client._rev;\n const urlString = util.format(\n oauth2ClientURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n id\n );\n const { data } = await generateAmApi({ resource: getApiConfig(), state }).put(\n urlString,\n client,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Delete OAuth2 Client\n * @param {string} id OAuth2 Client\n * @returns {Promise<OAuth2ClientSkeleton>} a promise that resolves to an oauth2client object\n */\nexport async function deleteOAuth2Client({\n id,\n state,\n}: {\n id: string;\n state: State;\n}): Promise<OAuth2ClientSkeleton> {\n const urlString = util.format(\n oauth2ClientURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n id\n );\n const { data } = await generateAmApi({\n resource: getApiConfig(),\n state,\n }).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n"],"mappings":"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"}
@@ -22,7 +22,6 @@ var apiVersion = 'protocol=2.1,resource=1.0';
22
22
  var getApiConfig = () => ({
23
23
  apiVersion
24
24
  });
25
-
26
25
  /**
27
26
  * Perform the authorization step of the authorization code grant flow
28
27
  * @param {string} amBaseUrl access management base URL
@@ -40,7 +39,7 @@ function authorize(_x) {
40
39
  * @param {string} data body form data
41
40
  * @param {AxiosRequestConfig} config config axios request config object
42
41
  * @param {State} state library state
43
- * @returns {Promise} a promise resolving to an object containing the authorization server response object containing the access token
42
+ * @returns {Promise<AccessTokenResponseType>} a promise resolving to an object containing the authorization server response object containing the access token
44
43
  */
45
44
  function _authorize() {
46
45
  _authorize = _asyncToGenerator(function* (_ref) {
@@ -73,16 +72,19 @@ function _accessToken() {
73
72
  _accessToken = _asyncToGenerator(function* (_ref2) {
74
73
  var {
75
74
  amBaseUrl,
76
- data,
75
+ postData,
77
76
  config,
78
77
  state
79
78
  } = _ref2;
80
79
  var accessTokenURL = _util.default.format(accessTokenUrlTemplate, amBaseUrl, '');
81
- return (0, _BaseApi.generateOauth2Api)({
80
+ var {
81
+ data
82
+ } = yield (0, _BaseApi.generateOauth2Api)({
82
83
  resource: getApiConfig(),
83
84
  requestOverride: {},
84
85
  state
85
- }).post(accessTokenURL, data, config);
86
+ }).post(accessTokenURL, postData, config);
87
+ return data;
86
88
  });
87
89
  return _accessToken.apply(this, arguments);
88
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OAuth2OIDCApi.js","names":["_qs","_interopRequireDefault","require","_util","_Base64Utils","_ForgeRockUtils","_BaseApi","obj","__esModule","default","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","authorizeUrlTemplate","accessTokenUrlTemplate","tokenInfoUrlTemplate","apiVersion","getApiConfig","authorize","_x","_authorize","_ref","amBaseUrl","data","config","state","authorizeURL","util","format","generateOauth2Api","resource","requestOverride","post","accessToken","_x2","_accessToken","_ref2","accessTokenURL","getTokenInfo","_x3","_getTokenInfo","_ref3","get","clientCredentialsGrant","_x4","_clientCredentialsGrant","_ref4","clientId","clientSecret","scope","urlString","getCurrentRealmPath","headers","Authorization","concat","encode","requestBody","grant_type","qs","stringify","withCredentials"],"sources":["../../src/api/OAuth2OIDCApi.ts"],"sourcesContent":["import { AxiosRequestConfig } from 'axios';\nimport qs from 'qs';\nimport util from 'util';\n\nimport { State } from '../shared/State';\nimport { encode } from '../utils/Base64Utils';\nimport { getCurrentRealmPath } from '../utils/ForgeRockUtils';\nimport { generateOauth2Api } from './BaseApi';\n\nconst authorizeUrlTemplate = '%s/oauth2%s/authorize';\nconst accessTokenUrlTemplate = '%s/oauth2%s/access_token';\nconst tokenInfoUrlTemplate = '%s/oauth2%s/tokeninfo';\nconst apiVersion = 'protocol=2.1,resource=1.0';\nconst getApiConfig = () => ({\n apiVersion,\n});\n\n/**\n * Perform the authorization step of the authorization code grant flow\n * @param {string} amBaseUrl access management base URL\n * @param {string} data body form data\n * @param {AxiosRequestConfig} config axios request config object\n * @param {State} state library state\n * @returns {Promise} a promise resolving to an object containing the authorization server response object\n */\nexport async function authorize({\n amBaseUrl,\n data,\n config,\n state,\n}: {\n amBaseUrl: string;\n data: string;\n config: AxiosRequestConfig;\n state: State;\n}) {\n const authorizeURL = util.format(authorizeUrlTemplate, amBaseUrl, '');\n return generateOauth2Api({\n resource: getApiConfig(),\n requestOverride: {},\n state,\n }).post(authorizeURL, data, config);\n}\n\n/**\n * Perform access token request step of the authorization code grant flow\n * @param {string} amBaseUrl access management base URL\n * @param {string} data body form data\n * @param {AxiosRequestConfig} config config axios request config object\n * @param {State} state library state\n * @returns {Promise} a promise resolving to an object containing the authorization server response object containing the access token\n */\nexport async function accessToken({\n amBaseUrl,\n data,\n config,\n state,\n}: {\n amBaseUrl: string;\n data: any;\n config: AxiosRequestConfig;\n state: State;\n}) {\n const accessTokenURL = util.format(accessTokenUrlTemplate, amBaseUrl, '');\n return generateOauth2Api({\n resource: getApiConfig(),\n requestOverride: {},\n state,\n }).post(accessTokenURL, data, config);\n}\n\n/**\n * Get token info\n * @param {string} amBaseUrl access management base URL\n * @param {AxiosRequestConfig} config config axios request config object\n * @param {State} state library state\n * @returns\n */\nexport async function getTokenInfo({\n amBaseUrl,\n config,\n state,\n}: {\n amBaseUrl: string;\n config: AxiosRequestConfig;\n state: State;\n}) {\n const accessTokenURL = util.format(tokenInfoUrlTemplate, amBaseUrl, '');\n const { data } = await generateOauth2Api({\n resource: getApiConfig(),\n requestOverride: {},\n state,\n }).get(accessTokenURL, config);\n return data;\n}\n\n/**\n * Perform client credentials grant flow\n * @param {string} amBaseUrl access management base URL\n * @param {string} clientId client id\n * @param {string} clientSecret client secret\n * @param {string} scope space-delimited scope list\n * @param {State} state library state\n * @returns {Promise} a promise resolving to an object containing the authorization server response object\n */\nexport async function clientCredentialsGrant({\n amBaseUrl,\n clientId,\n clientSecret,\n scope,\n state,\n}: {\n amBaseUrl: string;\n clientId: string;\n clientSecret: string;\n scope: string;\n state: State;\n}) {\n const urlString = util.format(\n accessTokenUrlTemplate,\n amBaseUrl,\n getCurrentRealmPath(state)\n );\n const requestOverride = {\n headers: {\n Authorization: `Basic ${encode(`${clientId}:${clientSecret}`)}`,\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n };\n const requestBody = {\n grant_type: 'client_credentials',\n scope,\n };\n const { data } = await generateOauth2Api({\n resource: getApiConfig(),\n requestOverride,\n state,\n }).post(urlString, qs.stringify(requestBody), { withCredentials: true });\n return data;\n}\n"],"mappings":";;;;;;;;;AACA,IAAAA,GAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAwB,IAAAE,YAAA,GAAAF,OAAA;AAAA,IAAAG,eAAA,GAAAH,OAAA;AAAA,IAAAI,QAAA,GAAAJ,OAAA;AAAA,SAAAD,uBAAAM,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,mBAAAC,GAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,MAAA,EAAAC,GAAA,EAAAC,GAAA,cAAAC,IAAA,GAAAP,GAAA,CAAAK,GAAA,EAAAC,GAAA,OAAAE,KAAA,GAAAD,IAAA,CAAAC,KAAA,WAAAC,KAAA,IAAAP,MAAA,CAAAO,KAAA,iBAAAF,IAAA,CAAAG,IAAA,IAAAT,OAAA,CAAAO,KAAA,YAAAG,OAAA,CAAAV,OAAA,CAAAO,KAAA,EAAAI,IAAA,CAAAT,KAAA,EAAAC,MAAA;AAAA,SAAAS,kBAAAC,EAAA,6BAAAC,IAAA,SAAAC,IAAA,GAAAC,SAAA,aAAAN,OAAA,WAAAV,OAAA,EAAAC,MAAA,QAAAF,GAAA,GAAAc,EAAA,CAAAI,KAAA,CAAAH,IAAA,EAAAC,IAAA,YAAAb,MAAAK,KAAA,IAAAT,kBAAA,CAAAC,GAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,MAAA,UAAAI,KAAA,cAAAJ,OAAAe,GAAA,IAAApB,kBAAA,CAAAC,GAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,MAAA,WAAAe,GAAA,KAAAhB,KAAA,CAAAiB,SAAA;AAOxB,IAAMC,oBAAoB,GAAG,uBAAuB;AACpD,IAAMC,sBAAsB,GAAG,0BAA0B;AACzD,IAAMC,oBAAoB,GAAG,uBAAuB;AACpD,IAAMC,UAAU,GAAG,2BAA2B;AAC9C,IAAMC,YAAY,GAAGA,CAAA,MAAO;EAC1BD;AACF,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA,SAQsBE,SAASA,CAAAC,EAAA;EAAA,OAAAC,UAAA,CAAAV,KAAA,OAAAD,SAAA;AAAA;AAmB/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA,SAAAW,WAAA;EAAAA,UAAA,GAAAf,iBAAA,CAnBO,WAAAgB,IAAA,EAUJ;IAAA,IAV6B;MAC9BC,SAAS;MACTC,IAAI;MACJC,MAAM;MACNC;IAMF,CAAC,GAAAJ,IAAA;IACC,IAAMK,YAAY,GAAGC,aAAI,CAACC,MAAM,CAACf,oBAAoB,EAAES,SAAS,EAAE,EAAE,CAAC;IACrE,OAAO,IAAAO,0BAAiB,EAAC;MACvBC,QAAQ,EAAEb,YAAY,CAAC,CAAC;MACxBc,eAAe,EAAE,CAAC,CAAC;MACnBN;IACF,CAAC,CAAC,CAACO,IAAI,CAACN,YAAY,EAAEH,IAAI,EAAEC,MAAM,CAAC;EACrC,CAAC;EAAA,OAAAJ,UAAA,CAAAV,KAAA,OAAAD,SAAA;AAAA;AAAA,SAUqBwB,WAAWA,CAAAC,GAAA;EAAA,OAAAC,YAAA,CAAAzB,KAAA,OAAAD,SAAA;AAAA;AAmBjC;AACA;AACA;AACA;AACA;AACA;AACA;AANA,SAAA0B,aAAA;EAAAA,YAAA,GAAA9B,iBAAA,CAnBO,WAAA+B,KAAA,EAUJ;IAAA,IAV+B;MAChCd,SAAS;MACTC,IAAI;MACJC,MAAM;MACNC;IAMF,CAAC,GAAAW,KAAA;IACC,IAAMC,cAAc,GAAGV,aAAI,CAACC,MAAM,CAACd,sBAAsB,EAAEQ,SAAS,EAAE,EAAE,CAAC;IACzE,OAAO,IAAAO,0BAAiB,EAAC;MACvBC,QAAQ,EAAEb,YAAY,CAAC,CAAC;MACxBc,eAAe,EAAE,CAAC,CAAC;MACnBN;IACF,CAAC,CAAC,CAACO,IAAI,CAACK,cAAc,EAAEd,IAAI,EAAEC,MAAM,CAAC;EACvC,CAAC;EAAA,OAAAW,YAAA,CAAAzB,KAAA,OAAAD,SAAA;AAAA;AAAA,SASqB6B,YAAYA,CAAAC,GAAA;EAAA,OAAAC,aAAA,CAAA9B,KAAA,OAAAD,SAAA;AAAA;AAkBlC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA,SAAA+B,cAAA;EAAAA,aAAA,GAAAnC,iBAAA,CAlBO,WAAAoC,KAAA,EAQJ;IAAA,IARgC;MACjCnB,SAAS;MACTE,MAAM;MACNC;IAKF,CAAC,GAAAgB,KAAA;IACC,IAAMJ,cAAc,GAAGV,aAAI,CAACC,MAAM,CAACb,oBAAoB,EAAEO,SAAS,EAAE,EAAE,CAAC;IACvE,IAAM;MAAEC;IAAK,CAAC,SAAS,IAAAM,0BAAiB,EAAC;MACvCC,QAAQ,EAAEb,YAAY,CAAC,CAAC;MACxBc,eAAe,EAAE,CAAC,CAAC;MACnBN;IACF,CAAC,CAAC,CAACiB,GAAG,CAACL,cAAc,EAAEb,MAAM,CAAC;IAC9B,OAAOD,IAAI;EACb,CAAC;EAAA,OAAAiB,aAAA,CAAA9B,KAAA,OAAAD,SAAA;AAAA;AAAA,SAWqBkC,sBAAsBA,CAAAC,GAAA;EAAA,OAAAC,uBAAA,CAAAnC,KAAA,OAAAD,SAAA;AAAA;AAAA,SAAAoC,wBAAA;EAAAA,uBAAA,GAAAxC,iBAAA,CAArC,WAAAyC,KAAA,EAYJ;IAAA,IAZ0C;MAC3CxB,SAAS;MACTyB,QAAQ;MACRC,YAAY;MACZC,KAAK;MACLxB;IAOF,CAAC,GAAAqB,KAAA;IACC,IAAMI,SAAS,GAAGvB,aAAI,CAACC,MAAM,CAC3Bd,sBAAsB,EACtBQ,SAAS,EACT,IAAA6B,mCAAmB,EAAC1B,KAAK,CAC3B,CAAC;IACD,IAAMM,eAAe,GAAG;MACtBqB,OAAO,EAAE;QACPC,aAAa,WAAAC,MAAA,CAAW,IAAAC,mBAAM,KAAAD,MAAA,CAAIP,QAAQ,OAAAO,MAAA,CAAIN,YAAY,CAAE,CAAC,CAAE;QAC/D,cAAc,EAAE;MAClB;IACF,CAAC;IACD,IAAMQ,WAAW,GAAG;MAClBC,UAAU,EAAE,oBAAoB;MAChCR;IACF,CAAC;IACD,IAAM;MAAE1B;IAAK,CAAC,SAAS,IAAAM,0BAAiB,EAAC;MACvCC,QAAQ,EAAEb,YAAY,CAAC,CAAC;MACxBc,eAAe;MACfN;IACF,CAAC,CAAC,CAACO,IAAI,CAACkB,SAAS,EAAEQ,WAAE,CAACC,SAAS,CAACH,WAAW,CAAC,EAAE;MAAEI,eAAe,EAAE;IAAK,CAAC,CAAC;IACxE,OAAOrC,IAAI;EACb,CAAC;EAAA,OAAAsB,uBAAA,CAAAnC,KAAA,OAAAD,SAAA;AAAA"}
1
+ {"version":3,"file":"OAuth2OIDCApi.js","names":["_qs","_interopRequireDefault","require","_util","_Base64Utils","_ForgeRockUtils","_BaseApi","obj","__esModule","default","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","authorizeUrlTemplate","accessTokenUrlTemplate","tokenInfoUrlTemplate","apiVersion","getApiConfig","authorize","_x","_authorize","_ref","amBaseUrl","data","config","state","authorizeURL","util","format","generateOauth2Api","resource","requestOverride","post","accessToken","_x2","_accessToken","_ref2","postData","accessTokenURL","getTokenInfo","_x3","_getTokenInfo","_ref3","get","clientCredentialsGrant","_x4","_clientCredentialsGrant","_ref4","clientId","clientSecret","scope","urlString","getCurrentRealmPath","headers","Authorization","concat","encode","requestBody","grant_type","qs","stringify","withCredentials"],"sources":["../../src/api/OAuth2OIDCApi.ts"],"sourcesContent":["import { AxiosRequestConfig, AxiosResponse } from 'axios';\nimport qs from 'qs';\nimport util from 'util';\n\nimport { State } from '../shared/State';\nimport { encode } from '../utils/Base64Utils';\nimport { getCurrentRealmPath } from '../utils/ForgeRockUtils';\nimport { generateOauth2Api } from './BaseApi';\n\nconst authorizeUrlTemplate = '%s/oauth2%s/authorize';\nconst accessTokenUrlTemplate = '%s/oauth2%s/access_token';\nconst tokenInfoUrlTemplate = '%s/oauth2%s/tokeninfo';\nconst apiVersion = 'protocol=2.1,resource=1.0';\nconst getApiConfig = () => ({\n apiVersion,\n});\n\nexport type AccessTokenResponseType = {\n access_token: string;\n scope: string;\n token_type: string;\n expires_in: number;\n};\n\nexport type TokenInfoResponseType = {\n sub: string;\n cts: string;\n auditTrackingId: string;\n subname: string;\n iss: string;\n tokenName: string;\n token_type: string;\n authGrantId: string;\n access_token: string;\n aud: string;\n nbf: number;\n grant_type: string;\n scope: string[];\n auth_time: number;\n sessionToken?: string;\n realm: string;\n exp: number;\n iat: number;\n expires_in: number;\n jti: string;\n [k: string]: string | number | string[];\n};\n\n/**\n * Perform the authorization step of the authorization code grant flow\n * @param {string} amBaseUrl access management base URL\n * @param {string} data body form data\n * @param {AxiosRequestConfig} config axios request config object\n * @param {State} state library state\n * @returns {Promise} a promise resolving to an object containing the authorization server response object\n */\nexport async function authorize({\n amBaseUrl,\n data,\n config,\n state,\n}: {\n amBaseUrl: string;\n data: string;\n config: AxiosRequestConfig;\n state: State;\n}): Promise<AxiosResponse<any, any>> {\n const authorizeURL = util.format(authorizeUrlTemplate, amBaseUrl, '');\n return generateOauth2Api({\n resource: getApiConfig(),\n requestOverride: {},\n state,\n }).post(authorizeURL, data, config);\n}\n\n/**\n * Perform access token request step of the authorization code grant flow\n * @param {string} amBaseUrl access management base URL\n * @param {string} data body form data\n * @param {AxiosRequestConfig} config config axios request config object\n * @param {State} state library state\n * @returns {Promise<AccessTokenResponseType>} a promise resolving to an object containing the authorization server response object containing the access token\n */\nexport async function accessToken({\n amBaseUrl,\n postData,\n config,\n state,\n}: {\n amBaseUrl: string;\n postData: any;\n config: AxiosRequestConfig;\n state: State;\n}): Promise<AccessTokenResponseType> {\n const accessTokenURL = util.format(accessTokenUrlTemplate, amBaseUrl, '');\n const { data } = await generateOauth2Api({\n resource: getApiConfig(),\n requestOverride: {},\n state,\n }).post(accessTokenURL, postData, config);\n return data;\n}\n\n/**\n * Get token info\n * @param {string} amBaseUrl access management base URL\n * @param {AxiosRequestConfig} config config axios request config object\n * @param {State} state library state\n * @returns\n */\nexport async function getTokenInfo({\n amBaseUrl,\n config,\n state,\n}: {\n amBaseUrl: string;\n config: AxiosRequestConfig;\n state: State;\n}): Promise<TokenInfoResponseType> {\n const accessTokenURL = util.format(tokenInfoUrlTemplate, amBaseUrl, '');\n const { data } = await generateOauth2Api({\n resource: getApiConfig(),\n requestOverride: {},\n state,\n }).get(accessTokenURL, config);\n return data;\n}\n\n/**\n * Perform client credentials grant flow\n * @param {string} amBaseUrl access management base URL\n * @param {string} clientId client id\n * @param {string} clientSecret client secret\n * @param {string} scope space-delimited scope list\n * @param {State} state library state\n * @returns {Promise} a promise resolving to an object containing the authorization server response object\n */\nexport async function clientCredentialsGrant({\n amBaseUrl,\n clientId,\n clientSecret,\n scope,\n state,\n}: {\n amBaseUrl: string;\n clientId: string;\n clientSecret: string;\n scope: string;\n state: State;\n}): Promise<AccessTokenResponseType> {\n const urlString = util.format(\n accessTokenUrlTemplate,\n amBaseUrl,\n getCurrentRealmPath(state)\n );\n const requestOverride = {\n headers: {\n Authorization: `Basic ${encode(`${clientId}:${clientSecret}`)}`,\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n };\n const requestBody = {\n grant_type: 'client_credentials',\n scope,\n };\n const { data } = await generateOauth2Api({\n resource: getApiConfig(),\n requestOverride,\n state,\n }).post(urlString, qs.stringify(requestBody), { withCredentials: true });\n return data;\n}\n"],"mappings":"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"}
@@ -27,7 +27,12 @@ var mock = new _axiosMockAdapter.default(_axios.default);
27
27
  _index.state.setHost('https://openam-frodo-dev.forgeblocks.com/am');
28
28
  _index.state.setRealm('alpha');
29
29
  _index.state.setCookieName('cookieName');
30
- _index.state.setCookieValue('cookieValue');
30
+ _index.state.setUserSessionTokenMeta({
31
+ tokenId: 'cookieValue',
32
+ realm: '/realm',
33
+ successUrl: 'url',
34
+ expires: 0
35
+ });
31
36
  _index.state.setDeploymentType(_Constants.default.CLOUD_DEPLOYMENT_TYPE_KEY);
32
37
  describe('OAuth2OIDCApi', () => {
33
38
  describe('authorize()', () => {
@@ -72,12 +77,11 @@ describe('OAuth2OIDCApi', () => {
72
77
  };
73
78
  var response = yield OAuth2OIDCApi.accessToken({
74
79
  amBaseUrl: _index.state.getHost(),
75
- data: bodyFormData,
80
+ postData: bodyFormData,
76
81
  config,
77
82
  state: _index.state
78
83
  });
79
- expect(response.status).toBe(200);
80
- expect(response.data.access_token).toBeTruthy();
84
+ expect(response.access_token).toBeTruthy();
81
85
  }));
82
86
  });
83
87
  });
@@ -1 +1 @@
1
- {"version":3,"file":"OAuth2OIDCApi.test.js","names":["_axios","_interopRequireDefault","require","_axiosMockAdapter","OAuth2OIDCApi","_interopRequireWildcard","_index","_Constants","_ForgeRockApiMockEngine","_ExportImportUtils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","mock","MockAdapter","axios","state","setHost","setRealm","setCookieName","setCookieValue","setDeploymentType","Constants","CLOUD_DEPLOYMENT_TYPE_KEY","describe","test","expect","authorize","toBeDefined","mockAuthorize","bodyFormData","concat","getCookieValue","config","headers","validateStatus","status","response","amBaseUrl","getHost","data","redirectLocationURL","parsed","parseUrl","toBe","searchParam","toBeTruthy","accessToken","mockAccessToken","access_token"],"sources":["../../src/api/OAuth2OIDCApi.test.ts"],"sourcesContent":["/**\n * Don't convert this to Polly. Once MFA is enforced for tenant admins in ID Cloud,\n * it will be very cumbersome to use Polly for OAuth API calls, as they require an\n * admin user session, not a service account bearer token.\n *\n * Run tests\n *\n * npm run test OAuth2OIDCApi\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport axios from 'axios';\nimport MockAdapter from 'axios-mock-adapter';\nimport * as OAuth2OIDCApi from './OAuth2OIDCApi';\nimport { state } from '../index';\nimport Constants from '../shared/Constants';\nimport {\n mockAuthorize,\n mockAccessToken,\n} from '../test/mocks/ForgeRockApiMockEngine';\nimport { parseUrl } from '../utils/ExportImportUtils';\n\nconst mock = new MockAdapter(axios);\n\nstate.setHost('https://openam-frodo-dev.forgeblocks.com/am');\nstate.setRealm('alpha');\nstate.setCookieName('cookieName');\nstate.setCookieValue('cookieValue');\nstate.setDeploymentType(Constants.CLOUD_DEPLOYMENT_TYPE_KEY);\n\ndescribe('OAuth2OIDCApi', () => {\n describe('authorize()', () => {\n test('0: Method is implemented', async () => {\n expect(OAuth2OIDCApi.authorize).toBeDefined();\n });\n\n test('1: Get authorization code', async () => {\n mockAuthorize(mock);\n const bodyFormData = `redirect_uri=https://openam-volker-dev.forgeblocks.com/platform/appAuthHelperRedirect.html&scope=fr:idm:* openid&response_type=code&client_id=idmAdminClient&csrf=${state.getCookieValue()}&decision=allow&code_challenge=l_UNfjLP_eRKwLtvM2M86PxhF2pZyYp629TfJUqDNHY&code_challenge_method=S256`;\n const config = {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n validateStatus: function (status: number) {\n // if this function returns true, no exception is thrown on a 302, which is the expected status code.\n return status === 302;\n },\n };\n const response = await OAuth2OIDCApi.authorize({\n amBaseUrl: state.getHost() as string,\n data: bodyFormData,\n config,\n state,\n });\n const redirectLocationURL = response.headers['location'];\n const parsed = parseUrl(redirectLocationURL);\n expect(response.status).toBe(302);\n expect(parsed.searchParam['code']).toBeTruthy();\n });\n });\n\n describe('accessToken()', () => {\n test('0: Method is implemented', async () => {\n expect(OAuth2OIDCApi.accessToken).toBeDefined();\n });\n\n test('1: Get access token', async () => {\n mockAccessToken(mock);\n const bodyFormData = `grant_type=authorization_code&code=PMA6VB9U_Ctiv6q8CAGphy_1vwQ&redirect_uri=https://openam-volker-dev.forgeblocks.com/platform/appAuthHelperRedirect.html&code_verifier=QchYMz4ApoxmyZaFs0MJwZK9rmc8WU-kuoi3JM--CZq7-LmmtxB6_Lf0AtmumFFdOxY&client_id=idmAdminClient`;\n const config = {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n };\n const response = await OAuth2OIDCApi.accessToken({\n amBaseUrl: state.getHost() as string,\n data: bodyFormData,\n config,\n state,\n });\n expect(response.status).toBe(200);\n expect(response.data.access_token).toBeTruthy();\n });\n });\n});\n"],"mappings":";;AAYA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAA6C,IAAAE,aAAA,GAAAC,uBAAA,CAAAH,OAAA;AAAA,IAAAI,MAAA,GAAAJ,OAAA;AAAA,IAAAK,UAAA,GAAAN,sBAAA,CAAAC,OAAA;AAAA,IAAAM,uBAAA,GAAAN,OAAA;AAAA,IAAAO,kBAAA,GAAAP,OAAA;AAAA,SAAAQ,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAN,wBAAAM,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAAlB,uBAAA8B,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAhB,UAAA,GAAAgB,GAAA,KAAAf,OAAA,EAAAe,GAAA;AAAA,SAAAC,mBAAAC,GAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,MAAA,EAAAC,GAAA,EAAAC,GAAA,cAAAC,IAAA,GAAAP,GAAA,CAAAK,GAAA,EAAAC,GAAA,OAAAE,KAAA,GAAAD,IAAA,CAAAC,KAAA,WAAAC,KAAA,IAAAP,MAAA,CAAAO,KAAA,iBAAAF,IAAA,CAAAG,IAAA,IAAAT,OAAA,CAAAO,KAAA,YAAAG,OAAA,CAAAV,OAAA,CAAAO,KAAA,EAAAI,IAAA,CAAAT,KAAA,EAAAC,MAAA;AAAA,SAAAS,kBAAAC,EAAA,6BAAAC,IAAA,SAAAC,IAAA,GAAAC,SAAA,aAAAN,OAAA,WAAAV,OAAA,EAAAC,MAAA,QAAAF,GAAA,GAAAc,EAAA,CAAAI,KAAA,CAAAH,IAAA,EAAAC,IAAA,YAAAb,MAAAK,KAAA,IAAAT,kBAAA,CAAAC,GAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,MAAA,UAAAI,KAAA,cAAAJ,OAAAe,GAAA,IAAApB,kBAAA,CAAAC,GAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,MAAA,WAAAe,GAAA,KAAAhB,KAAA,CAAAiB,SAAA,YAb7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA,IAAMC,IAAI,GAAG,IAAIC,yBAAW,CAACC,cAAK,CAAC;AAEnCC,YAAK,CAACC,OAAO,CAAC,6CAA6C,CAAC;AAC5DD,YAAK,CAACE,QAAQ,CAAC,OAAO,CAAC;AACvBF,YAAK,CAACG,aAAa,CAAC,YAAY,CAAC;AACjCH,YAAK,CAACI,cAAc,CAAC,aAAa,CAAC;AACnCJ,YAAK,CAACK,iBAAiB,CAACC,kBAAS,CAACC,yBAAyB,CAAC;AAE5DC,QAAQ,CAAC,eAAe,EAAE,MAAM;EAC9BA,QAAQ,CAAC,aAAa,EAAE,MAAM;IAC5BC,IAAI,CAAC,0BAA0B,eAAApB,iBAAA,CAAE,aAAY;MAC3CqB,MAAM,CAAC/D,aAAa,CAACgE,SAAS,CAAC,CAACC,WAAW,CAAC,CAAC;IAC/C,CAAC,EAAC;IAEFH,IAAI,CAAC,2BAA2B,eAAApB,iBAAA,CAAE,aAAY;MAC5C,IAAAwB,qCAAa,EAAChB,IAAI,CAAC;MACnB,IAAMiB,YAAY,wKAAAC,MAAA,CAAwKf,YAAK,CAACgB,cAAc,CAAC,CAAC,0GAAuG;MACvT,IAAMC,MAAM,GAAG;QACbC,OAAO,EAAE;UACP,cAAc,EAAE;QAClB,CAAC;QACDC,cAAc,EAAE,SAAAA,eAAUC,MAAc,EAAE;UACxC;UACA,OAAOA,MAAM,KAAK,GAAG;QACvB;MACF,CAAC;MACD,IAAMC,QAAQ,SAAS1E,aAAa,CAACgE,SAAS,CAAC;QAC7CW,SAAS,EAAEtB,YAAK,CAACuB,OAAO,CAAC,CAAW;QACpCC,IAAI,EAAEV,YAAY;QAClBG,MAAM;QACNjB,KAAK,EAALA;MACF,CAAC,CAAC;MACF,IAAMyB,mBAAmB,GAAGJ,QAAQ,CAACH,OAAO,CAAC,UAAU,CAAC;MACxD,IAAMQ,MAAM,GAAG,IAAAC,2BAAQ,EAACF,mBAAmB,CAAC;MAC5Cf,MAAM,CAACW,QAAQ,CAACD,MAAM,CAAC,CAACQ,IAAI,CAAC,GAAG,CAAC;MACjClB,MAAM,CAACgB,MAAM,CAACG,WAAW,CAAC,MAAM,CAAC,CAAC,CAACC,UAAU,CAAC,CAAC;IACjD,CAAC,EAAC;EACJ,CAAC,CAAC;EAEFtB,QAAQ,CAAC,eAAe,EAAE,MAAM;IAC9BC,IAAI,CAAC,0BAA0B,eAAApB,iBAAA,CAAE,aAAY;MAC3CqB,MAAM,CAAC/D,aAAa,CAACoF,WAAW,CAAC,CAACnB,WAAW,CAAC,CAAC;IACjD,CAAC,EAAC;IAEFH,IAAI,CAAC,qBAAqB,eAAApB,iBAAA,CAAE,aAAY;MACtC,IAAA2C,uCAAe,EAACnC,IAAI,CAAC;MACrB,IAAMiB,YAAY,yQAAyQ;MAC3R,IAAMG,MAAM,GAAG;QACbC,OAAO,EAAE;UACP,cAAc,EAAE;QAClB;MACF,CAAC;MACD,IAAMG,QAAQ,SAAS1E,aAAa,CAACoF,WAAW,CAAC;QAC/CT,SAAS,EAAEtB,YAAK,CAACuB,OAAO,CAAC,CAAW;QACpCC,IAAI,EAAEV,YAAY;QAClBG,MAAM;QACNjB,KAAK,EAALA;MACF,CAAC,CAAC;MACFU,MAAM,CAACW,QAAQ,CAACD,MAAM,CAAC,CAACQ,IAAI,CAAC,GAAG,CAAC;MACjClB,MAAM,CAACW,QAAQ,CAACG,IAAI,CAACS,YAAY,CAAC,CAACH,UAAU,CAAC,CAAC;IACjD,CAAC,EAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"OAuth2OIDCApi.test.js","names":["_axios","_interopRequireDefault","require","_axiosMockAdapter","OAuth2OIDCApi","_interopRequireWildcard","_index","_Constants","_ForgeRockApiMockEngine","_ExportImportUtils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","mock","MockAdapter","axios","state","setHost","setRealm","setCookieName","setUserSessionTokenMeta","tokenId","realm","successUrl","expires","setDeploymentType","Constants","CLOUD_DEPLOYMENT_TYPE_KEY","describe","test","expect","authorize","toBeDefined","mockAuthorize","bodyFormData","concat","getCookieValue","config","headers","validateStatus","status","response","amBaseUrl","getHost","data","redirectLocationURL","parsed","parseUrl","toBe","searchParam","toBeTruthy","accessToken","mockAccessToken","postData","access_token"],"sources":["../../src/api/OAuth2OIDCApi.test.ts"],"sourcesContent":["/**\n * Don't convert this to Polly. Once MFA is enforced for tenant admins in ID Cloud,\n * it will be very cumbersome to use Polly for OAuth API calls, as they require an\n * admin user session, not a service account bearer token.\n *\n * Run tests\n *\n * npm run test OAuth2OIDCApi\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport axios from 'axios';\nimport MockAdapter from 'axios-mock-adapter';\nimport * as OAuth2OIDCApi from './OAuth2OIDCApi';\nimport { state } from '../index';\nimport Constants from '../shared/Constants';\nimport {\n mockAuthorize,\n mockAccessToken,\n} from '../test/mocks/ForgeRockApiMockEngine';\nimport { parseUrl } from '../utils/ExportImportUtils';\n\nconst mock = new MockAdapter(axios);\n\nstate.setHost('https://openam-frodo-dev.forgeblocks.com/am');\nstate.setRealm('alpha');\nstate.setCookieName('cookieName');\nstate.setUserSessionTokenMeta({\n tokenId: 'cookieValue',\n realm: '/realm',\n successUrl: 'url',\n expires: 0,\n});\nstate.setDeploymentType(Constants.CLOUD_DEPLOYMENT_TYPE_KEY);\n\ndescribe('OAuth2OIDCApi', () => {\n describe('authorize()', () => {\n test('0: Method is implemented', async () => {\n expect(OAuth2OIDCApi.authorize).toBeDefined();\n });\n\n test('1: Get authorization code', async () => {\n mockAuthorize(mock);\n const bodyFormData = `redirect_uri=https://openam-volker-dev.forgeblocks.com/platform/appAuthHelperRedirect.html&scope=fr:idm:* openid&response_type=code&client_id=idmAdminClient&csrf=${state.getCookieValue()}&decision=allow&code_challenge=l_UNfjLP_eRKwLtvM2M86PxhF2pZyYp629TfJUqDNHY&code_challenge_method=S256`;\n const config = {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n validateStatus: function (status: number) {\n // if this function returns true, no exception is thrown on a 302, which is the expected status code.\n return status === 302;\n },\n };\n const response = await OAuth2OIDCApi.authorize({\n amBaseUrl: state.getHost() as string,\n data: bodyFormData,\n config,\n state,\n });\n const redirectLocationURL = response.headers['location'];\n const parsed = parseUrl(redirectLocationURL);\n expect(response.status).toBe(302);\n expect(parsed.searchParam['code']).toBeTruthy();\n });\n });\n\n describe('accessToken()', () => {\n test('0: Method is implemented', async () => {\n expect(OAuth2OIDCApi.accessToken).toBeDefined();\n });\n\n test('1: Get access token', async () => {\n mockAccessToken(mock);\n const bodyFormData = `grant_type=authorization_code&code=PMA6VB9U_Ctiv6q8CAGphy_1vwQ&redirect_uri=https://openam-volker-dev.forgeblocks.com/platform/appAuthHelperRedirect.html&code_verifier=QchYMz4ApoxmyZaFs0MJwZK9rmc8WU-kuoi3JM--CZq7-LmmtxB6_Lf0AtmumFFdOxY&client_id=idmAdminClient`;\n const config = {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n };\n const response = await OAuth2OIDCApi.accessToken({\n amBaseUrl: state.getHost() as string,\n postData: bodyFormData,\n config,\n state,\n });\n expect(response.access_token).toBeTruthy();\n });\n });\n});\n"],"mappings":";;AAYA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAA6C,IAAAE,aAAA,GAAAC,uBAAA,CAAAH,OAAA;AAAA,IAAAI,MAAA,GAAAJ,OAAA;AAAA,IAAAK,UAAA,GAAAN,sBAAA,CAAAC,OAAA;AAAA,IAAAM,uBAAA,GAAAN,OAAA;AAAA,IAAAO,kBAAA,GAAAP,OAAA;AAAA,SAAAQ,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAN,wBAAAM,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAAlB,uBAAA8B,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAhB,UAAA,GAAAgB,GAAA,KAAAf,OAAA,EAAAe,GAAA;AAAA,SAAAC,mBAAAC,GAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,MAAA,EAAAC,GAAA,EAAAC,GAAA,cAAAC,IAAA,GAAAP,GAAA,CAAAK,GAAA,EAAAC,GAAA,OAAAE,KAAA,GAAAD,IAAA,CAAAC,KAAA,WAAAC,KAAA,IAAAP,MAAA,CAAAO,KAAA,iBAAAF,IAAA,CAAAG,IAAA,IAAAT,OAAA,CAAAO,KAAA,YAAAG,OAAA,CAAAV,OAAA,CAAAO,KAAA,EAAAI,IAAA,CAAAT,KAAA,EAAAC,MAAA;AAAA,SAAAS,kBAAAC,EAAA,6BAAAC,IAAA,SAAAC,IAAA,GAAAC,SAAA,aAAAN,OAAA,WAAAV,OAAA,EAAAC,MAAA,QAAAF,GAAA,GAAAc,EAAA,CAAAI,KAAA,CAAAH,IAAA,EAAAC,IAAA,YAAAb,MAAAK,KAAA,IAAAT,kBAAA,CAAAC,GAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,MAAA,UAAAI,KAAA,cAAAJ,OAAAe,GAAA,IAAApB,kBAAA,CAAAC,GAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,MAAA,WAAAe,GAAA,KAAAhB,KAAA,CAAAiB,SAAA,YAb7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA,IAAMC,IAAI,GAAG,IAAIC,yBAAW,CAACC,cAAK,CAAC;AAEnCC,YAAK,CAACC,OAAO,CAAC,6CAA6C,CAAC;AAC5DD,YAAK,CAACE,QAAQ,CAAC,OAAO,CAAC;AACvBF,YAAK,CAACG,aAAa,CAAC,YAAY,CAAC;AACjCH,YAAK,CAACI,uBAAuB,CAAC;EAC5BC,OAAO,EAAE,aAAa;EACtBC,KAAK,EAAE,QAAQ;EACfC,UAAU,EAAE,KAAK;EACjBC,OAAO,EAAE;AACX,CAAC,CAAC;AACFR,YAAK,CAACS,iBAAiB,CAACC,kBAAS,CAACC,yBAAyB,CAAC;AAE5DC,QAAQ,CAAC,eAAe,EAAE,MAAM;EAC9BA,QAAQ,CAAC,aAAa,EAAE,MAAM;IAC5BC,IAAI,CAAC,0BAA0B,eAAAxB,iBAAA,CAAE,aAAY;MAC3CyB,MAAM,CAACnE,aAAa,CAACoE,SAAS,CAAC,CAACC,WAAW,CAAC,CAAC;IAC/C,CAAC,EAAC;IAEFH,IAAI,CAAC,2BAA2B,eAAAxB,iBAAA,CAAE,aAAY;MAC5C,IAAA4B,qCAAa,EAACpB,IAAI,CAAC;MACnB,IAAMqB,YAAY,wKAAAC,MAAA,CAAwKnB,YAAK,CAACoB,cAAc,CAAC,CAAC,0GAAuG;MACvT,IAAMC,MAAM,GAAG;QACbC,OAAO,EAAE;UACP,cAAc,EAAE;QAClB,CAAC;QACDC,cAAc,EAAE,SAAAA,eAAUC,MAAc,EAAE;UACxC;UACA,OAAOA,MAAM,KAAK,GAAG;QACvB;MACF,CAAC;MACD,IAAMC,QAAQ,SAAS9E,aAAa,CAACoE,SAAS,CAAC;QAC7CW,SAAS,EAAE1B,YAAK,CAAC2B,OAAO,CAAC,CAAW;QACpCC,IAAI,EAAEV,YAAY;QAClBG,MAAM;QACNrB,KAAK,EAALA;MACF,CAAC,CAAC;MACF,IAAM6B,mBAAmB,GAAGJ,QAAQ,CAACH,OAAO,CAAC,UAAU,CAAC;MACxD,IAAMQ,MAAM,GAAG,IAAAC,2BAAQ,EAACF,mBAAmB,CAAC;MAC5Cf,MAAM,CAACW,QAAQ,CAACD,MAAM,CAAC,CAACQ,IAAI,CAAC,GAAG,CAAC;MACjClB,MAAM,CAACgB,MAAM,CAACG,WAAW,CAAC,MAAM,CAAC,CAAC,CAACC,UAAU,CAAC,CAAC;IACjD,CAAC,EAAC;EACJ,CAAC,CAAC;EAEFtB,QAAQ,CAAC,eAAe,EAAE,MAAM;IAC9BC,IAAI,CAAC,0BAA0B,eAAAxB,iBAAA,CAAE,aAAY;MAC3CyB,MAAM,CAACnE,aAAa,CAACwF,WAAW,CAAC,CAACnB,WAAW,CAAC,CAAC;IACjD,CAAC,EAAC;IAEFH,IAAI,CAAC,qBAAqB,eAAAxB,iBAAA,CAAE,aAAY;MACtC,IAAA+C,uCAAe,EAACvC,IAAI,CAAC;MACrB,IAAMqB,YAAY,yQAAyQ;MAC3R,IAAMG,MAAM,GAAG;QACbC,OAAO,EAAE;UACP,cAAc,EAAE;QAClB;MACF,CAAC;MACD,IAAMG,QAAQ,SAAS9E,aAAa,CAACwF,WAAW,CAAC;QAC/CT,SAAS,EAAE1B,YAAK,CAAC2B,OAAO,CAAC,CAAW;QACpCU,QAAQ,EAAEnB,YAAY;QACtBG,MAAM;QACNrB,KAAK,EAALA;MACF,CAAC,CAAC;MACFc,MAAM,CAACW,QAAQ,CAACa,YAAY,CAAC,CAACJ,UAAU,CAAC,CAAC;IAC5C,CAAC,EAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getSessionInfo = getSessionInfo;
7
+ var _util = _interopRequireDefault(require("util"));
8
+ var _ForgeRockUtils = require("../utils/ForgeRockUtils.js");
9
+ var _BaseApi = require("./BaseApi.js");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
12
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
13
+ var getSessionInfoURLTemplate = '%s/json%s/sessions/?_action=getSessionInfo';
14
+ var apiVersion = 'resource=4.0';
15
+ function getApiConfig() {
16
+ return {
17
+ apiVersion
18
+ };
19
+ }
20
+ /**
21
+ * Get session info
22
+ * @param {string} tokenId session token
23
+ * @returns {Promise<SessionInfoType>} a promise resolving to a session info object
24
+ */
25
+ function getSessionInfo(_x) {
26
+ return _getSessionInfo.apply(this, arguments);
27
+ }
28
+ function _getSessionInfo() {
29
+ _getSessionInfo = _asyncToGenerator(function* (_ref) {
30
+ var {
31
+ tokenId,
32
+ state
33
+ } = _ref;
34
+ var urlString = _util.default.format(getSessionInfoURLTemplate, state.getHost(), (0, _ForgeRockUtils.getCurrentRealmPath)(state));
35
+ var {
36
+ data
37
+ } = yield (0, _BaseApi.generateAmApi)({
38
+ resource: getApiConfig(),
39
+ state
40
+ }).post(urlString, {
41
+ tokenId
42
+ }, {
43
+ withCredentials: true
44
+ });
45
+ return data;
46
+ });
47
+ return _getSessionInfo.apply(this, arguments);
48
+ }
49
+ //# sourceMappingURL=SessionApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionApi.js","names":["_util","_interopRequireDefault","require","_ForgeRockUtils","_BaseApi","obj","__esModule","default","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","getSessionInfoURLTemplate","apiVersion","getApiConfig","getSessionInfo","_x","_getSessionInfo","_ref","tokenId","state","urlString","util","format","getHost","getCurrentRealmPath","data","generateAmApi","resource","post","withCredentials"],"sources":["../../src/api/SessionApi.ts"],"sourcesContent":["import util from 'util';\n\nimport { State } from '../shared/State';\nimport { getCurrentRealmPath } from '../utils/ForgeRockUtils';\nimport { generateAmApi } from './BaseApi';\n\nconst getSessionInfoURLTemplate = '%s/json%s/sessions/?_action=getSessionInfo';\nconst apiVersion = 'resource=4.0';\n\nfunction getApiConfig() {\n return {\n apiVersion,\n };\n}\n\nexport type SessionInfoType = {\n username: string;\n universalId: string;\n realm: string;\n latestAccessTime: string;\n maxIdleExpirationTime: string;\n maxSessionExpirationTime: string;\n properties: {\n AMCtxId: string;\n [k: string]: string;\n };\n};\n\n/**\n * Get session info\n * @param {string} tokenId session token\n * @returns {Promise<SessionInfoType>} a promise resolving to a session info object\n */\nexport async function getSessionInfo({\n tokenId,\n state,\n}: {\n tokenId: string;\n state: State;\n}): Promise<SessionInfoType> {\n const urlString = util.format(\n getSessionInfoURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state)\n );\n const { data } = await generateAmApi({\n resource: getApiConfig(),\n state,\n }).post(\n urlString,\n {\n tokenId,\n },\n {\n withCredentials: true,\n }\n );\n return data as SessionInfoType;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAwB,IAAAC,eAAA,GAAAD,OAAA;AAAA,IAAAE,QAAA,GAAAF,OAAA;AAAA,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,mBAAAC,GAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,MAAA,EAAAC,GAAA,EAAAC,GAAA,cAAAC,IAAA,GAAAP,GAAA,CAAAK,GAAA,EAAAC,GAAA,OAAAE,KAAA,GAAAD,IAAA,CAAAC,KAAA,WAAAC,KAAA,IAAAP,MAAA,CAAAO,KAAA,iBAAAF,IAAA,CAAAG,IAAA,IAAAT,OAAA,CAAAO,KAAA,YAAAG,OAAA,CAAAV,OAAA,CAAAO,KAAA,EAAAI,IAAA,CAAAT,KAAA,EAAAC,MAAA;AAAA,SAAAS,kBAAAC,EAAA,6BAAAC,IAAA,SAAAC,IAAA,GAAAC,SAAA,aAAAN,OAAA,WAAAV,OAAA,EAAAC,MAAA,QAAAF,GAAA,GAAAc,EAAA,CAAAI,KAAA,CAAAH,IAAA,EAAAC,IAAA,YAAAb,MAAAK,KAAA,IAAAT,kBAAA,CAAAC,GAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,MAAA,UAAAI,KAAA,cAAAJ,OAAAe,GAAA,IAAApB,kBAAA,CAAAC,GAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,MAAA,WAAAe,GAAA,KAAAhB,KAAA,CAAAiB,SAAA;AAMxB,IAAMC,yBAAyB,GAAG,4CAA4C;AAC9E,IAAMC,UAAU,GAAG,cAAc;AAEjC,SAASC,YAAYA,CAAA,EAAG;EACtB,OAAO;IACLD;EACF,CAAC;AACH;AAeA;AACA;AACA;AACA;AACA;AAJA,SAKsBE,cAAcA,CAAAC,EAAA;EAAA,OAAAC,eAAA,CAAAR,KAAA,OAAAD,SAAA;AAAA;AAAA,SAAAS,gBAAA;EAAAA,eAAA,GAAAb,iBAAA,CAA7B,WAAAc,IAAA,EAMsB;IAAA,IANQ;MACnCC,OAAO;MACPC;IAIF,CAAC,GAAAF,IAAA;IACC,IAAMG,SAAS,GAAGC,aAAI,CAACC,MAAM,CAC3BX,yBAAyB,EACzBQ,KAAK,CAACI,OAAO,CAAC,CAAC,EACf,IAAAC,mCAAmB,EAACL,KAAK,CAC3B,CAAC;IACD,IAAM;MAAEM;IAAK,CAAC,SAAS,IAAAC,sBAAa,EAAC;MACnCC,QAAQ,EAAEd,YAAY,CAAC,CAAC;MACxBM;IACF,CAAC,CAAC,CAACS,IAAI,CACLR,SAAS,EACT;MACEF;IACF,CAAC,EACD;MACEW,eAAe,EAAE;IACnB,CACF,CAAC;IACD,OAAOJ,IAAI;EACb,CAAC;EAAA,OAAAT,eAAA,CAAAR,KAAA,OAAAD,SAAA;AAAA"}
@@ -24,7 +24,12 @@ var mock = new _axiosMockAdapter.default(_axios.default);
24
24
  _index.state.setHost('https://openam-frodo-dev.forgeblocks.com/am');
25
25
  _index.state.setRealm('alpha');
26
26
  _index.state.setCookieName('cookieName');
27
- _index.state.setCookieValue('cookieValue');
27
+ _index.state.setUserSessionTokenMeta({
28
+ tokenId: 'cookieValue',
29
+ realm: '/realm',
30
+ successUrl: 'url',
31
+ expires: 0
32
+ });
28
33
  describe('StartupApi - getStatus()', () => {
29
34
  test('getStatus() 1: Get restart status - expect "ready"', /*#__PURE__*/_asyncToGenerator(function* () {
30
35
  var response = JSON.parse(_fs.default.readFileSync(_path.default.resolve(_dirname, '../../test/mocks/StartupApi/getStatus/ready.json'), 'utf8'));
@@ -1 +1 @@
1
- {"version":3,"file":"StartupApi.test.js","names":["_axios","_interopRequireDefault","require","_axiosMockAdapter","StartupApi","_interopRequireWildcard","_index","_fs","_path","_url","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","__dirname","path","dirname","fileURLToPath","pathToFileURL","__filename","toString","mock","MockAdapter","axios","state","setHost","setRealm","setCookieName","setCookieValue","describe","test","response","JSON","parse","fs","readFileSync","onGet","reply","status","getStatus","expect","RestartStatus","toBeTruthy","toBe","ready","restarting","response1","response2","onPost","initiateRestart","assertions","message"],"sources":["../../../src/api/cloud/StartupApi.test.ts"],"sourcesContent":["/**\n * Run tests\n *\n * npm run test StartupApi\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport axios from 'axios';\nimport MockAdapter from 'axios-mock-adapter';\nimport * as StartupApi from './StartupApi';\nimport { 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.setHost('https://openam-frodo-dev.forgeblocks.com/am');\nstate.setRealm('alpha');\nstate.setCookieName('cookieName');\nstate.setCookieValue('cookieValue');\n\ndescribe('StartupApi - getStatus()', () => {\n test('getStatus() 1: Get restart status - expect \"ready\"', async () => {\n const response = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n '../../test/mocks/StartupApi/getStatus/ready.json'\n ),\n 'utf8'\n )\n );\n mock\n .onGet('https://openam-frodo-dev.forgeblocks.com/environment/startup')\n .reply(200, response);\n const status = await StartupApi.getStatus({ state });\n expect(status in StartupApi.RestartStatus).toBeTruthy();\n expect(status).toBe(StartupApi.RestartStatus.ready);\n });\n\n test('getStatus() 2: Get restart status - expect \"restarting\"', async () => {\n const response = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n '../../test/mocks/StartupApi/getStatus/restarting.json'\n ),\n 'utf8'\n )\n );\n mock\n .onGet('https://openam-frodo-dev.forgeblocks.com/environment/startup')\n .reply(200, response);\n const status = await StartupApi.getStatus({ state });\n expect(status in StartupApi.RestartStatus).toBeTruthy();\n expect(status).toBe(StartupApi.RestartStatus.restarting);\n });\n});\n\ndescribe('StartupApi - initiateRestart()', () => {\n test('initiateRestart() 1: Initiate restart - expect \"ready\" -> \"restarting\"', async () => {\n const response1 = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n '../../test/mocks/StartupApi/getStatus/ready.json'\n ),\n 'utf8'\n )\n );\n mock\n .onGet('https://openam-frodo-dev.forgeblocks.com/environment/startup')\n .reply(200, response1);\n const response2 = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n '../../test/mocks/StartupApi/initiateRestart/restarting.json'\n ),\n 'utf8'\n )\n );\n mock\n .onPost(\n 'https://openam-frodo-dev.forgeblocks.com/environment/startup?_action=restart'\n )\n .reply(200, response2);\n const status = await StartupApi.initiateRestart({ state });\n expect(status in StartupApi.RestartStatus).toBeTruthy();\n expect(status).toBe(StartupApi.RestartStatus.restarting);\n });\n\n test('initiateRestart() 2: Initiate restart - expect \"restarting\" -> exception', async () => {\n const response1 = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n '../../test/mocks/StartupApi/getStatus/restarting.json'\n ),\n 'utf8'\n )\n );\n mock\n .onGet('https://openam-frodo-dev.forgeblocks.com/environment/startup')\n .reply(200, response1);\n const response2 = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n '../../test/mocks/StartupApi/initiateRestart/restarting.json'\n ),\n 'utf8'\n )\n );\n mock\n .onPost(\n 'https://openam-frodo-dev.forgeblocks.com/environment/startup?_action=restart'\n )\n .reply(200, response2);\n expect.assertions(2);\n try {\n await StartupApi.initiateRestart({ state });\n } catch (error) {\n expect(error).toBeTruthy();\n expect(error.message).toBe('Not ready! Current status: restarting');\n }\n });\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"StartupApi.test.js","names":["_axios","_interopRequireDefault","require","_axiosMockAdapter","StartupApi","_interopRequireWildcard","_index","_fs","_path","_url","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","__dirname","path","dirname","fileURLToPath","pathToFileURL","__filename","toString","mock","MockAdapter","axios","state","setHost","setRealm","setCookieName","setUserSessionTokenMeta","tokenId","realm","successUrl","expires","describe","test","response","JSON","parse","fs","readFileSync","onGet","reply","status","getStatus","expect","RestartStatus","toBeTruthy","toBe","ready","restarting","response1","response2","onPost","initiateRestart","assertions","message"],"sources":["../../../src/api/cloud/StartupApi.test.ts"],"sourcesContent":["/**\n * Run tests\n *\n * npm run test StartupApi\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport axios from 'axios';\nimport MockAdapter from 'axios-mock-adapter';\nimport * as StartupApi from './StartupApi';\nimport { 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.setHost('https://openam-frodo-dev.forgeblocks.com/am');\nstate.setRealm('alpha');\nstate.setCookieName('cookieName');\nstate.setUserSessionTokenMeta({\n tokenId: 'cookieValue',\n realm: '/realm',\n successUrl: 'url',\n expires: 0,\n});\n\ndescribe('StartupApi - getStatus()', () => {\n test('getStatus() 1: Get restart status - expect \"ready\"', async () => {\n const response = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n '../../test/mocks/StartupApi/getStatus/ready.json'\n ),\n 'utf8'\n )\n );\n mock\n .onGet('https://openam-frodo-dev.forgeblocks.com/environment/startup')\n .reply(200, response);\n const status = await StartupApi.getStatus({ state });\n expect(status in StartupApi.RestartStatus).toBeTruthy();\n expect(status).toBe(StartupApi.RestartStatus.ready);\n });\n\n test('getStatus() 2: Get restart status - expect \"restarting\"', async () => {\n const response = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n '../../test/mocks/StartupApi/getStatus/restarting.json'\n ),\n 'utf8'\n )\n );\n mock\n .onGet('https://openam-frodo-dev.forgeblocks.com/environment/startup')\n .reply(200, response);\n const status = await StartupApi.getStatus({ state });\n expect(status in StartupApi.RestartStatus).toBeTruthy();\n expect(status).toBe(StartupApi.RestartStatus.restarting);\n });\n});\n\ndescribe('StartupApi - initiateRestart()', () => {\n test('initiateRestart() 1: Initiate restart - expect \"ready\" -> \"restarting\"', async () => {\n const response1 = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n '../../test/mocks/StartupApi/getStatus/ready.json'\n ),\n 'utf8'\n )\n );\n mock\n .onGet('https://openam-frodo-dev.forgeblocks.com/environment/startup')\n .reply(200, response1);\n const response2 = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n '../../test/mocks/StartupApi/initiateRestart/restarting.json'\n ),\n 'utf8'\n )\n );\n mock\n .onPost(\n 'https://openam-frodo-dev.forgeblocks.com/environment/startup?_action=restart'\n )\n .reply(200, response2);\n const status = await StartupApi.initiateRestart({ state });\n expect(status in StartupApi.RestartStatus).toBeTruthy();\n expect(status).toBe(StartupApi.RestartStatus.restarting);\n });\n\n test('initiateRestart() 2: Initiate restart - expect \"restarting\" -> exception', async () => {\n const response1 = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n '../../test/mocks/StartupApi/getStatus/restarting.json'\n ),\n 'utf8'\n )\n );\n mock\n .onGet('https://openam-frodo-dev.forgeblocks.com/environment/startup')\n .reply(200, response1);\n const response2 = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n '../../test/mocks/StartupApi/initiateRestart/restarting.json'\n ),\n 'utf8'\n )\n );\n mock\n .onPost(\n 'https://openam-frodo-dev.forgeblocks.com/environment/startup?_action=restart'\n )\n .reply(200, response2);\n expect.assertions(2);\n try {\n await StartupApi.initiateRestart({ state });\n } catch (error) {\n expect(error).toBeTruthy();\n expect(error.message).toBe('Not ready! Current status: restarting');\n }\n });\n});\n"],"mappings":"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"}
@@ -41,6 +41,7 @@ var _Saml2Ops = _interopRequireDefault(require("../ops/Saml2Ops.js"));
41
41
  var _ScriptOps = _interopRequireDefault(require("../ops/ScriptOps.js"));
42
42
  var _ServiceOps = _interopRequireDefault(require("../ops/ServiceOps.js"));
43
43
  var _ThemeOps = _interopRequireDefault(require("../ops/ThemeOps.js"));
44
+ var _TokenCacheOps = _interopRequireDefault(require("../ops/TokenCacheOps.js"));
44
45
  var _VersionUtils = _interopRequireDefault(require("../ops/VersionUtils.js"));
45
46
  var _Constants = _interopRequireDefault(require("../shared/Constants.js"));
46
47
  var _State = _interopRequireDefault(require("../shared/State.js"));
@@ -92,6 +93,7 @@ var FrodoLib = exports.FrodoLib = function FrodoLib() {
92
93
  variable: (0, _VariablesOps.default)(state)
93
94
  },
94
95
  conn: (0, _ConnectionProfileOps.default)(state),
96
+ cache: (0, _TokenCacheOps.default)(state),
95
97
  email: {
96
98
  template: (0, _EmailTemplateOps.default)(state)
97
99
  },
@@ -1 +1 @@
1
- {"version":3,"file":"FrodoLib.js","names":["FrodoLib","exports","config","arguments","length","undefined","state","StateImpl","admin","AdminOps","agent","AgentOps","app","ApplicationOps","authn","journey","JourneyOps","node","NodeOps","authz","policy","PolicyOps","policySet","PolicySetOps","resourceType","ResourceTypeOps","cloud","adminFed","AdminFederationOps","feature","FeatureOps","log","LogOps","secret","SecretsOps","serviceAccount","ServiceAccountOps","startup","StartupOps","variable","VariablesOps","conn","ConnectionProfileOps","email","template","EmailTemplateOps","idm","IdmConfigOps","connector","ConnectorOps","managed","ManagedObjectOps","mapping","MappingOps","organization","OrganizationOps","recon","ReconOps","system","IdmSystemOps","info","InfoOps","login","AuthenticateOps","oauth2oidc","client","OAuth2ClientOps","endpoint","OAuth2OidcOps","external","IdpOps","provider","OAuth2ProviderOps","realm","RealmOps","saml2","circlesOfTrust","CirclesOfTrustOps","entityProvider","Saml2Ops","script","ScriptOps","service","ServiceOps","theme","ThemeOps","utils","_objectSpread","ForgeRockUtils","ScriptValidationUtils","ExportImportUtils","Base64Utils","constants","ConstantsImpl","jose","JoseOps","json","JsonUtils","version","VersionUtils","createInstance","createInstanceWithAdminAccount","createInstanceWithServiceAccount","frodo","host","serviceAccountId","serviceAccountJwkStr","deploymentType","allowInsecureConnection","debug","curlirize","serviceAccountJwk","JSON","parse","username","password","_default","default"],"sources":["../../src/lib/FrodoLib.ts"],"sourcesContent":["// instantiable modules\nimport AdminOps, { Admin } from '../ops/AdminOps';\nimport AgentOps, { Agent } from '../ops/AgentOps';\nimport ApplicationOps, { Application } from '../ops/ApplicationOps';\nimport AuthenticateOps, { Authenticate } from '../ops/AuthenticateOps';\nimport CirclesOfTrustOps, { CirclesOfTrust } from '../ops/CirclesOfTrustOps';\nimport AdminFederationOps, {\n AdminFederation,\n} from '../ops/cloud/AdminFederationOps';\nimport FeatureOps, { Feature } from '../ops/cloud/FeatureOps';\nimport LogOps, { Log } from '../ops/cloud/LogOps';\nimport SecretsOps, { Secret } from '../ops/cloud/SecretsOps';\nimport ServiceAccountOps, {\n ServiceAccount,\n} from '../ops/cloud/ServiceAccountOps';\nimport StartupOps, { Startup } from '../ops/cloud/StartupOps';\nimport VariablesOps, { Variable } from '../ops/cloud/VariablesOps';\nimport ConnectionProfileOps, {\n ConnectionProfile,\n} from '../ops/ConnectionProfileOps';\nimport ConnectorOps, { Connector } from '../ops/ConnectorOps';\nimport EmailTemplateOps, { EmailTemplate } from '../ops/EmailTemplateOps';\nimport IdmConfigOps, { IdmConfig } from '../ops/IdmConfigOps';\nimport IdmSystemOps, { IdmSystem } from '../ops/IdmSystemOps';\nimport IdpOps, { Idp } from '../ops/IdpOps';\nimport InfoOps, { Info } from '../ops/InfoOps';\nimport JoseOps, { Jose } from '../ops/JoseOps';\nimport JourneyOps, { Journey } from '../ops/JourneyOps';\nimport ManagedObjectOps, { ManagedObject } from '../ops/ManagedObjectOps';\nimport MappingOps, { Mapping } from '../ops/MappingOps';\nimport NodeOps, { Node } from '../ops/NodeOps';\nimport OAuth2ClientOps, { OAuth2Client } from '../ops/OAuth2ClientOps';\nimport OAuth2OidcOps, { OAuth2Oidc } from '../ops/OAuth2OidcOps';\nimport OAuth2ProviderOps, { OAuth2Provider } from '../ops/OAuth2ProviderOps';\nimport OrganizationOps, { Organization } from '../ops/OrganizationOps';\nimport PolicyOps, { Policy } from '../ops/PolicyOps';\nimport PolicySetOps, { PolicySet } from '../ops/PolicySetOps';\nimport RealmOps, { Realm } from '../ops/RealmOps';\nimport ReconOps, { Recon } from '../ops/ReconOps';\nimport ResourceTypeOps, { ResourceType } from '../ops/ResourceTypeOps';\nimport Saml2Ops, { Saml2 } from '../ops/Saml2Ops';\nimport ScriptOps, { Script } from '../ops/ScriptOps';\nimport ServiceOps, { Service } from '../ops/ServiceOps';\nimport ThemeOps, { Theme } from '../ops/ThemeOps';\nimport VersionUtils, { Version } from '../ops/VersionUtils';\n// non-instantiable modules\nimport ConstantsImpl, { Constants } from '../shared/Constants';\nimport StateImpl, { State, StateInterface } from '../shared/State';\nimport Base64Utils, { Base64 } from '../utils/Base64Utils';\nimport ExportImportUtils, { ExportImport } from '../utils/ExportImportUtils';\nimport ForgeRockUtils, { FRUtils } from '../utils/ForgeRockUtils';\nimport JsonUtils, { Json } from '../utils/JsonUtils';\nimport ScriptValidationUtils, {\n ScriptValidation,\n} from '../utils/ScriptValidationUtils';\n\n/**\n * Frodo Library\n */\nexport type Frodo = {\n state: State;\n admin: Admin;\n agent: Agent;\n app: Application;\n\n authn: {\n journey: Journey;\n node: Node;\n };\n\n authz: {\n policy: Policy;\n policySet: PolicySet;\n resourceType: ResourceType;\n };\n\n cloud: {\n adminFed: AdminFederation;\n feature: Feature;\n log: Log;\n secret: Secret;\n serviceAccount: ServiceAccount;\n startup: Startup;\n variable: Variable;\n };\n\n conn: ConnectionProfile;\n\n email: {\n template: EmailTemplate;\n };\n\n idm: {\n config: IdmConfig;\n connector: Connector;\n managed: ManagedObject;\n mapping: Mapping;\n organization: Organization;\n recon: Recon;\n system: IdmSystem;\n };\n\n info: Info;\n login: Authenticate;\n\n oauth2oidc: {\n client: OAuth2Client;\n endpoint: OAuth2Oidc;\n external: Idp;\n provider: OAuth2Provider;\n };\n\n realm: Realm;\n\n saml2: {\n circlesOfTrust: CirclesOfTrust;\n entityProvider: Saml2;\n };\n\n script: Script;\n service: Service;\n\n theme: Theme;\n\n utils: FRUtils &\n ScriptValidation &\n ExportImport &\n Base64 & {\n constants: Constants;\n jose: Jose;\n json: Json;\n version: Version;\n };\n\n /**\n * Create a new frodo instance\n * @param {StateInterface} config Initial state configuration to use with the new instance\n * @returns {Frodo} frodo instance\n */\n createInstance(config: StateInterface): Frodo;\n\n /**\n * Factory helper to create a frodo instance ready for logging in with an admin user account\n * @param {string} host host base URL, e.g. 'https://openam-my-tenant.forgeblocks.com/am'\n * @param {string} username admin account username\n * @param {string} password admin account password\n * @param {string} realm (optional) override default realm\n * @param {string} deploymentType (optional) override deployment type ('cloud', 'forgeops', or 'classic')\n * @param {boolean} allowInsecureConnection (optional) allow insecure connection\n * @param {boolean} debug (optional) enable debug output\n * @param {boolean} curlirize (optional) enable output of all library REST calls as curl commands\n * @returns {Frodo} frodo instance\n */\n createInstanceWithAdminAccount(\n host: string,\n serviceAccountId: string,\n serviceAccountJwkStr: string,\n realm?: string,\n deploymentType?: string,\n allowInsecureConnection?: boolean,\n debug?: boolean,\n curlirize?: boolean\n ): Frodo;\n\n /**\n * Factory helper to create a frodo instance ready for logging in with a service account\n * @param {string} host host base URL, e.g. 'https://openam-my-tenant.forgeblocks.com/am'\n * @param {string} serviceAccountId service account uuid\n * @param {string} serviceAccountJwkStr service account JWK as stringified JSON\n * @param {string} realm (optional) override default realm\n * @param {string} deploymentType (optional) override deployment type ('cloud', 'forgeops', or 'classic')\n * @param {boolean} allowInsecureConnection (optional) allow insecure connection\n * @param {boolean} debug (optional) enable debug output\n * @param {boolean} curlirize (optional) enable output of all library REST calls as curl commands\n * @returns {Frodo} frodo instance\n */\n createInstanceWithServiceAccount(\n host: string,\n serviceAccountId: string,\n serviceAccountJwkStr: string,\n realm?: string,\n deploymentType?: string,\n allowInsecureConnection?: boolean,\n debug?: boolean,\n curlirize?: boolean\n ): Frodo;\n};\n\n/**\n * Create a new frodo instance\n * @param {StateInterface} config Initial state configuration to use with the new instance\n * @returns {Frodo} frodo instance\n */\nconst FrodoLib = (config: StateInterface = {}): Frodo => {\n const state = StateImpl(config);\n return {\n state: state,\n admin: AdminOps(state),\n agent: AgentOps(state),\n app: ApplicationOps(state),\n\n authn: {\n journey: JourneyOps(state),\n node: NodeOps(state),\n },\n\n authz: {\n policy: PolicyOps(state),\n policySet: PolicySetOps(state),\n resourceType: ResourceTypeOps(state),\n },\n\n cloud: {\n adminFed: AdminFederationOps(state),\n feature: FeatureOps(state),\n log: LogOps(state),\n secret: SecretsOps(state),\n serviceAccount: ServiceAccountOps(state),\n startup: StartupOps(state),\n variable: VariablesOps(state),\n },\n\n conn: ConnectionProfileOps(state),\n\n email: {\n template: EmailTemplateOps(state),\n },\n\n idm: {\n config: IdmConfigOps(state),\n connector: ConnectorOps(state),\n managed: ManagedObjectOps(state),\n mapping: MappingOps(state),\n organization: OrganizationOps(state),\n recon: ReconOps(state),\n system: IdmSystemOps(state),\n },\n\n info: InfoOps(state),\n login: AuthenticateOps(state),\n\n oauth2oidc: {\n client: OAuth2ClientOps(state),\n endpoint: OAuth2OidcOps(state),\n external: IdpOps(state),\n provider: OAuth2ProviderOps(state),\n },\n\n realm: RealmOps(state),\n\n saml2: {\n circlesOfTrust: CirclesOfTrustOps(state),\n entityProvider: Saml2Ops(state),\n },\n\n script: ScriptOps(state),\n service: ServiceOps(state),\n\n theme: ThemeOps(state),\n\n utils: {\n ...ForgeRockUtils(state),\n ...ScriptValidationUtils(state),\n ...ExportImportUtils(state),\n ...Base64Utils(),\n constants: ConstantsImpl,\n jose: JoseOps(state),\n json: JsonUtils(),\n version: VersionUtils(state),\n },\n\n createInstance,\n createInstanceWithAdminAccount,\n createInstanceWithServiceAccount,\n };\n};\n\nfunction createInstance(config: StateInterface): Frodo {\n const frodo = FrodoLib(config);\n return frodo;\n}\n\nfunction createInstanceWithServiceAccount(\n host: string,\n serviceAccountId: string,\n serviceAccountJwkStr: string,\n realm: string = undefined,\n deploymentType: string = undefined,\n allowInsecureConnection = false,\n debug = false,\n curlirize = false\n): Frodo {\n const config: StateInterface = {\n host,\n serviceAccountId,\n serviceAccountJwk: JSON.parse(serviceAccountJwkStr),\n realm,\n deploymentType,\n allowInsecureConnection,\n debug,\n curlirize,\n };\n const frodo = FrodoLib(config);\n return frodo;\n}\n\nfunction createInstanceWithAdminAccount(\n host: string,\n username: string,\n password: string,\n realm: string = undefined,\n deploymentType: string = undefined,\n allowInsecureConnection = false,\n debug = false,\n curlirize = false\n): Frodo {\n const config: StateInterface = {\n host,\n username,\n password,\n realm,\n deploymentType,\n allowInsecureConnection,\n debug,\n curlirize,\n };\n const frodo = FrodoLib(config);\n return frodo;\n}\n\n/**\n * Default frodo instance\n *\n * @remarks\n *\n * If your application requires a single connection to a ForgeRock Identity Platform\n * instance at a time, then this default instance is all you need:\n *\n * In order to use the default {@link Frodo | frodo} instance, you must populate its {@link State | state} with the\n * minimum required information to login to your ForgeRock Identity Platform instance:\n *\n * ```javascript\n * // configure the state before invoking any library functions that require credentials\n * state.setHost('https://instance0/am');\n * state.setUsername('admin');\n * state.setPassword('p@ssw0rd!');\n *\n * // now the library can login\n * frodo.login.getTokens();\n *\n * // and perform operations\n * frodo.authn.journey.exportJourney('Login');\n * ```\n *\n * If your application needs to connect to multiple ForgeRock Identity Platform instances\n * simultaneously, then you will want to create additional frodo instances using any of\n * the available factory methods accessible from the default instance:\n *\n * {@link frodo.createInstance}\n * ```javascript\n * // use factory method to create a new Frodo instance\n * const instance1 = frodo.createInstance({\n * host: 'https://instance1/am',\n * username: 'admin',\n * password: 'p@ssw0rd!',\n * });\n *\n * // now the instance can login\n * instance1.login.getTokens();\n *\n * // and perform operations\n * instance1.authn.journey.exportJourney('Login');\n * ```\n *\n * {@link frodo.createInstanceWithAdminAccount}\n * ```javascript\n * // use factory method to create a new Frodo instance ready to login with an admin user account\n * const instance2 = frodo.createInstanceWithAdminAccount(\n * 'https://instance2/am',\n * 'admin',\n * 'p@ssw0rd!'\n * );\n *\n * // now the instance can login\n * instance2.login.getTokens();\n *\n * // and perform operations\n * instance2.authn.journey.exportJourney('Login');\n * ```\n *\n * {@link frodo.createInstanceWithServiceAccount}\n * ```javascript\n * // use factory method to create a new Frodo instance ready to login with a service account\n * const instance3 = frodo.createInstanceWithServiceAccount(\n * 'https://instance3/am',\n * 'serviceAccount',\n * '{\"k\":\"jwk\"}'\n * );\n *\n * // now the instance can login\n * instance3.login.getTokens();\n *\n * // and perform operations\n * instance3.authn.journey.exportJourney('Login');\n * ```\n */\nconst frodo = FrodoLib();\n\n/**\n * Default state instance\n *\n * @remarks\n *\n * {@link Frodo} maintains a {@link State | state} for each instance. The state is where Frodo gets configuration\n * information from like host to connecto to, username and password to use, whether to\n * allow insecure connections or not, etc. As the library operates, it updates its state.\n *\n * The default frodo instance contains an empty state instance by default. In order to\n * use the default frodo instance, you must populate its state with the minimum required\n * information to login to your ForgeRock Identity Platform instance:\n *\n * ```javascript\n * // configure the state before invoking any library functions that require credentials\n * state.setHost('https://instance0/am');\n * state.setUsername('admin');\n * state.setPassword('p@ssw0rd!');\n *\n * // now the library can login\n * frodo.login.getTokens();\n *\n * // and perform operations\n * frodo.authn.journey.exportJourney('Login');\n * ```\n */\nconst state = frodo.state;\n\nexport { frodo, FrodoLib, state };\n\nexport default FrodoLib;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0XAAA;AA6CA;AAWA;AACA;AACA;;AAkIA;AACA;AACA;AACA;AACA;AACA,IAAMA,QAAQ,GAAAC,OAAA,CAAAD,QAAA,GAAG,SAAXA,QAAQA,CAAA,EAA2C;EAAA,IAAvCE,MAAsB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAC3C,IAAMG,KAAK,GAAG,IAAAC,cAAS,EAACL,MAAM,CAAC;EAC/B,OAAO;IACLI,KAAK,EAAEA,KAAK;IACZE,KAAK,EAAE,IAAAC,iBAAQ,EAACH,KAAK,CAAC;IACtBI,KAAK,EAAE,IAAAC,iBAAQ,EAACL,KAAK,CAAC;IACtBM,GAAG,EAAE,IAAAC,uBAAc,EAACP,KAAK,CAAC;IAE1BQ,KAAK,EAAE;MACLC,OAAO,EAAE,IAAAC,mBAAU,EAACV,KAAK,CAAC;MAC1BW,IAAI,EAAE,IAAAC,gBAAO,EAACZ,KAAK;IACrB,CAAC;IAEDa,KAAK,EAAE;MACLC,MAAM,EAAE,IAAAC,kBAAS,EAACf,KAAK,CAAC;MACxBgB,SAAS,EAAE,IAAAC,qBAAY,EAACjB,KAAK,CAAC;MAC9BkB,YAAY,EAAE,IAAAC,wBAAe,EAACnB,KAAK;IACrC,CAAC;IAEDoB,KAAK,EAAE;MACLC,QAAQ,EAAE,IAAAC,2BAAkB,EAACtB,KAAK,CAAC;MACnCuB,OAAO,EAAE,IAAAC,mBAAU,EAACxB,KAAK,CAAC;MAC1ByB,GAAG,EAAE,IAAAC,eAAM,EAAC1B,KAAK,CAAC;MAClB2B,MAAM,EAAE,IAAAC,mBAAU,EAAC5B,KAAK,CAAC;MACzB6B,cAAc,EAAE,IAAAC,0BAAiB,EAAC9B,KAAK,CAAC;MACxC+B,OAAO,EAAE,IAAAC,mBAAU,EAAChC,KAAK,CAAC;MAC1BiC,QAAQ,EAAE,IAAAC,qBAAY,EAAClC,KAAK;IAC9B,CAAC;IAEDmC,IAAI,EAAE,IAAAC,6BAAoB,EAACpC,KAAK,CAAC;IAEjCqC,KAAK,EAAE;MACLC,QAAQ,EAAE,IAAAC,yBAAgB,EAACvC,KAAK;IAClC,CAAC;IAEDwC,GAAG,EAAE;MACH5C,MAAM,EAAE,IAAA6C,qBAAY,EAACzC,KAAK,CAAC;MAC3B0C,SAAS,EAAE,IAAAC,qBAAY,EAAC3C,KAAK,CAAC;MAC9B4C,OAAO,EAAE,IAAAC,yBAAgB,EAAC7C,KAAK,CAAC;MAChC8C,OAAO,EAAE,IAAAC,mBAAU,EAAC/C,KAAK,CAAC;MAC1BgD,YAAY,EAAE,IAAAC,wBAAe,EAACjD,KAAK,CAAC;MACpCkD,KAAK,EAAE,IAAAC,iBAAQ,EAACnD,KAAK,CAAC;MACtBoD,MAAM,EAAE,IAAAC,qBAAY,EAACrD,KAAK;IAC5B,CAAC;IAEDsD,IAAI,EAAE,IAAAC,gBAAO,EAACvD,KAAK,CAAC;IACpBwD,KAAK,EAAE,IAAAC,wBAAe,EAACzD,KAAK,CAAC;IAE7B0D,UAAU,EAAE;MACVC,MAAM,EAAE,IAAAC,wBAAe,EAAC5D,KAAK,CAAC;MAC9B6D,QAAQ,EAAE,IAAAC,sBAAa,EAAC9D,KAAK,CAAC;MAC9B+D,QAAQ,EAAE,IAAAC,eAAM,EAAChE,KAAK,CAAC;MACvBiE,QAAQ,EAAE,IAAAC,0BAAiB,EAAClE,KAAK;IACnC,CAAC;IAEDmE,KAAK,EAAE,IAAAC,iBAAQ,EAACpE,KAAK,CAAC;IAEtBqE,KAAK,EAAE;MACLC,cAAc,EAAE,IAAAC,0BAAiB,EAACvE,KAAK,CAAC;MACxCwE,cAAc,EAAE,IAAAC,iBAAQ,EAACzE,KAAK;IAChC,CAAC;IAED0E,MAAM,EAAE,IAAAC,kBAAS,EAAC3E,KAAK,CAAC;IACxB4E,OAAO,EAAE,IAAAC,mBAAU,EAAC7E,KAAK,CAAC;IAE1B8E,KAAK,EAAE,IAAAC,iBAAQ,EAAC/E,KAAK,CAAC;IAEtBgF,KAAK,EAAAC,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA,KACA,IAAAC,uBAAc,EAAClF,KAAK,CAAC,GACrB,IAAAmF,8BAAqB,EAACnF,KAAK,CAAC,GAC5B,IAAAoF,0BAAiB,EAACpF,KAAK,CAAC,GACxB,IAAAqF,oBAAW,EAAC,CAAC;MAChBC,SAAS,EAAEC,kBAAa;MACxBC,IAAI,EAAE,IAAAC,gBAAO,EAACzF,KAAK,CAAC;MACpB0F,IAAI,EAAE,IAAAC,kBAAS,EAAC,CAAC;MACjBC,OAAO,EAAE,IAAAC,qBAAY,EAAC7F,KAAK;IAAC,EAC7B;IAED8F,cAAc;IACdC,8BAA8B;IAC9BC;EACF,CAAC;AACH,CAAC;AAED,SAASF,cAAcA,CAAClG,MAAsB,EAAS;EACrD,IAAMqG,KAAK,GAAGvG,QAAQ,CAACE,MAAM,CAAC;EAC9B,OAAOqG,KAAK;AACd;AAEA,SAASD,gCAAgCA,CACvCE,IAAY,EACZC,gBAAwB,EACxBC,oBAA4B,EAMrB;EAAA,IALPjC,KAAa,GAAAtE,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGE,SAAS;EAAA,IACzBsG,cAAsB,GAAAxG,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGE,SAAS;EAAA,IAClCuG,uBAAuB,GAAAzG,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAAA,IAC/B0G,KAAK,GAAA1G,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAAA,IACb2G,SAAS,GAAA3G,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAEjB,IAAMD,MAAsB,GAAG;IAC7BsG,IAAI;IACJC,gBAAgB;IAChBM,iBAAiB,EAAEC,IAAI,CAACC,KAAK,CAACP,oBAAoB,CAAC;IACnDjC,KAAK;IACLkC,cAAc;IACdC,uBAAuB;IACvBC,KAAK;IACLC;EACF,CAAC;EACD,IAAMP,KAAK,GAAGvG,QAAQ,CAACE,MAAM,CAAC;EAC9B,OAAOqG,KAAK;AACd;AAEA,SAASF,8BAA8BA,CACrCG,IAAY,EACZU,QAAgB,EAChBC,QAAgB,EAMT;EAAA,IALP1C,KAAa,GAAAtE,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGE,SAAS;EAAA,IACzBsG,cAAsB,GAAAxG,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGE,SAAS;EAAA,IAClCuG,uBAAuB,GAAAzG,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAAA,IAC/B0G,KAAK,GAAA1G,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAAA,IACb2G,SAAS,GAAA3G,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAEjB,IAAMD,MAAsB,GAAG;IAC7BsG,IAAI;IACJU,QAAQ;IACRC,QAAQ;IACR1C,KAAK;IACLkC,cAAc;IACdC,uBAAuB;IACvBC,KAAK;IACLC;EACF,CAAC;EACD,IAAMP,KAAK,GAAGvG,QAAQ,CAACE,MAAM,CAAC;EAC9B,OAAOqG,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMA,KAAK,GAAAtG,OAAA,CAAAsG,KAAA,GAAGvG,QAAQ,CAAC,CAAC;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMM,KAAK,GAAAL,OAAA,CAAAK,KAAA,GAAGiG,KAAK,CAACjG,KAAK;AAAC,IAAA8G,QAAA,GAAAnH,OAAA,CAAAoH,OAAA,GAIXrH,QAAQ"}
1
+ {"version":3,"file":"FrodoLib.js","names":["FrodoLib","exports","config","arguments","length","undefined","state","StateImpl","admin","AdminOps","agent","AgentOps","app","ApplicationOps","authn","journey","JourneyOps","node","NodeOps","authz","policy","PolicyOps","policySet","PolicySetOps","resourceType","ResourceTypeOps","cloud","adminFed","AdminFederationOps","feature","FeatureOps","log","LogOps","secret","SecretsOps","serviceAccount","ServiceAccountOps","startup","StartupOps","variable","VariablesOps","conn","ConnectionProfileOps","cache","TokenCacheOps","email","template","EmailTemplateOps","idm","IdmConfigOps","connector","ConnectorOps","managed","ManagedObjectOps","mapping","MappingOps","organization","OrganizationOps","recon","ReconOps","system","IdmSystemOps","info","InfoOps","login","AuthenticateOps","oauth2oidc","client","OAuth2ClientOps","endpoint","OAuth2OidcOps","external","IdpOps","provider","OAuth2ProviderOps","realm","RealmOps","saml2","circlesOfTrust","CirclesOfTrustOps","entityProvider","Saml2Ops","script","ScriptOps","service","ServiceOps","theme","ThemeOps","utils","_objectSpread","ForgeRockUtils","ScriptValidationUtils","ExportImportUtils","Base64Utils","constants","ConstantsImpl","jose","JoseOps","json","JsonUtils","version","VersionUtils","createInstance","createInstanceWithAdminAccount","createInstanceWithServiceAccount","frodo","host","serviceAccountId","serviceAccountJwkStr","deploymentType","allowInsecureConnection","debug","curlirize","serviceAccountJwk","JSON","parse","username","password","_default","default"],"sources":["../../src/lib/FrodoLib.ts"],"sourcesContent":["// instantiable modules\nimport AdminOps, { Admin } from '../ops/AdminOps';\nimport AgentOps, { Agent } from '../ops/AgentOps';\nimport ApplicationOps, { Application } from '../ops/ApplicationOps';\nimport AuthenticateOps, { Authenticate } from '../ops/AuthenticateOps';\nimport CirclesOfTrustOps, { CirclesOfTrust } from '../ops/CirclesOfTrustOps';\nimport AdminFederationOps, {\n AdminFederation,\n} from '../ops/cloud/AdminFederationOps';\nimport FeatureOps, { Feature } from '../ops/cloud/FeatureOps';\nimport LogOps, { Log } from '../ops/cloud/LogOps';\nimport SecretsOps, { Secret } from '../ops/cloud/SecretsOps';\nimport ServiceAccountOps, {\n ServiceAccount,\n} from '../ops/cloud/ServiceAccountOps';\nimport StartupOps, { Startup } from '../ops/cloud/StartupOps';\nimport VariablesOps, { Variable } from '../ops/cloud/VariablesOps';\nimport ConnectionProfileOps, {\n ConnectionProfile,\n} from '../ops/ConnectionProfileOps';\nimport ConnectorOps, { Connector } from '../ops/ConnectorOps';\nimport EmailTemplateOps, { EmailTemplate } from '../ops/EmailTemplateOps';\nimport IdmConfigOps, { IdmConfig } from '../ops/IdmConfigOps';\nimport IdmSystemOps, { IdmSystem } from '../ops/IdmSystemOps';\nimport IdpOps, { Idp } from '../ops/IdpOps';\nimport InfoOps, { Info } from '../ops/InfoOps';\nimport JoseOps, { Jose } from '../ops/JoseOps';\nimport JourneyOps, { Journey } from '../ops/JourneyOps';\nimport ManagedObjectOps, { ManagedObject } from '../ops/ManagedObjectOps';\nimport MappingOps, { Mapping } from '../ops/MappingOps';\nimport NodeOps, { Node } from '../ops/NodeOps';\nimport OAuth2ClientOps, { OAuth2Client } from '../ops/OAuth2ClientOps';\nimport OAuth2OidcOps, { OAuth2Oidc } from '../ops/OAuth2OidcOps';\nimport OAuth2ProviderOps, { OAuth2Provider } from '../ops/OAuth2ProviderOps';\nimport OrganizationOps, { Organization } from '../ops/OrganizationOps';\nimport PolicyOps, { Policy } from '../ops/PolicyOps';\nimport PolicySetOps, { PolicySet } from '../ops/PolicySetOps';\nimport RealmOps, { Realm } from '../ops/RealmOps';\nimport ReconOps, { Recon } from '../ops/ReconOps';\nimport ResourceTypeOps, { ResourceType } from '../ops/ResourceTypeOps';\nimport Saml2Ops, { Saml2 } from '../ops/Saml2Ops';\nimport ScriptOps, { Script } from '../ops/ScriptOps';\nimport ServiceOps, { Service } from '../ops/ServiceOps';\nimport ThemeOps, { Theme } from '../ops/ThemeOps';\nimport TokenCacheOps, { TokenCache } from '../ops/TokenCacheOps';\nimport VersionUtils, { Version } from '../ops/VersionUtils';\n// non-instantiable modules\nimport ConstantsImpl, { Constants } from '../shared/Constants';\nimport StateImpl, { State, StateInterface } from '../shared/State';\nimport Base64Utils, { Base64 } from '../utils/Base64Utils';\nimport ExportImportUtils, { ExportImport } from '../utils/ExportImportUtils';\nimport ForgeRockUtils, { FRUtils } from '../utils/ForgeRockUtils';\nimport JsonUtils, { Json } from '../utils/JsonUtils';\nimport ScriptValidationUtils, {\n ScriptValidation,\n} from '../utils/ScriptValidationUtils';\n\n/**\n * Frodo Library\n */\nexport type Frodo = {\n state: State;\n admin: Admin;\n agent: Agent;\n app: Application;\n\n authn: {\n journey: Journey;\n node: Node;\n };\n\n authz: {\n policy: Policy;\n policySet: PolicySet;\n resourceType: ResourceType;\n };\n\n cloud: {\n adminFed: AdminFederation;\n feature: Feature;\n log: Log;\n secret: Secret;\n serviceAccount: ServiceAccount;\n startup: Startup;\n variable: Variable;\n };\n\n conn: ConnectionProfile;\n cache: TokenCache;\n\n email: {\n template: EmailTemplate;\n };\n\n idm: {\n config: IdmConfig;\n connector: Connector;\n managed: ManagedObject;\n mapping: Mapping;\n organization: Organization;\n recon: Recon;\n system: IdmSystem;\n };\n\n info: Info;\n login: Authenticate;\n\n oauth2oidc: {\n client: OAuth2Client;\n endpoint: OAuth2Oidc;\n external: Idp;\n provider: OAuth2Provider;\n };\n\n realm: Realm;\n\n saml2: {\n circlesOfTrust: CirclesOfTrust;\n entityProvider: Saml2;\n };\n\n script: Script;\n service: Service;\n\n theme: Theme;\n\n utils: FRUtils &\n ScriptValidation &\n ExportImport &\n Base64 & {\n constants: Constants;\n jose: Jose;\n json: Json;\n version: Version;\n };\n\n /**\n * Create a new frodo instance\n * @param {StateInterface} config Initial state configuration to use with the new instance\n * @returns {Frodo} frodo instance\n */\n createInstance(config: StateInterface): Frodo;\n\n /**\n * Factory helper to create a frodo instance ready for logging in with an admin user account\n * @param {string} host host base URL, e.g. 'https://openam-my-tenant.forgeblocks.com/am'\n * @param {string} username admin account username\n * @param {string} password admin account password\n * @param {string} realm (optional) override default realm\n * @param {string} deploymentType (optional) override deployment type ('cloud', 'forgeops', or 'classic')\n * @param {boolean} allowInsecureConnection (optional) allow insecure connection\n * @param {boolean} debug (optional) enable debug output\n * @param {boolean} curlirize (optional) enable output of all library REST calls as curl commands\n * @returns {Frodo} frodo instance\n */\n createInstanceWithAdminAccount(\n host: string,\n serviceAccountId: string,\n serviceAccountJwkStr: string,\n realm?: string,\n deploymentType?: string,\n allowInsecureConnection?: boolean,\n debug?: boolean,\n curlirize?: boolean\n ): Frodo;\n\n /**\n * Factory helper to create a frodo instance ready for logging in with a service account\n * @param {string} host host base URL, e.g. 'https://openam-my-tenant.forgeblocks.com/am'\n * @param {string} serviceAccountId service account uuid\n * @param {string} serviceAccountJwkStr service account JWK as stringified JSON\n * @param {string} realm (optional) override default realm\n * @param {string} deploymentType (optional) override deployment type ('cloud', 'forgeops', or 'classic')\n * @param {boolean} allowInsecureConnection (optional) allow insecure connection\n * @param {boolean} debug (optional) enable debug output\n * @param {boolean} curlirize (optional) enable output of all library REST calls as curl commands\n * @returns {Frodo} frodo instance\n */\n createInstanceWithServiceAccount(\n host: string,\n serviceAccountId: string,\n serviceAccountJwkStr: string,\n realm?: string,\n deploymentType?: string,\n allowInsecureConnection?: boolean,\n debug?: boolean,\n curlirize?: boolean\n ): Frodo;\n};\n\n/**\n * Create a new frodo instance\n * @param {StateInterface} config Initial state configuration to use with the new instance\n * @returns {Frodo} frodo instance\n */\nconst FrodoLib = (config: StateInterface = {}): Frodo => {\n const state = StateImpl(config);\n return {\n state: state,\n admin: AdminOps(state),\n agent: AgentOps(state),\n app: ApplicationOps(state),\n\n authn: {\n journey: JourneyOps(state),\n node: NodeOps(state),\n },\n\n authz: {\n policy: PolicyOps(state),\n policySet: PolicySetOps(state),\n resourceType: ResourceTypeOps(state),\n },\n\n cloud: {\n adminFed: AdminFederationOps(state),\n feature: FeatureOps(state),\n log: LogOps(state),\n secret: SecretsOps(state),\n serviceAccount: ServiceAccountOps(state),\n startup: StartupOps(state),\n variable: VariablesOps(state),\n },\n\n conn: ConnectionProfileOps(state),\n cache: TokenCacheOps(state),\n\n email: {\n template: EmailTemplateOps(state),\n },\n\n idm: {\n config: IdmConfigOps(state),\n connector: ConnectorOps(state),\n managed: ManagedObjectOps(state),\n mapping: MappingOps(state),\n organization: OrganizationOps(state),\n recon: ReconOps(state),\n system: IdmSystemOps(state),\n },\n\n info: InfoOps(state),\n login: AuthenticateOps(state),\n\n oauth2oidc: {\n client: OAuth2ClientOps(state),\n endpoint: OAuth2OidcOps(state),\n external: IdpOps(state),\n provider: OAuth2ProviderOps(state),\n },\n\n realm: RealmOps(state),\n\n saml2: {\n circlesOfTrust: CirclesOfTrustOps(state),\n entityProvider: Saml2Ops(state),\n },\n\n script: ScriptOps(state),\n service: ServiceOps(state),\n\n theme: ThemeOps(state),\n\n utils: {\n ...ForgeRockUtils(state),\n ...ScriptValidationUtils(state),\n ...ExportImportUtils(state),\n ...Base64Utils(),\n constants: ConstantsImpl,\n jose: JoseOps(state),\n json: JsonUtils(),\n version: VersionUtils(state),\n },\n\n createInstance,\n createInstanceWithAdminAccount,\n createInstanceWithServiceAccount,\n };\n};\n\nfunction createInstance(config: StateInterface): Frodo {\n const frodo = FrodoLib(config);\n return frodo;\n}\n\nfunction createInstanceWithServiceAccount(\n host: string,\n serviceAccountId: string,\n serviceAccountJwkStr: string,\n realm: string = undefined,\n deploymentType: string = undefined,\n allowInsecureConnection = false,\n debug = false,\n curlirize = false\n): Frodo {\n const config: StateInterface = {\n host,\n serviceAccountId,\n serviceAccountJwk: JSON.parse(serviceAccountJwkStr),\n realm,\n deploymentType,\n allowInsecureConnection,\n debug,\n curlirize,\n };\n const frodo = FrodoLib(config);\n return frodo;\n}\n\nfunction createInstanceWithAdminAccount(\n host: string,\n username: string,\n password: string,\n realm: string = undefined,\n deploymentType: string = undefined,\n allowInsecureConnection = false,\n debug = false,\n curlirize = false\n): Frodo {\n const config: StateInterface = {\n host,\n username,\n password,\n realm,\n deploymentType,\n allowInsecureConnection,\n debug,\n curlirize,\n };\n const frodo = FrodoLib(config);\n return frodo;\n}\n\n/**\n * Default frodo instance\n *\n * @remarks\n *\n * If your application requires a single connection to a ForgeRock Identity Platform\n * instance at a time, then this default instance is all you need:\n *\n * In order to use the default {@link Frodo | frodo} instance, you must populate its {@link State | state} with the\n * minimum required information to login to your ForgeRock Identity Platform instance:\n *\n * ```javascript\n * // configure the state before invoking any library functions that require credentials\n * state.setHost('https://instance0/am');\n * state.setUsername('admin');\n * state.setPassword('p@ssw0rd!');\n *\n * // now the library can login\n * frodo.login.getTokens();\n *\n * // and perform operations\n * frodo.authn.journey.exportJourney('Login');\n * ```\n *\n * If your application needs to connect to multiple ForgeRock Identity Platform instances\n * simultaneously, then you will want to create additional frodo instances using any of\n * the available factory methods accessible from the default instance:\n *\n * {@link frodo.createInstance}\n * ```javascript\n * // use factory method to create a new Frodo instance\n * const instance1 = frodo.createInstance({\n * host: 'https://instance1/am',\n * username: 'admin',\n * password: 'p@ssw0rd!',\n * });\n *\n * // now the instance can login\n * instance1.login.getTokens();\n *\n * // and perform operations\n * instance1.authn.journey.exportJourney('Login');\n * ```\n *\n * {@link frodo.createInstanceWithAdminAccount}\n * ```javascript\n * // use factory method to create a new Frodo instance ready to login with an admin user account\n * const instance2 = frodo.createInstanceWithAdminAccount(\n * 'https://instance2/am',\n * 'admin',\n * 'p@ssw0rd!'\n * );\n *\n * // now the instance can login\n * instance2.login.getTokens();\n *\n * // and perform operations\n * instance2.authn.journey.exportJourney('Login');\n * ```\n *\n * {@link frodo.createInstanceWithServiceAccount}\n * ```javascript\n * // use factory method to create a new Frodo instance ready to login with a service account\n * const instance3 = frodo.createInstanceWithServiceAccount(\n * 'https://instance3/am',\n * 'serviceAccount',\n * '{\"k\":\"jwk\"}'\n * );\n *\n * // now the instance can login\n * instance3.login.getTokens();\n *\n * // and perform operations\n * instance3.authn.journey.exportJourney('Login');\n * ```\n */\nconst frodo = FrodoLib();\n\n/**\n * Default state instance\n *\n * @remarks\n *\n * {@link Frodo} maintains a {@link State | state} for each instance. The state is where Frodo gets configuration\n * information from like host to connecto to, username and password to use, whether to\n * allow insecure connections or not, etc. As the library operates, it updates its state.\n *\n * The default frodo instance contains an empty state instance by default. In order to\n * use the default frodo instance, you must populate its state with the minimum required\n * information to login to your ForgeRock Identity Platform instance:\n *\n * ```javascript\n * // configure the state before invoking any library functions that require credentials\n * state.setHost('https://instance0/am');\n * state.setUsername('admin');\n * state.setPassword('p@ssw0rd!');\n *\n * // now the library can login\n * frodo.login.getTokens();\n *\n * // and perform operations\n * frodo.authn.journey.exportJourney('Login');\n * ```\n */\nconst state = frodo.state;\n\nexport { frodo, FrodoLib, state };\n\nexport default FrodoLib;\n"],"mappings":"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F,SAAA,MAAGE,SAAS;EAAA,IACzBwG,cAAsB,GAAA1G,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGE,SAAS;EAAA,IAClCyG,uBAAuB,GAAA3G,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAAA,IAC/B4G,KAAK,GAAA5G,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAAA,IACb6G,SAAS,GAAA7G,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAEjB,IAAMD,MAAsB,GAAG;IAC7BwG,IAAI;IACJU,QAAQ;IACRC,QAAQ;IACR1C,KAAK;IACLkC,cAAc;IACdC,uBAAuB;IACvBC,KAAK;IACLC;EACF,CAAC;EACD,IAAMP,KAAK,GAAGzG,QAAQ,CAACE,MAAM,CAAC;EAC9B,OAAOuG,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMA,KAAK,GAAAxG,OAAA,CAAAwG,KAAA,GAAGzG,QAAQ,CAAC,CAAC;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMM,KAAK,GAAAL,OAAA,CAAAK,KAAA,GAAGmG,KAAK,CAACnG,KAAK;AAAC,IAAAgH,QAAA,GAAArH,OAAA,CAAAsH,OAAA,GAIXvH,QAAQ"}