UNPKG

6.14 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6const lodash_1 = require("lodash");
7const replicator_1 = __importDefault(require("replicator"));
8const builder_symbol_1 = __importDefault(require("./builder-symbol"));
9const compile_client_function_1 = __importDefault(require("../compiler/compile-client-function"));
10function createReplicator(transforms) {
11 // NOTE: we will serialize replicator results
12 // to JSON with a command or command result.
13 // Therefore there is no need to do additional job here,
14 // so we use identity functions for serialization.
15 const replicator = new replicator_1.default({
16 serialize: lodash_1.identity,
17 deserialize: lodash_1.identity
18 });
19 return replicator.addTransforms(transforms);
20}
21exports.createReplicator = createReplicator;
22// Replicator transforms
23class FunctionTransform {
24 constructor(callsiteNames) {
25 this.type = 'Function';
26 this.callsiteNames = callsiteNames;
27 }
28 shouldTransform(type) {
29 return type === 'function';
30 }
31 toSerializable(fn) {
32 const clientFnBuilder = fn[builder_symbol_1.default];
33 if (clientFnBuilder) {
34 return {
35 fnCode: clientFnBuilder.compiledFnCode,
36 dependencies: clientFnBuilder.getFunctionDependencies()
37 };
38 }
39 return {
40 fnCode: compile_client_function_1.default(fn.toString(), null, this.callsiteNames.instantiation, this.callsiteNames.execution),
41 dependencies: {}
42 };
43 }
44 fromSerializable() {
45 return void 0;
46 }
47}
48exports.FunctionTransform = FunctionTransform;
49class SelectorNodeTransform {
50 constructor() {
51 this.type = 'Node';
52 }
53 shouldTransform() {
54 return false;
55 }
56 fromSerializable(nodeSnapshot) {
57 return nodeSnapshot;
58 }
59}
60exports.SelectorNodeTransform = SelectorNodeTransform;
61//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGljYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQtZnVuY3Rpb25zL3JlcGxpY2F0b3IuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBa0M7QUFDbEMsNERBQW9DO0FBQ3BDLHNFQUFxRDtBQUNyRCxrR0FBd0U7QUFFeEUsU0FBZ0IsZ0JBQWdCLENBQUUsVUFBVTtJQUN4Qyw2Q0FBNkM7SUFDN0MsNENBQTRDO0lBQzVDLHdEQUF3RDtJQUN4RCxrREFBa0Q7SUFDbEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxvQkFBVSxDQUFDO1FBQzlCLFNBQVMsRUFBSSxpQkFBUTtRQUNyQixXQUFXLEVBQUUsaUJBQVE7S0FDeEIsQ0FBQyxDQUFDO0lBRUgsT0FBTyxVQUFVLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFYRCw0Q0FXQztBQUVELHdCQUF3QjtBQUN4QixNQUFhLGlCQUFpQjtJQUMxQixZQUFhLGFBQWE7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBWSxVQUFVLENBQUM7UUFDaEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDdkMsQ0FBQztJQUVELGVBQWUsQ0FBRSxJQUFJO1FBQ2pCLE9BQU8sSUFBSSxLQUFLLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsY0FBYyxDQUFFLEVBQUU7UUFDZCxNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUMsd0JBQXFCLENBQUMsQ0FBQztRQUVsRCxJQUFJLGVBQWUsRUFBRTtZQUNqQixPQUFPO2dCQUNILE1BQU0sRUFBUSxlQUFlLENBQUMsY0FBYztnQkFDNUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyx1QkFBdUIsRUFBRTthQUMxRCxDQUFDO1NBQ0w7UUFFRCxPQUFPO1lBQ0gsTUFBTSxFQUFRLGlDQUFxQixDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7WUFDeEgsWUFBWSxFQUFFLEVBQUU7U0FDbkIsQ0FBQztJQUNOLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2xCLENBQUM7Q0FDSjtBQTdCRCw4Q0E2QkM7QUFFRCxNQUFhLHFCQUFxQjtJQUM5QjtRQUNJLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxlQUFlO1FBQ1gsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELGdCQUFnQixDQUFFLFlBQVk7UUFDMUIsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztDQUNKO0FBWkQsc0RBWUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpZGVudGl0eSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgUmVwbGljYXRvciBmcm9tICdyZXBsaWNhdG9yJztcbmltcG9ydCBmdW5jdGlvbkJ1aWxkZXJTeW1ib2wgZnJvbSAnLi9idWlsZGVyLXN5bWJvbCc7XG5pbXBvcnQgY29tcGlsZUNsaWVudEZ1bmN0aW9uIGZyb20gJy4uL2NvbXBpbGVyL2NvbXBpbGUtY2xpZW50LWZ1bmN0aW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlcGxpY2F0b3IgKHRyYW5zZm9ybXMpIHtcbiAgICAvLyBOT1RFOiB3ZSB3aWxsIHNlcmlhbGl6ZSByZXBsaWNhdG9yIHJlc3VsdHNcbiAgICAvLyB0byBKU09OIHdpdGggYSBjb21tYW5kIG9yIGNvbW1hbmQgcmVzdWx0LlxuICAgIC8vIFRoZXJlZm9yZSB0aGVyZSBpcyBubyBuZWVkIHRvIGRvIGFkZGl0aW9uYWwgam9iIGhlcmUsXG4gICAgLy8gc28gd2UgdXNlIGlkZW50aXR5IGZ1bmN0aW9ucyBmb3Igc2VyaWFsaXphdGlvbi5cbiAgICBjb25zdCByZXBsaWNhdG9yID0gbmV3IFJlcGxpY2F0b3Ioe1xuICAgICAgICBzZXJpYWxpemU6ICAgaWRlbnRpdHksXG4gICAgICAgIGRlc2VyaWFsaXplOiBpZGVudGl0eVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlcGxpY2F0b3IuYWRkVHJhbnNmb3Jtcyh0cmFuc2Zvcm1zKTtcbn1cblxuLy8gUmVwbGljYXRvciB0cmFuc2Zvcm1zXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25UcmFuc2Zvcm0ge1xuICAgIGNvbnN0cnVjdG9yIChjYWxsc2l0ZU5hbWVzKSB7XG4gICAgICAgIHRoaXMudHlwZSAgICAgICAgICA9ICdGdW5jdGlvbic7XG4gICAgICAgIHRoaXMuY2FsbHNpdGVOYW1lcyA9IGNhbGxzaXRlTmFtZXM7XG4gICAgfVxuXG4gICAgc2hvdWxkVHJhbnNmb3JtICh0eXBlKSB7XG4gICAgICAgIHJldHVybiB0eXBlID09PSAnZnVuY3Rpb24nO1xuICAgIH1cblxuICAgIHRvU2VyaWFsaXphYmxlIChmbikge1xuICAgICAgICBjb25zdCBjbGllbnRGbkJ1aWxkZXIgPSBmbltmdW5jdGlvbkJ1aWxkZXJTeW1ib2xdO1xuXG4gICAgICAgIGlmIChjbGllbnRGbkJ1aWxkZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZm5Db2RlOiAgICAgICBjbGllbnRGbkJ1aWxkZXIuY29tcGlsZWRGbkNvZGUsXG4gICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzOiBjbGllbnRGbkJ1aWxkZXIuZ2V0RnVuY3Rpb25EZXBlbmRlbmNpZXMoKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmbkNvZGU6ICAgICAgIGNvbXBpbGVDbGllbnRGdW5jdGlvbihmbi50b1N0cmluZygpLCBudWxsLCB0aGlzLmNhbGxzaXRlTmFtZXMuaW5zdGFudGlhdGlvbiwgdGhpcy5jYWxsc2l0ZU5hbWVzLmV4ZWN1dGlvbiksXG4gICAgICAgICAgICBkZXBlbmRlbmNpZXM6IHt9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnJvbVNlcmlhbGl6YWJsZSAoKSB7XG4gICAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2VsZWN0b3JOb2RlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICAgIHRoaXMudHlwZSA9ICdOb2RlJztcbiAgICB9XG5cbiAgICBzaG91bGRUcmFuc2Zvcm0gKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZnJvbVNlcmlhbGl6YWJsZSAobm9kZVNuYXBzaG90KSB7XG4gICAgICAgIHJldHVybiBub2RlU25hcHNob3Q7XG4gICAgfVxufVxuIl19
\No newline at end of file