UNPKG

@kineticdata/react

Version:
232 lines (231 loc) 8.54 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports.IntegrationForm = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray")); var _Form = require("../../form/Form"); var _apis = require("../../../apis"); var _immutable = require("immutable"); var _integrationTypes = _interopRequireWildcard(require("../../integrator/integrationTypes")); var dataSources = function dataSources(_ref) { var kappSlug = _ref.kappSlug, name = _ref.name; return { integration: { fn: _apis.fetchIntegration, params: name && [{ kappSlug: kappSlug, name: name, include: 'securityPolicies' }], transform: function transform(result) { return result.integration; }, errorTransform: function errorTransform(result) { return result.error; } }, connections: { fn: _apis.fetchConnections, params: [], transform: function transform(result) { return result.connections; } }, operations: { fn: _apis.fetchOperations, params: function params(_ref2) { var values = _ref2.values, integration = _ref2.integration; var connectionId = (values === null || values === void 0 ? void 0 : values.get('connectionId')) || (integration === null || integration === void 0 ? void 0 : integration.get('connectionId')); return connectionId && [{ connectionId: connectionId }]; }, transform: function transform(result) { return result.operations; } }, parameters: { fn: function fn(options) { return !!options.operationId ? (0, _apis.inspectOperation)(options) : Promise.resolve({}); }, params: function params(_ref3) { var values = _ref3.values; return [{ operationId: values === null || values === void 0 ? void 0 : values.get('operationId') }]; } }, securityPolicyDefinitions: { fn: _apis.fetchSecurityPolicyDefinitions, params: kappSlug && [{ kappSlug: kappSlug }], transform: function transform(result) { return result.securityPolicyDefinitions; } } }; }; var handleSubmit = function handleSubmit(_ref4) { var kappSlug = _ref4.kappSlug, name = _ref4.name; return function (values) { return (name ? _apis.updateIntegration : _apis.createIntegration)({ integration: values.toJS(), kappSlug: kappSlug, name: name }).then(function (_ref5) { var integration = _ref5.integration, error = _ref5.error; if (error) { throw error.statusCode === 400 && error.message || 'There was an error saving the integration'; } return integration; }); }; }; var securityEndpoints = { execution: { endpoint: 'Execution', label: 'Execution Security Policy', types: ['Kapp'] } }; var fields = function fields(_ref6) { var name = _ref6.name; return function (_ref7) { var integration = _ref7.integration, connections = _ref7.connections, operations = _ref7.operations; return (!name || integration) && connections && (!(integration !== null && integration !== void 0 && integration.get('connectionId')) || operations) && [{ name: 'name', label: 'Name', type: 'text', pattern: /^[a-z\d-]+[a-z\d\s-]*$/i, patternMessage: 'Name can only contain alpha-numeric characters, spaces, and hyphens, and cannot start with spaces.', required: true, initialValue: integration ? integration.get('name') : '' }, { name: 'connectionId', label: 'Connection', type: 'select', required: true, initialValue: integration ? integration.get('connectionId') : '', options: function options(_ref8) { var connections = _ref8.connections; return connections.map(function (conn) { var _getConnectionMetadat; return (0, _immutable.Map)({ value: conn.get('id'), label: conn.get('name'), type: _integrationTypes["default"].getLabel(conn.get('type')), detail: (_getConnectionMetadat = (0, _integrationTypes.getConnectionMetadata)(conn)) === null || _getConnectionMetadat === void 0 ? void 0 : _getConnectionMetadat.optionDetail }); }); }, onChange: function onChange(bindings, _ref9) { var setValue = _ref9.setValue; setValue('operationId', ''); setValue('inputMappings', {}); } }, { name: 'operationId', label: 'Operation', type: 'select', required: true, initialValue: integration ? integration.get('operationId') : '', options: function options(_ref10) { var operations = _ref10.operations, values = _ref10.values; return (operations || (0, _immutable.List)() // Make sure we only show correct operations while waiting on data to // be fetched ).filter(function (op) { return op.get('connectionId') === values.get('connectionId'); }).map(function (op) { var _getOperationMetadata; return (0, _immutable.Map)({ value: op.get('id'), label: op.get('name'), detail: (_getOperationMetadata = (0, _integrationTypes.getOperationMetadata)(op)) === null || _getOperationMetadata === void 0 ? void 0 : _getOperationMetadata.optionDetail }); }); }, enabled: function enabled(_ref11) { var values = _ref11.values; return !!values.get('connectionId'); }, placeholder: function placeholder(_ref12) { var values = _ref12.values; return !values.get('connectionId') ? 'Select a connection' : undefined; } }, { name: 'inputMappings', label: 'Parameter Mappings', type: 'map', initialValue: integration ? integration.get('inputMappings') : {}, enabled: function enabled(_ref13) { var values = _ref13.values; return !!values.get('operationId'); } }].concat((0, _toConsumableArray2["default"])(Object.entries(securityEndpoints).map(function (_ref14) { var _ref15 = (0, _slicedToArray2["default"])(_ref14, 2), endpointFieldName = _ref15[0], endpoint = _ref15[1]; return { name: endpointFieldName, label: endpoint.label, type: 'select', options: function options(_ref16) { var securityPolicyDefinitions = _ref16.securityPolicyDefinitions; return securityPolicyDefinitions ? securityPolicyDefinitions.filter(function (definition) { return endpoint.types.includes(definition.get('type')); }).map(function (definition) { return (0, _immutable.Map)({ value: definition.get('name'), label: definition.get('name'), type: definition.get('type') }); }) : []; }, initialValue: integration ? integration.get('securityPolicies').find(function (pol) { return pol.get('endpoint') === endpoint.endpoint; }, null, (0, _immutable.Map)({})).get('name', '') : '', "transient": true }; })), [{ name: 'securityPolicies', label: 'Security Policies', type: null, visible: false, serialize: function serialize(_ref17) { var values = _ref17.values; return Object.entries(securityEndpoints).map(function (_ref18) { var _ref19 = (0, _slicedToArray2["default"])(_ref18, 2), endpointFieldName = _ref19[0], policy = _ref19[1]; return { endpoint: policy.endpoint, name: values.get(endpointFieldName) }; }).filter(function (endpoint) { return endpoint.name !== ''; }); }, initialValue: integration ? integration.get('securityPolicies') : [] }]); }; }; var IntegrationForm = exports.IntegrationForm = (0, _Form.generateForm)({ formOptions: ['kappSlug', 'name'], dataSources: dataSources, fields: fields, handleSubmit: handleSubmit }); IntegrationForm.displayName = 'IntegrationForm';