UNPKG

mongodb-stitch

Version:

[![Join the chat at https://gitter.im/mongodb/stitch](https://badges.gitter.im/mongodb/stitch.svg)](https://gitter.im/mongodb/stitch?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

86 lines 3.45 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var bson_1 = require("bson"); var Event_1 = __importDefault(require("./Event")); var StitchServiceError_1 = __importDefault(require("../../StitchServiceError")); var StitchServiceErrorCode_1 = require("../../StitchServiceErrorCode"); var StitchEvent = (function () { function StitchEvent(eventName, data, decoder) { this.eventName = eventName; data = data ? data : ""; var decodedStringBuffer = []; for (var chIdx = 0; chIdx < data.length; chIdx++) { var c = data[chIdx]; switch (c) { case '%': if (chIdx + 2 >= data.length) { break; } var code = data.substring(chIdx + 1, chIdx + 3); var found = void 0; switch (code) { case "25": found = true; decodedStringBuffer.push("%"); break; case "0A": found = true; decodedStringBuffer.push("\n"); break; case "0D": found = true; decodedStringBuffer.push("\r"); break; default: found = false; } if (found) { chIdx += 2; continue; } break; default: break; } decodedStringBuffer.push(c); } var decodedData = decodedStringBuffer.join(''); switch (this.eventName) { case StitchEvent.ERROR_EVENT_NAME: var errorMsg = void 0; var errorCode = void 0; try { var errorDoc = bson_1.EJSON.parse(decodedData, { strict: false }); errorMsg = errorDoc[ErrorFields.Error]; errorCode = StitchServiceErrorCode_1.stitchServiceErrorCodeFromApi(errorDoc[ErrorFields.ErrorCode]); } catch (error) { errorMsg = decodedData; errorCode = StitchServiceErrorCode_1.StitchServiceErrorCode.Unknown; } this.error = new StitchServiceError_1.default(errorMsg, errorCode); break; case Event_1.default.MESSAGE_EVENT: this.data = bson_1.EJSON.parse(decodedData, { strict: false }); if (decoder) { this.data = decoder.decode(this.data); } break; } } StitchEvent.fromEvent = function (event, decoder) { return new StitchEvent(event.eventName, event.data, decoder); }; StitchEvent.ERROR_EVENT_NAME = "error"; return StitchEvent; }()); exports.default = StitchEvent; var ErrorFields; (function (ErrorFields) { ErrorFields["Error"] = "error"; ErrorFields["ErrorCode"] = "error_code"; })(ErrorFields || (ErrorFields = {})); //# sourceMappingURL=StitchEvent.js.map