@kineticdata/react
Version:
A React library for the Kinetic Platform
232 lines (231 loc) • 8.54 kB
JavaScript
;
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';