feat: Convert helpers to use JS files
This commit is contained in:
87
packages/backend/src/helpers/add-reconnection-steps.js
Normal file
87
packages/backend/src/helpers/add-reconnection-steps.js
Normal file
@@ -0,0 +1,87 @@
|
||||
import cloneDeep from 'lodash/cloneDeep';
|
||||
|
||||
const connectionIdArgument = {
|
||||
name: 'id',
|
||||
value: '{connection.id}',
|
||||
};
|
||||
|
||||
const resetConnectionStep = {
|
||||
type: 'mutation',
|
||||
name: 'resetConnection',
|
||||
arguments: [connectionIdArgument],
|
||||
};
|
||||
|
||||
function replaceCreateConnection(string) {
|
||||
return string.replace('{createConnection.id}', '{connection.id}');
|
||||
}
|
||||
|
||||
function removeAppKeyArgument(args) {
|
||||
return args.filter((argument) => argument.name !== 'key');
|
||||
}
|
||||
|
||||
function addConnectionId(step) {
|
||||
step.arguments = step.arguments.map((argument) => {
|
||||
if (typeof argument.value === 'string') {
|
||||
argument.value = replaceCreateConnection(argument.value);
|
||||
}
|
||||
|
||||
if (argument.properties) {
|
||||
argument.properties = argument.properties.map((property) => {
|
||||
return {
|
||||
name: property.name,
|
||||
value: replaceCreateConnection(property.value),
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
return argument;
|
||||
});
|
||||
|
||||
return step;
|
||||
}
|
||||
|
||||
function replaceCreateConnectionsWithUpdate(steps) {
|
||||
const updatedSteps = cloneDeep(steps);
|
||||
return updatedSteps.map((step) => {
|
||||
const updatedStep = addConnectionId(step);
|
||||
|
||||
if (step.name === 'createConnection') {
|
||||
updatedStep.name = 'updateConnection';
|
||||
updatedStep.arguments = removeAppKeyArgument(updatedStep.arguments);
|
||||
updatedStep.arguments.unshift(connectionIdArgument);
|
||||
|
||||
return updatedStep;
|
||||
}
|
||||
|
||||
return step;
|
||||
});
|
||||
}
|
||||
|
||||
function addReconnectionSteps(app) {
|
||||
const hasReconnectionSteps = app.auth.reconnectionSteps;
|
||||
|
||||
if (hasReconnectionSteps) return app;
|
||||
|
||||
if (app.auth.authenticationSteps) {
|
||||
const updatedSteps = replaceCreateConnectionsWithUpdate(
|
||||
app.auth.authenticationSteps
|
||||
);
|
||||
|
||||
app.auth.reconnectionSteps = [resetConnectionStep, ...updatedSteps];
|
||||
}
|
||||
|
||||
if (app.auth.sharedAuthenticationSteps) {
|
||||
const updatedStepsWithEmbeddedDefaults = replaceCreateConnectionsWithUpdate(
|
||||
app.auth.sharedAuthenticationSteps
|
||||
);
|
||||
|
||||
app.auth.sharedReconnectionSteps = [
|
||||
resetConnectionStep,
|
||||
...updatedStepsWithEmbeddedDefaults,
|
||||
];
|
||||
}
|
||||
|
||||
return app;
|
||||
}
|
||||
|
||||
export default addReconnectionSteps;
|
Reference in New Issue
Block a user