UNPKG

@synerty/vortexjs

Version:

Custom observable data serialisation and routing based on Angular 2+

49 lines 6.58 kB
import * as pako from "pako"; import * as base64 from "base-64"; import { PayloadDelegateABC } from "./PayloadDelegateABC"; function btoa(data) { try { return window["btoa"](data); } catch (e) { return base64.encode(data); } } function atob(data) { try { return window["atob"](data); } catch (e) { return base64.decode(data); } } export class PayloadDelegateInMainWeb extends PayloadDelegateABC { deflateAndEncode(payloadJson) { return new Promise((resolve, reject) => { const compressedData = pako.deflate(payloadJson); const compressedDataStr = new Uint8Array(compressedData).reduce((acc, curr, i) => acc + String.fromCharCode(curr), ""); const encodedData = btoa(compressedDataStr); resolve(encodedData); }); } encodeEnvelope(payloadEnvelopeJson) { return new Promise((resolve, reject) => { const vortexMsg = btoa(payloadEnvelopeJson); resolve(vortexMsg); }); } decodeAndInflate(vortexStr) { return new Promise((resolve, reject) => { const compressedData = Uint8Array.from(atob(vortexStr), (v) => v.charCodeAt(0)); const payloadJson = pako.inflate(compressedData, { to: "string" }); resolve(payloadJson); }); } decodeEnvelope(vortexStr) { return new Promise((resolve, reject) => { let payloadJson = atob(vortexStr); resolve(payloadJson); }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF5bG9hZERlbGVnYXRlSW5NYWluV2ViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3ZvcnRleC9wYXlsb2FkL1BheWxvYWREZWxlZ2F0ZUluTWFpbldlYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUxRCxTQUFTLElBQUksQ0FBQyxJQUFJO0lBQ2QsSUFBSTtRQUNBLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQy9CO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDUixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7QUFDTCxDQUFDO0FBRUQsU0FBUyxJQUFJLENBQUMsSUFBSTtJQUNkLElBQUk7UUFDQSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMvQjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1IsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCO0FBQ0wsQ0FBQztBQUVELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxrQkFBa0I7SUFDNUQsZ0JBQWdCLENBQUMsV0FBbUI7UUFDaEMsT0FBTyxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMzQyxNQUFNLGNBQWMsR0FBZSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzdELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUMzRCxDQUFDLEdBQVcsRUFBRSxJQUFZLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FDckMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQ25DLEVBQUUsQ0FDTCxDQUFDO1lBQ0YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDNUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWMsQ0FBQyxtQkFBMkI7UUFDdEMsT0FBTyxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMzQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUM1QyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBaUI7UUFDOUIsT0FBTyxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMzQyxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQ2YsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQ2pDLENBQUM7WUFDRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ25FLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjLENBQUMsU0FBaUI7UUFDNUIsT0FBTyxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMzQyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbEMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGFrbyBmcm9tIFwicGFrb1wiO1xuaW1wb3J0ICogYXMgYmFzZTY0IGZyb20gXCJiYXNlLTY0XCI7XG5pbXBvcnQgeyBQYXlsb2FkRGVsZWdhdGVBQkMgfSBmcm9tIFwiLi9QYXlsb2FkRGVsZWdhdGVBQkNcIjtcblxuZnVuY3Rpb24gYnRvYShkYXRhKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHdpbmRvd1tcImJ0b2FcIl0oZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gYmFzZTY0LmVuY29kZShkYXRhKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGF0b2IoZGF0YSkge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB3aW5kb3dbXCJhdG9iXCJdKGRhdGEpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGJhc2U2NC5kZWNvZGUoZGF0YSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGF5bG9hZERlbGVnYXRlSW5NYWluV2ViIGV4dGVuZHMgUGF5bG9hZERlbGVnYXRlQUJDIHtcbiAgICBkZWZsYXRlQW5kRW5jb2RlKHBheWxvYWRKc29uOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb21wcmVzc2VkRGF0YTogVWludDhBcnJheSA9IHBha28uZGVmbGF0ZShwYXlsb2FkSnNvbik7XG4gICAgICAgICAgICBjb25zdCBjb21wcmVzc2VkRGF0YVN0ciA9IG5ldyBVaW50OEFycmF5KGNvbXByZXNzZWREYXRhKS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKGFjYzogc3RyaW5nLCBjdXJyOiBudW1iZXIsIGk6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgICAgICAgYWNjICsgU3RyaW5nLmZyb21DaGFyQ29kZShjdXJyKSxcbiAgICAgICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGVuY29kZWREYXRhID0gYnRvYShjb21wcmVzc2VkRGF0YVN0cik7XG4gICAgICAgICAgICByZXNvbHZlKGVuY29kZWREYXRhKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZW5jb2RlRW52ZWxvcGUocGF5bG9hZEVudmVsb3BlSnNvbjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgdm9ydGV4TXNnID0gYnRvYShwYXlsb2FkRW52ZWxvcGVKc29uKTtcbiAgICAgICAgICAgIHJlc29sdmUodm9ydGV4TXNnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVjb2RlQW5kSW5mbGF0ZSh2b3J0ZXhTdHI6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXByZXNzZWREYXRhID0gVWludDhBcnJheS5mcm9tKFxuICAgICAgICAgICAgICAgIGF0b2Iodm9ydGV4U3RyKSxcbiAgICAgICAgICAgICAgICAodjogc3RyaW5nKSA9PiB2LmNoYXJDb2RlQXQoMCksXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgcGF5bG9hZEpzb24gPSBwYWtvLmluZmxhdGUoY29tcHJlc3NlZERhdGEsIHsgdG86IFwic3RyaW5nXCIgfSk7XG4gICAgICAgICAgICByZXNvbHZlKHBheWxvYWRKc29uKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVjb2RlRW52ZWxvcGUodm9ydGV4U3RyOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBsZXQgcGF5bG9hZEpzb24gPSBhdG9iKHZvcnRleFN0cik7XG4gICAgICAgICAgICByZXNvbHZlKHBheWxvYWRKc29uKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19