1 | ;
|
2 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
3 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
4 | };
|
5 | Object.defineProperty(exports, "__esModule", { value: true });
|
6 | const lodash_1 = require("lodash");
|
7 | const replicator_1 = __importDefault(require("replicator"));
|
8 | const builder_symbol_1 = __importDefault(require("./builder-symbol"));
|
9 | const compile_client_function_1 = __importDefault(require("../compiler/compile-client-function"));
|
10 | function 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 | }
|
21 | exports.createReplicator = createReplicator;
|
22 | // Replicator transforms
|
23 | class 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 | }
|
48 | exports.FunctionTransform = FunctionTransform;
|
49 | class SelectorNodeTransform {
|
50 | constructor() {
|
51 | this.type = 'Node';
|
52 | }
|
53 | shouldTransform() {
|
54 | return false;
|
55 | }
|
56 | fromSerializable(nodeSnapshot) {
|
57 | return nodeSnapshot;
|
58 | }
|
59 | }
|
60 | exports.SelectorNodeTransform = SelectorNodeTransform;
|
61 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGljYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQtZnVuY3Rpb25zL3JlcGxpY2F0b3IuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBa0M7QUFDbEMsNERBQW9DO0FBQ3BDLHNFQUFxRDtBQUNyRCxrR0FBd0U7QUFFeEUsU0FBZ0IsZ0JBQWdCLENBQUUsVUFBVTtJQUN4Qyw2Q0FBNkM7SUFDN0MsNENBQTRDO0lBQzVDLHdEQUF3RDtJQUN4RCxrREFBa0Q7SUFDbEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxvQkFBVSxDQUFDO1FBQzlCLFNBQVMsRUFBSSxpQkFBUTtRQUNyQixXQUFXLEVBQUUsaUJBQVE7S0FDeEIsQ0FBQyxDQUFDO0lBRUgsT0FBTyxVQUFVLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFYRCw0Q0FXQztBQUVELHdCQUF3QjtBQUN4QixNQUFhLGlCQUFpQjtJQUMxQixZQUFhLGFBQWE7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBWSxVQUFVLENBQUM7UUFDaEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDdkMsQ0FBQztJQUVELGVBQWUsQ0FBRSxJQUFJO1FBQ2pCLE9BQU8sSUFBSSxLQUFLLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsY0FBYyxDQUFFLEVBQUU7UUFDZCxNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUMsd0JBQXFCLENBQUMsQ0FBQztRQUVsRCxJQUFJLGVBQWUsRUFBRTtZQUNqQixPQUFPO2dCQUNILE1BQU0sRUFBUSxlQUFlLENBQUMsY0FBYztnQkFDNUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyx1QkFBdUIsRUFBRTthQUMxRCxDQUFDO1NBQ0w7UUFFRCxPQUFPO1lBQ0gsTUFBTSxFQUFRLGlDQUFxQixDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7WUFDeEgsWUFBWSxFQUFFLEVBQUU7U0FDbkIsQ0FBQztJQUNOLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2xCLENBQUM7Q0FDSjtBQTdCRCw4Q0E2QkM7QUFFRCxNQUFhLHFCQUFxQjtJQUM5QjtRQUNJLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxlQUFlO1FBQ1gsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELGdCQUFnQixDQUFFLFlBQVk7UUFDMUIsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztDQUNKO0FBWkQsc0RBWUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpZGVudGl0eSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgUmVwbGljYXRvciBmcm9tICdyZXBsaWNhdG9yJztcbmltcG9ydCBmdW5jdGlvbkJ1aWxkZXJTeW1ib2wgZnJvbSAnLi9idWlsZGVyLXN5bWJvbCc7XG5pbXBvcnQgY29tcGlsZUNsaWVudEZ1bmN0aW9uIGZyb20gJy4uL2NvbXBpbGVyL2NvbXBpbGUtY2xpZW50LWZ1bmN0aW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlcGxpY2F0b3IgKHRyYW5zZm9ybXMpIHtcbiAgICAvLyBOT1RFOiB3ZSB3aWxsIHNlcmlhbGl6ZSByZXBsaWNhdG9yIHJlc3VsdHNcbiAgICAvLyB0byBKU09OIHdpdGggYSBjb21tYW5kIG9yIGNvbW1hbmQgcmVzdWx0LlxuICAgIC8vIFRoZXJlZm9yZSB0aGVyZSBpcyBubyBuZWVkIHRvIGRvIGFkZGl0aW9uYWwgam9iIGhlcmUsXG4gICAgLy8gc28gd2UgdXNlIGlkZW50aXR5IGZ1bmN0aW9ucyBmb3Igc2VyaWFsaXphdGlvbi5cbiAgICBjb25zdCByZXBsaWNhdG9yID0gbmV3IFJlcGxpY2F0b3Ioe1xuICAgICAgICBzZXJpYWxpemU6ICAgaWRlbnRpdHksXG4gICAgICAgIGRlc2VyaWFsaXplOiBpZGVudGl0eVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlcGxpY2F0b3IuYWRkVHJhbnNmb3Jtcyh0cmFuc2Zvcm1zKTtcbn1cblxuLy8gUmVwbGljYXRvciB0cmFuc2Zvcm1zXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25UcmFuc2Zvcm0ge1xuICAgIGNvbnN0cnVjdG9yIChjYWxsc2l0ZU5hbWVzKSB7XG4gICAgICAgIHRoaXMudHlwZSAgICAgICAgICA9ICdGdW5jdGlvbic7XG4gICAgICAgIHRoaXMuY2FsbHNpdGVOYW1lcyA9IGNhbGxzaXRlTmFtZXM7XG4gICAgfVxuXG4gICAgc2hvdWxkVHJhbnNmb3JtICh0eXBlKSB7XG4gICAgICAgIHJldHVybiB0eXBlID09PSAnZnVuY3Rpb24nO1xuICAgIH1cblxuICAgIHRvU2VyaWFsaXphYmxlIChmbikge1xuICAgICAgICBjb25zdCBjbGllbnRGbkJ1aWxkZXIgPSBmbltmdW5jdGlvbkJ1aWxkZXJTeW1ib2xdO1xuXG4gICAgICAgIGlmIChjbGllbnRGbkJ1aWxkZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZm5Db2RlOiAgICAgICBjbGllbnRGbkJ1aWxkZXIuY29tcGlsZWRGbkNvZGUsXG4gICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzOiBjbGllbnRGbkJ1aWxkZXIuZ2V0RnVuY3Rpb25EZXBlbmRlbmNpZXMoKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmbkNvZGU6ICAgICAgIGNvbXBpbGVDbGllbnRGdW5jdGlvbihmbi50b1N0cmluZygpLCBudWxsLCB0aGlzLmNhbGxzaXRlTmFtZXMuaW5zdGFudGlhdGlvbiwgdGhpcy5jYWxsc2l0ZU5hbWVzLmV4ZWN1dGlvbiksXG4gICAgICAgICAgICBkZXBlbmRlbmNpZXM6IHt9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnJvbVNlcmlhbGl6YWJsZSAoKSB7XG4gICAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2VsZWN0b3JOb2RlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICAgIHRoaXMudHlwZSA9ICdOb2RlJztcbiAgICB9XG5cbiAgICBzaG91bGRUcmFuc2Zvcm0gKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZnJvbVNlcmlhbGl6YWJsZSAobm9kZVNuYXBzaG90KSB7XG4gICAgICAgIHJldHVybiBub2RlU25hcHNob3Q7XG4gICAgfVxufVxuIl19 |
\ | No newline at end of file |