UNPKG

serverless-spy

Version:

CDK-based library for writing elegant integration tests on AWS serverless architecture and an additional web console to monitor events in real time.

49 lines 6 kB
import { fromNodeProviderChain } from '@aws-sdk/credential-providers'; import { device } from 'aws-iot-device-sdk'; function createLog(debugMode) { return (message, ...optionalParams) => { if (debugMode) { console.debug('SSPY', message, ...optionalParams); } }; } function createErrorLog() { return (message, ...optionalParams) => { console.error('SSPY', message, ...optionalParams); }; } export async function getConnection(debugMode, iotEndpoint) { const log = createLog(debugMode); const logError = createErrorLog(); log('Using IoT endpoint:', iotEndpoint); if (!iotEndpoint) { logError('No IoT endpoint could be found'); throw new Error('IoT Endpoint address not found'); } const region = iotEndpoint.split('.')[2]; const provider = fromNodeProviderChain(); const credentials = await provider(); const connection = new device({ protocol: 'wss', host: iotEndpoint, region, reconnectPeriod: 1, accessKeyId: credentials.accessKeyId, secretKey: credentials.secretAccessKey, sessionToken: credentials.sessionToken, }); connection.on('connect', () => { log('IoT connected'); }); connection.on('error', (err) => { logError('IoT error', err); }); connection.on('close', () => { log('IoT closed'); }); connection.on('reconnect', () => { log('IoT reconnected'); }); return connection; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW90LWNvbm5lY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saXN0ZW5lci9pb3QtY29ubmVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJNUMsU0FBUyxTQUFTLENBQUMsU0FBa0I7SUFDbkMsT0FBTyxDQUFDLE9BQWUsRUFBRSxHQUFHLGNBQXFCLEVBQUUsRUFBRTtRQUNuRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsY0FBYyxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGNBQWM7SUFDckIsT0FBTyxDQUFDLE9BQWUsRUFBRSxHQUFHLGNBQXFCLEVBQUUsRUFBRTtRQUNuRCxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxjQUFjLENBQUMsQ0FBQztJQUNwRCxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxhQUFhLENBQ2pDLFNBQWtCLEVBQ2xCLFdBQW1CO0lBRW5CLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqQyxNQUFNLFFBQVEsR0FBRyxjQUFjLEVBQUUsQ0FBQztJQUNsQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFeEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pCLFFBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV6QyxNQUFNLFFBQVEsR0FBRyxxQkFBcUIsRUFBRSxDQUFDO0lBQ3pDLE1BQU0sV0FBVyxHQUFHLE1BQU0sUUFBUSxFQUFFLENBQUM7SUFDckMsTUFBTSxVQUFVLEdBQUcsSUFBSSxNQUFNLENBQUM7UUFDNUIsUUFBUSxFQUFFLEtBQUs7UUFDZixJQUFJLEVBQUUsV0FBVztRQUNqQixNQUFNO1FBQ04sZUFBZSxFQUFFLENBQUM7UUFDbEIsV0FBVyxFQUFFLFdBQVcsQ0FBQyxXQUFXO1FBQ3BDLFNBQVMsRUFBRSxXQUFXLENBQUMsZUFBZTtRQUN0QyxZQUFZLEVBQUUsV0FBVyxDQUFDLFlBQVk7S0FDdkMsQ0FBQyxDQUFDO0lBRUgsVUFBVSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO1FBQzVCLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN2QixDQUFDLENBQUMsQ0FBQztJQUVILFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDN0IsUUFBUSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDLENBQUMsQ0FBQztJQUVILFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUMxQixHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxVQUFVLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUU7UUFDOUIsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDekIsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZnJvbU5vZGVQcm92aWRlckNoYWluIH0gZnJvbSAnQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlcnMnO1xuaW1wb3J0IHsgZGV2aWNlIH0gZnJvbSAnYXdzLWlvdC1kZXZpY2Utc2RrJztcblxuZXhwb3J0IHR5cGUgZnJhZ21lbnQgPSB7IGlkOiBzdHJpbmc7IGluZGV4OiBudW1iZXI7IGNvdW50OiBudW1iZXI7IGRhdGE6IGFueSB9O1xuXG5mdW5jdGlvbiBjcmVhdGVMb2coZGVidWdNb2RlOiBib29sZWFuKSB7XG4gIHJldHVybiAobWVzc2FnZTogc3RyaW5nLCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pID0+IHtcbiAgICBpZiAoZGVidWdNb2RlKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdTU1BZJywgbWVzc2FnZSwgLi4ub3B0aW9uYWxQYXJhbXMpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRXJyb3JMb2coKSB7XG4gIHJldHVybiAobWVzc2FnZTogc3RyaW5nLCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pID0+IHtcbiAgICBjb25zb2xlLmVycm9yKCdTU1BZJywgbWVzc2FnZSwgLi4ub3B0aW9uYWxQYXJhbXMpO1xuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q29ubmVjdGlvbihcbiAgZGVidWdNb2RlOiBib29sZWFuLFxuICBpb3RFbmRwb2ludDogc3RyaW5nXG4pOiBQcm9taXNlPGRldmljZT4ge1xuICBjb25zdCBsb2cgPSBjcmVhdGVMb2coZGVidWdNb2RlKTtcbiAgY29uc3QgbG9nRXJyb3IgPSBjcmVhdGVFcnJvckxvZygpO1xuICBsb2coJ1VzaW5nIElvVCBlbmRwb2ludDonLCBpb3RFbmRwb2ludCk7XG5cbiAgaWYgKCFpb3RFbmRwb2ludCkge1xuICAgIGxvZ0Vycm9yKCdObyBJb1QgZW5kcG9pbnQgY291bGQgYmUgZm91bmQnKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0lvVCBFbmRwb2ludCBhZGRyZXNzIG5vdCBmb3VuZCcpO1xuICB9XG4gIGNvbnN0IHJlZ2lvbiA9IGlvdEVuZHBvaW50LnNwbGl0KCcuJylbMl07XG5cbiAgY29uc3QgcHJvdmlkZXIgPSBmcm9tTm9kZVByb3ZpZGVyQ2hhaW4oKTtcbiAgY29uc3QgY3JlZGVudGlhbHMgPSBhd2FpdCBwcm92aWRlcigpO1xuICBjb25zdCBjb25uZWN0aW9uID0gbmV3IGRldmljZSh7XG4gICAgcHJvdG9jb2w6ICd3c3MnLFxuICAgIGhvc3Q6IGlvdEVuZHBvaW50LFxuICAgIHJlZ2lvbixcbiAgICByZWNvbm5lY3RQZXJpb2Q6IDEsXG4gICAgYWNjZXNzS2V5SWQ6IGNyZWRlbnRpYWxzLmFjY2Vzc0tleUlkLFxuICAgIHNlY3JldEtleTogY3JlZGVudGlhbHMuc2VjcmV0QWNjZXNzS2V5LFxuICAgIHNlc3Npb25Ub2tlbjogY3JlZGVudGlhbHMuc2Vzc2lvblRva2VuLFxuICB9KTtcblxuICBjb25uZWN0aW9uLm9uKCdjb25uZWN0JywgKCkgPT4ge1xuICAgIGxvZygnSW9UIGNvbm5lY3RlZCcpO1xuICB9KTtcblxuICBjb25uZWN0aW9uLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICBsb2dFcnJvcignSW9UIGVycm9yJywgZXJyKTtcbiAgfSk7XG5cbiAgY29ubmVjdGlvbi5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgbG9nKCdJb1QgY2xvc2VkJyk7XG4gIH0pO1xuXG4gIGNvbm5lY3Rpb24ub24oJ3JlY29ubmVjdCcsICgpID0+IHtcbiAgICBsb2coJ0lvVCByZWNvbm5lY3RlZCcpO1xuICB9KTtcblxuICByZXR1cm4gY29ubmVjdGlvbjtcbn1cbiJdfQ==