@rockcarver/frodo-lib 0.16.2-5 → 0.16.2-7
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 +9 -1
- package/cjs/api/ApiTypes.js.map +1 -1
- package/cjs/api/Saml2Api.js +107 -4
- package/cjs/api/Saml2Api.js.map +1 -1
- package/cjs/api/ServiceApi.js +217 -0
- package/cjs/api/ServiceApi.js.map +1 -0
- package/cjs/index.js +5 -1
- package/cjs/index.js.map +1 -1
- package/cjs/ops/AgentOps.js +2 -2
- package/cjs/ops/AgentOps.js.map +1 -1
- package/cjs/ops/OpsTypes.js.map +1 -1
- package/cjs/ops/Saml2Ops.js +317 -9
- package/cjs/ops/Saml2Ops.js.map +1 -1
- package/cjs/ops/Saml2Ops.test.js.map +1 -1
- package/cjs/ops/ServiceOps.js +343 -0
- package/cjs/ops/ServiceOps.js.map +1 -0
- package/cjs/ops/utils/ExportImportUtils.js +65 -2
- package/cjs/ops/utils/ExportImportUtils.js.map +1 -1
- package/esm/api/Saml2Api.mjs +65 -2
- package/esm/api/ServiceApi.mjs +130 -0
- package/esm/index.mjs +1 -0
- package/esm/ops/AgentOps.mjs +2 -2
- package/esm/ops/Saml2Ops.mjs +209 -4
- package/esm/ops/Saml2Ops.test.mjs +66 -25
- package/esm/ops/ServiceOps.mjs +229 -0
- package/esm/ops/utils/ExportImportUtils.mjs +41 -2
- package/package.json +1 -1
- package/types/api/ApiTypes.d.ts +12 -0
- package/types/api/ApiTypes.d.ts.map +1 -1
- package/types/api/Saml2Api.d.ts +24 -0
- package/types/api/Saml2Api.d.ts.map +1 -1
- package/types/api/ServiceApi.d.ts +68 -0
- package/types/api/ServiceApi.d.ts.map +1 -0
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- package/types/ops/AgentOps.d.ts +2 -2
- package/types/ops/AgentOps.d.ts.map +1 -1
- package/types/ops/OpsTypes.d.ts +5 -1
- package/types/ops/OpsTypes.d.ts.map +1 -1
- package/types/ops/Saml2Ops.d.ts +40 -0
- package/types/ops/Saml2Ops.d.ts.map +1 -1
- package/types/ops/ServiceOps.d.ts +50 -0
- package/types/ops/ServiceOps.d.ts.map +1 -0
- package/types/ops/utils/ExportImportUtils.d.ts +8 -0
- package/types/ops/utils/ExportImportUtils.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.16.2-7] - 2022-11-16
|
|
11
|
+
|
|
12
|
+
## [0.16.2-6] - 2022-11-11
|
|
13
|
+
|
|
10
14
|
## [0.16.2-5] - 2022-11-10
|
|
11
15
|
|
|
12
16
|
## [0.16.2-0] - 2022-11-10
|
|
@@ -692,7 +696,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
692
696
|
- Fixed problem with adding connection profiles
|
|
693
697
|
- Miscellaneous bug fixes
|
|
694
698
|
|
|
695
|
-
[Unreleased]: https://github.com/rockcarver/frodo-lib/compare/v0.16.2-
|
|
699
|
+
[Unreleased]: https://github.com/rockcarver/frodo-lib/compare/v0.16.2-7...HEAD
|
|
700
|
+
|
|
701
|
+
[0.16.2-7]: https://github.com/rockcarver/frodo-lib/compare/v0.16.2-6...v0.16.2-7
|
|
702
|
+
|
|
703
|
+
[0.16.2-6]: https://github.com/rockcarver/frodo-lib/compare/v0.16.2-5...v0.16.2-6
|
|
696
704
|
|
|
697
705
|
[0.16.2-5]: https://github.com/rockcarver/frodo-lib/compare/v0.16.2-0...v0.16.2-5
|
|
698
706
|
|
package/cjs/api/ApiTypes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiTypes.js","names":["ScriptLanguage","ScriptContext","Saml2ProiderLocation"],"sources":["api/ApiTypes.ts"],"sourcesContent":["interface ObjectSkeletonInterface {\n _id: string;\n _rev?: number;\n [k: string]: string | number | boolean | string[] | ObjectSkeletonInterface;\n}\n\nexport interface UiConfigInterface {\n categories: string;\n}\n\nexport interface NodeRefSkeletonInterface {\n connections: Record<string, string>;\n displayName: string;\n nodeType: string;\n x: number;\n y: number;\n}\n\nexport interface InnerNodeRefSkeletonInterface {\n _id: string;\n displayName: string;\n nodeType: string;\n}\n\nexport type TreeSkeleton = ObjectSkeletonInterface & {\n entryNodeId: string;\n nodes: Record<string, NodeRefSkeletonInterface>;\n identityResource?: string;\n uiConfig?: UiConfigInterface;\n enabled?: boolean;\n};\n\nexport type AmServiceType = ObjectSkeletonInterface & {\n name: string;\n};\n\nexport type NodeSkeleton = ObjectSkeletonInterface & {\n _type: AmServiceType;\n nodes?: InnerNodeRefSkeletonInterface[];\n tree?: string;\n identityResource?: string;\n};\n\nexport type SocialIdpSkeleton = ObjectSkeletonInterface & {\n _type: AmServiceType;\n enabled: boolean;\n};\n\nexport type AgentSkeleton = ObjectSkeletonInterface & {\n _type: AmServiceType;\n};\n\nexport type EmailTemplateSkeleton = ObjectSkeletonInterface & {\n defaultLocale?: string;\n displayName?: string;\n enabled?: boolean;\n from: string;\n subject: Record<string, string>;\n};\n\nexport type ThemeSkeleton = ObjectSkeletonInterface & {\n name: string;\n isDefault: boolean;\n linkedTrees: string[];\n};\n\nexport type UiThemeRealmObject = ObjectSkeletonInterface & {\n name: string;\n realm: Map<string, ThemeSkeleton[]>;\n};\n\nexport enum ScriptLanguage {\n GROOVY = 'GROOVY',\n JAVASCRIPT = 'JAVASCRIPT',\n}\n\nexport enum ScriptContext {\n OAUTH2_ACCESS_TOKEN_MODIFICATION = 'OAUTH2_ACCESS_TOKEN_MODIFICATION',\n AUTHENTICATION_CLIENT_SIDE = 'AUTHENTICATION_CLIENT_SIDE',\n AUTHENTICATION_TREE_DECISION_NODE = 'AUTHENTICATION_TREE_DECISION_NODE',\n AUTHENTICATION_SERVER_SIDE = 'AUTHENTICATION_SERVER_SIDE',\n SOCIAL_IDP_PROFILE_TRANSFORMATION = 'SOCIAL_IDP_PROFILE_TRANSFORMATION',\n OAUTH2_VALIDATE_SCOPE = 'OAUTH2_VALIDATE_SCOPE',\n CONFIG_PROVIDER_NODE = 'CONFIG_PROVIDER_NODE',\n OAUTH2_AUTHORIZE_ENDPOINT_DATA_PROVIDER = 'OAUTH2_AUTHORIZE_ENDPOINT_DATA_PROVIDER',\n OAUTH2_EVALUATE_SCOPE = 'OAUTH2_EVALUATE_SCOPE',\n POLICY_CONDITION = 'POLICY_CONDITION',\n OIDC_CLAIMS = 'OIDC_CLAIMS',\n SAML2_IDP_ADAPTER = 'SAML2_IDP_ADAPTER',\n SAML2_IDP_ATTRIBUTE_MAPPER = 'SAML2_IDP_ATTRIBUTE_MAPPER',\n OAUTH2_MAY_ACT = 'OAUTH2_MAY_ACT',\n}\n\nexport type ScriptSkeleton = ObjectSkeletonInterface & {\n name: string;\n description: string;\n isDefault: boolean;\n script: string;\n language: ScriptLanguage;\n context: ScriptContext;\n createdBy: string;\n creationDate: number;\n lastModifiedBy: string;\n lastModifiedDate: number;\n};\n\nexport enum Saml2ProiderLocation {\n HOSTED = 'hosted',\n REMOTE = 'remote',\n}\n\nexport type Saml2ProviderSkeleton = ObjectSkeletonInterface & {\n entityId: string;\n entityLocation: Saml2ProiderLocation;\n serviceProvider: unknown;\n identityProvider: unknown;\n attributeQueryProvider: unknown;\n xacmlPolicyEnforcementPoint: unknown;\n};\n\nexport type CircleOfTrustSkeleton = ObjectSkeletonInterface & {\n _type: AmServiceType;\n status: string;\n trustedProviders: string[];\n};\n"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"ApiTypes.js","names":["ScriptLanguage","ScriptContext","Saml2ProiderLocation"],"sources":["api/ApiTypes.ts"],"sourcesContent":["interface ObjectSkeletonInterface {\n _id: string;\n _rev?: number;\n [k: string]: string | number | boolean | string[] | ObjectSkeletonInterface;\n}\n\nexport interface UiConfigInterface {\n categories: string;\n}\n\nexport interface NodeRefSkeletonInterface {\n connections: Record<string, string>;\n displayName: string;\n nodeType: string;\n x: number;\n y: number;\n}\n\nexport interface InnerNodeRefSkeletonInterface {\n _id: string;\n displayName: string;\n nodeType: string;\n}\n\nexport type TreeSkeleton = ObjectSkeletonInterface & {\n entryNodeId: string;\n nodes: Record<string, NodeRefSkeletonInterface>;\n identityResource?: string;\n uiConfig?: UiConfigInterface;\n enabled?: boolean;\n};\n\nexport type AmServiceType = ObjectSkeletonInterface & {\n name: string;\n};\n\nexport type NodeSkeleton = ObjectSkeletonInterface & {\n _type: AmServiceType;\n nodes?: InnerNodeRefSkeletonInterface[];\n tree?: string;\n identityResource?: string;\n};\n\nexport type SocialIdpSkeleton = ObjectSkeletonInterface & {\n _type: AmServiceType;\n enabled: boolean;\n};\n\nexport type AmServiceSkeleton = ObjectSkeletonInterface & {\n _type: AmServiceType;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n};\n\nexport type AgentSkeleton = ObjectSkeletonInterface & {\n _type: AmServiceType;\n};\n\nexport type EmailTemplateSkeleton = ObjectSkeletonInterface & {\n defaultLocale?: string;\n displayName?: string;\n enabled?: boolean;\n from: string;\n subject: Record<string, string>;\n};\n\nexport type ThemeSkeleton = ObjectSkeletonInterface & {\n name: string;\n isDefault: boolean;\n linkedTrees: string[];\n};\n\nexport type UiThemeRealmObject = ObjectSkeletonInterface & {\n name: string;\n realm: Map<string, ThemeSkeleton[]>;\n};\n\nexport enum ScriptLanguage {\n GROOVY = 'GROOVY',\n JAVASCRIPT = 'JAVASCRIPT',\n}\n\nexport enum ScriptContext {\n OAUTH2_ACCESS_TOKEN_MODIFICATION = 'OAUTH2_ACCESS_TOKEN_MODIFICATION',\n AUTHENTICATION_CLIENT_SIDE = 'AUTHENTICATION_CLIENT_SIDE',\n AUTHENTICATION_TREE_DECISION_NODE = 'AUTHENTICATION_TREE_DECISION_NODE',\n AUTHENTICATION_SERVER_SIDE = 'AUTHENTICATION_SERVER_SIDE',\n SOCIAL_IDP_PROFILE_TRANSFORMATION = 'SOCIAL_IDP_PROFILE_TRANSFORMATION',\n OAUTH2_VALIDATE_SCOPE = 'OAUTH2_VALIDATE_SCOPE',\n CONFIG_PROVIDER_NODE = 'CONFIG_PROVIDER_NODE',\n OAUTH2_AUTHORIZE_ENDPOINT_DATA_PROVIDER = 'OAUTH2_AUTHORIZE_ENDPOINT_DATA_PROVIDER',\n OAUTH2_EVALUATE_SCOPE = 'OAUTH2_EVALUATE_SCOPE',\n POLICY_CONDITION = 'POLICY_CONDITION',\n OIDC_CLAIMS = 'OIDC_CLAIMS',\n SAML2_IDP_ADAPTER = 'SAML2_IDP_ADAPTER',\n SAML2_IDP_ATTRIBUTE_MAPPER = 'SAML2_IDP_ATTRIBUTE_MAPPER',\n OAUTH2_MAY_ACT = 'OAUTH2_MAY_ACT',\n}\n\nexport type ScriptSkeleton = ObjectSkeletonInterface & {\n name: string;\n description: string;\n isDefault: boolean;\n script: string;\n language: ScriptLanguage;\n context: ScriptContext;\n createdBy: string;\n creationDate: number;\n lastModifiedBy: string;\n lastModifiedDate: number;\n};\n\nexport enum Saml2ProiderLocation {\n HOSTED = 'hosted',\n REMOTE = 'remote',\n}\n\nexport type Saml2ProviderSkeleton = ObjectSkeletonInterface & {\n entityId: string;\n entityLocation: Saml2ProiderLocation;\n serviceProvider: unknown;\n identityProvider: unknown;\n attributeQueryProvider: unknown;\n xacmlPolicyEnforcementPoint: unknown;\n};\n\nexport type CircleOfTrustSkeleton = ObjectSkeletonInterface & {\n _type: AmServiceType;\n status: string;\n trustedProviders: string[];\n};\n\nexport type PagedResult<Result> = {\n result: Result[];\n resultCount: number;\n pagedResultsCookie: string;\n totalPagedResultsPolicy: 'EXACT';\n totalPagedResults: number;\n remainingPagedResults: number;\n};\n"],"mappings":";;;;;;IA6EYA,c;;;WAAAA,c;EAAAA,c;EAAAA,c;GAAAA,c,8BAAAA,c;;IAKAC,a;;;WAAAA,a;EAAAA,a;EAAAA,a;EAAAA,a;EAAAA,a;EAAAA,a;EAAAA,a;EAAAA,a;EAAAA,a;EAAAA,a;EAAAA,a;EAAAA,a;EAAAA,a;EAAAA,a;EAAAA,a;GAAAA,a,6BAAAA,a;;IA8BAC,oB;;;WAAAA,oB;EAAAA,oB;EAAAA,oB;GAAAA,oB,oCAAAA,oB"}
|
package/cjs/api/Saml2Api.js
CHANGED
|
@@ -4,24 +4,28 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createProvider = createProvider;
|
|
7
|
+
exports.deleteProvider = deleteProvider;
|
|
7
8
|
exports.findProviders = findProviders;
|
|
8
9
|
exports.getProvider = getProvider;
|
|
9
10
|
exports.getProviderByLocationAndId = getProviderByLocationAndId;
|
|
10
11
|
exports.getProviderMetadata = getProviderMetadata;
|
|
11
12
|
exports.getProviderMetadataUrl = getProviderMetadataUrl;
|
|
12
13
|
exports.getProviders = getProviders;
|
|
14
|
+
exports.getRawProvider = getRawProvider;
|
|
15
|
+
exports.getRawProviders = getRawProviders;
|
|
16
|
+
exports.putRawProvider = putRawProvider;
|
|
13
17
|
exports.updateProvider = updateProvider;
|
|
14
18
|
|
|
19
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
20
|
+
|
|
15
21
|
var _util = _interopRequireDefault(require("util"));
|
|
16
22
|
|
|
17
|
-
var
|
|
23
|
+
var _SessionStorage = _interopRequireDefault(require("../storage/SessionStorage"));
|
|
18
24
|
|
|
19
25
|
var _BaseApi = require("./BaseApi");
|
|
20
26
|
|
|
21
27
|
var _ApiUtils = require("./utils/ApiUtils");
|
|
22
28
|
|
|
23
|
-
var _SessionStorage = _interopRequireDefault(require("../storage/SessionStorage"));
|
|
24
|
-
|
|
25
29
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
26
30
|
|
|
27
31
|
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); } }
|
|
@@ -34,6 +38,8 @@ var createRemoteProviderURLTemplate = '%s/json%s/realm-config/saml2/remote/?_act
|
|
|
34
38
|
var queryAllProvidersURLTemplate = '%s/json%s/realm-config/saml2?_queryFilter=true';
|
|
35
39
|
var queryProvidersByEntityIdURLTemplate = '%s/json%s/realm-config/saml2?_queryFilter=%s&_fields=%s';
|
|
36
40
|
var metadataByEntityIdURLTemplate = '%s/saml2/jsp/exportmetadata.jsp?entityid=%s&realm=%s';
|
|
41
|
+
var samlApplicationListURLTemplateRaw = '%s/json%s/realm-config/federation/entityproviders/saml2?_queryFilter=true';
|
|
42
|
+
var samlApplicationListURLTemplateEntityIdRaw = '%s/json%s/realm-config/federation/entityproviders/saml2/%s';
|
|
37
43
|
var apiVersion = 'protocol=2.1,resource=1.0';
|
|
38
44
|
|
|
39
45
|
var getApiConfig = () => {
|
|
@@ -233,7 +239,14 @@ function _createProvider() {
|
|
|
233
239
|
|
|
234
240
|
function updateProvider(_x8, _x9) {
|
|
235
241
|
return _updateProvider.apply(this, arguments);
|
|
236
|
-
}
|
|
242
|
+
} // Contributions using legacy APIs. Need to investigate if those will be deprecated in the future
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Deletes a SAML2 entity provider by entity id
|
|
246
|
+
* @param {string} entityId Provider entity id
|
|
247
|
+
* @returns {Promise} a promise that resolves to a provider object
|
|
248
|
+
*/
|
|
249
|
+
|
|
237
250
|
|
|
238
251
|
function _updateProvider() {
|
|
239
252
|
_updateProvider = _asyncToGenerator(function* (location, providerData) {
|
|
@@ -248,4 +261,94 @@ function _updateProvider() {
|
|
|
248
261
|
});
|
|
249
262
|
return _updateProvider.apply(this, arguments);
|
|
250
263
|
}
|
|
264
|
+
|
|
265
|
+
function deleteProvider(_x10) {
|
|
266
|
+
return _deleteProvider.apply(this, arguments);
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Retrieves all entity providers using the legacy federation enpoints.
|
|
270
|
+
* @returns {Promise} a promise that resolves to an object containing an array of providers
|
|
271
|
+
*/
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
function _deleteProvider() {
|
|
275
|
+
_deleteProvider = _asyncToGenerator(function* (entityId) {
|
|
276
|
+
var urlString = _util.default.format(samlApplicationListURLTemplateEntityIdRaw, _SessionStorage.default.session.getTenant(), (0, _ApiUtils.getCurrentRealmPath)(), entityId);
|
|
277
|
+
|
|
278
|
+
var {
|
|
279
|
+
data
|
|
280
|
+
} = yield (0, _BaseApi.generateAmApi)(getApiConfig()).delete(urlString, {
|
|
281
|
+
withCredentials: true
|
|
282
|
+
});
|
|
283
|
+
return data;
|
|
284
|
+
});
|
|
285
|
+
return _deleteProvider.apply(this, arguments);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
function getRawProviders() {
|
|
289
|
+
return _getRawProviders.apply(this, arguments);
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Gets the data for an entity provider including the raw XML.
|
|
293
|
+
* @param {string} id The entity provider id
|
|
294
|
+
* @returns Promise that when resolved includes the configuration and raw xml for a SAML entity provider
|
|
295
|
+
*/
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
function _getRawProviders() {
|
|
299
|
+
_getRawProviders = _asyncToGenerator(function* () {
|
|
300
|
+
var urlString = _util.default.format(samlApplicationListURLTemplateRaw, _SessionStorage.default.session.getTenant(), (0, _ApiUtils.getCurrentRealmPath)());
|
|
301
|
+
|
|
302
|
+
var {
|
|
303
|
+
data
|
|
304
|
+
} = yield (0, _BaseApi.generateAmApi)(getApiConfig()).get(urlString, {
|
|
305
|
+
withCredentials: true
|
|
306
|
+
});
|
|
307
|
+
return data;
|
|
308
|
+
});
|
|
309
|
+
return _getRawProviders.apply(this, arguments);
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
function getRawProvider(_x11) {
|
|
313
|
+
return _getRawProvider.apply(this, arguments);
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Stores a new SAML2 entity provider
|
|
317
|
+
* @param {string} id The entity provider id
|
|
318
|
+
* @param {string} entityData The actual data containing the entity provider configuration
|
|
319
|
+
* @returns {Promise} Promise that resolves to a provider object
|
|
320
|
+
*/
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
function _getRawProvider() {
|
|
324
|
+
_getRawProvider = _asyncToGenerator(function* (entityId) {
|
|
325
|
+
var urlString = _util.default.format(samlApplicationListURLTemplateEntityIdRaw, _SessionStorage.default.session.getTenant(), (0, _ApiUtils.getCurrentRealmPath)(), entityId);
|
|
326
|
+
|
|
327
|
+
var {
|
|
328
|
+
data
|
|
329
|
+
} = yield (0, _BaseApi.generateAmApi)(getApiConfig()).get(urlString, {
|
|
330
|
+
withCredentials: true
|
|
331
|
+
});
|
|
332
|
+
return data;
|
|
333
|
+
});
|
|
334
|
+
return _getRawProvider.apply(this, arguments);
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
function putRawProvider(_x12, _x13) {
|
|
338
|
+
return _putRawProvider.apply(this, arguments);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
function _putRawProvider() {
|
|
342
|
+
_putRawProvider = _asyncToGenerator(function* (id, entityData) {
|
|
343
|
+
var urlString = _util.default.format(samlApplicationListURLTemplateEntityIdRaw, _SessionStorage.default.session.getTenant(), (0, _ApiUtils.getCurrentRealmPath)(), id);
|
|
344
|
+
|
|
345
|
+
var {
|
|
346
|
+
data
|
|
347
|
+
} = yield (0, _BaseApi.generateAmApi)(getApiConfig()).put(urlString, entityData, {
|
|
348
|
+
withCredentials: true
|
|
349
|
+
});
|
|
350
|
+
return data;
|
|
351
|
+
});
|
|
352
|
+
return _putRawProvider.apply(this, arguments);
|
|
353
|
+
}
|
|
251
354
|
//# sourceMappingURL=Saml2Api.js.map
|
package/cjs/api/Saml2Api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Saml2Api.js","names":["providerByLocationAndIdURLTemplate","createHostedProviderURLTemplate","createRemoteProviderURLTemplate","queryAllProvidersURLTemplate","queryProvidersByEntityIdURLTemplate","metadataByEntityIdURLTemplate","apiVersion","getApiConfig","configPath","getCurrentRealmPath","path","getProviders","urlString","util","format","storage","session","getTenant","data","generateAmApi","get","withCredentials","findProviders","filter","fields","encodeURIComponent","getProviderByLocationAndId","location","entityId64","getProvider","entityId","response","resultCount","Error","result","id","_id","getProviderMetadataUrl","getRealm","getProviderMetadata","createProvider","providerData","metaData","postData","_","cloneDeep","standardMetadata","post","updateProvider","put"],"sources":["api/Saml2Api.ts"],"sourcesContent":["import util from 'util';\nimport _ from 'lodash';\nimport { generateAmApi } from './BaseApi';\nimport { getCurrentRealmPath } from './utils/ApiUtils';\nimport storage from '../storage/SessionStorage';\n\nconst providerByLocationAndIdURLTemplate = '%s/json%s/realm-config/saml2/%s/%s';\nconst createHostedProviderURLTemplate =\n '%s/json%s/realm-config/saml2/hosted/?_action=create';\nconst createRemoteProviderURLTemplate =\n '%s/json%s/realm-config/saml2/remote/?_action=importEntity';\nconst queryAllProvidersURLTemplate =\n '%s/json%s/realm-config/saml2?_queryFilter=true';\nconst queryProvidersByEntityIdURLTemplate =\n '%s/json%s/realm-config/saml2?_queryFilter=%s&_fields=%s';\nconst metadataByEntityIdURLTemplate =\n '%s/saml2/jsp/exportmetadata.jsp?entityid=%s&realm=%s';\nconst apiVersion = 'protocol=2.1,resource=1.0';\nconst getApiConfig = () => {\n const configPath = getCurrentRealmPath();\n return {\n path: `${configPath}/realm-config/saml2`,\n apiVersion,\n };\n};\n\n/**\n * Get all SAML2 entity providers\n * @returns {Promise} a promise that resolves to an array of saml2 entity stubs\n */\nexport async function getProviders() {\n const urlString = util.format(\n queryAllProvidersURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath()\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Find all providers matching the filter and return the requested fields\n * @param {string} filter CREST filter string, eg \"entityId+eq+'${entityId}'\" or \"true\" for all providers\n * @param {string} fields Comma-delimited list of fields to include in the response\n * @returns {Promise} a promise that resolves to an object containing an array of saml2 entities\n */\nexport async function findProviders(filter = 'true', fields = '*') {\n const urlString = util.format(\n queryProvidersByEntityIdURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n encodeURIComponent(filter),\n fields\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\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 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 const urlString = util.format(\n providerByLocationAndIdURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n location,\n entityId64\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Get SAML2 entity provider by entity id\n * @param {string} entityId Provider entity id\n * @returns {Promise} a promise that resolves to a saml2 entity provider object or null\n */\nexport async function getProvider(entityId) {\n const response = await findProviders(`entityId eq '${entityId}'`, 'location');\n switch (response.resultCount) {\n case 0:\n throw new Error(`No provider with entity id '${entityId}' found`);\n case 1: {\n const { location } = response.result[0];\n const id = response.result[0]._id;\n return getProviderByLocationAndId(location, id);\n }\n default:\n throw new Error(`Multiple providers with entity id '${entityId}' found`);\n }\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) {\n return util.format(\n metadataByEntityIdURLTemplate,\n storage.session.getTenant(),\n encodeURIComponent(entityId),\n storage.session.getRealm()\n );\n}\n\n/**\n * Get a SAML2 entity provider's metadata by entity id\n * @param {String} entityId SAML2 entity id\n * @returns {Promise} a promise that resolves to an object containing a SAML2 metadata\n */\nexport async function getProviderMetadata(entityId) {\n const { data } = await generateAmApi(getApiConfig()).get(\n getProviderMetadataUrl(entityId),\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Create a SAML2 entity provider\n * @param {String} location 'hosted' or 'remote'\n * @param {Object} providerData Object representing a SAML entity provider\n * @param {String} metaData Base64-encoded metadata XML. Only required for remote providers\n * @returns {Promise} a promise that resolves to a saml2 entity provider object\n */\nexport async function createProvider(location, providerData, metaData) {\n let postData = _.cloneDeep(providerData);\n let urlString = util.format(\n createHostedProviderURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath()\n );\n\n if (location === 'remote') {\n /**\n * Remote entity providers must be created using XML metadata\n */\n urlString = util.format(\n createRemoteProviderURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath()\n );\n postData = {\n standardMetadata: metaData,\n };\n }\n\n const { data } = await generateAmApi(getApiConfig()).post(\n urlString,\n postData,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Update SAML2 entity provider\n * @param {String} location Entity provider location (hosted or remote)\n * @param {Object} providerData Object representing a SAML entity provider\n * @returns {Promise} a promise that resolves to a saml2 entity provider object\n */\nexport async function updateProvider(location, providerData) {\n const urlString = util.format(\n providerByLocationAndIdURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n location,\n providerData._id\n );\n const { data } = await generateAmApi(getApiConfig()).put(\n urlString,\n providerData,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Saml2Api.js","names":["providerByLocationAndIdURLTemplate","createHostedProviderURLTemplate","createRemoteProviderURLTemplate","queryAllProvidersURLTemplate","queryProvidersByEntityIdURLTemplate","metadataByEntityIdURLTemplate","samlApplicationListURLTemplateRaw","samlApplicationListURLTemplateEntityIdRaw","apiVersion","getApiConfig","configPath","getCurrentRealmPath","path","getProviders","urlString","util","format","storage","session","getTenant","data","generateAmApi","get","withCredentials","findProviders","filter","fields","encodeURIComponent","getProviderByLocationAndId","location","entityId64","getProvider","entityId","response","resultCount","Error","result","id","_id","getProviderMetadataUrl","getRealm","getProviderMetadata","createProvider","providerData","metaData","postData","_","cloneDeep","standardMetadata","post","updateProvider","put","deleteProvider","delete","getRawProviders","getRawProvider","putRawProvider","entityData"],"sources":["api/Saml2Api.ts"],"sourcesContent":["import _ from 'lodash';\nimport util from 'util';\nimport storage from '../storage/SessionStorage';\nimport { generateAmApi } from './BaseApi';\nimport { getCurrentRealmPath } from './utils/ApiUtils';\n\nconst providerByLocationAndIdURLTemplate = '%s/json%s/realm-config/saml2/%s/%s';\nconst createHostedProviderURLTemplate =\n '%s/json%s/realm-config/saml2/hosted/?_action=create';\nconst createRemoteProviderURLTemplate =\n '%s/json%s/realm-config/saml2/remote/?_action=importEntity';\nconst queryAllProvidersURLTemplate =\n '%s/json%s/realm-config/saml2?_queryFilter=true';\nconst queryProvidersByEntityIdURLTemplate =\n '%s/json%s/realm-config/saml2?_queryFilter=%s&_fields=%s';\nconst metadataByEntityIdURLTemplate =\n '%s/saml2/jsp/exportmetadata.jsp?entityid=%s&realm=%s';\nconst samlApplicationListURLTemplateRaw =\n '%s/json%s/realm-config/federation/entityproviders/saml2?_queryFilter=true';\nconst samlApplicationListURLTemplateEntityIdRaw =\n '%s/json%s/realm-config/federation/entityproviders/saml2/%s';\nconst apiVersion = 'protocol=2.1,resource=1.0';\nconst getApiConfig = () => {\n const configPath = getCurrentRealmPath();\n return {\n path: `${configPath}/realm-config/saml2`,\n apiVersion,\n };\n};\n\n/**\n * Get all SAML2 entity providers\n * @returns {Promise} a promise that resolves to an array of saml2 entity stubs\n */\nexport async function getProviders() {\n const urlString = util.format(\n queryAllProvidersURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath()\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Find all providers matching the filter and return the requested fields\n * @param {string} filter CREST filter string, eg \"entityId+eq+'${entityId}'\" or \"true\" for all providers\n * @param {string} fields Comma-delimited list of fields to include in the response\n * @returns {Promise} a promise that resolves to an object containing an array of saml2 entities\n */\nexport async function findProviders(filter = 'true', fields = '*') {\n const urlString = util.format(\n queryProvidersByEntityIdURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n encodeURIComponent(filter),\n fields\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\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 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 const urlString = util.format(\n providerByLocationAndIdURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n location,\n entityId64\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Get SAML2 entity provider by entity id\n * @param {string} entityId Provider entity id\n * @returns {Promise} a promise that resolves to a saml2 entity provider object or null\n */\nexport async function getProvider(entityId) {\n const response = await findProviders(`entityId eq '${entityId}'`, 'location');\n switch (response.resultCount) {\n case 0:\n throw new Error(`No provider with entity id '${entityId}' found`);\n case 1: {\n const { location } = response.result[0];\n const id = response.result[0]._id;\n return getProviderByLocationAndId(location, id);\n }\n default:\n throw new Error(`Multiple providers with entity id '${entityId}' found`);\n }\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) {\n return util.format(\n metadataByEntityIdURLTemplate,\n storage.session.getTenant(),\n encodeURIComponent(entityId),\n storage.session.getRealm()\n );\n}\n\n/**\n * Get a SAML2 entity provider's metadata by entity id\n * @param {String} entityId SAML2 entity id\n * @returns {Promise} a promise that resolves to an object containing a SAML2 metadata\n */\nexport async function getProviderMetadata(entityId) {\n const { data } = await generateAmApi(getApiConfig()).get(\n getProviderMetadataUrl(entityId),\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Create a SAML2 entity provider\n * @param {String} location 'hosted' or 'remote'\n * @param {Object} providerData Object representing a SAML entity provider\n * @param {String} metaData Base64-encoded metadata XML. Only required for remote providers\n * @returns {Promise} a promise that resolves to a saml2 entity provider object\n */\nexport async function createProvider(location, providerData, metaData) {\n let postData = _.cloneDeep(providerData);\n let urlString = util.format(\n createHostedProviderURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath()\n );\n\n if (location === 'remote') {\n /**\n * Remote entity providers must be created using XML metadata\n */\n urlString = util.format(\n createRemoteProviderURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath()\n );\n postData = {\n standardMetadata: metaData,\n };\n }\n\n const { data } = await generateAmApi(getApiConfig()).post(\n urlString,\n postData,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Update SAML2 entity provider\n * @param {String} location Entity provider location (hosted or remote)\n * @param {Object} providerData Object representing a SAML entity provider\n * @returns {Promise} a promise that resolves to a saml2 entity provider object\n */\nexport async function updateProvider(location, providerData) {\n const urlString = util.format(\n providerByLocationAndIdURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n location,\n providerData._id\n );\n const { data } = await generateAmApi(getApiConfig()).put(\n urlString,\n providerData,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n// Contributions using legacy APIs. Need to investigate if those will be deprecated in the future\n\n/**\n * Deletes a SAML2 entity provider by entity id\n * @param {string} entityId Provider entity id\n * @returns {Promise} a promise that resolves to a provider object\n */\nexport async function deleteProvider(entityId) {\n const urlString = util.format(\n samlApplicationListURLTemplateEntityIdRaw,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n entityId\n );\n const { data } = await generateAmApi(getApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n return data;\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 getRawProviders() {\n const urlString = util.format(\n samlApplicationListURLTemplateRaw,\n storage.session.getTenant(),\n getCurrentRealmPath()\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Gets the data for an entity provider including the raw XML.\n * @param {string} id The entity provider id\n * @returns Promise that when resolved includes the configuration and raw xml for a SAML entity provider\n */\nexport async function getRawProvider(entityId) {\n const urlString = util.format(\n samlApplicationListURLTemplateEntityIdRaw,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n entityId\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Stores a new SAML2 entity provider\n * @param {string} id 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 putRawProvider(id, entityData) {\n const urlString = util.format(\n samlApplicationListURLTemplateEntityIdRaw,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n id\n );\n const { data } = await generateAmApi(getApiConfig()).put(\n urlString,\n entityData,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.deleteService = deleteService;
|
|
7
|
+
exports.deleteServiceNextDescendent = deleteServiceNextDescendent;
|
|
8
|
+
exports.getListOfServices = getListOfServices;
|
|
9
|
+
exports.getService = getService;
|
|
10
|
+
exports.getServiceDescendents = getServiceDescendents;
|
|
11
|
+
exports.putService = putService;
|
|
12
|
+
exports.putServiceNextDescendent = putServiceNextDescendent;
|
|
13
|
+
|
|
14
|
+
var _util = _interopRequireDefault(require("util"));
|
|
15
|
+
|
|
16
|
+
var _SessionStorage = _interopRequireDefault(require("../storage/SessionStorage"));
|
|
17
|
+
|
|
18
|
+
var _BaseApi = require("./BaseApi");
|
|
19
|
+
|
|
20
|
+
var _ApiUtils = require("./utils/ApiUtils");
|
|
21
|
+
|
|
22
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
|
+
|
|
24
|
+
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); } }
|
|
25
|
+
|
|
26
|
+
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); }); }; }
|
|
27
|
+
|
|
28
|
+
var serviceURLTemplate = '%s/json%s/realm-config/services/%s';
|
|
29
|
+
var serviceURLNextDescendentsTemplate = '%s/json%s/realm-config/services/%s?_action=nextdescendents';
|
|
30
|
+
var serviceURLNextDescendentTemplate = '%s/json%s/realm-config/services/%s/%s/%s';
|
|
31
|
+
var serviceListURLTemplate = '%s/json%s/realm-config/services?_queryFilter=true';
|
|
32
|
+
var apiVersion = 'protocol=2.0,resource=1.0';
|
|
33
|
+
|
|
34
|
+
function getApiConfig() {
|
|
35
|
+
var configPath = (0, _ApiUtils.getCurrentRealmPath)();
|
|
36
|
+
return {
|
|
37
|
+
path: "".concat(configPath, "/realm-config/services"),
|
|
38
|
+
apiVersion
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Get a list of services
|
|
44
|
+
* @returns {Promise<ServiceListItem[]>} a promise resolving to an array of service list items.
|
|
45
|
+
*/
|
|
46
|
+
function getListOfServices() {
|
|
47
|
+
return _getListOfServices.apply(this, arguments);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get service
|
|
51
|
+
* @param {string} serviceId servide id
|
|
52
|
+
* @returns {Promise<AmService>} a promise resolving to a service object
|
|
53
|
+
*/
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
function _getListOfServices() {
|
|
57
|
+
_getListOfServices = _asyncToGenerator(function* () {
|
|
58
|
+
var urlString = _util.default.format(serviceListURLTemplate, _SessionStorage.default.session.getTenant(), (0, _ApiUtils.getCurrentRealmPath)());
|
|
59
|
+
|
|
60
|
+
var {
|
|
61
|
+
data
|
|
62
|
+
} = yield (0, _BaseApi.generateAmApi)(getApiConfig()).get(urlString, {
|
|
63
|
+
withCredentials: true
|
|
64
|
+
});
|
|
65
|
+
return data;
|
|
66
|
+
});
|
|
67
|
+
return _getListOfServices.apply(this, arguments);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function getService(_x) {
|
|
71
|
+
return _getService.apply(this, arguments);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get a service's decendents (applicable for structured services only, e.g. SocialIdentityProviders)
|
|
75
|
+
* @param {string} serviceId service id
|
|
76
|
+
* @returns {Promise<ServiceNextDescendent[]>} a promise resolving to an array of the service's next decendents
|
|
77
|
+
*/
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
function _getService() {
|
|
81
|
+
_getService = _asyncToGenerator(function* (serviceId) {
|
|
82
|
+
var urlString = _util.default.format(serviceURLTemplate, _SessionStorage.default.session.getTenant(), (0, _ApiUtils.getCurrentRealmPath)(), serviceId);
|
|
83
|
+
|
|
84
|
+
var {
|
|
85
|
+
data
|
|
86
|
+
} = yield (0, _BaseApi.generateAmApi)(getApiConfig()).get(urlString, {
|
|
87
|
+
withCredentials: true
|
|
88
|
+
});
|
|
89
|
+
return data;
|
|
90
|
+
});
|
|
91
|
+
return _getService.apply(this, arguments);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function getServiceDescendents(_x2) {
|
|
95
|
+
return _getServiceDescendents.apply(this, arguments);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Create or update a service
|
|
99
|
+
* @param {string} serviceId service id
|
|
100
|
+
* @param {AmService} serviceData service configuration
|
|
101
|
+
* @returns {Promise<AmService>} a promise resolving to a service object
|
|
102
|
+
*/
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
function _getServiceDescendents() {
|
|
106
|
+
_getServiceDescendents = _asyncToGenerator(function* (serviceId) {
|
|
107
|
+
var urlString = _util.default.format(serviceURLNextDescendentsTemplate, _SessionStorage.default.session.getTenant(), (0, _ApiUtils.getCurrentRealmPath)(), serviceId);
|
|
108
|
+
|
|
109
|
+
var {
|
|
110
|
+
data
|
|
111
|
+
} = yield (0, _BaseApi.generateAmApi)(getApiConfig()).post(urlString, {
|
|
112
|
+
withCredentials: true
|
|
113
|
+
});
|
|
114
|
+
return data.result;
|
|
115
|
+
});
|
|
116
|
+
return _getServiceDescendents.apply(this, arguments);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function putService(_x3, _x4) {
|
|
120
|
+
return _putService.apply(this, arguments);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Create or update a service next descendent instance
|
|
124
|
+
* @param {string} serviceId service id
|
|
125
|
+
* @param {string} serviceType service type
|
|
126
|
+
* @param {string} serviceNextDescendentId service instance id
|
|
127
|
+
* @param {ServiceNextDescendent} serviceNextDescendentData service next descendent configuration
|
|
128
|
+
* @returns {Promise<ServiceNextDescendent>} a promise resolving to a service next descendent
|
|
129
|
+
*/
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
function _putService() {
|
|
133
|
+
_putService = _asyncToGenerator(function* (serviceId, serviceData) {
|
|
134
|
+
var realm = _SessionStorage.default.session.getRealm() === '/' ? '' : _SessionStorage.default.session.getRealm();
|
|
135
|
+
|
|
136
|
+
var urlString = _util.default.format(serviceURLTemplate, _SessionStorage.default.session.getTenant(), realm, serviceId);
|
|
137
|
+
|
|
138
|
+
var {
|
|
139
|
+
data
|
|
140
|
+
} = yield (0, _BaseApi.generateAmApi)(getApiConfig()).put(urlString, serviceData, {
|
|
141
|
+
withCredentials: true
|
|
142
|
+
});
|
|
143
|
+
return data;
|
|
144
|
+
});
|
|
145
|
+
return _putService.apply(this, arguments);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
function putServiceNextDescendent(_x5, _x6, _x7, _x8) {
|
|
149
|
+
return _putServiceNextDescendent.apply(this, arguments);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Delete service
|
|
153
|
+
* @param {string} serviceId service id
|
|
154
|
+
* @returns {Promise<AmService>} a promise resolving to a service object
|
|
155
|
+
*/
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
function _putServiceNextDescendent() {
|
|
159
|
+
_putServiceNextDescendent = _asyncToGenerator(function* (serviceId, serviceType, serviceNextDescendentId, serviceNextDescendentData) {
|
|
160
|
+
var realm = _SessionStorage.default.session.getRealm() === '/' ? '' : _SessionStorage.default.session.getRealm();
|
|
161
|
+
|
|
162
|
+
var urlString = _util.default.format(serviceURLNextDescendentTemplate, _SessionStorage.default.session.getTenant(), realm, serviceId, serviceType, serviceNextDescendentId);
|
|
163
|
+
|
|
164
|
+
var {
|
|
165
|
+
data
|
|
166
|
+
} = yield (0, _BaseApi.generateAmApi)(getApiConfig()).put(urlString, serviceNextDescendentData, {
|
|
167
|
+
withCredentials: true
|
|
168
|
+
});
|
|
169
|
+
return data;
|
|
170
|
+
});
|
|
171
|
+
return _putServiceNextDescendent.apply(this, arguments);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
function deleteService(_x9) {
|
|
175
|
+
return _deleteService.apply(this, arguments);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Delete service next descendent
|
|
179
|
+
* @param {string} serviceId service id
|
|
180
|
+
* @param {string} serviceType service type
|
|
181
|
+
* @param {string} serviceNextDescendentId service instance id
|
|
182
|
+
* @returns {Promise<ServiceNextDescendent>} a promise resolving to a service next descendent
|
|
183
|
+
*/
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
function _deleteService() {
|
|
187
|
+
_deleteService = _asyncToGenerator(function* (serviceId) {
|
|
188
|
+
var urlString = _util.default.format(serviceURLTemplate, _SessionStorage.default.session.getTenant(), (0, _ApiUtils.getCurrentRealmPath)(), serviceId);
|
|
189
|
+
|
|
190
|
+
var {
|
|
191
|
+
data
|
|
192
|
+
} = yield (0, _BaseApi.generateAmApi)(getApiConfig()).delete(urlString, {
|
|
193
|
+
withCredentials: true
|
|
194
|
+
});
|
|
195
|
+
return data;
|
|
196
|
+
});
|
|
197
|
+
return _deleteService.apply(this, arguments);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
function deleteServiceNextDescendent(_x10, _x11, _x12) {
|
|
201
|
+
return _deleteServiceNextDescendent.apply(this, arguments);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
function _deleteServiceNextDescendent() {
|
|
205
|
+
_deleteServiceNextDescendent = _asyncToGenerator(function* (serviceId, serviceType, serviceNextDescendentId) {
|
|
206
|
+
var urlString = _util.default.format(serviceURLNextDescendentTemplate, _SessionStorage.default.session.getTenant(), (0, _ApiUtils.getCurrentRealmPath)(), serviceId, serviceType, serviceNextDescendentId);
|
|
207
|
+
|
|
208
|
+
var {
|
|
209
|
+
data
|
|
210
|
+
} = yield (0, _BaseApi.generateAmApi)(getApiConfig()).delete(urlString, {
|
|
211
|
+
withCredentials: true
|
|
212
|
+
});
|
|
213
|
+
return data;
|
|
214
|
+
});
|
|
215
|
+
return _deleteServiceNextDescendent.apply(this, arguments);
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=ServiceApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServiceApi.js","names":["serviceURLTemplate","serviceURLNextDescendentsTemplate","serviceURLNextDescendentTemplate","serviceListURLTemplate","apiVersion","getApiConfig","configPath","getCurrentRealmPath","path","getListOfServices","urlString","util","format","storage","session","getTenant","data","generateAmApi","get","withCredentials","getService","serviceId","getServiceDescendents","post","result","putService","serviceData","realm","getRealm","put","putServiceNextDescendent","serviceType","serviceNextDescendentId","serviceNextDescendentData","deleteService","delete","deleteServiceNextDescendent"],"sources":["api/ServiceApi.ts"],"sourcesContent":["import util from 'util';\nimport storage from '../storage/SessionStorage';\nimport { AmServiceSkeleton, PagedResult } from './ApiTypes';\nimport { generateAmApi } from './BaseApi';\nimport { getCurrentRealmPath } from './utils/ApiUtils';\n\nconst serviceURLTemplate = '%s/json%s/realm-config/services/%s';\nconst serviceURLNextDescendentsTemplate =\n '%s/json%s/realm-config/services/%s?_action=nextdescendents';\nconst serviceURLNextDescendentTemplate =\n '%s/json%s/realm-config/services/%s/%s/%s';\nconst serviceListURLTemplate =\n '%s/json%s/realm-config/services?_queryFilter=true';\nconst apiVersion = 'protocol=2.0,resource=1.0';\n\nfunction getApiConfig() {\n const configPath = getCurrentRealmPath();\n return {\n path: `${configPath}/realm-config/services`,\n apiVersion,\n };\n}\n\nexport interface ServiceListItem {\n /**\n * The identifier for the service - used to construct the subpath for the service\n */\n _id: string;\n /**\n * The user-facing name of the service\n */\n name: string;\n /**\n * The revision number of the service\n */\n _rev: string;\n}\n\n// export interface AmService {\n// _id: '';\n// _rev: string;\n// _type: {\n// _id: string;\n// name: string;\n// collection: boolean;\n// };\n// [key: string]: any;\n// }\n\nexport interface ServiceNextDescendentResponse {\n result: ServiceNextDescendent;\n}\n\nexport interface ServiceNextDescendent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n}\n\n/**\n * Get a list of services\n * @returns {Promise<ServiceListItem[]>} a promise resolving to an array of service list items.\n */\nexport async function getListOfServices(): Promise<\n PagedResult<ServiceListItem>\n> {\n const urlString = util.format(\n serviceListURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath()\n );\n const { data } = await generateAmApi(getApiConfig()).get<\n PagedResult<ServiceListItem>\n >(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Get service\n * @param {string} serviceId servide id\n * @returns {Promise<AmService>} a promise resolving to a service object\n */\nexport async function getService(\n serviceId: string\n): Promise<AmServiceSkeleton> {\n const urlString = util.format(\n serviceURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n serviceId\n );\n const { data } = await generateAmApi(getApiConfig()).get<AmServiceSkeleton>(\n urlString,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Get a service's decendents (applicable for structured services only, e.g. SocialIdentityProviders)\n * @param {string} serviceId service id\n * @returns {Promise<ServiceNextDescendent[]>} a promise resolving to an array of the service's next decendents\n */\nexport async function getServiceDescendents(\n serviceId: string\n): Promise<ServiceNextDescendent[]> {\n const urlString = util.format(\n serviceURLNextDescendentsTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n serviceId\n );\n const { data } = await generateAmApi(\n getApiConfig()\n ).post<ServiceNextDescendentResponse>(urlString, {\n withCredentials: true,\n });\n return data.result as ServiceNextDescendent[];\n}\n\n/**\n * Create or update a service\n * @param {string} serviceId service id\n * @param {AmService} serviceData service configuration\n * @returns {Promise<AmService>} a promise resolving to a service object\n */\nexport async function putService(\n serviceId: string,\n serviceData: AmServiceSkeleton\n): Promise<AmServiceSkeleton> {\n const realm =\n storage.session.getRealm() === '/' ? '' : storage.session.getRealm();\n const urlString = util.format(\n serviceURLTemplate,\n storage.session.getTenant(),\n realm,\n serviceId\n );\n const { data } = await generateAmApi(getApiConfig()).put(\n urlString,\n serviceData,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Create or update a service next descendent instance\n * @param {string} serviceId service id\n * @param {string} serviceType service type\n * @param {string} serviceNextDescendentId service instance id\n * @param {ServiceNextDescendent} serviceNextDescendentData service next descendent configuration\n * @returns {Promise<ServiceNextDescendent>} a promise resolving to a service next descendent\n */\nexport async function putServiceNextDescendent(\n serviceId: string,\n serviceType: string,\n serviceNextDescendentId: string,\n serviceNextDescendentData: ServiceNextDescendent\n): Promise<ServiceNextDescendent> {\n const realm =\n storage.session.getRealm() === '/' ? '' : storage.session.getRealm();\n const urlString = util.format(\n serviceURLNextDescendentTemplate,\n storage.session.getTenant(),\n realm,\n serviceId,\n serviceType,\n serviceNextDescendentId\n );\n const { data } = await generateAmApi(getApiConfig()).put(\n urlString,\n serviceNextDescendentData,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Delete service\n * @param {string} serviceId service id\n * @returns {Promise<AmService>} a promise resolving to a service object\n */\nexport async function deleteService(\n serviceId: string\n): Promise<AmServiceSkeleton> {\n const urlString = util.format(\n serviceURLTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n serviceId\n );\n const { data } = await generateAmApi(getApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Delete service next descendent\n * @param {string} serviceId service id\n * @param {string} serviceType service type\n * @param {string} serviceNextDescendentId service instance id\n * @returns {Promise<ServiceNextDescendent>} a promise resolving to a service next descendent\n */\nexport async function deleteServiceNextDescendent(\n serviceId: string,\n serviceType: string,\n serviceNextDescendentId: string\n): Promise<ServiceNextDescendent> {\n const urlString = util.format(\n serviceURLNextDescendentTemplate,\n storage.session.getTenant(),\n getCurrentRealmPath(),\n serviceId,\n serviceType,\n serviceNextDescendentId\n );\n const { data } = await generateAmApi(getApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;;;;;AAEA,IAAMA,kBAAkB,GAAG,oCAA3B;AACA,IAAMC,iCAAiC,GACrC,4DADF;AAEA,IAAMC,gCAAgC,GACpC,0CADF;AAEA,IAAMC,sBAAsB,GAC1B,mDADF;AAEA,IAAMC,UAAU,GAAG,2BAAnB;;AAEA,SAASC,YAAT,GAAwB;EACtB,IAAMC,UAAU,GAAG,IAAAC,6BAAA,GAAnB;EACA,OAAO;IACLC,IAAI,YAAKF,UAAL,2BADC;IAELF;EAFK,CAAP;AAID;;AAqCD;AACA;AACA;AACA;SACsBK,iB;;;AAgBtB;AACA;AACA;AACA;AACA;;;;yCApBO,aAEL;IACA,IAAMC,SAAS,GAAGC,aAAA,CAAKC,MAAL,CAChBT,sBADgB,EAEhBU,uBAAA,CAAQC,OAAR,CAAgBC,SAAhB,EAFgB,EAGhB,IAAAR,6BAAA,GAHgB,CAAlB;;IAKA,IAAM;MAAES;IAAF,UAAiB,IAAAC,sBAAA,EAAcZ,YAAY,EAA1B,EAA8Ba,GAA9B,CAErBR,SAFqB,EAEV;MACXS,eAAe,EAAE;IADN,CAFU,CAAvB;IAKA,OAAOH,IAAP;EACD,C;;;;SAOqBI,U;;;AAkBtB;AACA;AACA;AACA;AACA;;;;kCAtBO,WACLC,SADK,EAEuB;IAC5B,IAAMX,SAAS,GAAGC,aAAA,CAAKC,MAAL,CAChBZ,kBADgB,EAEhBa,uBAAA,CAAQC,OAAR,CAAgBC,SAAhB,EAFgB,EAGhB,IAAAR,6BAAA,GAHgB,EAIhBc,SAJgB,CAAlB;;IAMA,IAAM;MAAEL;IAAF,UAAiB,IAAAC,sBAAA,EAAcZ,YAAY,EAA1B,EAA8Ba,GAA9B,CACrBR,SADqB,EAErB;MACES,eAAe,EAAE;IADnB,CAFqB,CAAvB;IAMA,OAAOH,IAAP;EACD,C;;;;SAOqBM,qB;;;AAiBtB;AACA;AACA;AACA;AACA;AACA;;;;6CAtBO,WACLD,SADK,EAE6B;IAClC,IAAMX,SAAS,GAAGC,aAAA,CAAKC,MAAL,CAChBX,iCADgB,EAEhBY,uBAAA,CAAQC,OAAR,CAAgBC,SAAhB,EAFgB,EAGhB,IAAAR,6BAAA,GAHgB,EAIhBc,SAJgB,CAAlB;;IAMA,IAAM;MAAEL;IAAF,UAAiB,IAAAC,sBAAA,EACrBZ,YAAY,EADS,EAErBkB,IAFqB,CAEeb,SAFf,EAE0B;MAC/CS,eAAe,EAAE;IAD8B,CAF1B,CAAvB;IAKA,OAAOH,IAAI,CAACQ,MAAZ;EACD,C;;;;SAQqBC,U;;;AAsBtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;kCA7BO,WACLJ,SADK,EAELK,WAFK,EAGuB;IAC5B,IAAMC,KAAK,GACTd,uBAAA,CAAQC,OAAR,CAAgBc,QAAhB,OAA+B,GAA/B,GAAqC,EAArC,GAA0Cf,uBAAA,CAAQC,OAAR,CAAgBc,QAAhB,EAD5C;;IAEA,IAAMlB,SAAS,GAAGC,aAAA,CAAKC,MAAL,CAChBZ,kBADgB,EAEhBa,uBAAA,CAAQC,OAAR,CAAgBC,SAAhB,EAFgB,EAGhBY,KAHgB,EAIhBN,SAJgB,CAAlB;;IAMA,IAAM;MAAEL;IAAF,UAAiB,IAAAC,sBAAA,EAAcZ,YAAY,EAA1B,EAA8BwB,GAA9B,CACrBnB,SADqB,EAErBgB,WAFqB,EAGrB;MACEP,eAAe,EAAE;IADnB,CAHqB,CAAvB;IAOA,OAAOH,IAAP;EACD,C;;;;SAUqBc,wB;;;AA0BtB;AACA;AACA;AACA;AACA;;;;gDA9BO,WACLT,SADK,EAELU,WAFK,EAGLC,uBAHK,EAILC,yBAJK,EAK2B;IAChC,IAAMN,KAAK,GACTd,uBAAA,CAAQC,OAAR,CAAgBc,QAAhB,OAA+B,GAA/B,GAAqC,EAArC,GAA0Cf,uBAAA,CAAQC,OAAR,CAAgBc,QAAhB,EAD5C;;IAEA,IAAMlB,SAAS,GAAGC,aAAA,CAAKC,MAAL,CAChBV,gCADgB,EAEhBW,uBAAA,CAAQC,OAAR,CAAgBC,SAAhB,EAFgB,EAGhBY,KAHgB,EAIhBN,SAJgB,EAKhBU,WALgB,EAMhBC,uBANgB,CAAlB;;IAQA,IAAM;MAAEhB;IAAF,UAAiB,IAAAC,sBAAA,EAAcZ,YAAY,EAA1B,EAA8BwB,GAA9B,CACrBnB,SADqB,EAErBuB,yBAFqB,EAGrB;MACEd,eAAe,EAAE;IADnB,CAHqB,CAAvB;IAOA,OAAOH,IAAP;EACD,C;;;;SAOqBkB,a;;;AAetB;AACA;AACA;AACA;AACA;AACA;AACA;;;;qCArBO,WACLb,SADK,EAEuB;IAC5B,IAAMX,SAAS,GAAGC,aAAA,CAAKC,MAAL,CAChBZ,kBADgB,EAEhBa,uBAAA,CAAQC,OAAR,CAAgBC,SAAhB,EAFgB,EAGhB,IAAAR,6BAAA,GAHgB,EAIhBc,SAJgB,CAAlB;;IAMA,IAAM;MAAEL;IAAF,UAAiB,IAAAC,sBAAA,EAAcZ,YAAY,EAA1B,EAA8B8B,MAA9B,CAAqCzB,SAArC,EAAgD;MACrES,eAAe,EAAE;IADoD,CAAhD,CAAvB;IAGA,OAAOH,IAAP;EACD,C;;;;SASqBoB,2B;;;;;mDAAf,WACLf,SADK,EAELU,WAFK,EAGLC,uBAHK,EAI2B;IAChC,IAAMtB,SAAS,GAAGC,aAAA,CAAKC,MAAL,CAChBV,gCADgB,EAEhBW,uBAAA,CAAQC,OAAR,CAAgBC,SAAhB,EAFgB,EAGhB,IAAAR,6BAAA,GAHgB,EAIhBc,SAJgB,EAKhBU,WALgB,EAMhBC,uBANgB,CAAlB;;IAQA,IAAM;MAAEhB;IAAF,UAAiB,IAAAC,sBAAA,EAAcZ,YAAY,EAA1B,EAA8B8B,MAA9B,CAAqCzB,SAArC,EAAgD;MACrES,eAAe,EAAE;IADoD,CAAhD,CAAvB;IAGA,OAAOH,IAAP;EACD,C"}
|
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.VariablesRaw = exports.Variables = exports.Utils = exports.TypesRaw = exports.Types = exports.TreeRaw = exports.ThemeRaw = exports.Theme = exports.StartupRaw = exports.Startup = 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.Idp = exports.Idm = exports.ExportImportUtils = exports.EmailTemplateRaw = exports.EmailTemplate = exports.ConnectionProfile = exports.CirclesOfTrust = exports.Authenticate = exports.AgentRaw = exports.Agent = exports.Admin = void 0;
|
|
6
|
+
exports.state = exports.VariablesRaw = exports.Variables = exports.Utils = exports.TypesRaw = exports.Types = exports.TreeRaw = exports.ThemeRaw = exports.Theme = exports.StartupRaw = exports.Startup = 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.Idp = exports.Idm = exports.ExportImportUtils = exports.EmailTemplateRaw = exports.EmailTemplate = exports.ConnectionProfile = exports.CirclesOfTrust = exports.Authenticate = exports.AgentRaw = exports.Agent = exports.Admin = void 0;
|
|
7
7
|
|
|
8
8
|
var _colors = _interopRequireDefault(require("colors"));
|
|
9
9
|
|
|
@@ -111,6 +111,10 @@ var _Script = _interopRequireWildcard(require("./ops/ScriptOps"));
|
|
|
111
111
|
|
|
112
112
|
exports.Script = _Script;
|
|
113
113
|
|
|
114
|
+
var _Service = _interopRequireWildcard(require("./ops/ServiceOps"));
|
|
115
|
+
|
|
116
|
+
exports.Service = _Service;
|
|
117
|
+
|
|
114
118
|
var _Secrets = _interopRequireWildcard(require("./ops/SecretsOps"));
|
|
115
119
|
|
|
116
120
|
exports.Secrets = _Secrets;
|
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 EmailTemplateRaw from './api/EmailTemplateApi';\nexport * as NodeRaw from './api/NodeApi';\nexport * as SecretsRaw from './api/SecretsApi';\nexport * as StartupRaw from './api/StartupApi';\nexport * as ThemeRaw from './api/ThemeApi';\nexport * as TreeRaw from './api/TreeApi';\nexport * as TypesRaw from './api/ApiTypes';\nexport * as VariablesRaw from './api/VariablesApi';\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 Idm from './ops/IdmOps';\nexport * as Idp from './ops/IdpOps';\nexport * as Journey from './ops/JourneyOps';\nexport * as Log from './ops/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 Secrets from './ops/SecretsOps';\nexport * as Startup from './ops/StartupOps';\nexport * as Theme from './ops/ThemeOps';\nexport * as Types from './ops/OpsTypes';\nexport * as Variables from './ops/VariablesOps';\n// TODO: revisit if there are better ways\nexport * as Utils from './ops/utils/OpsUtils';\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 './storage/SessionStorage';\n// TODO: need to figure out if this is the right approach or if we should even\n// use a public oauth2/oidc library. might be ok for now since there is only\n// one place where the cli needs to execute an oauth flow.\nexport * as OAuth2OIDCApi from './api/OAuth2OIDCApi';\n"],"mappings":";;;;;;;AAAA
|
|
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 EmailTemplateRaw from './api/EmailTemplateApi';\nexport * as NodeRaw from './api/NodeApi';\nexport * as SecretsRaw from './api/SecretsApi';\nexport * as StartupRaw from './api/StartupApi';\nexport * as ThemeRaw from './api/ThemeApi';\nexport * as TreeRaw from './api/TreeApi';\nexport * as TypesRaw from './api/ApiTypes';\nexport * as VariablesRaw from './api/VariablesApi';\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 Idm from './ops/IdmOps';\nexport * as Idp from './ops/IdpOps';\nexport * as Journey from './ops/JourneyOps';\nexport * as Log from './ops/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/SecretsOps';\nexport * as Startup from './ops/StartupOps';\nexport * as Theme from './ops/ThemeOps';\nexport * as Types from './ops/OpsTypes';\nexport * as Variables from './ops/VariablesOps';\n// TODO: revisit if there are better ways\nexport * as Utils from './ops/utils/OpsUtils';\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 './storage/SessionStorage';\n// TODO: need to figure out if this is the right approach or if we should even\n// use a public oauth2/oidc library. might be ok for now since there is only\n// one place where the cli needs to execute an oauth flow.\nexport * as OAuth2OIDCApi from './api/OAuth2OIDCApi';\n"],"mappings":";;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEAA,eAAA,CAAMC,MAAN,G,CAEA"}
|
package/cjs/ops/AgentOps.js
CHANGED
|
@@ -58,8 +58,8 @@ var AGENT_TYPE_JAVA = 'J2EEAgent';
|
|
|
58
58
|
exports.AGENT_TYPE_JAVA = AGENT_TYPE_JAVA;
|
|
59
59
|
var AGENT_TYPE_WEB = 'WebAgent';
|
|
60
60
|
/**
|
|
61
|
-
* Create an empty
|
|
62
|
-
* @returns {
|
|
61
|
+
* Create an empty agent export template
|
|
62
|
+
* @returns {AgentExportInterface} an empty agent export template
|
|
63
63
|
*/
|
|
64
64
|
|
|
65
65
|
exports.AGENT_TYPE_WEB = AGENT_TYPE_WEB;
|