@synerty/vortexjs
Version:
Custom observable data serialisation and routing based on Angular 2+
49 lines • 6.58 kB
JavaScript
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