Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | 7x 7x 28x 7x 3x 4x 1x 3x 3x 3x 3x 3x 28x 7x 28x 10x 1x 9x 28x 10x 10x 4x 10x 28x 4x | import { ConnectorInstance, ConnectorRegistration, ConnectorRegistrationSource } from '../types/ConnectorTypes';
import * as Next from '../next/types/ConnectorTypes';
export class ConnectorCompatibilityTools {
/**
* Since `ConnectorGrafxRegistration` uses `RemoteConnectorId` instead of `url` on the engine side,
* we extract that `id` from the source `url`
* **/
makeConnectorSourceForwardsCompatible = (
registration: ConnectorRegistration | Next.ConnectorGrafxRegistration,
): ConnectorRegistration | Next.ConnectorGrafxRegistration => {
if (registration.source != ConnectorRegistrationSource.grafx) {
return registration;
}
if (this.isSourceMigrated(registration)) {
return registration;
}
let url = registration.url;
while (url.endsWith('/')) {
url = url.substring(0, url.length - 1);
}
const pathChunks = url.split('/');
// `RemoteConnectorId` is always the very last part of the URL
const remoteConnectorId = pathChunks[pathChunks.length - 1];
return { id: remoteConnectorId, source: ConnectorRegistrationSource.grafx };
};
makeMultipleConnectorsBackwardsCompatible = (
connectors: Next.ConnectorInstance[],
baseUrl: string | undefined,
): ConnectorInstance[] =>
connectors.map((connector) => this.makeSingleConnectorBackwardsCompatible(connector, baseUrl));
makeSingleConnectorBackwardsCompatible = (
connector: Next.ConnectorInstance,
baseUrl: string | undefined,
): ConnectorInstance => {
if (connector.source.source != ConnectorRegistrationSource.grafx) {
return connector as ConnectorInstance;
}
return {
id: connector.id,
name: connector.name,
iconUrl: connector.iconUrl,
source: this.makeConnectorSourceBackwardsCompatible(connector.source, baseUrl),
};
};
/**
* Since `ConnectorGrafxRegistration` uses `RemoteConnectorId` instead of `url` on the engine side,
* we generate that `url` from the `baseUrl` and `id`
* **/
makeConnectorSourceBackwardsCompatible = (
connector: Next.ConnectorGrafxRegistration,
baseUrl: string | undefined,
): ConnectorRegistration => {
let url = baseUrl;
while (url?.endsWith('/')) {
url = url.substring(0, url.length - 1);
}
return {
url: `${url}/connectors/${connector.id}`,
source: ConnectorRegistrationSource.grafx,
};
};
// Helps to promote a correct type
private isSourceMigrated = (
registration: ConnectorRegistration | Next.ConnectorGrafxRegistration,
): registration is Next.ConnectorGrafxRegistration => 'id' in registration;
}
|