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.
52 lines • 6.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getConnection = getConnection;
const credential_providers_1 = require("@aws-sdk/credential-providers");
const aws_iot_device_sdk_1 = require("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);
};
}
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 = (0, credential_providers_1.fromNodeProviderChain)();
const credentials = await provider();
const connection = new aws_iot_device_sdk_1.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW90LWNvbm5lY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saXN0ZW5lci9pb3QtY29ubmVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQW1CQSxzQ0EyQ0M7QUE5REQsd0VBQXNFO0FBQ3RFLDJEQUE0QztBQUk1QyxTQUFTLFNBQVMsQ0FBQyxTQUFrQjtJQUNuQyxPQUFPLENBQUMsT0FBZSxFQUFFLEdBQUcsY0FBcUIsRUFBRSxFQUFFO1FBQ25ELElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxjQUFjLENBQUMsQ0FBQztRQUNwRCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsY0FBYztJQUNyQixPQUFPLENBQUMsT0FBZSxFQUFFLEdBQUcsY0FBcUIsRUFBRSxFQUFFO1FBQ25ELE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDO0lBQ3BELENBQUMsQ0FBQztBQUNKLENBQUM7QUFFTSxLQUFLLFVBQVUsYUFBYSxDQUNqQyxTQUFrQixFQUNsQixXQUFtQjtJQUVuQixNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakMsTUFBTSxRQUFRLEdBQUcsY0FBYyxFQUFFLENBQUM7SUFDbEMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBRXhDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixRQUFRLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFekMsTUFBTSxRQUFRLEdBQUcsSUFBQSw0Q0FBcUIsR0FBRSxDQUFDO0lBQ3pDLE1BQU0sV0FBVyxHQUFHLE1BQU0sUUFBUSxFQUFFLENBQUM7SUFDckMsTUFBTSxVQUFVLEdBQUcsSUFBSSwyQkFBTSxDQUFDO1FBQzVCLFFBQVEsRUFBRSxLQUFLO1FBQ2YsSUFBSSxFQUFFLFdBQVc7UUFDakIsTUFBTTtRQUNOLGVBQWUsRUFBRSxDQUFDO1FBQ2xCLFdBQVcsRUFBRSxXQUFXLENBQUMsV0FBVztRQUNwQyxTQUFTLEVBQUUsV0FBVyxDQUFDLGVBQWU7UUFDdEMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxZQUFZO0tBQ3ZDLENBQUMsQ0FBQztJQUVILFVBQVUsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtRQUM1QixHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFFSCxVQUFVLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQzdCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFFSCxVQUFVLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDMUIsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBRUgsVUFBVSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO1FBQzlCLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb21Ob2RlUHJvdmlkZXJDaGFpbiB9IGZyb20gJ0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXJzJztcbmltcG9ydCB7IGRldmljZSB9IGZyb20gJ2F3cy1pb3QtZGV2aWNlLXNkayc7XG5cbmV4cG9ydCB0eXBlIGZyYWdtZW50ID0geyBpZDogc3RyaW5nOyBpbmRleDogbnVtYmVyOyBjb3VudDogbnVtYmVyOyBkYXRhOiBhbnkgfTtcblxuZnVuY3Rpb24gY3JlYXRlTG9nKGRlYnVnTW9kZTogYm9vbGVhbikge1xuICByZXR1cm4gKG1lc3NhZ2U6IHN0cmluZywgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKSA9PiB7XG4gICAgaWYgKGRlYnVnTW9kZSkge1xuICAgICAgY29uc29sZS5kZWJ1ZygnU1NQWScsIG1lc3NhZ2UsIC4uLm9wdGlvbmFsUGFyYW1zKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUVycm9yTG9nKCkge1xuICByZXR1cm4gKG1lc3NhZ2U6IHN0cmluZywgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKSA9PiB7XG4gICAgY29uc29sZS5lcnJvcignU1NQWScsIG1lc3NhZ2UsIC4uLm9wdGlvbmFsUGFyYW1zKTtcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENvbm5lY3Rpb24oXG4gIGRlYnVnTW9kZTogYm9vbGVhbixcbiAgaW90RW5kcG9pbnQ6IHN0cmluZ1xuKTogUHJvbWlzZTxkZXZpY2U+IHtcbiAgY29uc3QgbG9nID0gY3JlYXRlTG9nKGRlYnVnTW9kZSk7XG4gIGNvbnN0IGxvZ0Vycm9yID0gY3JlYXRlRXJyb3JMb2coKTtcbiAgbG9nKCdVc2luZyBJb1QgZW5kcG9pbnQ6JywgaW90RW5kcG9pbnQpO1xuXG4gIGlmICghaW90RW5kcG9pbnQpIHtcbiAgICBsb2dFcnJvcignTm8gSW9UIGVuZHBvaW50IGNvdWxkIGJlIGZvdW5kJyk7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJb1QgRW5kcG9pbnQgYWRkcmVzcyBub3QgZm91bmQnKTtcbiAgfVxuICBjb25zdCByZWdpb24gPSBpb3RFbmRwb2ludC5zcGxpdCgnLicpWzJdO1xuXG4gIGNvbnN0IHByb3ZpZGVyID0gZnJvbU5vZGVQcm92aWRlckNoYWluKCk7XG4gIGNvbnN0IGNyZWRlbnRpYWxzID0gYXdhaXQgcHJvdmlkZXIoKTtcbiAgY29uc3QgY29ubmVjdGlvbiA9IG5ldyBkZXZpY2Uoe1xuICAgIHByb3RvY29sOiAnd3NzJyxcbiAgICBob3N0OiBpb3RFbmRwb2ludCxcbiAgICByZWdpb24sXG4gICAgcmVjb25uZWN0UGVyaW9kOiAxLFxuICAgIGFjY2Vzc0tleUlkOiBjcmVkZW50aWFscy5hY2Nlc3NLZXlJZCxcbiAgICBzZWNyZXRLZXk6IGNyZWRlbnRpYWxzLnNlY3JldEFjY2Vzc0tleSxcbiAgICBzZXNzaW9uVG9rZW46IGNyZWRlbnRpYWxzLnNlc3Npb25Ub2tlbixcbiAgfSk7XG5cbiAgY29ubmVjdGlvbi5vbignY29ubmVjdCcsICgpID0+IHtcbiAgICBsb2coJ0lvVCBjb25uZWN0ZWQnKTtcbiAgfSk7XG5cbiAgY29ubmVjdGlvbi5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgbG9nRXJyb3IoJ0lvVCBlcnJvcicsIGVycik7XG4gIH0pO1xuXG4gIGNvbm5lY3Rpb24ub24oJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGxvZygnSW9UIGNsb3NlZCcpO1xuICB9KTtcblxuICBjb25uZWN0aW9uLm9uKCdyZWNvbm5lY3QnLCAoKSA9PiB7XG4gICAgbG9nKCdJb1QgcmVjb25uZWN0ZWQnKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbm5lY3Rpb247XG59XG4iXX0=