@rockcarver/frodo-lib 0.18.1 → 0.18.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -2
- package/cjs/api/ScriptApi.js.map +1 -1
- package/cjs/index.js +3 -1
- package/cjs/index.js.map +1 -1
- package/cjs/ops/OpsTypes.js.map +1 -1
- package/cjs/ops/Saml2Ops.js +15 -7
- package/cjs/ops/Saml2Ops.js.map +1 -1
- package/cjs/ops/ScriptOps.js +16 -9
- package/cjs/ops/ScriptOps.js.map +1 -1
- package/cjs/ops/utils/ExportImportUtils.js +0 -16
- package/cjs/ops/utils/ExportImportUtils.js.map +1 -1
- package/cjs/ops/utils/ValidationUtils.js +22 -1
- package/cjs/ops/utils/ValidationUtils.js.map +1 -1
- package/esm/index.mjs +1 -0
- package/esm/ops/Saml2Ops.mjs +17 -9
- package/esm/ops/ScriptOps.mjs +16 -10
- package/esm/ops/utils/ExportImportUtils.mjs +0 -15
- package/esm/ops/utils/ValidationUtils.mjs +20 -2
- package/package.json +2 -2
- package/types/api/ScriptApi.d.ts +3 -2
- package/types/api/ScriptApi.d.ts.map +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- package/types/ops/OpsTypes.d.ts +4 -0
- package/types/ops/OpsTypes.d.ts.map +1 -1
- package/types/ops/Saml2Ops.d.ts.map +1 -1
- package/types/ops/ScriptOps.d.ts +1 -1
- package/types/ops/ScriptOps.d.ts.map +1 -1
- package/types/ops/utils/ExportImportUtils.d.ts +0 -6
- package/types/ops/utils/ExportImportUtils.d.ts.map +1 -1
- package/types/ops/utils/ValidationUtils.d.ts +4 -0
- package/types/ops/utils/ValidationUtils.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,12 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.18.2] - 2023-01-25
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- rockcarver/frodo-cli#52: Library support for script extract and watch functionality
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- rockcarver/frodo-cli#190: Frodo now properly imports previously exported saml providers.
|
|
19
|
+
|
|
20
|
+
## [0.18.2-0] - 2023-01-24
|
|
21
|
+
|
|
10
22
|
## [0.18.1] - 2023-01-20
|
|
11
23
|
|
|
12
24
|
### Changed
|
|
13
25
|
|
|
14
26
|
- Return service account name when calling `ConnectionProfile.getConnectionProfileByHost`.
|
|
15
|
-
- Save missing service account name when calling `
|
|
27
|
+
- Save missing service account name when calling `ConnectionProfile.saveConnectionProfile`.
|
|
16
28
|
|
|
17
29
|
### Fixed
|
|
18
30
|
|
|
@@ -1028,7 +1040,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
1028
1040
|
- Fixed problem with adding connection profiles
|
|
1029
1041
|
- Miscellaneous bug fixes
|
|
1030
1042
|
|
|
1031
|
-
[Unreleased]: https://github.com/rockcarver/frodo-lib/compare/v0.18.
|
|
1043
|
+
[Unreleased]: https://github.com/rockcarver/frodo-lib/compare/v0.18.2...HEAD
|
|
1044
|
+
|
|
1045
|
+
[0.18.2]: https://github.com/rockcarver/frodo-lib/compare/v0.18.2-0...v0.18.2
|
|
1046
|
+
|
|
1047
|
+
[0.18.2-0]: https://github.com/rockcarver/frodo-lib/compare/v0.18.1...v0.18.2-0
|
|
1032
1048
|
|
|
1033
1049
|
[0.18.1]: https://github.com/rockcarver/frodo-lib/compare/v0.18.1-0...v0.18.1
|
|
1034
1050
|
|
package/cjs/api/ScriptApi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptApi.js","names":["scriptURLTemplate","scriptListURLTemplate","scriptQueryURLTemplate","apiVersion","getApiConfig","path","getCurrentRealmPath","getScripts","urlString","util","format","state","getHost","data","generateAmApi","get","withCredentials","getScriptByName","scriptName","encodeURIComponent","getScript","scriptId","putScript","scriptData","put","deleteScript","delete"],"sources":["api/ScriptApi.ts"],"sourcesContent":["import util from 'util';\nimport { generateAmApi } from './BaseApi';\nimport { getCurrentRealmPath } from './utils/ApiUtils';\nimport * as state from '../shared/State';\n\nconst scriptURLTemplate = '%s/json%s/scripts/%s';\nconst scriptListURLTemplate = '%s/json%s/scripts?_queryFilter=true';\nconst scriptQueryURLTemplate =\n '%s/json%s/scripts?_queryFilter=name+eq+%%22%s%%22';\nconst apiVersion = 'protocol=2.0,resource=1.0';\nconst getApiConfig = () => {\n return {\n path: `/json${getCurrentRealmPath()}/scripts`,\n apiVersion,\n };\n};\n\n/**\n * Get all scripts\n * @returns {Promise} a promise that resolves to an object containing an array of script objects\n */\nexport async function getScripts() {\n const urlString = util.format(\n scriptListURLTemplate,\n state.getHost(),\n getCurrentRealmPath()\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Get script by name\n * @param {String} scriptName script name\n * @returns {Promise} a promise that resolves to an object containing a script object\n */\nexport async function getScriptByName(scriptName) {\n const urlString = util.format(\n scriptQueryURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n encodeURIComponent(scriptName)\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Get script by id\n * @param {String} scriptId script uuid/name\n * @returns {Promise} a promise that resolves to a script object\n */\nexport async function getScript(scriptId) {\n const urlString = util.format(\n scriptURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n scriptId\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Put script\n * @param {string} scriptId script uuid\n * @param {Object} scriptData script object\n * @returns {Promise} a promise that resolves to an object containing a script object\n */\nexport async function putScript(scriptId, scriptData) {\n const urlString = util.format(\n scriptURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n scriptId\n );\n const { data } = await generateAmApi(getApiConfig()).put(\n urlString,\n scriptData,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Delete script by id\n * @param {String} scriptId script uuid/name\n * @returns {Promise} a promise that resolves to a script object\n */\nexport async function deleteScript(scriptId) {\n const urlString = util.format(\n scriptURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n scriptId\n );\n const { data } = await generateAmApi(getApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n"],"mappings":";;;;;;;;;;AAAA;AACA;AACA;AACA;AAAyC;AAAA;AAAA;AAAA;AAAA;
|
|
1
|
+
{"version":3,"file":"ScriptApi.js","names":["scriptURLTemplate","scriptListURLTemplate","scriptQueryURLTemplate","apiVersion","getApiConfig","path","getCurrentRealmPath","getScripts","urlString","util","format","state","getHost","data","generateAmApi","get","withCredentials","getScriptByName","scriptName","encodeURIComponent","getScript","scriptId","putScript","scriptData","put","deleteScript","delete"],"sources":["api/ScriptApi.ts"],"sourcesContent":["import util from 'util';\nimport { generateAmApi } from './BaseApi';\nimport { getCurrentRealmPath } from './utils/ApiUtils';\nimport * as state from '../shared/State';\nimport { PagedResult, ScriptSkeleton } from './ApiTypes';\n\nconst scriptURLTemplate = '%s/json%s/scripts/%s';\nconst scriptListURLTemplate = '%s/json%s/scripts?_queryFilter=true';\nconst scriptQueryURLTemplate =\n '%s/json%s/scripts?_queryFilter=name+eq+%%22%s%%22';\nconst apiVersion = 'protocol=2.0,resource=1.0';\nconst getApiConfig = () => {\n return {\n path: `/json${getCurrentRealmPath()}/scripts`,\n apiVersion,\n };\n};\n\n/**\n * Get all scripts\n * @returns {Promise} a promise that resolves to an object containing an array of script objects\n */\nexport async function getScripts(): Promise<PagedResult<ScriptSkeleton>> {\n const urlString = util.format(\n scriptListURLTemplate,\n state.getHost(),\n getCurrentRealmPath()\n );\n const { data } = await generateAmApi(getApiConfig()).get<\n PagedResult<ScriptSkeleton>\n >(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Get script by name\n * @param {String} scriptName script name\n * @returns {Promise} a promise that resolves to an object containing a script object\n */\nexport async function getScriptByName(\n scriptName: string\n): Promise<PagedResult<ScriptSkeleton>> {\n const urlString = util.format(\n scriptQueryURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n encodeURIComponent(scriptName)\n );\n const { data } = await generateAmApi(getApiConfig()).get<\n PagedResult<ScriptSkeleton>\n >(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Get script by id\n * @param {String} scriptId script uuid/name\n * @returns {Promise} a promise that resolves to a script object\n */\nexport async function getScript(scriptId) {\n const urlString = util.format(\n scriptURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n scriptId\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Put script\n * @param {string} scriptId script uuid\n * @param {Object} scriptData script object\n * @returns {Promise} a promise that resolves to an object containing a script object\n */\nexport async function putScript(scriptId, scriptData) {\n const urlString = util.format(\n scriptURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n scriptId\n );\n const { data } = await generateAmApi(getApiConfig()).put(\n urlString,\n scriptData,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Delete script by id\n * @param {String} scriptId script uuid/name\n * @returns {Promise} a promise that resolves to a script object\n */\nexport async function deleteScript(scriptId) {\n const urlString = util.format(\n scriptURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n scriptId\n );\n const { data } = await generateAmApi(getApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n"],"mappings":"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"}
|
package/cjs/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.state = exports.constants = exports.VariablesRaw = exports.Variables = exports.ValidationUtils = exports.Utils = exports.TypesRaw = exports.Types = exports.TreeRaw = exports.Theme = exports.StartupRaw = exports.Startup = exports.SocialIdentityProvidersRaw = exports.ServiceAccount = exports.Service = exports.SecretsRaw = exports.Secrets = exports.Script = exports.Saml2 = exports.Realm = exports.Organization = exports.OAuth2OIDCApi = exports.OAuth2Client = exports.NodeRaw = exports.Node = exports.ManagedObject = exports.Log = exports.LibVersion = exports.Journey = exports.Jose = exports.Info = exports.Idp = exports.IdmConfigRaw = exports.Idm = exports.ExportImportUtils = exports.EmailTemplate = exports.ConnectionProfile = exports.CirclesOfTrust = exports.AuthenticateRaw = exports.Authenticate = exports.AgentRaw = exports.Agent = exports.Admin = void 0;
|
|
6
|
+
exports.state = exports.constants = exports.VariablesRaw = exports.Variables = exports.ValidationUtils = exports.Utils = exports.TypesRaw = exports.Types = exports.TreeRaw = exports.Theme = exports.StartupRaw = exports.Startup = exports.SocialIdentityProvidersRaw = exports.ServiceAccount = exports.Service = exports.SecretsRaw = exports.Secrets = exports.Script = exports.Saml2 = exports.Realm = exports.Organization = exports.OAuth2OIDCApi = exports.OAuth2Client = exports.NodeRaw = exports.Node = exports.ManagedObject = exports.Log = exports.LibVersion = exports.Journey = exports.Jose = exports.Info = exports.Idp = exports.IdmConfigRaw = exports.Idm = exports.ExportImportUtils = exports.EmailTemplate = exports.ConnectionProfile = exports.CirclesOfTrust = exports.Base64 = exports.AuthenticateRaw = exports.Authenticate = exports.AgentRaw = exports.Agent = exports.Admin = void 0;
|
|
7
7
|
var _colors = _interopRequireDefault(require("colors"));
|
|
8
8
|
var _AgentRaw = _interopRequireWildcard(require("./api/AgentApi"));
|
|
9
9
|
exports.AgentRaw = _AgentRaw;
|
|
@@ -81,6 +81,8 @@ var _Variables = _interopRequireWildcard(require("./ops/cloud/VariablesOps"));
|
|
|
81
81
|
exports.Variables = _Variables;
|
|
82
82
|
var _Utils = _interopRequireWildcard(require("./ops/utils/OpsUtils"));
|
|
83
83
|
exports.Utils = _Utils;
|
|
84
|
+
var _Base = _interopRequireWildcard(require("./api/utils/Base64"));
|
|
85
|
+
exports.Base64 = _Base;
|
|
84
86
|
var _ValidationUtils = _interopRequireWildcard(require("./ops/utils/ValidationUtils"));
|
|
85
87
|
exports.ValidationUtils = _ValidationUtils;
|
|
86
88
|
var _LibVersion = _interopRequireWildcard(require("./ops/utils/Version"));
|
package/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Color","enable"],"sources":["index.ts"],"sourcesContent":["import Color from 'colors';\n\nColor.enable();\n\n// Api Layer\nexport * as AgentRaw from './api/AgentApi';\nexport * as AuthenticateRaw from './api/AuthenticateApi';\nexport * as NodeRaw from './api/NodeApi';\n// TODO: need to figure out if this is the right approach or if we should even\n// use a public oauth2/oidc library. might be ok for now since there is only\n// one place where the cli needs to execute an oauth flow.\nexport * as OAuth2OIDCApi from './api/OAuth2OIDCApi';\nexport * as SecretsRaw from './api/cloud/SecretsApi';\nexport * as SocialIdentityProvidersRaw from './api/SocialIdentityProvidersApi';\nexport * as StartupRaw from './api/cloud/StartupApi';\nexport * as TreeRaw from './api/TreeApi';\nexport * as TypesRaw from './api/ApiTypes';\nexport * as VariablesRaw from './api/cloud/VariablesApi';\nexport * as IdmConfigRaw from './api/IdmConfigApi';\n\n// Ops Layer\nexport * as Admin from './ops/AdminOps';\nexport * as Agent from './ops/AgentOps';\nexport * as Authenticate from './ops/AuthenticateOps';\nexport * as CirclesOfTrust from './ops/CirclesOfTrustOps';\nexport * as ConnectionProfile from './ops/ConnectionProfileOps';\nexport * as EmailTemplate from './ops/EmailTemplateOps';\nexport * as Idp from './ops/IdpOps';\nexport * as Idm from './ops/IdmOps';\nexport * as Info from './ops/InfoOps';\nexport * as Journey from './ops/JourneyOps';\nexport * as Jose from './ops/JoseOps';\nexport * as Log from './ops/cloud/LogOps';\nexport * as ManagedObject from './ops/ManagedObjectOps';\nexport * as Node from './ops/NodeOps';\nexport * as OAuth2Client from './ops/OAuth2ClientOps';\nexport * as Organization from './ops/OrganizationOps';\nexport * as Realm from './ops/RealmOps';\nexport * as Saml2 from './ops/Saml2Ops';\nexport * as Script from './ops/ScriptOps';\nexport * as Service from './ops/ServiceOps';\nexport * as Secrets from './ops/cloud/SecretsOps';\nexport * as ServiceAccount from './ops/cloud/ServiceAccountOps';\nexport * as Startup from './ops/cloud/StartupOps';\nexport * as Theme from './ops/ThemeOps';\nexport * as Types from './ops/OpsTypes';\nexport * as Variables from './ops/cloud/VariablesOps';\n// TODO: revisit if there are better ways\nexport * as Utils from './ops/utils/OpsUtils';\nexport * as ValidationUtils from './ops/utils/ValidationUtils';\nexport * as LibVersion from './ops/utils/Version';\nexport * as ExportImportUtils from './ops/utils/ExportImportUtils';\n// TODO: reconsider the aproach to pass in state from client\n// lib should be stateless, an aplication should own its state\nexport * as state from './shared/State';\nexport * as constants from './storage/StaticStorage';\n"],"mappings":";;;;;;AAAA;AAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAE3BA,eAAK,CAACC,MAAM,EAAE;;AAEd"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["Color","enable"],"sources":["index.ts"],"sourcesContent":["import Color from 'colors';\n\nColor.enable();\n\n// Api Layer\nexport * as AgentRaw from './api/AgentApi';\nexport * as AuthenticateRaw from './api/AuthenticateApi';\nexport * as NodeRaw from './api/NodeApi';\n// TODO: need to figure out if this is the right approach or if we should even\n// use a public oauth2/oidc library. might be ok for now since there is only\n// one place where the cli needs to execute an oauth flow.\nexport * as OAuth2OIDCApi from './api/OAuth2OIDCApi';\nexport * as SecretsRaw from './api/cloud/SecretsApi';\nexport * as SocialIdentityProvidersRaw from './api/SocialIdentityProvidersApi';\nexport * as StartupRaw from './api/cloud/StartupApi';\nexport * as TreeRaw from './api/TreeApi';\nexport * as TypesRaw from './api/ApiTypes';\nexport * as VariablesRaw from './api/cloud/VariablesApi';\nexport * as IdmConfigRaw from './api/IdmConfigApi';\n\n// Ops Layer\nexport * as Admin from './ops/AdminOps';\nexport * as Agent from './ops/AgentOps';\nexport * as Authenticate from './ops/AuthenticateOps';\nexport * as CirclesOfTrust from './ops/CirclesOfTrustOps';\nexport * as ConnectionProfile from './ops/ConnectionProfileOps';\nexport * as EmailTemplate from './ops/EmailTemplateOps';\nexport * as Idp from './ops/IdpOps';\nexport * as Idm from './ops/IdmOps';\nexport * as Info from './ops/InfoOps';\nexport * as Journey from './ops/JourneyOps';\nexport * as Jose from './ops/JoseOps';\nexport * as Log from './ops/cloud/LogOps';\nexport * as ManagedObject from './ops/ManagedObjectOps';\nexport * as Node from './ops/NodeOps';\nexport * as OAuth2Client from './ops/OAuth2ClientOps';\nexport * as Organization from './ops/OrganizationOps';\nexport * as Realm from './ops/RealmOps';\nexport * as Saml2 from './ops/Saml2Ops';\nexport * as Script from './ops/ScriptOps';\nexport * as Service from './ops/ServiceOps';\nexport * as Secrets from './ops/cloud/SecretsOps';\nexport * as ServiceAccount from './ops/cloud/ServiceAccountOps';\nexport * as Startup from './ops/cloud/StartupOps';\nexport * as Theme from './ops/ThemeOps';\nexport * as Types from './ops/OpsTypes';\nexport * as Variables from './ops/cloud/VariablesOps';\n// TODO: revisit if there are better ways\nexport * as Utils from './ops/utils/OpsUtils';\nexport * as Base64 from './api/utils/Base64';\nexport * as ValidationUtils from './ops/utils/ValidationUtils';\nexport * as LibVersion from './ops/utils/Version';\nexport * as ExportImportUtils from './ops/utils/ExportImportUtils';\n// TODO: reconsider the aproach to pass in state from client\n// lib should be stateless, an aplication should own its state\nexport * as state from './shared/State';\nexport * as constants from './storage/StaticStorage';\n"],"mappings":";;;;;;AAAA;AAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAE3BA,eAAK,CAACC,MAAM,EAAE;;AAEd"}
|
package/cjs/ops/OpsTypes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpsTypes.js","names":["NodeClassification","JourneyClassification"],"sources":["ops/OpsTypes.ts"],"sourcesContent":["import {\n AgentSkeleton,\n AmServiceSkeleton,\n CircleOfTrustSkeleton,\n EmailTemplateSkeleton,\n NodeSkeleton,\n Saml2ProviderSkeleton,\n ScriptSkeleton,\n SocialIdpSkeleton,\n ThemeSkeleton,\n TreeSkeleton,\n} from '../api/ApiTypes';\n\n/**\n * Tree export options\n */\nexport interface TreeExportOptions {\n /**\n * Where applicable, use string arrays to store multi-line text (e.g. scripts).\n */\n useStringArrays: boolean;\n /**\n * Include any dependencies (scripts, email templates, SAML entity providers and circles of trust, social identity providers, themes).\n */\n deps: boolean;\n}\n\n/**\n * Tree import options\n */\nexport interface TreeImportOptions {\n /**\n * Generate new UUIDs for all nodes during import.\n */\n reUuid: boolean;\n /**\n * Include any dependencies (scripts, email templates, SAML entity providers and circles of trust, social identity providers, themes).\n */\n deps: boolean;\n}\n\nexport interface ExportMetaData {\n origin: string;\n originAmVersion: string;\n exportedBy: string;\n exportDate: string;\n exportTool: string;\n exportToolVersion: string;\n}\n\nexport interface SingleTreeExportInterface {\n meta?: ExportMetaData;\n innerNodes?: Record<string, NodeSkeleton>;\n innernodes?: Record<string, NodeSkeleton>;\n nodes: Record<string, NodeSkeleton>;\n scripts: Record<string, ScriptSkeleton>;\n emailTemplates: Record<string, EmailTemplateSkeleton>;\n socialIdentityProviders: Record<string, SocialIdpSkeleton>;\n themes: ThemeSkeleton[];\n saml2Entities: Record<string, Saml2ProviderSkeleton>;\n circlesOfTrust: Record<string, CircleOfTrustSkeleton>;\n tree: TreeSkeleton;\n}\n\nexport interface MultiTreeExportInterface {\n meta?: ExportMetaData;\n trees: Record<string, SingleTreeExportInterface>;\n}\n\nexport interface AgentExportInterface {\n meta?: Record<string, ExportMetaData>;\n agents: Record<string, AgentSkeleton>;\n}\n\nexport interface Saml2ExportInterface {\n meta?: ExportMetaData;\n script: Record<string, ScriptSkeleton>;\n saml: {\n hosted: Record<string, Saml2ProviderSkeleton>;\n remote: Record<string, Saml2ProviderSkeleton>;\n metadata: Record<string, string[]>;\n };\n}\n\nexport interface ServiceExportInterface {\n meta?: Record<string, ExportMetaData>;\n service: Record<string, AmServiceSkeleton>;\n}\n\nexport interface TreeDependencyMapInterface {\n [k: string]: TreeDependencyMapInterface[];\n}\n\nexport interface TreeExportResolverInterface {\n (treeId: string): Promise<SingleTreeExportInterface>;\n}\n\nexport enum NodeClassification {\n STANDARD = 'standard',\n CUSTOM = 'custom',\n CLOUD = 'cloud',\n PREMIUM = 'premium',\n}\n\nexport enum JourneyClassification {\n STANDARD = 'standard',\n CUSTOM = 'custom',\n CLOUD = 'cloud',\n PREMIUM = 'premium',\n}\n\nexport interface MultiOpStatusInterface {\n total: number;\n successes: number;\n warnings: number;\n failures: number;\n message?: string;\n}\n"],"mappings":";;;;;;AAaA;AACA;AACA;AAYA;AACA;AACA;AAFA,
|
|
1
|
+
{"version":3,"file":"OpsTypes.js","names":["NodeClassification","JourneyClassification"],"sources":["ops/OpsTypes.ts"],"sourcesContent":["import {\n AgentSkeleton,\n AmServiceSkeleton,\n CircleOfTrustSkeleton,\n EmailTemplateSkeleton,\n NodeSkeleton,\n Saml2ProviderSkeleton,\n ScriptSkeleton,\n SocialIdpSkeleton,\n ThemeSkeleton,\n TreeSkeleton,\n} from '../api/ApiTypes';\n\n/**\n * Tree export options\n */\nexport interface TreeExportOptions {\n /**\n * Where applicable, use string arrays to store multi-line text (e.g. scripts).\n */\n useStringArrays: boolean;\n /**\n * Include any dependencies (scripts, email templates, SAML entity providers and circles of trust, social identity providers, themes).\n */\n deps: boolean;\n}\n\n/**\n * Tree import options\n */\nexport interface TreeImportOptions {\n /**\n * Generate new UUIDs for all nodes during import.\n */\n reUuid: boolean;\n /**\n * Include any dependencies (scripts, email templates, SAML entity providers and circles of trust, social identity providers, themes).\n */\n deps: boolean;\n}\n\nexport interface ExportMetaData {\n origin: string;\n originAmVersion: string;\n exportedBy: string;\n exportDate: string;\n exportTool: string;\n exportToolVersion: string;\n}\n\nexport interface SingleTreeExportInterface {\n meta?: ExportMetaData;\n innerNodes?: Record<string, NodeSkeleton>;\n innernodes?: Record<string, NodeSkeleton>;\n nodes: Record<string, NodeSkeleton>;\n scripts: Record<string, ScriptSkeleton>;\n emailTemplates: Record<string, EmailTemplateSkeleton>;\n socialIdentityProviders: Record<string, SocialIdpSkeleton>;\n themes: ThemeSkeleton[];\n saml2Entities: Record<string, Saml2ProviderSkeleton>;\n circlesOfTrust: Record<string, CircleOfTrustSkeleton>;\n tree: TreeSkeleton;\n}\n\nexport interface MultiTreeExportInterface {\n meta?: ExportMetaData;\n trees: Record<string, SingleTreeExportInterface>;\n}\n\nexport interface AgentExportInterface {\n meta?: Record<string, ExportMetaData>;\n agents: Record<string, AgentSkeleton>;\n}\n\nexport interface Saml2ExportInterface {\n meta?: ExportMetaData;\n script: Record<string, ScriptSkeleton>;\n saml: {\n hosted: Record<string, Saml2ProviderSkeleton>;\n remote: Record<string, Saml2ProviderSkeleton>;\n metadata: Record<string, string[]>;\n };\n}\n\nexport interface ServiceExportInterface {\n meta?: Record<string, ExportMetaData>;\n service: Record<string, AmServiceSkeleton>;\n}\n\nexport interface TreeDependencyMapInterface {\n [k: string]: TreeDependencyMapInterface[];\n}\n\nexport interface TreeExportResolverInterface {\n (treeId: string): Promise<SingleTreeExportInterface>;\n}\n\nexport interface ScriptExportInterface {\n meta?: ExportMetaData;\n script: Record<string, ScriptSkeleton>;\n}\n\nexport enum NodeClassification {\n STANDARD = 'standard',\n CUSTOM = 'custom',\n CLOUD = 'cloud',\n PREMIUM = 'premium',\n}\n\nexport enum JourneyClassification {\n STANDARD = 'standard',\n CUSTOM = 'custom',\n CLOUD = 'cloud',\n PREMIUM = 'premium',\n}\n\nexport interface MultiOpStatusInterface {\n total: number;\n successes: number;\n warnings: number;\n failures: number;\n message?: string;\n}\n"],"mappings":";;;;;;AAaA;AACA;AACA;AAYA;AACA;AACA;AAFA,IA2EYA,kBAAkB;AAAA;AAAA,WAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;AAAA,GAAlBA,kBAAkB,kCAAlBA,kBAAkB;AAAA,IAOlBC,qBAAqB;AAAA;AAAA,WAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;AAAA,GAArBA,qBAAqB,qCAArBA,qBAAqB"}
|
package/cjs/ops/Saml2Ops.js
CHANGED
|
@@ -336,6 +336,7 @@ function _importSaml2Provider() {
|
|
|
336
336
|
(0, _Console.debugMessage)("Saml2Ops.importSaml2Provider: start");
|
|
337
337
|
var entityId64 = (0, _Base.encode)(entityId, false);
|
|
338
338
|
var location = getLocation(entityId64, importData);
|
|
339
|
+
(0, _Console.debugMessage)("Saml2Ops.importSaml2Provider: entityId=".concat(entityId, ", entityId64=").concat(entityId64, ", location=").concat(location));
|
|
339
340
|
if (location) {
|
|
340
341
|
var providerData = importData.saml[location][entityId64];
|
|
341
342
|
yield importDependencies(providerData, importData);
|
|
@@ -343,7 +344,11 @@ function _importSaml2Provider() {
|
|
|
343
344
|
if (location === _ApiTypes.Saml2ProiderLocation.REMOTE) {
|
|
344
345
|
metaData = (0, _ExportImportUtils.convertTextArrayToBase64Url)(importData.saml.metadata[entityId64]);
|
|
345
346
|
}
|
|
346
|
-
|
|
347
|
+
try {
|
|
348
|
+
yield (0, _Saml2Api.createProvider)(location, providerData, metaData);
|
|
349
|
+
} catch (error) {
|
|
350
|
+
yield (0, _Saml2Api.updateProvider)(location, providerData);
|
|
351
|
+
}
|
|
347
352
|
} else {
|
|
348
353
|
throw new Error("Provider ".concat(entityId, " not found in import data!"));
|
|
349
354
|
}
|
|
@@ -375,7 +380,6 @@ function _importSaml2Providers() {
|
|
|
375
380
|
var remoteIds = Object.keys(importData.saml.remote);
|
|
376
381
|
var providerIds = hostedIds.concat(remoteIds);
|
|
377
382
|
myStatus.total = providerIds.length;
|
|
378
|
-
(0, _Console.createProgressIndicator)(providerIds.length, 'Importing providers...');
|
|
379
383
|
for (var entityId64 of providerIds) {
|
|
380
384
|
(0, _Console.debugMessage)("Saml2Ops.importSaml2Providers: entityId=".concat((0, _Base.decodeBase64Url)(entityId64)));
|
|
381
385
|
var location = hostedIds.includes(entityId64) ? _ApiTypes.Saml2ProiderLocation.HOSTED : _ApiTypes.Saml2ProiderLocation.REMOTE;
|
|
@@ -395,15 +399,19 @@ function _importSaml2Providers() {
|
|
|
395
399
|
try {
|
|
396
400
|
yield (0, _Saml2Api.createProvider)(location, providerData, metaData);
|
|
397
401
|
myStatus.successes += 1;
|
|
398
|
-
(0, _Console.updateProgressIndicator)("Imported ".concat(entityId));
|
|
399
402
|
} catch (createProviderErr) {
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
+
try {
|
|
404
|
+
yield (0, _Saml2Api.updateProvider)(location, providerData);
|
|
405
|
+
myStatus.successes += 1;
|
|
406
|
+
} catch (updateProviderError) {
|
|
407
|
+
var _updateProviderError$;
|
|
408
|
+
myStatus.failures += 1;
|
|
409
|
+
(0, _Console.printMessage)("\nError importing provider ".concat(entityId, ": ").concat(updateProviderError.message), 'error');
|
|
410
|
+
(0, _Console.printMessage)((_updateProviderError$ = updateProviderError.response) === null || _updateProviderError$ === void 0 ? void 0 : _updateProviderError$.data, 'error');
|
|
411
|
+
}
|
|
403
412
|
}
|
|
404
413
|
}
|
|
405
414
|
myStatus.message = "".concat(myStatus.successes, "/").concat(myStatus.total, " providers imported.");
|
|
406
|
-
(0, _Console.stopProgressIndicator)(myStatus.message);
|
|
407
415
|
} catch (error) {
|
|
408
416
|
myStatus.failures += 1;
|
|
409
417
|
(0, _Console.printMessage)("\nError importing providers ".concat(error.message), 'error');
|
package/cjs/ops/Saml2Ops.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Saml2Ops.js","names":["roleMap","identityProvider","serviceProvider","attributeQueryProvider","xacmlPolicyEnforcementPoint","createSaml2ExportTemplate","meta","getMetadata","script","saml","hosted","remote","metadata","getSaml2ProviderStubs","result","getProviders","getProviderByLocationAndId","location","entityId64","_getProviderByLocationAndId","getProviderMetadataUrl","entityId","_getProviderMetadataUrl","getProviderMetadata","_getProviderMetadata","exportDependencies","providerData","fileData","attrMapperScriptId","_","get","scriptData","getScript","convertBase64TextToArray","idpAdapterScriptId","metaDataResponse","_id","convertBase64UrlTextToArray","encodeBase64Url","getSaml2ProviderStub","debugMessage","found","findProviders","resultCount","Error","getSaml2Provider","stub","id","deleteSaml2Provider","deleteProviderByLocationAndId","deleteSaml2Providers","providers","stubs","provider","push","length","exportSaml2Provider","exportData","exportSaml2Providers","importDependencies","convertTextArrayToBase64","putScript","getLocation","data","Saml2ProiderLocation","HOSTED","REMOTE","undefined","importSaml2Provider","importData","encode","metaData","convertTextArrayToBase64Url","createProvider","importSaml2Providers","myStatus","total","successes","warnings","failures","hostedIds","Object","keys","remoteIds","providerIds","concat","createProgressIndicator","decodeBase64Url","includes","decode","importDependenciesErr","printMessage","response","updateProgressIndicator","createProviderErr","message","stopProgressIndicator","error","deleteRawSaml2Provider","deleteRawProvider","deleteRawSaml2Providers","applicationList","getRawSaml2Providers","deleteApplicationPromises","forEach","item","deleteApplicationResult","Promise","all","_getRawProviders","getRawSaml2Provider","_getRawProvider","putRawSaml2Provider","entityData","_putRawProvider"],"sources":["ops/Saml2Ops.ts"],"sourcesContent":["import _ from 'lodash';\nimport {\n Saml2ProiderLocation,\n Saml2ProviderSkeleton,\n Saml2ProviderStub,\n} from '../api/ApiTypes';\nimport {\n createProvider,\n deleteRawProvider,\n findProviders,\n getProviderByLocationAndId as _getProviderByLocationAndId,\n getProviderMetadata as _getProviderMetadata,\n getProviderMetadataUrl as _getProviderMetadataUrl,\n getRawProvider as _getRawProvider,\n getProviders,\n getRawProviders as _getRawProviders,\n putRawProvider as _putRawProvider,\n deleteProviderByLocationAndId,\n} from '../api/Saml2Api';\nimport { getScript } from '../api/ScriptApi';\nimport {\n decode,\n decodeBase64Url,\n encode,\n encodeBase64Url,\n} from '../api/utils/Base64';\nimport { MultiOpStatusInterface, Saml2ExportInterface } from './OpsTypes';\nimport { putScript } from './ScriptOps';\nimport {\n createProgressIndicator,\n debugMessage,\n printMessage,\n stopProgressIndicator,\n updateProgressIndicator,\n} from './utils/Console';\nimport {\n convertBase64TextToArray,\n convertBase64UrlTextToArray,\n convertTextArrayToBase64,\n convertTextArrayToBase64Url,\n getMetadata,\n} from './utils/ExportImportUtils';\n\nexport const roleMap = {\n identityProvider: 'IDP',\n serviceProvider: 'SP',\n attributeQueryProvider: 'AttrQuery',\n xacmlPolicyEnforcementPoint: 'XACML PEP',\n};\n\n// use a function vs a template variable to avoid problems in loops\nexport function createSaml2ExportTemplate(): Saml2ExportInterface {\n return {\n meta: getMetadata(),\n script: {},\n saml: {\n hosted: {},\n remote: {},\n metadata: {},\n },\n } as Saml2ExportInterface;\n}\n\n/**\n * Get SAML2 entity provider stubs\n * @returns {Promise<Saml2ProviderStub[]>} a promise that resolves to an array of saml2 entity stubs\n */\nexport async function getSaml2ProviderStubs(): Promise<Saml2ProviderStub[]> {\n const { result } = await getProviders();\n return result;\n}\n\n/**\n * Geta SAML2 entity provider by location and id\n * @param {string} location Entity provider location (hosted or remote)\n * @param {string} entityId64 Base64-encoded-without-padding provider entity id\n * @returns {Promise} a promise that resolves to a saml2 entity provider object\n */\nexport async function getProviderByLocationAndId(\n location: string,\n entityId64: string\n) {\n return _getProviderByLocationAndId(location, entityId64);\n}\n\n/**\n * Get a SAML2 entity provider's metadata URL by entity id\n * @param {string} entityId SAML2 entity id\n * @returns {string} the URL to get the metadata from\n */\nexport function getProviderMetadataUrl(entityId: string): string {\n return _getProviderMetadataUrl(entityId);\n}\n\n/**\n * Get a SAML2 entity provider's metadata by entity id\n * @param {string} entityId SAML2 entity id\n * @returns {Promise<object>} a promise that resolves to an object containing a SAML2 metadata\n */\nexport async function getProviderMetadata(entityId) {\n return _getProviderMetadata(entityId);\n}\n\n/**\n * Include dependencies in the export file\n * @param {object} providerData Object representing a SAML entity provider\n * @param {object} fileData File data object to add dependencies to\n */\nasync function exportDependencies(providerData, fileData) {\n const attrMapperScriptId = _.get(providerData, [\n 'identityProvider',\n 'assertionProcessing',\n 'attributeMapper',\n 'attributeMapperScript',\n ]);\n if (attrMapperScriptId && attrMapperScriptId !== '[Empty]') {\n const scriptData = await getScript(attrMapperScriptId);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n // eslint-disable-next-line no-param-reassign\n fileData.script[attrMapperScriptId] = scriptData;\n }\n const idpAdapterScriptId = _.get(providerData, [\n 'identityProvider',\n 'advanced',\n 'idpAdapter',\n 'idpAdapterScript',\n ]);\n if (idpAdapterScriptId && idpAdapterScriptId !== '[Empty]') {\n const scriptData = await getScript(idpAdapterScriptId);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n // eslint-disable-next-line no-param-reassign\n fileData.script[idpAdapterScriptId] = scriptData;\n }\n const metaDataResponse = await getProviderMetadata(providerData.entityId);\n // eslint-disable-next-line no-param-reassign\n fileData.saml.metadata[providerData._id] = convertBase64UrlTextToArray(\n encodeBase64Url(metaDataResponse)\n );\n}\n\n/**\n *\n * @param {string} entityId Provider entity id\n * @returns {Promise<Saml2ProviderStub>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function getSaml2ProviderStub(\n entityId: string\n): Promise<Saml2ProviderStub> {\n debugMessage(`Saml2Ops.getSaml2ProviderStub: start [entityId=${entityId}]`);\n const found = await findProviders(`entityId eq '${entityId}'`);\n switch (found.resultCount) {\n case 0:\n throw new Error(`No provider with entity id '${entityId}' found`);\n case 1: {\n debugMessage(`Saml2Ops.getSaml2ProviderStub: end [entityId=${entityId}]`);\n return found.result[0];\n }\n default:\n throw new Error(`Multiple providers with entity id '${entityId}' found`);\n }\n}\n\n/**\n * Export a single entity provider. The response can be saved to file as is.\n * @param {string} entityId Provider entity id\n * @returns {Promise<Saml2ProviderSkeleton>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function getSaml2Provider(\n entityId: string\n): Promise<Saml2ProviderSkeleton> {\n debugMessage(`Saml2Ops.getSaml2Provider: start [entityId=${entityId}]`);\n const stub = await getSaml2ProviderStub(entityId);\n const { location } = stub;\n const id = stub._id;\n const providerData = await getProviderByLocationAndId(location, id);\n debugMessage(`Saml2Ops.getSaml2Provider: end [entityId=${entityId}]`);\n return providerData;\n}\n\n/**\n * Delete an entity provider. The response can be saved to file as is.\n * @param {string} entityId Provider entity id\n * @returns {Promise<Saml2ProviderSkeleton>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function deleteSaml2Provider(\n entityId: string\n): Promise<Saml2ProviderSkeleton> {\n debugMessage(`Saml2Ops.deleteSaml2Provider: start [entityId=${entityId}]`);\n const stub = await getSaml2ProviderStub(entityId);\n const { location } = stub;\n const id = stub._id;\n const providerData = await deleteProviderByLocationAndId(location, id);\n debugMessage(`Saml2Ops.deleteSaml2Provider: end [entityId=${entityId}]`);\n return providerData;\n}\n\n/**\n * Delete all entity providers.\n * @returns {Promise<Saml2ProviderSkeleton[]>} Promise resolving to an array of Saml2ProviderSkeleton objects.\n */\nexport async function deleteSaml2Providers(): Promise<Saml2ProviderSkeleton[]> {\n debugMessage(`Saml2Ops.deleteSaml2Providers: start`);\n const providers: Saml2ProviderSkeleton[] = [];\n const stubs = await getSaml2ProviderStubs();\n for (const stub of stubs) {\n const provider = await deleteProviderByLocationAndId(\n stub.location,\n stub._id\n );\n providers.push(provider);\n }\n debugMessage(\n `Saml2Ops.deleteSaml2Providers: end [deleted ${providers.length} providers]`\n );\n return providers;\n}\n\n/**\n * Export a single entity provider. The response can be saved to file as is.\n * @param {string} entityId Provider entity id\n * @returns {Promise<Saml2ExportInterface>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function exportSaml2Provider(\n entityId: string\n): Promise<Saml2ExportInterface> {\n debugMessage(`Saml2Ops.exportSaml2Provider: start [entityId=${entityId}]`);\n const exportData = createSaml2ExportTemplate();\n const stub = await getSaml2ProviderStub(entityId);\n const { location } = stub;\n const id = stub._id;\n const providerData = await getProviderByLocationAndId(location, id);\n exportData.saml[stub.location][providerData._id] = providerData;\n await exportDependencies(providerData, exportData);\n debugMessage(`Saml2Ops.exportSaml2Provider: end [entityId=${entityId}]`);\n return exportData;\n}\n\n/**\n * Export all entity providers. The response can be saved to file as is.\n * @returns {Promise<Saml2ExportInterface>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function exportSaml2Providers(): Promise<Saml2ExportInterface> {\n const fileData = createSaml2ExportTemplate();\n const stubs = await getSaml2ProviderStubs();\n for (const stub of stubs) {\n const providerData = await getProviderByLocationAndId(\n stub.location,\n stub._id\n );\n await exportDependencies(providerData, fileData);\n fileData.saml[stub.location][providerData._id] = providerData;\n }\n return fileData;\n}\n\n/**\n * Include dependencies from the import file\n * @param {object} providerData Object representing a SAML entity provider\n * @param {object} fileData File data object to read dependencies from\n */\nasync function importDependencies(providerData, fileData) {\n debugMessage(`Saml2Ops.importDependencies: start`);\n const attrMapperScriptId = _.get(providerData, [\n 'identityProvider',\n 'assertionProcessing',\n 'attributeMapper',\n 'attributeMapperScript',\n ]);\n if (attrMapperScriptId && attrMapperScriptId !== '[Empty]') {\n debugMessage(\n `Saml2Ops.importDependencies: attributeMapperScript=${attrMapperScriptId}`\n );\n const scriptData = _.get(fileData, ['script', attrMapperScriptId]);\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n await putScript(attrMapperScriptId, scriptData);\n }\n const idpAdapterScriptId = _.get(providerData, [\n 'identityProvider',\n 'advanced',\n 'idpAdapter',\n 'idpAdapterScript',\n ]);\n if (idpAdapterScriptId && idpAdapterScriptId !== '[Empty]') {\n debugMessage(\n `Saml2Ops.importDependencies: idpAdapterScript=${idpAdapterScriptId}`\n );\n const scriptData = _.get(fileData, ['script', idpAdapterScriptId]);\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n await putScript(idpAdapterScriptId, scriptData);\n }\n debugMessage(`Saml2Ops.importDependencies: end`);\n}\n\n/**\n * Find provider in import file and return its location\n * @param {string} entityId64 Base64-encoded provider entity id\n * @param {Saml2ExportInterface} data Import file json data\n * @returns {string} 'hosted' or 'remote' if found, undefined otherwise\n */\nfunction getLocation(\n entityId64: string,\n data: Saml2ExportInterface\n): Saml2ProiderLocation {\n if (data.saml.hosted[entityId64]) {\n return Saml2ProiderLocation.HOSTED;\n }\n if (data.saml.remote[entityId64]) {\n return Saml2ProiderLocation.REMOTE;\n }\n return undefined;\n}\n\n/**\n * Import a SAML entity provider\n * @param {string} entityId Provider entity id\n * @param {Saml2ExportInterface} importData Import data\n */\nexport async function importSaml2Provider(\n entityId: string,\n importData: Saml2ExportInterface\n): Promise<boolean> {\n debugMessage(`Saml2Ops.importSaml2Provider: start`);\n const entityId64 = encode(entityId, false);\n const location = getLocation(entityId64, importData);\n if (location) {\n const providerData = importData.saml[location][entityId64];\n await importDependencies(providerData, importData);\n let metaData = null;\n if (location === Saml2ProiderLocation.REMOTE) {\n metaData = convertTextArrayToBase64Url(\n importData.saml.metadata[entityId64]\n );\n }\n await createProvider(location, providerData, metaData);\n } else {\n throw new Error(`Provider ${entityId} not found in import data!`);\n }\n debugMessage(`Saml2Ops.importSaml2Provider: end`);\n return true;\n}\n\n/**\n * Import SAML entity providers\n * @param {Saml2ExportInterface} importData Import data\n */\nexport async function importSaml2Providers(\n importData: Saml2ExportInterface\n): Promise<MultiOpStatusInterface> {\n debugMessage(`Saml2Ops.importSaml2Providers: start`);\n const myStatus: MultiOpStatusInterface = {\n total: 0,\n successes: 0,\n warnings: 0,\n failures: 0,\n };\n try {\n // find providers in hosted and in remote and map locations\n const hostedIds = Object.keys(importData.saml.hosted);\n const remoteIds = Object.keys(importData.saml.remote);\n const providerIds = hostedIds.concat(remoteIds);\n myStatus.total = providerIds.length;\n createProgressIndicator(providerIds.length, 'Importing providers...');\n for (const entityId64 of providerIds) {\n debugMessage(\n `Saml2Ops.importSaml2Providers: entityId=${decodeBase64Url(entityId64)}`\n );\n const location = hostedIds.includes(entityId64)\n ? Saml2ProiderLocation.HOSTED\n : Saml2ProiderLocation.REMOTE;\n const entityId = decode(entityId64);\n const providerData = importData.saml[location][entityId64];\n try {\n await importDependencies(providerData, importData);\n } catch (importDependenciesErr) {\n myStatus.warnings += 1;\n printMessage(\n `\\nWarning importing dependencies for ${entityId}`,\n 'warn'\n );\n printMessage(importDependenciesErr.response.data, 'error');\n }\n let metaData = null;\n if (location === Saml2ProiderLocation.REMOTE) {\n metaData = convertTextArrayToBase64Url(\n importData.saml.metadata[entityId64]\n );\n }\n try {\n await createProvider(location, providerData, metaData);\n myStatus.successes += 1;\n updateProgressIndicator(`Imported ${entityId}`);\n } catch (createProviderErr) {\n myStatus.failures += 1;\n printMessage(`\\nError importing provider ${entityId}`, 'error');\n printMessage(createProviderErr, 'error');\n }\n }\n myStatus.message = `${myStatus.successes}/${myStatus.total} providers imported.`;\n stopProgressIndicator(myStatus.message);\n } catch (error) {\n myStatus.failures += 1;\n printMessage(`\\nError importing providers ${error.message}`, 'error');\n }\n debugMessage(`Saml2Ops.importSaml2Providers: end`);\n return myStatus;\n}\n\n// Contributions using legacy APIs. Need to investigate if those will be deprecated in the future\n\n/**\n * Deletes entity provider\n * @param {string} entityId The entity id for the entity to be deleted\n * @returns {Promise<Saml2ProviderSkeleton>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function deleteRawSaml2Provider(\n entityId: string\n): Promise<Saml2ProviderSkeleton> {\n debugMessage(`Saml2Ops.deleteSaml2Provider: start [entityId=${entityId}]`);\n const response = await deleteRawProvider(entityId);\n debugMessage(`Saml2Ops.deleteSaml2Provider: end [entityId=${entityId}]`);\n return response;\n}\n\n/**\n * Deletes all entity providers.\n */\nexport async function deleteRawSaml2Providers(): Promise<\n Saml2ProviderSkeleton[]\n> {\n const applicationList = (await getRawSaml2Providers()).result;\n const deleteApplicationPromises = [];\n applicationList.forEach((item) => {\n printMessage(`Deleting Application ${item._id}`, 'error');\n deleteApplicationPromises.push(deleteRawProvider(item._id));\n });\n const deleteApplicationResult = await Promise.all(deleteApplicationPromises);\n if (deleteApplicationResult.length == applicationList.length) {\n printMessage('SAML Entity cleanup done', 'info');\n }\n return deleteApplicationResult;\n}\n\n/**\n * Retrieves all entity providers using the legacy federation enpoints.\n * @returns {Promise} a promise that resolves to an object containing an array of providers\n */\nexport async function getRawSaml2Providers() {\n return _getRawProviders();\n}\n\n/**\n * Retrieves all entity providers using the legacy federation enpoints.\n * @param {string} entityId The entity provider id\n * @returns {Promise} a promise that resolves to an object containing an array of providers\n */\nexport async function getRawSaml2Provider(entityId: string) {\n return _getRawProvider(entityId);\n}\n\n/**\n * Stores a new SAML2 entity provider\n * @param {string} entityId The entity provider id\n * @param {string} entityData The actual data containing the entity provider configuration\n * @returns {Promise} Promise that resolves to a provider object\n */\nexport async function putRawSaml2Provider(entityId: string, entityData) {\n return _putRawProvider(entityId, entityData);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AAKA;AAaA;AACA;AAOA;AACA;AAOA;AAMmC;AAAA;AAAA;AAE5B,IAAMA,OAAO,GAAG;EACrBC,gBAAgB,EAAE,KAAK;EACvBC,eAAe,EAAE,IAAI;EACrBC,sBAAsB,EAAE,WAAW;EACnCC,2BAA2B,EAAE;AAC/B,CAAC;;AAED;AAAA;AACO,SAASC,yBAAyB,GAAyB;EAChE,OAAO;IACLC,IAAI,EAAE,IAAAC,8BAAW,GAAE;IACnBC,MAAM,EAAE,CAAC,CAAC;IACVC,IAAI,EAAE;MACJC,MAAM,EAAE,CAAC,CAAC;MACVC,MAAM,EAAE,CAAC,CAAC;MACVC,QAAQ,EAAE,CAAC;IACb;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AAHA,SAIsBC,qBAAqB;EAAA;AAAA;AAK3C;AACA;AACA;AACA;AACA;AACA;AALA;EAAA,2CALO,aAAqE;IAC1E,IAAM;MAAEC;IAAO,CAAC,SAAS,IAAAC,sBAAY,GAAE;IACvC,OAAOD,MAAM;EACf,CAAC;EAAA;AAAA;AAAA,SAQqBE,0BAA0B;EAAA;AAAA;AAOhD;AACA;AACA;AACA;AACA;AAJA;EAAA,iDAPO,WACLC,QAAgB,EAChBC,UAAkB,EAClB;IACA,OAAO,IAAAC,oCAA2B,EAACF,QAAQ,EAAEC,UAAU,CAAC;EAC1D,CAAC;EAAA;AAAA;AAOM,SAASE,sBAAsB,CAACC,QAAgB,EAAU;EAC/D,OAAO,IAAAC,gCAAuB,EAACD,QAAQ,CAAC;AAC1C;;AAEA;AACA;AACA;AACA;AACA;AAJA,SAKsBE,mBAAmB;EAAA;AAAA;AAIzC;AACA;AACA;AACA;AACA;AAJA;EAAA,0CAJO,WAAmCF,QAAQ,EAAE;IAClD,OAAO,IAAAG,6BAAoB,EAACH,QAAQ,CAAC;EACvC,CAAC;EAAA;AAAA;AAAA,SAOcI,kBAAkB;EAAA;AAAA;AAgCjC;AACA;AACA;AACA;AACA;AAJA;EAAA,wCAhCA,WAAkCC,YAAY,EAAEC,QAAQ,EAAE;IACxD,IAAMC,kBAAkB,GAAGC,eAAC,CAACC,GAAG,CAACJ,YAAY,EAAE,CAC7C,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,CACxB,CAAC;IACF,IAAIE,kBAAkB,IAAIA,kBAAkB,KAAK,SAAS,EAAE;MAC1D,IAAMG,UAAU,SAAS,IAAAC,oBAAS,EAACJ,kBAAkB,CAAC;MACtDG,UAAU,CAACvB,MAAM,GAAG,IAAAyB,2CAAwB,EAACF,UAAU,CAACvB,MAAM,CAAC;MAC/D;MACAmB,QAAQ,CAACnB,MAAM,CAACoB,kBAAkB,CAAC,GAAGG,UAAU;IAClD;IACA,IAAMG,kBAAkB,GAAGL,eAAC,CAACC,GAAG,CAACJ,YAAY,EAAE,CAC7C,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,kBAAkB,CACnB,CAAC;IACF,IAAIQ,kBAAkB,IAAIA,kBAAkB,KAAK,SAAS,EAAE;MAC1D,IAAMH,WAAU,SAAS,IAAAC,oBAAS,EAACE,kBAAkB,CAAC;MACtDH,WAAU,CAACvB,MAAM,GAAG,IAAAyB,2CAAwB,EAACF,WAAU,CAACvB,MAAM,CAAC;MAC/D;MACAmB,QAAQ,CAACnB,MAAM,CAAC0B,kBAAkB,CAAC,GAAGH,WAAU;IAClD;IACA,IAAMI,gBAAgB,SAASZ,mBAAmB,CAACG,YAAY,CAACL,QAAQ,CAAC;IACzE;IACAM,QAAQ,CAAClB,IAAI,CAACG,QAAQ,CAACc,YAAY,CAACU,GAAG,CAAC,GAAG,IAAAC,8CAA2B,EACpE,IAAAC,qBAAe,EAACH,gBAAgB,CAAC,CAClC;EACH,CAAC;EAAA;AAAA;AAAA,SAOqBI,oBAAoB;EAAA;AAAA;AAiB1C;AACA;AACA;AACA;AACA;AAJA;EAAA,0CAjBO,WACLlB,QAAgB,EACY;IAC5B,IAAAmB,qBAAY,2DAAmDnB,QAAQ,OAAI;IAC3E,IAAMoB,KAAK,SAAS,IAAAC,uBAAa,yBAAiBrB,QAAQ,OAAI;IAC9D,QAAQoB,KAAK,CAACE,WAAW;MACvB,KAAK,CAAC;QACJ,MAAM,IAAIC,KAAK,uCAAgCvB,QAAQ,aAAU;MACnE,KAAK,CAAC;QAAE;UACN,IAAAmB,qBAAY,yDAAiDnB,QAAQ,OAAI;UACzE,OAAOoB,KAAK,CAAC3B,MAAM,CAAC,CAAC,CAAC;QACxB;MACA;QACE,MAAM,IAAI8B,KAAK,8CAAuCvB,QAAQ,aAAU;IAAC;EAE/E,CAAC;EAAA;AAAA;AAAA,SAOqBwB,gBAAgB;EAAA;AAAA;AAYtC;AACA;AACA;AACA;AACA;AAJA;EAAA,sCAZO,WACLxB,QAAgB,EACgB;IAChC,IAAAmB,qBAAY,uDAA+CnB,QAAQ,OAAI;IACvE,IAAMyB,IAAI,SAASP,oBAAoB,CAAClB,QAAQ,CAAC;IACjD,IAAM;MAAEJ;IAAS,CAAC,GAAG6B,IAAI;IACzB,IAAMC,EAAE,GAAGD,IAAI,CAACV,GAAG;IACnB,IAAMV,YAAY,SAASV,0BAA0B,CAACC,QAAQ,EAAE8B,EAAE,CAAC;IACnE,IAAAP,qBAAY,qDAA6CnB,QAAQ,OAAI;IACrE,OAAOK,YAAY;EACrB,CAAC;EAAA;AAAA;AAAA,SAOqBsB,mBAAmB;EAAA;AAAA;AAYzC;AACA;AACA;AACA;AAHA;EAAA,yCAZO,WACL3B,QAAgB,EACgB;IAChC,IAAAmB,qBAAY,0DAAkDnB,QAAQ,OAAI;IAC1E,IAAMyB,IAAI,SAASP,oBAAoB,CAAClB,QAAQ,CAAC;IACjD,IAAM;MAAEJ;IAAS,CAAC,GAAG6B,IAAI;IACzB,IAAMC,EAAE,GAAGD,IAAI,CAACV,GAAG;IACnB,IAAMV,YAAY,SAAS,IAAAuB,uCAA6B,EAAChC,QAAQ,EAAE8B,EAAE,CAAC;IACtE,IAAAP,qBAAY,wDAAgDnB,QAAQ,OAAI;IACxE,OAAOK,YAAY;EACrB,CAAC;EAAA;AAAA;AAAA,SAMqBwB,oBAAoB;EAAA;AAAA;AAiB1C;AACA;AACA;AACA;AACA;AAJA;EAAA,0CAjBO,aAAwE;IAC7E,IAAAV,qBAAY,yCAAwC;IACpD,IAAMW,SAAkC,GAAG,EAAE;IAC7C,IAAMC,KAAK,SAASvC,qBAAqB,EAAE;IAC3C,KAAK,IAAMiC,IAAI,IAAIM,KAAK,EAAE;MACxB,IAAMC,QAAQ,SAAS,IAAAJ,uCAA6B,EAClDH,IAAI,CAAC7B,QAAQ,EACb6B,IAAI,CAACV,GAAG,CACT;MACDe,SAAS,CAACG,IAAI,CAACD,QAAQ,CAAC;IAC1B;IACA,IAAAb,qBAAY,wDACqCW,SAAS,CAACI,MAAM,iBAChE;IACD,OAAOJ,SAAS;EAClB,CAAC;EAAA;AAAA;AAAA,SAOqBK,mBAAmB;EAAA;AAAA;AAezC;AACA;AACA;AACA;AAHA;EAAA,yCAfO,WACLnC,QAAgB,EACe;IAC/B,IAAAmB,qBAAY,0DAAkDnB,QAAQ,OAAI;IAC1E,IAAMoC,UAAU,GAAGpD,yBAAyB,EAAE;IAC9C,IAAMyC,IAAI,SAASP,oBAAoB,CAAClB,QAAQ,CAAC;IACjD,IAAM;MAAEJ;IAAS,CAAC,GAAG6B,IAAI;IACzB,IAAMC,EAAE,GAAGD,IAAI,CAACV,GAAG;IACnB,IAAMV,YAAY,SAASV,0BAA0B,CAACC,QAAQ,EAAE8B,EAAE,CAAC;IACnEU,UAAU,CAAChD,IAAI,CAACqC,IAAI,CAAC7B,QAAQ,CAAC,CAACS,YAAY,CAACU,GAAG,CAAC,GAAGV,YAAY;IAC/D,MAAMD,kBAAkB,CAACC,YAAY,EAAE+B,UAAU,CAAC;IAClD,IAAAjB,qBAAY,wDAAgDnB,QAAQ,OAAI;IACxE,OAAOoC,UAAU;EACnB,CAAC;EAAA;AAAA;AAAA,SAMqBC,oBAAoB;EAAA;AAAA;AAc1C;AACA;AACA;AACA;AACA;AAJA;EAAA,0CAdO,aAAqE;IAC1E,IAAM/B,QAAQ,GAAGtB,yBAAyB,EAAE;IAC5C,IAAM+C,KAAK,SAASvC,qBAAqB,EAAE;IAC3C,KAAK,IAAMiC,IAAI,IAAIM,KAAK,EAAE;MACxB,IAAM1B,YAAY,SAASV,0BAA0B,CACnD8B,IAAI,CAAC7B,QAAQ,EACb6B,IAAI,CAACV,GAAG,CACT;MACD,MAAMX,kBAAkB,CAACC,YAAY,EAAEC,QAAQ,CAAC;MAChDA,QAAQ,CAAClB,IAAI,CAACqC,IAAI,CAAC7B,QAAQ,CAAC,CAACS,YAAY,CAACU,GAAG,CAAC,GAAGV,YAAY;IAC/D;IACA,OAAOC,QAAQ;EACjB,CAAC;EAAA;AAAA;AAAA,SAOcgC,kBAAkB;EAAA;AAAA;AAiCjC;AACA;AACA;AACA;AACA;AACA;AALA;EAAA,wCAjCA,WAAkCjC,YAAY,EAAEC,QAAQ,EAAE;IACxD,IAAAa,qBAAY,uCAAsC;IAClD,IAAMZ,kBAAkB,GAAGC,eAAC,CAACC,GAAG,CAACJ,YAAY,EAAE,CAC7C,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,CACxB,CAAC;IACF,IAAIE,kBAAkB,IAAIA,kBAAkB,KAAK,SAAS,EAAE;MAC1D,IAAAY,qBAAY,+DAC4CZ,kBAAkB,EACzE;MACD,IAAMG,UAAU,GAAGF,eAAC,CAACC,GAAG,CAACH,QAAQ,EAAE,CAAC,QAAQ,EAAEC,kBAAkB,CAAC,CAAC;MAClEG,UAAU,CAACvB,MAAM,GAAG,IAAAoD,2CAAwB,EAAC7B,UAAU,CAACvB,MAAM,CAAC;MAC/D,MAAM,IAAAqD,oBAAS,EAACjC,kBAAkB,EAAEG,UAAU,CAAC;IACjD;IACA,IAAMG,kBAAkB,GAAGL,eAAC,CAACC,GAAG,CAACJ,YAAY,EAAE,CAC7C,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,kBAAkB,CACnB,CAAC;IACF,IAAIQ,kBAAkB,IAAIA,kBAAkB,KAAK,SAAS,EAAE;MAC1D,IAAAM,qBAAY,0DACuCN,kBAAkB,EACpE;MACD,IAAMH,YAAU,GAAGF,eAAC,CAACC,GAAG,CAACH,QAAQ,EAAE,CAAC,QAAQ,EAAEO,kBAAkB,CAAC,CAAC;MAClEH,YAAU,CAACvB,MAAM,GAAG,IAAAoD,2CAAwB,EAAC7B,YAAU,CAACvB,MAAM,CAAC;MAC/D,MAAM,IAAAqD,oBAAS,EAAC3B,kBAAkB,EAAEH,YAAU,CAAC;IACjD;IACA,IAAAS,qBAAY,qCAAoC;EAClD,CAAC;EAAA;AAAA;AAQD,SAASsB,WAAW,CAClB5C,UAAkB,EAClB6C,IAA0B,EACJ;EACtB,IAAIA,IAAI,CAACtD,IAAI,CAACC,MAAM,CAACQ,UAAU,CAAC,EAAE;IAChC,OAAO8C,8BAAoB,CAACC,MAAM;EACpC;EACA,IAAIF,IAAI,CAACtD,IAAI,CAACE,MAAM,CAACO,UAAU,CAAC,EAAE;IAChC,OAAO8C,8BAAoB,CAACE,MAAM;EACpC;EACA,OAAOC,SAAS;AAClB;;AAEA;AACA;AACA;AACA;AACA;AAJA,SAKsBC,mBAAmB;EAAA;AAAA;AAwBzC;AACA;AACA;AACA;AAHA;EAAA,yCAxBO,WACL/C,QAAgB,EAChBgD,UAAgC,EACd;IAClB,IAAA7B,qBAAY,wCAAuC;IACnD,IAAMtB,UAAU,GAAG,IAAAoD,YAAM,EAACjD,QAAQ,EAAE,KAAK,CAAC;IAC1C,IAAMJ,QAAQ,GAAG6C,WAAW,CAAC5C,UAAU,EAAEmD,UAAU,CAAC;IACpD,IAAIpD,QAAQ,EAAE;MACZ,IAAMS,YAAY,GAAG2C,UAAU,CAAC5D,IAAI,CAACQ,QAAQ,CAAC,CAACC,UAAU,CAAC;MAC1D,MAAMyC,kBAAkB,CAACjC,YAAY,EAAE2C,UAAU,CAAC;MAClD,IAAIE,QAAQ,GAAG,IAAI;MACnB,IAAItD,QAAQ,KAAK+C,8BAAoB,CAACE,MAAM,EAAE;QAC5CK,QAAQ,GAAG,IAAAC,8CAA2B,EACpCH,UAAU,CAAC5D,IAAI,CAACG,QAAQ,CAACM,UAAU,CAAC,CACrC;MACH;MACA,MAAM,IAAAuD,wBAAc,EAACxD,QAAQ,EAAES,YAAY,EAAE6C,QAAQ,CAAC;IACxD,CAAC,MAAM;MACL,MAAM,IAAI3B,KAAK,oBAAavB,QAAQ,gCAA6B;IACnE;IACA,IAAAmB,qBAAY,sCAAqC;IACjD,OAAO,IAAI;EACb,CAAC;EAAA;AAAA;AAAA,SAMqBkC,oBAAoB;EAAA;AAAA,EA8D1C;AAEA;AACA;AACA;AACA;AACA;AAJA;EAAA,0CAhEO,WACLL,UAAgC,EACC;IACjC,IAAA7B,qBAAY,yCAAwC;IACpD,IAAMmC,QAAgC,GAAG;MACvCC,KAAK,EAAE,CAAC;MACRC,SAAS,EAAE,CAAC;MACZC,QAAQ,EAAE,CAAC;MACXC,QAAQ,EAAE;IACZ,CAAC;IACD,IAAI;MACF;MACA,IAAMC,SAAS,GAAGC,MAAM,CAACC,IAAI,CAACb,UAAU,CAAC5D,IAAI,CAACC,MAAM,CAAC;MACrD,IAAMyE,SAAS,GAAGF,MAAM,CAACC,IAAI,CAACb,UAAU,CAAC5D,IAAI,CAACE,MAAM,CAAC;MACrD,IAAMyE,WAAW,GAAGJ,SAAS,CAACK,MAAM,CAACF,SAAS,CAAC;MAC/CR,QAAQ,CAACC,KAAK,GAAGQ,WAAW,CAAC7B,MAAM;MACnC,IAAA+B,gCAAuB,EAACF,WAAW,CAAC7B,MAAM,EAAE,wBAAwB,CAAC;MACrE,KAAK,IAAMrC,UAAU,IAAIkE,WAAW,EAAE;QACpC,IAAA5C,qBAAY,oDACiC,IAAA+C,qBAAe,EAACrE,UAAU,CAAC,EACvE;QACD,IAAMD,QAAQ,GAAG+D,SAAS,CAACQ,QAAQ,CAACtE,UAAU,CAAC,GAC3C8C,8BAAoB,CAACC,MAAM,GAC3BD,8BAAoB,CAACE,MAAM;QAC/B,IAAM7C,QAAQ,GAAG,IAAAoE,YAAM,EAACvE,UAAU,CAAC;QACnC,IAAMQ,YAAY,GAAG2C,UAAU,CAAC5D,IAAI,CAACQ,QAAQ,CAAC,CAACC,UAAU,CAAC;QAC1D,IAAI;UACF,MAAMyC,kBAAkB,CAACjC,YAAY,EAAE2C,UAAU,CAAC;QACpD,CAAC,CAAC,OAAOqB,qBAAqB,EAAE;UAC9Bf,QAAQ,CAACG,QAAQ,IAAI,CAAC;UACtB,IAAAa,qBAAY,iDAC8BtE,QAAQ,GAChD,MAAM,CACP;UACD,IAAAsE,qBAAY,EAACD,qBAAqB,CAACE,QAAQ,CAAC7B,IAAI,EAAE,OAAO,CAAC;QAC5D;QACA,IAAIQ,QAAQ,GAAG,IAAI;QACnB,IAAItD,QAAQ,KAAK+C,8BAAoB,CAACE,MAAM,EAAE;UAC5CK,QAAQ,GAAG,IAAAC,8CAA2B,EACpCH,UAAU,CAAC5D,IAAI,CAACG,QAAQ,CAACM,UAAU,CAAC,CACrC;QACH;QACA,IAAI;UACF,MAAM,IAAAuD,wBAAc,EAACxD,QAAQ,EAAES,YAAY,EAAE6C,QAAQ,CAAC;UACtDI,QAAQ,CAACE,SAAS,IAAI,CAAC;UACvB,IAAAgB,gCAAuB,qBAAaxE,QAAQ,EAAG;QACjD,CAAC,CAAC,OAAOyE,iBAAiB,EAAE;UAC1BnB,QAAQ,CAACI,QAAQ,IAAI,CAAC;UACtB,IAAAY,qBAAY,uCAA+BtE,QAAQ,GAAI,OAAO,CAAC;UAC/D,IAAAsE,qBAAY,EAACG,iBAAiB,EAAE,OAAO,CAAC;QAC1C;MACF;MACAnB,QAAQ,CAACoB,OAAO,aAAMpB,QAAQ,CAACE,SAAS,cAAIF,QAAQ,CAACC,KAAK,yBAAsB;MAChF,IAAAoB,8BAAqB,EAACrB,QAAQ,CAACoB,OAAO,CAAC;IACzC,CAAC,CAAC,OAAOE,KAAK,EAAE;MACdtB,QAAQ,CAACI,QAAQ,IAAI,CAAC;MACtB,IAAAY,qBAAY,wCAAgCM,KAAK,CAACF,OAAO,GAAI,OAAO,CAAC;IACvE;IACA,IAAAvD,qBAAY,uCAAsC;IAClD,OAAOmC,QAAQ;EACjB,CAAC;EAAA;AAAA;AAAA,SASqBuB,sBAAsB;EAAA;AAAA;AAS5C;AACA;AACA;AAFA;EAAA,4CATO,WACL7E,QAAgB,EACgB;IAChC,IAAAmB,qBAAY,0DAAkDnB,QAAQ,OAAI;IAC1E,IAAMuE,QAAQ,SAAS,IAAAO,2BAAiB,EAAC9E,QAAQ,CAAC;IAClD,IAAAmB,qBAAY,wDAAgDnB,QAAQ,OAAI;IACxE,OAAOuE,QAAQ;EACjB,CAAC;EAAA;AAAA;AAAA,SAKqBQ,uBAAuB;EAAA;AAAA;AAgB7C;AACA;AACA;AACA;AAHA;EAAA,6CAhBO,aAEL;IACA,IAAMC,eAAe,GAAG,OAAOC,oBAAoB,EAAE,EAAExF,MAAM;IAC7D,IAAMyF,yBAAyB,GAAG,EAAE;IACpCF,eAAe,CAACG,OAAO,CAAEC,IAAI,IAAK;MAChC,IAAAd,qBAAY,iCAAyBc,IAAI,CAACrE,GAAG,GAAI,OAAO,CAAC;MACzDmE,yBAAyB,CAACjD,IAAI,CAAC,IAAA6C,2BAAiB,EAACM,IAAI,CAACrE,GAAG,CAAC,CAAC;IAC7D,CAAC,CAAC;IACF,IAAMsE,uBAAuB,SAASC,OAAO,CAACC,GAAG,CAACL,yBAAyB,CAAC;IAC5E,IAAIG,uBAAuB,CAACnD,MAAM,IAAI8C,eAAe,CAAC9C,MAAM,EAAE;MAC5D,IAAAoC,qBAAY,EAAC,0BAA0B,EAAE,MAAM,CAAC;IAClD;IACA,OAAOe,uBAAuB;EAChC,CAAC;EAAA;AAAA;AAAA,SAMqBJ,oBAAoB;EAAA;AAAA;AAI1C;AACA;AACA;AACA;AACA;AAJA;EAAA,0CAJO,aAAsC;IAC3C,OAAO,IAAAO,yBAAgB,GAAE;EAC3B,CAAC;EAAA;AAAA;AAAA,SAOqBC,mBAAmB;EAAA;AAAA;AAIzC;AACA;AACA;AACA;AACA;AACA;AALA;EAAA,yCAJO,WAAmCzF,QAAgB,EAAE;IAC1D,OAAO,IAAA0F,wBAAe,EAAC1F,QAAQ,CAAC;EAClC,CAAC;EAAA;AAAA;AAAA,SAQqB2F,mBAAmB;EAAA;AAAA;AAAA;EAAA,yCAAlC,WAAmC3F,QAAgB,EAAE4F,UAAU,EAAE;IACtE,OAAO,IAAAC,wBAAe,EAAC7F,QAAQ,EAAE4F,UAAU,CAAC;EAC9C,CAAC;EAAA;AAAA"}
|
|
1
|
+
{"version":3,"file":"Saml2Ops.js","names":["roleMap","identityProvider","serviceProvider","attributeQueryProvider","xacmlPolicyEnforcementPoint","createSaml2ExportTemplate","meta","getMetadata","script","saml","hosted","remote","metadata","getSaml2ProviderStubs","result","getProviders","getProviderByLocationAndId","location","entityId64","_getProviderByLocationAndId","getProviderMetadataUrl","entityId","_getProviderMetadataUrl","getProviderMetadata","_getProviderMetadata","exportDependencies","providerData","fileData","attrMapperScriptId","_","get","scriptData","getScript","convertBase64TextToArray","idpAdapterScriptId","metaDataResponse","_id","convertBase64UrlTextToArray","encodeBase64Url","getSaml2ProviderStub","debugMessage","found","findProviders","resultCount","Error","getSaml2Provider","stub","id","deleteSaml2Provider","deleteProviderByLocationAndId","deleteSaml2Providers","providers","stubs","provider","push","length","exportSaml2Provider","exportData","exportSaml2Providers","importDependencies","convertTextArrayToBase64","putScript","getLocation","data","Saml2ProiderLocation","HOSTED","REMOTE","undefined","importSaml2Provider","importData","encode","metaData","convertTextArrayToBase64Url","createProvider","error","updateProvider","importSaml2Providers","myStatus","total","successes","warnings","failures","hostedIds","Object","keys","remoteIds","providerIds","concat","decodeBase64Url","includes","decode","importDependenciesErr","printMessage","response","createProviderErr","updateProviderError","message","deleteRawSaml2Provider","deleteRawProvider","deleteRawSaml2Providers","applicationList","getRawSaml2Providers","deleteApplicationPromises","forEach","item","deleteApplicationResult","Promise","all","_getRawProviders","getRawSaml2Provider","_getRawProvider","putRawSaml2Provider","entityData","_putRawProvider"],"sources":["ops/Saml2Ops.ts"],"sourcesContent":["import _ from 'lodash';\nimport {\n Saml2ProiderLocation,\n Saml2ProviderSkeleton,\n Saml2ProviderStub,\n} from '../api/ApiTypes';\nimport {\n createProvider,\n updateProvider,\n deleteRawProvider,\n findProviders,\n getProviderByLocationAndId as _getProviderByLocationAndId,\n getProviderMetadata as _getProviderMetadata,\n getProviderMetadataUrl as _getProviderMetadataUrl,\n getRawProvider as _getRawProvider,\n getProviders,\n getRawProviders as _getRawProviders,\n putRawProvider as _putRawProvider,\n deleteProviderByLocationAndId,\n} from '../api/Saml2Api';\nimport { getScript } from '../api/ScriptApi';\nimport {\n decode,\n decodeBase64Url,\n encode,\n encodeBase64Url,\n} from '../api/utils/Base64';\nimport { MultiOpStatusInterface, Saml2ExportInterface } from './OpsTypes';\nimport { putScript } from './ScriptOps';\nimport { debugMessage, printMessage } from './utils/Console';\nimport {\n convertBase64TextToArray,\n convertBase64UrlTextToArray,\n convertTextArrayToBase64,\n convertTextArrayToBase64Url,\n getMetadata,\n} from './utils/ExportImportUtils';\n\nexport const roleMap = {\n identityProvider: 'IDP',\n serviceProvider: 'SP',\n attributeQueryProvider: 'AttrQuery',\n xacmlPolicyEnforcementPoint: 'XACML PEP',\n};\n\n// use a function vs a template variable to avoid problems in loops\nexport function createSaml2ExportTemplate(): Saml2ExportInterface {\n return {\n meta: getMetadata(),\n script: {},\n saml: {\n hosted: {},\n remote: {},\n metadata: {},\n },\n } as Saml2ExportInterface;\n}\n\n/**\n * Get SAML2 entity provider stubs\n * @returns {Promise<Saml2ProviderStub[]>} a promise that resolves to an array of saml2 entity stubs\n */\nexport async function getSaml2ProviderStubs(): Promise<Saml2ProviderStub[]> {\n const { result } = await getProviders();\n return result;\n}\n\n/**\n * Geta SAML2 entity provider by location and id\n * @param {string} location Entity provider location (hosted or remote)\n * @param {string} entityId64 Base64-encoded-without-padding provider entity id\n * @returns {Promise} a promise that resolves to a saml2 entity provider object\n */\nexport async function getProviderByLocationAndId(\n location: string,\n entityId64: string\n) {\n return _getProviderByLocationAndId(location, entityId64);\n}\n\n/**\n * Get a SAML2 entity provider's metadata URL by entity id\n * @param {string} entityId SAML2 entity id\n * @returns {string} the URL to get the metadata from\n */\nexport function getProviderMetadataUrl(entityId: string): string {\n return _getProviderMetadataUrl(entityId);\n}\n\n/**\n * Get a SAML2 entity provider's metadata by entity id\n * @param {string} entityId SAML2 entity id\n * @returns {Promise<object>} a promise that resolves to an object containing a SAML2 metadata\n */\nexport async function getProviderMetadata(entityId) {\n return _getProviderMetadata(entityId);\n}\n\n/**\n * Include dependencies in the export file\n * @param {object} providerData Object representing a SAML entity provider\n * @param {object} fileData File data object to add dependencies to\n */\nasync function exportDependencies(providerData, fileData) {\n const attrMapperScriptId = _.get(providerData, [\n 'identityProvider',\n 'assertionProcessing',\n 'attributeMapper',\n 'attributeMapperScript',\n ]);\n if (attrMapperScriptId && attrMapperScriptId !== '[Empty]') {\n const scriptData = await getScript(attrMapperScriptId);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n // eslint-disable-next-line no-param-reassign\n fileData.script[attrMapperScriptId] = scriptData;\n }\n const idpAdapterScriptId = _.get(providerData, [\n 'identityProvider',\n 'advanced',\n 'idpAdapter',\n 'idpAdapterScript',\n ]);\n if (idpAdapterScriptId && idpAdapterScriptId !== '[Empty]') {\n const scriptData = await getScript(idpAdapterScriptId);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n // eslint-disable-next-line no-param-reassign\n fileData.script[idpAdapterScriptId] = scriptData;\n }\n const metaDataResponse = await getProviderMetadata(providerData.entityId);\n // eslint-disable-next-line no-param-reassign\n fileData.saml.metadata[providerData._id] = convertBase64UrlTextToArray(\n encodeBase64Url(metaDataResponse)\n );\n}\n\n/**\n *\n * @param {string} entityId Provider entity id\n * @returns {Promise<Saml2ProviderStub>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function getSaml2ProviderStub(\n entityId: string\n): Promise<Saml2ProviderStub> {\n debugMessage(`Saml2Ops.getSaml2ProviderStub: start [entityId=${entityId}]`);\n const found = await findProviders(`entityId eq '${entityId}'`);\n switch (found.resultCount) {\n case 0:\n throw new Error(`No provider with entity id '${entityId}' found`);\n case 1: {\n debugMessage(`Saml2Ops.getSaml2ProviderStub: end [entityId=${entityId}]`);\n return found.result[0];\n }\n default:\n throw new Error(`Multiple providers with entity id '${entityId}' found`);\n }\n}\n\n/**\n * Export a single entity provider. The response can be saved to file as is.\n * @param {string} entityId Provider entity id\n * @returns {Promise<Saml2ProviderSkeleton>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function getSaml2Provider(\n entityId: string\n): Promise<Saml2ProviderSkeleton> {\n debugMessage(`Saml2Ops.getSaml2Provider: start [entityId=${entityId}]`);\n const stub = await getSaml2ProviderStub(entityId);\n const { location } = stub;\n const id = stub._id;\n const providerData = await getProviderByLocationAndId(location, id);\n debugMessage(`Saml2Ops.getSaml2Provider: end [entityId=${entityId}]`);\n return providerData;\n}\n\n/**\n * Delete an entity provider. The response can be saved to file as is.\n * @param {string} entityId Provider entity id\n * @returns {Promise<Saml2ProviderSkeleton>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function deleteSaml2Provider(\n entityId: string\n): Promise<Saml2ProviderSkeleton> {\n debugMessage(`Saml2Ops.deleteSaml2Provider: start [entityId=${entityId}]`);\n const stub = await getSaml2ProviderStub(entityId);\n const { location } = stub;\n const id = stub._id;\n const providerData = await deleteProviderByLocationAndId(location, id);\n debugMessage(`Saml2Ops.deleteSaml2Provider: end [entityId=${entityId}]`);\n return providerData;\n}\n\n/**\n * Delete all entity providers.\n * @returns {Promise<Saml2ProviderSkeleton[]>} Promise resolving to an array of Saml2ProviderSkeleton objects.\n */\nexport async function deleteSaml2Providers(): Promise<Saml2ProviderSkeleton[]> {\n debugMessage(`Saml2Ops.deleteSaml2Providers: start`);\n const providers: Saml2ProviderSkeleton[] = [];\n const stubs = await getSaml2ProviderStubs();\n for (const stub of stubs) {\n const provider = await deleteProviderByLocationAndId(\n stub.location,\n stub._id\n );\n providers.push(provider);\n }\n debugMessage(\n `Saml2Ops.deleteSaml2Providers: end [deleted ${providers.length} providers]`\n );\n return providers;\n}\n\n/**\n * Export a single entity provider. The response can be saved to file as is.\n * @param {string} entityId Provider entity id\n * @returns {Promise<Saml2ExportInterface>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function exportSaml2Provider(\n entityId: string\n): Promise<Saml2ExportInterface> {\n debugMessage(`Saml2Ops.exportSaml2Provider: start [entityId=${entityId}]`);\n const exportData = createSaml2ExportTemplate();\n const stub = await getSaml2ProviderStub(entityId);\n const { location } = stub;\n const id = stub._id;\n const providerData = await getProviderByLocationAndId(location, id);\n exportData.saml[stub.location][providerData._id] = providerData;\n await exportDependencies(providerData, exportData);\n debugMessage(`Saml2Ops.exportSaml2Provider: end [entityId=${entityId}]`);\n return exportData;\n}\n\n/**\n * Export all entity providers. The response can be saved to file as is.\n * @returns {Promise<Saml2ExportInterface>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function exportSaml2Providers(): Promise<Saml2ExportInterface> {\n const fileData = createSaml2ExportTemplate();\n const stubs = await getSaml2ProviderStubs();\n for (const stub of stubs) {\n const providerData = await getProviderByLocationAndId(\n stub.location,\n stub._id\n );\n await exportDependencies(providerData, fileData);\n fileData.saml[stub.location][providerData._id] = providerData;\n }\n return fileData;\n}\n\n/**\n * Include dependencies from the import file\n * @param {object} providerData Object representing a SAML entity provider\n * @param {object} fileData File data object to read dependencies from\n */\nasync function importDependencies(providerData, fileData) {\n debugMessage(`Saml2Ops.importDependencies: start`);\n const attrMapperScriptId = _.get(providerData, [\n 'identityProvider',\n 'assertionProcessing',\n 'attributeMapper',\n 'attributeMapperScript',\n ]);\n if (attrMapperScriptId && attrMapperScriptId !== '[Empty]') {\n debugMessage(\n `Saml2Ops.importDependencies: attributeMapperScript=${attrMapperScriptId}`\n );\n const scriptData = _.get(fileData, ['script', attrMapperScriptId]);\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n await putScript(attrMapperScriptId, scriptData);\n }\n const idpAdapterScriptId = _.get(providerData, [\n 'identityProvider',\n 'advanced',\n 'idpAdapter',\n 'idpAdapterScript',\n ]);\n if (idpAdapterScriptId && idpAdapterScriptId !== '[Empty]') {\n debugMessage(\n `Saml2Ops.importDependencies: idpAdapterScript=${idpAdapterScriptId}`\n );\n const scriptData = _.get(fileData, ['script', idpAdapterScriptId]);\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n await putScript(idpAdapterScriptId, scriptData);\n }\n debugMessage(`Saml2Ops.importDependencies: end`);\n}\n\n/**\n * Find provider in import file and return its location\n * @param {string} entityId64 Base64-encoded provider entity id\n * @param {Saml2ExportInterface} data Import file json data\n * @returns {string} 'hosted' or 'remote' if found, undefined otherwise\n */\nfunction getLocation(\n entityId64: string,\n data: Saml2ExportInterface\n): Saml2ProiderLocation {\n if (data.saml.hosted[entityId64]) {\n return Saml2ProiderLocation.HOSTED;\n }\n if (data.saml.remote[entityId64]) {\n return Saml2ProiderLocation.REMOTE;\n }\n return undefined;\n}\n\n/**\n * Import a SAML entity provider\n * @param {string} entityId Provider entity id\n * @param {Saml2ExportInterface} importData Import data\n */\nexport async function importSaml2Provider(\n entityId: string,\n importData: Saml2ExportInterface\n): Promise<boolean> {\n debugMessage(`Saml2Ops.importSaml2Provider: start`);\n const entityId64 = encode(entityId, false);\n const location = getLocation(entityId64, importData);\n debugMessage(\n `Saml2Ops.importSaml2Provider: entityId=${entityId}, entityId64=${entityId64}, location=${location}`\n );\n if (location) {\n const providerData = importData.saml[location][entityId64];\n await importDependencies(providerData, importData);\n let metaData = null;\n if (location === Saml2ProiderLocation.REMOTE) {\n metaData = convertTextArrayToBase64Url(\n importData.saml.metadata[entityId64]\n );\n }\n try {\n await createProvider(location, providerData, metaData);\n } catch (error) {\n await updateProvider(location, providerData);\n }\n } else {\n throw new Error(`Provider ${entityId} not found in import data!`);\n }\n debugMessage(`Saml2Ops.importSaml2Provider: end`);\n return true;\n}\n\n/**\n * Import SAML entity providers\n * @param {Saml2ExportInterface} importData Import data\n */\nexport async function importSaml2Providers(\n importData: Saml2ExportInterface\n): Promise<MultiOpStatusInterface> {\n debugMessage(`Saml2Ops.importSaml2Providers: start`);\n const myStatus: MultiOpStatusInterface = {\n total: 0,\n successes: 0,\n warnings: 0,\n failures: 0,\n };\n try {\n // find providers in hosted and in remote and map locations\n const hostedIds = Object.keys(importData.saml.hosted);\n const remoteIds = Object.keys(importData.saml.remote);\n const providerIds = hostedIds.concat(remoteIds);\n myStatus.total = providerIds.length;\n for (const entityId64 of providerIds) {\n debugMessage(\n `Saml2Ops.importSaml2Providers: entityId=${decodeBase64Url(entityId64)}`\n );\n const location = hostedIds.includes(entityId64)\n ? Saml2ProiderLocation.HOSTED\n : Saml2ProiderLocation.REMOTE;\n const entityId = decode(entityId64);\n const providerData = importData.saml[location][entityId64];\n try {\n await importDependencies(providerData, importData);\n } catch (importDependenciesErr) {\n myStatus.warnings += 1;\n printMessage(\n `\\nWarning importing dependencies for ${entityId}`,\n 'warn'\n );\n printMessage(importDependenciesErr.response.data, 'error');\n }\n let metaData = null;\n if (location === Saml2ProiderLocation.REMOTE) {\n metaData = convertTextArrayToBase64Url(\n importData.saml.metadata[entityId64]\n );\n }\n try {\n await createProvider(location, providerData, metaData);\n myStatus.successes += 1;\n } catch (createProviderErr) {\n try {\n await updateProvider(location, providerData);\n myStatus.successes += 1;\n } catch (updateProviderError) {\n myStatus.failures += 1;\n printMessage(\n `\\nError importing provider ${entityId}: ${updateProviderError.message}`,\n 'error'\n );\n printMessage(updateProviderError.response?.data, 'error');\n }\n }\n }\n myStatus.message = `${myStatus.successes}/${myStatus.total} providers imported.`;\n } catch (error) {\n myStatus.failures += 1;\n printMessage(`\\nError importing providers ${error.message}`, 'error');\n }\n debugMessage(`Saml2Ops.importSaml2Providers: end`);\n return myStatus;\n}\n\n// Contributions using legacy APIs. Need to investigate if those will be deprecated in the future\n\n/**\n * Deletes entity provider\n * @param {string} entityId The entity id for the entity to be deleted\n * @returns {Promise<Saml2ProviderSkeleton>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function deleteRawSaml2Provider(\n entityId: string\n): Promise<Saml2ProviderSkeleton> {\n debugMessage(`Saml2Ops.deleteSaml2Provider: start [entityId=${entityId}]`);\n const response = await deleteRawProvider(entityId);\n debugMessage(`Saml2Ops.deleteSaml2Provider: end [entityId=${entityId}]`);\n return response;\n}\n\n/**\n * Deletes all entity providers.\n */\nexport async function deleteRawSaml2Providers(): Promise<\n Saml2ProviderSkeleton[]\n> {\n const applicationList = (await getRawSaml2Providers()).result;\n const deleteApplicationPromises = [];\n applicationList.forEach((item) => {\n printMessage(`Deleting Application ${item._id}`, 'error');\n deleteApplicationPromises.push(deleteRawProvider(item._id));\n });\n const deleteApplicationResult = await Promise.all(deleteApplicationPromises);\n if (deleteApplicationResult.length == applicationList.length) {\n printMessage('SAML Entity cleanup done', 'info');\n }\n return deleteApplicationResult;\n}\n\n/**\n * Retrieves all entity providers using the legacy federation enpoints.\n * @returns {Promise} a promise that resolves to an object containing an array of providers\n */\nexport async function getRawSaml2Providers() {\n return _getRawProviders();\n}\n\n/**\n * Retrieves all entity providers using the legacy federation enpoints.\n * @param {string} entityId The entity provider id\n * @returns {Promise} a promise that resolves to an object containing an array of providers\n */\nexport async function getRawSaml2Provider(entityId: string) {\n return _getRawProvider(entityId);\n}\n\n/**\n * Stores a new SAML2 entity provider\n * @param {string} entityId The entity provider id\n * @param {string} entityData The actual data containing the entity provider configuration\n * @returns {Promise} Promise that resolves to a provider object\n */\nexport async function putRawSaml2Provider(entityId: string, entityData) {\n return _putRawProvider(entityId, entityData);\n}\n"],"mappings":"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"}
|
package/cjs/ops/ScriptOps.js
CHANGED
|
@@ -18,6 +18,7 @@ var _OpsUtils = require("./utils/OpsUtils");
|
|
|
18
18
|
var _Console = require("./utils/Console");
|
|
19
19
|
var _ScriptApi = require("../api/ScriptApi");
|
|
20
20
|
var _ExportImportUtils = require("./utils/ExportImportUtils");
|
|
21
|
+
var _ValidationUtils = require("./utils/ValidationUtils");
|
|
21
22
|
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); } }
|
|
22
23
|
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); }); }; }
|
|
23
24
|
/**
|
|
@@ -209,31 +210,37 @@ function importScripts(_x8, _x9) {
|
|
|
209
210
|
function _importScripts() {
|
|
210
211
|
_importScripts = _asyncToGenerator(function* (name, importData) {
|
|
211
212
|
var reUuid = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
213
|
+
var shouldValidateScript = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
212
214
|
var outcome = true;
|
|
213
215
|
(0, _Console.debugMessage)("ScriptOps.importScriptsFromFile: start");
|
|
214
|
-
(0, _Console.createProgressIndicator)(Object.keys(importData.script).length, 'Importing scripts...');
|
|
215
216
|
for (var existingId of Object.keys(importData.script)) {
|
|
217
|
+
var scriptSkeleton = importData.script[existingId];
|
|
216
218
|
var newId = existingId;
|
|
217
219
|
if (reUuid) {
|
|
218
220
|
newId = (0, _uuid.v4)();
|
|
219
|
-
(0, _Console.debugMessage)("ScriptOps.importScriptsFromFile: Re-uuid-ing script ".concat(
|
|
220
|
-
|
|
221
|
+
(0, _Console.debugMessage)("ScriptOps.importScriptsFromFile: Re-uuid-ing script ".concat(scriptSkeleton.name, " ").concat(existingId, " => ").concat(newId, "..."));
|
|
222
|
+
scriptSkeleton._id = newId;
|
|
221
223
|
}
|
|
222
224
|
if (name) {
|
|
223
|
-
(0, _Console.debugMessage)("ScriptOps.importScriptsFromFile: Renaming script ".concat(
|
|
224
|
-
|
|
225
|
+
(0, _Console.debugMessage)("ScriptOps.importScriptsFromFile: Renaming script ".concat(scriptSkeleton.name, " => ").concat(name, "..."));
|
|
226
|
+
scriptSkeleton.name = name;
|
|
227
|
+
}
|
|
228
|
+
if (shouldValidateScript) {
|
|
229
|
+
if (!(0, _ValidationUtils.validateScriptDecoded)(scriptSkeleton)) {
|
|
230
|
+
outcome = false;
|
|
231
|
+
(0, _Console.printMessage)("Error importing script '".concat(scriptSkeleton.name, "': Script is not valid"), 'error');
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
225
234
|
}
|
|
226
235
|
try {
|
|
227
|
-
yield putScript(newId,
|
|
228
|
-
(0, _Console.updateProgressIndicator)("Imported ".concat(importData.script[existingId].name));
|
|
236
|
+
yield putScript(newId, scriptSkeleton);
|
|
229
237
|
} catch (error) {
|
|
230
238
|
outcome = false;
|
|
231
|
-
(0, _Console.printMessage)("Error importing script '".concat(
|
|
239
|
+
(0, _Console.printMessage)("Error importing script '".concat(scriptSkeleton.name, "': ").concat(error.message), 'error');
|
|
232
240
|
(0, _Console.debugMessage)(error);
|
|
233
241
|
}
|
|
234
242
|
if (name) break;
|
|
235
243
|
}
|
|
236
|
-
(0, _Console.stopProgressIndicator)('Done');
|
|
237
244
|
(0, _Console.debugMessage)("ScriptOps.importScriptsFromFile: end");
|
|
238
245
|
return outcome;
|
|
239
246
|
});
|
package/cjs/ops/ScriptOps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptOps.js","names":["createScriptExportTemplate","meta","getMetadata","script","getScripts","result","_getScripts","getScript","scriptId","response","_getScript","getScriptByName","name","_getScriptByName","length","Error","putScript","scriptData","Array","isArray","convertTextArrayToBase64","_putScript","error","status","printMessage","newName","applyNameCollisionPolicy","deleteScript","_deleteScript","exportScript","debugMessage","convertBase64TextToArray","exportData","_id","exportScriptByName","exportScripts","scriptList","createProgressIndicator","updateProgressIndicator","stopProgressIndicator","importScripts","importData","reUuid","outcome","Object","keys","existingId","newId","uuidv4","message"],"sources":["ops/ScriptOps.ts"],"sourcesContent":["import { v4 as uuidv4 } from 'uuid';\nimport { applyNameCollisionPolicy } from './utils/OpsUtils';\nimport {\n createProgressIndicator,\n debugMessage,\n printMessage,\n stopProgressIndicator,\n updateProgressIndicator,\n} from './utils/Console';\nimport {\n getScript as _getScript,\n getScriptByName as _getScriptByName,\n getScripts as _getScripts,\n putScript as _putScript,\n deleteScript as _deleteScript,\n} from '../api/ScriptApi';\nimport {\n convertBase64TextToArray,\n convertTextArrayToBase64,\n getMetadata,\n} from './utils/ExportImportUtils';\nimport { ScriptSkeleton } from '../api/ApiTypes';\nimport { ExportMetaData } from '../ops/OpsTypes';\n\nexport interface ScriptExportInterface {\n meta?: ExportMetaData;\n script: Record<string, ScriptSkeleton>;\n}\n\n/**\n * Create an empty idp export template\n * @returns {ScriptExportInterface} an empty idp export template\n */\nexport function createScriptExportTemplate(): ScriptExportInterface {\n return {\n meta: getMetadata(),\n script: {},\n } as ScriptExportInterface;\n}\n\n/**\n * Get all scripts\n * @returns {Promise<ScriptSkeleton[]>} a promise that resolves to an array of script objects\n */\nexport async function getScripts(): Promise<ScriptSkeleton[]> {\n const { result } = await _getScripts();\n return result;\n}\n\n/**\n * Get script by id\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\nexport async function getScript(scriptId: string): Promise<ScriptSkeleton> {\n const response = await _getScript(scriptId);\n return response;\n}\n\n/**\n * Get script by name\n * @param {string} name name of the script\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\nexport async function getScriptByName(name: string): Promise<ScriptSkeleton> {\n const { result } = await _getScriptByName(name);\n switch (result.length) {\n case 1:\n return result[0];\n case 0:\n throw new Error(`Script '${name}' not found`);\n default:\n throw new Error(`${result.length} scripts '${name}' found`);\n }\n}\n\n/**\n * Create or update script\n * @param {string} scriptId script uuid\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<boolean>} a status object\n */\nexport async function putScript(\n scriptId: string,\n scriptData: ScriptSkeleton\n): Promise<boolean> {\n try {\n if (Array.isArray(scriptData.script)) {\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n }\n const result = await _putScript(scriptId, scriptData);\n return result;\n } catch (error) {\n if (error.response?.status === 409) {\n printMessage(\n `createOrUpdateScript WARNING: script with name ${scriptData.name} already exists, using renaming policy... <name> => <name - imported (n)>`,\n 'warn'\n );\n const newName = applyNameCollisionPolicy(scriptData.name);\n scriptData.name = newName;\n const result = await putScript(scriptId, scriptData);\n printMessage(`Saved script as ${newName}`, 'warn');\n return result;\n }\n throw error;\n }\n}\n\n/**\n * Delete script by id\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\nexport async function deleteScript(scriptId: string): Promise<ScriptSkeleton> {\n const response = await _deleteScript(scriptId);\n return response;\n}\n\n/**\n * Export script by id\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScript(\n scriptId: string\n): Promise<ScriptExportInterface> {\n debugMessage(`ScriptOps.exportScriptById: start`);\n const scriptData = await _getScript(scriptId);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n const exportData = createScriptExportTemplate();\n exportData.script[scriptData._id] = scriptData;\n debugMessage(`ScriptOps.exportScriptById: end`);\n return exportData;\n}\n\n/**\n * Export script by name\n * @param {string} name script name\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScriptByName(\n name: string\n): Promise<ScriptExportInterface> {\n debugMessage(`ScriptOps.exportScriptByName: start`);\n const scriptData = await getScriptByName(name);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n const exportData = createScriptExportTemplate();\n exportData.script[scriptData._id] = scriptData;\n debugMessage(`ScriptOps.exportScriptByName: end`);\n return exportData;\n}\n\n/**\n * Export all scripts\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScripts(): Promise<ScriptExportInterface> {\n const scriptList = await getScripts();\n const exportData = createScriptExportTemplate();\n createProgressIndicator(\n scriptList.length,\n `Exporting ${scriptList.length} scripts...`\n );\n for (const script of scriptList) {\n updateProgressIndicator(`Reading script ${script.name}`);\n const scriptData = await getScriptByName(script.name);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n exportData.script[scriptData._id] = scriptData;\n }\n stopProgressIndicator(`Exported ${scriptList.length} scripts.`);\n return exportData;\n}\n\n/**\n * Import scripts\n * @param {string} name Optional name of script. If supplied, only the script of that name is imported\n * @param {ScriptExportInterface} importData Script import data\n * @param {boolean} reUuid true to generate a new uuid for each script on import, false otherwise\n * @returns {Promise<boolean>} true if no errors occurred during import, false otherwise\n */\nexport async function importScripts(\n name: string,\n importData: ScriptExportInterface,\n reUuid = false\n): Promise<boolean> {\n let outcome = true;\n debugMessage(`ScriptOps.importScriptsFromFile: start`);\n createProgressIndicator(\n Object.keys(importData.script).length,\n 'Importing scripts...'\n );\n for (const existingId of Object.keys(importData.script)) {\n let newId = existingId;\n if (reUuid) {\n newId = uuidv4();\n debugMessage(\n `ScriptOps.importScriptsFromFile: Re-uuid-ing script ${importData.script[existingId].name} ${existingId} => ${newId}...`\n );\n importData.script[existingId]._id = newId;\n }\n if (name) {\n debugMessage(\n `ScriptOps.importScriptsFromFile: Renaming script ${importData.script[existingId].name} => ${name}...`\n );\n importData.script[existingId].name = name;\n }\n try {\n await putScript(newId, importData.script[existingId]);\n updateProgressIndicator(`Imported ${importData.script[existingId].name}`);\n } catch (error) {\n outcome = false;\n printMessage(\n `Error importing script '${importData.script[existingId].name}': ${error.message}`,\n 'error'\n );\n debugMessage(error);\n }\n if (name) break;\n }\n stopProgressIndicator('Done');\n debugMessage(`ScriptOps.importScriptsFromFile: end`);\n return outcome;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ScriptOps.js","names":["createScriptExportTemplate","meta","getMetadata","script","getScripts","result","_getScripts","getScript","scriptId","response","_getScript","getScriptByName","name","_getScriptByName","length","Error","putScript","scriptData","Array","isArray","convertTextArrayToBase64","_putScript","error","status","printMessage","newName","applyNameCollisionPolicy","deleteScript","_deleteScript","exportScript","debugMessage","convertBase64TextToArray","exportData","_id","exportScriptByName","exportScripts","scriptList","createProgressIndicator","updateProgressIndicator","stopProgressIndicator","importScripts","importData","reUuid","shouldValidateScript","outcome","existingId","Object","keys","scriptSkeleton","newId","uuidv4","validateScriptDecoded","message"],"sources":["ops/ScriptOps.ts"],"sourcesContent":["import { v4 as uuidv4 } from 'uuid';\nimport { applyNameCollisionPolicy } from './utils/OpsUtils';\nimport {\n createProgressIndicator,\n debugMessage,\n printMessage,\n stopProgressIndicator,\n updateProgressIndicator,\n} from './utils/Console';\nimport {\n getScript as _getScript,\n getScriptByName as _getScriptByName,\n getScripts as _getScripts,\n putScript as _putScript,\n deleteScript as _deleteScript,\n} from '../api/ScriptApi';\nimport {\n convertBase64TextToArray,\n convertTextArrayToBase64,\n getMetadata,\n} from './utils/ExportImportUtils';\nimport { ScriptSkeleton } from '../api/ApiTypes';\nimport { ExportMetaData } from '../ops/OpsTypes';\nimport { validateScriptDecoded } from './utils/ValidationUtils';\n\nexport interface ScriptExportInterface {\n meta?: ExportMetaData;\n script: Record<string, ScriptSkeleton>;\n}\n\n/**\n * Create an empty idp export template\n * @returns {ScriptExportInterface} an empty idp export template\n */\nexport function createScriptExportTemplate(): ScriptExportInterface {\n return {\n meta: getMetadata(),\n script: {},\n } as ScriptExportInterface;\n}\n\n/**\n * Get all scripts\n * @returns {Promise<ScriptSkeleton[]>} a promise that resolves to an array of script objects\n */\nexport async function getScripts(): Promise<ScriptSkeleton[]> {\n const { result } = await _getScripts();\n return result;\n}\n\n/**\n * Get script by id\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\nexport async function getScript(scriptId: string): Promise<ScriptSkeleton> {\n const response = await _getScript(scriptId);\n return response;\n}\n\n/**\n * Get script by name\n * @param {string} name name of the script\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\nexport async function getScriptByName(name: string): Promise<ScriptSkeleton> {\n const { result } = await _getScriptByName(name);\n switch (result.length) {\n case 1:\n return result[0];\n case 0:\n throw new Error(`Script '${name}' not found`);\n default:\n throw new Error(`${result.length} scripts '${name}' found`);\n }\n}\n\n/**\n * Create or update script\n * @param {string} scriptId script uuid\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<boolean>} a status object\n */\nexport async function putScript(\n scriptId: string,\n scriptData: ScriptSkeleton\n): Promise<boolean> {\n try {\n if (Array.isArray(scriptData.script)) {\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n }\n const result = await _putScript(scriptId, scriptData);\n return result;\n } catch (error) {\n if (error.response?.status === 409) {\n printMessage(\n `createOrUpdateScript WARNING: script with name ${scriptData.name} already exists, using renaming policy... <name> => <name - imported (n)>`,\n 'warn'\n );\n const newName = applyNameCollisionPolicy(scriptData.name);\n scriptData.name = newName;\n const result = await putScript(scriptId, scriptData);\n printMessage(`Saved script as ${newName}`, 'warn');\n return result;\n }\n throw error;\n }\n}\n\n/**\n * Delete script by id\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\nexport async function deleteScript(scriptId: string): Promise<ScriptSkeleton> {\n const response = await _deleteScript(scriptId);\n return response;\n}\n\n/**\n * Export script by id\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScript(\n scriptId: string\n): Promise<ScriptExportInterface> {\n debugMessage(`ScriptOps.exportScriptById: start`);\n const scriptData = await _getScript(scriptId);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n const exportData = createScriptExportTemplate();\n exportData.script[scriptData._id] = scriptData;\n debugMessage(`ScriptOps.exportScriptById: end`);\n return exportData;\n}\n\n/**\n * Export script by name\n * @param {string} name script name\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScriptByName(\n name: string\n): Promise<ScriptExportInterface> {\n debugMessage(`ScriptOps.exportScriptByName: start`);\n const scriptData = await getScriptByName(name);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n const exportData = createScriptExportTemplate();\n exportData.script[scriptData._id] = scriptData;\n debugMessage(`ScriptOps.exportScriptByName: end`);\n return exportData;\n}\n\n/**\n * Export all scripts\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScripts(): Promise<ScriptExportInterface> {\n const scriptList = await getScripts();\n const exportData = createScriptExportTemplate();\n createProgressIndicator(\n scriptList.length,\n `Exporting ${scriptList.length} scripts...`\n );\n for (const script of scriptList) {\n updateProgressIndicator(`Reading script ${script.name}`);\n const scriptData = await getScriptByName(script.name);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n exportData.script[scriptData._id] = scriptData;\n }\n stopProgressIndicator(`Exported ${scriptList.length} scripts.`);\n return exportData;\n}\n\n/**\n * Import scripts\n * @param {string} name Optional name of script. If supplied, only the script of that name is imported\n * @param {ScriptExportInterface} importData Script import data\n * @param {boolean} reUuid true to generate a new uuid for each script on import, false otherwise\n * @returns {Promise<boolean>} true if no errors occurred during import, false otherwise\n */\nexport async function importScripts(\n name: string,\n importData: ScriptExportInterface,\n reUuid = false,\n shouldValidateScript = false\n): Promise<boolean> {\n let outcome = true;\n debugMessage(`ScriptOps.importScriptsFromFile: start`);\n for (const existingId of Object.keys(importData.script)) {\n const scriptSkeleton = importData.script[existingId];\n let newId = existingId;\n if (reUuid) {\n newId = uuidv4();\n debugMessage(\n `ScriptOps.importScriptsFromFile: Re-uuid-ing script ${scriptSkeleton.name} ${existingId} => ${newId}...`\n );\n scriptSkeleton._id = newId;\n }\n if (name) {\n debugMessage(\n `ScriptOps.importScriptsFromFile: Renaming script ${scriptSkeleton.name} => ${name}...`\n );\n scriptSkeleton.name = name;\n }\n if (shouldValidateScript) {\n if (!validateScriptDecoded(scriptSkeleton)) {\n outcome = false;\n printMessage(\n `Error importing script '${scriptSkeleton.name}': Script is not valid`,\n 'error'\n );\n continue;\n }\n }\n try {\n await putScript(newId, scriptSkeleton);\n } catch (error) {\n outcome = false;\n printMessage(\n `Error importing script '${scriptSkeleton.name}': ${error.message}`,\n 'error'\n );\n debugMessage(error);\n }\n if (name) break;\n }\n debugMessage(`ScriptOps.importScriptsFromFile: end`);\n return outcome;\n}\n"],"mappings":"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"}
|
|
@@ -16,7 +16,6 @@ exports.getTypedFilename = getTypedFilename;
|
|
|
16
16
|
exports.getWorkingDirectory = getWorkingDirectory;
|
|
17
17
|
exports.readFilesRecursive = readFilesRecursive;
|
|
18
18
|
exports.saveJsonToFile = saveJsonToFile;
|
|
19
|
-
exports.saveTextToFile = saveTextToFile;
|
|
20
19
|
exports.saveToFile = saveToFile;
|
|
21
20
|
exports.titleCase = titleCase;
|
|
22
21
|
exports.validateImport = validateImport;
|
|
@@ -152,21 +151,6 @@ function saveJsonToFile(data, filename) {
|
|
|
152
151
|
}
|
|
153
152
|
}
|
|
154
153
|
|
|
155
|
-
/**
|
|
156
|
-
* Save text data to file
|
|
157
|
-
* @param {String} data text data
|
|
158
|
-
* @param {String} filename file name
|
|
159
|
-
*/
|
|
160
|
-
function saveTextToFile(data, filename) {
|
|
161
|
-
_fs.default.writeFile(filename, data, err => {
|
|
162
|
-
if (err) {
|
|
163
|
-
(0, _Console.printMessage)("ERROR - can't save ".concat(filename), 'error');
|
|
164
|
-
return false;
|
|
165
|
-
}
|
|
166
|
-
return true;
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
|
|
170
154
|
/**
|
|
171
155
|
* Append text data to file
|
|
172
156
|
* @param {String} data text data
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExportImportUtils.js","names":["getCurrentTimestamp","ts","Date","toISOString","getMetadata","metadata","origin","state","getHost","originAmVersion","getAmVersion","exportedBy","getUsername","exportDate","exportTool","FRODO_METADATA_ID","exportToolVersion","getFrodoVersion","titleCase","input","str","toString","splitStr","toLowerCase","split","i","length","charAt","toUpperCase","slice","join","getRealmString","realm","getRealm","reduce","result","item","convertBase64TextToArray","b64text","arrayOut","plainText","decode","replace","convertBase64UrlTextToArray","b64UTF8Text","decodeBase64Url","convertTextArrayToBase64","textArray","joinedText","b64encodedScript","encode","convertTextArrayToBase64Url","encodeBase64Url","validateImport","getTypedFilename","name","type","suffix","slug","slugify","getWorkingDirectory","wd","getDirectory","fs","existsSync","debugMessage","mkdirSync","recursive","saveToFile","data","identifier","filename","exportData","Array","isArray","forEach","element","writeFile","JSON","stringify","err","printMessage","saveJsonToFile","includeMeta","meta","writeFileSync","saveTextToFile","appendTextToFile","appendFileSync","error","message","findFilesByName","fileName","fast","path","entries","readdirSync","encoding","withFileTypes","files","filter","entry","isDirectory","file","map","folders","folder","push","readFilesRecursive","directory","items","readdir","filePathsNested","Promise","all","entity","lstat","flat"],"sources":["ops/utils/ExportImportUtils.ts"],"sourcesContent":["import fs from 'fs';\nimport { lstat, readdir } from 'fs/promises';\nimport { join } from 'path';\nimport slugify from 'slugify';\nimport {\n decode,\n decodeBase64Url,\n encode,\n encodeBase64Url,\n} from '../../api/utils/Base64';\nimport * as state from '../../shared/State';\nimport { FRODO_METADATA_ID } from '../../storage/StaticStorage';\nimport { ExportMetaData } from '../OpsTypes';\nimport { debugMessage, printMessage } from './Console';\n\nexport function getCurrentTimestamp() {\n const ts = new Date();\n return ts.toISOString();\n}\n\nexport function getMetadata(): ExportMetaData {\n const metadata: ExportMetaData = {\n origin: state.getHost(),\n originAmVersion: state.getAmVersion(),\n exportedBy: state.getUsername(),\n exportDate: getCurrentTimestamp(),\n exportTool: FRODO_METADATA_ID,\n exportToolVersion: state.getFrodoVersion(),\n };\n return metadata;\n}\n\n/*\n * Output str in title case\n *\n * e.g.: 'ALL UPPERCASE AND all lowercase' = 'All Uppercase And All Lowercase'\n */\nexport function titleCase(input) {\n const str = input.toString();\n const splitStr = str.toLowerCase().split(' ');\n for (let i = 0; i < splitStr.length; i += 1) {\n splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].slice(1);\n }\n return splitStr.join(' ');\n}\n\nexport function getRealmString() {\n const realm = state.getRealm();\n return realm\n .split('/')\n .reduce((result, item) => `${result}${titleCase(item)}`, '');\n}\n\nexport function convertBase64TextToArray(b64text) {\n let arrayOut = [];\n let plainText = decode(b64text);\n plainText = plainText.replace(/\\t/g, ' ');\n arrayOut = plainText.split('\\n');\n return arrayOut;\n}\n\nexport function convertBase64UrlTextToArray(b64UTF8Text) {\n let arrayOut = [];\n let plainText = decodeBase64Url(b64UTF8Text);\n plainText = plainText.replace(/\\t/g, ' ');\n arrayOut = plainText.split('\\n');\n return arrayOut;\n}\n\nexport function convertTextArrayToBase64(textArray) {\n const joinedText = textArray.join('\\n');\n const b64encodedScript = encode(joinedText);\n return b64encodedScript;\n}\n\nexport function convertTextArrayToBase64Url(textArray) {\n const joinedText = textArray.join('\\n');\n const b64encodedScript = encodeBase64Url(joinedText);\n return b64encodedScript;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function validateImport(metadata): boolean {\n return metadata || true;\n}\n\nexport function getTypedFilename(name: string, type: string, suffix = 'json') {\n const slug = slugify(name.replace(/^http(s?):\\/\\//, ''));\n return `${slug}.${type}.${suffix}`;\n}\n\nexport function getWorkingDirectory() {\n let wd = '.';\n if (state.getDirectory()) {\n wd = state.getDirectory().replace(/\\/$/, '');\n // create directory if it doesn't exist\n if (!fs.existsSync(wd)) {\n debugMessage(\n `ExportImportUtils.getWorkingDirectory: creating directory '${wd}'`\n );\n fs.mkdirSync(wd, { recursive: true });\n }\n }\n return wd;\n}\n\nexport function saveToFile(type, data, identifier, filename) {\n const exportData = {};\n exportData['meta'] = getMetadata();\n exportData[type] = {};\n\n if (Array.isArray(data)) {\n data.forEach((element) => {\n exportData[type][element[identifier]] = element;\n });\n } else {\n exportData[type][data[identifier]] = data;\n }\n fs.writeFile(filename, JSON.stringify(exportData, null, 2), (err) => {\n if (err) {\n return printMessage(`ERROR - can't save ${type} to file`, 'error');\n }\n return '';\n });\n}\n\n/**\n * Save JSON object to file\n * @param {Object} data data object\n * @param {String} filename file name\n * @return {boolean} true if successful, false otherwise\n */\nexport function saveJsonToFile(data, filename, includeMeta = true): boolean {\n const exportData = data;\n if (includeMeta) exportData.meta = getMetadata();\n try {\n fs.writeFileSync(filename, JSON.stringify(exportData, null, 2));\n return true;\n } catch (err) {\n printMessage(`ERROR - can't save ${filename}`, 'error');\n return false;\n }\n}\n\n/**\n * Save text data to file\n * @param {String} data text data\n * @param {String} filename file name\n */\nexport function saveTextToFile(data, filename) {\n fs.writeFile(filename, data, (err) => {\n if (err) {\n printMessage(`ERROR - can't save ${filename}`, 'error');\n return false;\n }\n return true;\n });\n}\n\n/**\n * Append text data to file\n * @param {String} data text data\n * @param {String} filename file name\n */\nexport function appendTextToFile(data, filename) {\n try {\n fs.appendFileSync(filename, data);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n }\n}\n\n/**\n * Find files by name\n * @param {string} fileName file name to search for\n * @param {boolean} fast return first result and stop search\n * @param {string} path path to directory where to start the search\n * @returns {string[]} array of found file paths relative to starting directory\n */\nexport function findFilesByName(\n fileName: string,\n fast = true,\n path = './'\n): string[] {\n const entries = fs.readdirSync(path, {\n encoding: 'utf8',\n withFileTypes: true,\n });\n\n // Get files within the current directory and add a path key to the file objects\n const files: string[] = entries\n .filter((entry) => !entry.isDirectory())\n .filter((file) => file.name === fileName)\n // .map((file) => ({ ...file, path: path + file.name }));\n .map((file) => path + file.name);\n\n if (fast && files.length > 0) return files;\n\n // search sub-folders\n const folders = entries.filter((entry) => entry.isDirectory());\n for (const folder of folders)\n files.push(...findFilesByName(fileName, fast, `${path}${folder.name}/`));\n\n return files;\n}\n\n/**\n * find all (nested) files in a directory\n *\n * @param directory directory to search\n * @returns list of files\n */\nexport async function readFilesRecursive(directory: string): Promise<string[]> {\n const items = await readdir(directory);\n\n const filePathsNested = await Promise.all(\n items.map(async (entity) => {\n const path = join(directory, entity);\n const isDirectory = (await lstat(path)).isDirectory();\n\n if (isDirectory) {\n return readFilesRecursive(path);\n }\n return path;\n })\n );\n\n return filePathsNested.flat();\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ExportImportUtils.js","names":["getCurrentTimestamp","ts","Date","toISOString","getMetadata","metadata","origin","state","getHost","originAmVersion","getAmVersion","exportedBy","getUsername","exportDate","exportTool","FRODO_METADATA_ID","exportToolVersion","getFrodoVersion","titleCase","input","str","toString","splitStr","toLowerCase","split","i","length","charAt","toUpperCase","slice","join","getRealmString","realm","getRealm","reduce","result","item","convertBase64TextToArray","b64text","arrayOut","plainText","decode","replace","convertBase64UrlTextToArray","b64UTF8Text","decodeBase64Url","convertTextArrayToBase64","textArray","joinedText","b64encodedScript","encode","convertTextArrayToBase64Url","encodeBase64Url","validateImport","getTypedFilename","name","type","suffix","slug","slugify","getWorkingDirectory","wd","getDirectory","fs","existsSync","debugMessage","mkdirSync","recursive","saveToFile","data","identifier","filename","exportData","Array","isArray","forEach","element","writeFile","JSON","stringify","err","printMessage","saveJsonToFile","includeMeta","meta","writeFileSync","appendTextToFile","appendFileSync","error","message","findFilesByName","fileName","fast","path","entries","readdirSync","encoding","withFileTypes","files","filter","entry","isDirectory","file","map","folders","folder","push","readFilesRecursive","directory","items","readdir","filePathsNested","Promise","all","entity","lstat","flat"],"sources":["ops/utils/ExportImportUtils.ts"],"sourcesContent":["import fs from 'fs';\nimport { lstat, readdir } from 'fs/promises';\nimport { join } from 'path';\nimport slugify from 'slugify';\nimport {\n decode,\n decodeBase64Url,\n encode,\n encodeBase64Url,\n} from '../../api/utils/Base64';\nimport * as state from '../../shared/State';\nimport { FRODO_METADATA_ID } from '../../storage/StaticStorage';\nimport { ExportMetaData } from '../OpsTypes';\nimport { debugMessage, printMessage } from './Console';\n\nexport function getCurrentTimestamp() {\n const ts = new Date();\n return ts.toISOString();\n}\n\nexport function getMetadata(): ExportMetaData {\n const metadata: ExportMetaData = {\n origin: state.getHost(),\n originAmVersion: state.getAmVersion(),\n exportedBy: state.getUsername(),\n exportDate: getCurrentTimestamp(),\n exportTool: FRODO_METADATA_ID,\n exportToolVersion: state.getFrodoVersion(),\n };\n return metadata;\n}\n\n/*\n * Output str in title case\n *\n * e.g.: 'ALL UPPERCASE AND all lowercase' = 'All Uppercase And All Lowercase'\n */\nexport function titleCase(input) {\n const str = input.toString();\n const splitStr = str.toLowerCase().split(' ');\n for (let i = 0; i < splitStr.length; i += 1) {\n splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].slice(1);\n }\n return splitStr.join(' ');\n}\n\nexport function getRealmString() {\n const realm = state.getRealm();\n return realm\n .split('/')\n .reduce((result, item) => `${result}${titleCase(item)}`, '');\n}\n\nexport function convertBase64TextToArray(b64text) {\n let arrayOut = [];\n let plainText = decode(b64text);\n plainText = plainText.replace(/\\t/g, ' ');\n arrayOut = plainText.split('\\n');\n return arrayOut;\n}\n\nexport function convertBase64UrlTextToArray(b64UTF8Text) {\n let arrayOut = [];\n let plainText = decodeBase64Url(b64UTF8Text);\n plainText = plainText.replace(/\\t/g, ' ');\n arrayOut = plainText.split('\\n');\n return arrayOut;\n}\n\nexport function convertTextArrayToBase64(textArray) {\n const joinedText = textArray.join('\\n');\n const b64encodedScript = encode(joinedText);\n return b64encodedScript;\n}\n\nexport function convertTextArrayToBase64Url(textArray) {\n const joinedText = textArray.join('\\n');\n const b64encodedScript = encodeBase64Url(joinedText);\n return b64encodedScript;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function validateImport(metadata): boolean {\n return metadata || true;\n}\n\nexport function getTypedFilename(name: string, type: string, suffix = 'json') {\n const slug = slugify(name.replace(/^http(s?):\\/\\//, ''));\n return `${slug}.${type}.${suffix}`;\n}\n\nexport function getWorkingDirectory() {\n let wd = '.';\n if (state.getDirectory()) {\n wd = state.getDirectory().replace(/\\/$/, '');\n // create directory if it doesn't exist\n if (!fs.existsSync(wd)) {\n debugMessage(\n `ExportImportUtils.getWorkingDirectory: creating directory '${wd}'`\n );\n fs.mkdirSync(wd, { recursive: true });\n }\n }\n return wd;\n}\n\nexport function saveToFile(type, data, identifier, filename) {\n const exportData = {};\n exportData['meta'] = getMetadata();\n exportData[type] = {};\n\n if (Array.isArray(data)) {\n data.forEach((element) => {\n exportData[type][element[identifier]] = element;\n });\n } else {\n exportData[type][data[identifier]] = data;\n }\n fs.writeFile(filename, JSON.stringify(exportData, null, 2), (err) => {\n if (err) {\n return printMessage(`ERROR - can't save ${type} to file`, 'error');\n }\n return '';\n });\n}\n\n/**\n * Save JSON object to file\n * @param {Object} data data object\n * @param {String} filename file name\n * @return {boolean} true if successful, false otherwise\n */\nexport function saveJsonToFile(data, filename, includeMeta = true): boolean {\n const exportData = data;\n if (includeMeta) exportData.meta = getMetadata();\n try {\n fs.writeFileSync(filename, JSON.stringify(exportData, null, 2));\n return true;\n } catch (err) {\n printMessage(`ERROR - can't save ${filename}`, 'error');\n return false;\n }\n}\n\n/**\n * Append text data to file\n * @param {String} data text data\n * @param {String} filename file name\n */\nexport function appendTextToFile(data, filename) {\n try {\n fs.appendFileSync(filename, data);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n }\n}\n\n/**\n * Find files by name\n * @param {string} fileName file name to search for\n * @param {boolean} fast return first result and stop search\n * @param {string} path path to directory where to start the search\n * @returns {string[]} array of found file paths relative to starting directory\n */\nexport function findFilesByName(\n fileName: string,\n fast = true,\n path = './'\n): string[] {\n const entries = fs.readdirSync(path, {\n encoding: 'utf8',\n withFileTypes: true,\n });\n\n // Get files within the current directory and add a path key to the file objects\n const files: string[] = entries\n .filter((entry) => !entry.isDirectory())\n .filter((file) => file.name === fileName)\n // .map((file) => ({ ...file, path: path + file.name }));\n .map((file) => path + file.name);\n\n if (fast && files.length > 0) return files;\n\n // search sub-folders\n const folders = entries.filter((entry) => entry.isDirectory());\n for (const folder of folders)\n files.push(...findFilesByName(fileName, fast, `${path}${folder.name}/`));\n\n return files;\n}\n\n/**\n * find all (nested) files in a directory\n *\n * @param directory directory to search\n * @returns list of files\n */\nexport async function readFilesRecursive(directory: string): Promise<string[]> {\n const items = await readdir(directory);\n\n const filePathsNested = await Promise.all(\n items.map(async (entity) => {\n const path = join(directory, entity);\n const isDirectory = (await lstat(path)).isDirectory();\n\n if (isDirectory) {\n return readFilesRecursive(path);\n }\n return path;\n })\n );\n\n return filePathsNested.flat();\n}\n"],"mappings":"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"}
|
|
@@ -3,8 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.isValidJs = isValidJs;
|
|
7
|
+
exports.validateScript = validateScript;
|
|
8
|
+
exports.validateScriptDecoded = validateScriptDecoded;
|
|
6
9
|
exports.validateScriptHooks = validateScriptHooks;
|
|
7
10
|
var _esprima = require("esprima");
|
|
11
|
+
var _Base = require("../../api/utils/Base64");
|
|
8
12
|
var _Console = require("./Console");
|
|
9
13
|
function validateScriptHooks(jsonData) {
|
|
10
14
|
var scriptHooks = findAllScriptHooks(jsonData);
|
|
@@ -36,12 +40,29 @@ function findAllScriptHooks(jsonData) {
|
|
|
36
40
|
}
|
|
37
41
|
return scriptHooksArray;
|
|
38
42
|
}
|
|
43
|
+
function validateScript(script) {
|
|
44
|
+
var scriptRaw = (0, _Base.decode)(script.script);
|
|
45
|
+
if (script.language === 'JAVASCRIPT') {
|
|
46
|
+
return isValidJs(scriptRaw);
|
|
47
|
+
}
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
function validateScriptDecoded(scriptSkeleton) {
|
|
51
|
+
if (!Array.isArray(scriptSkeleton.script)) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
if (scriptSkeleton.language === 'JAVASCRIPT') {
|
|
55
|
+
var script = scriptSkeleton.script.join('\n');
|
|
56
|
+
return isValidJs(script);
|
|
57
|
+
}
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
39
60
|
function isValidJs(javascriptSource) {
|
|
40
61
|
try {
|
|
41
62
|
(0, _esprima.parseScript)(javascriptSource);
|
|
42
63
|
return true;
|
|
43
64
|
} catch (e) {
|
|
44
|
-
(0, _Console.printMessage)("Invalid JavaScript
|
|
65
|
+
(0, _Console.printMessage)("Invalid JavaScript: ".concat(e.message), 'error');
|
|
45
66
|
return false;
|
|
46
67
|
}
|
|
47
68
|
}
|