UNPKG

@jsonjoy.com/reactive-rpc

Version:

Reactive-RPC is a library for building reactive APIs over WebSocket, HTTP, and other RPCs.

54 lines 2.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createServices = exports.createCaller = exports.createRouter = void 0; const routes_1 = require("./routes"); const caller_1 = require("../../../common/rpc/caller"); const Value_1 = require("../../../common/messages/Value"); const ObjectValueCaller_1 = require("../../../common/rpc/caller/ObjectValueCaller"); const system_1 = require("./system"); const ObjectValue_1 = require("@jsonjoy.com/json-type/lib/value/ObjectValue"); const Services_1 = require("../services/Services"); const MemoryStore_1 = require("../services/blocks/store/MemoryStore"); const LevelStore_1 = require("../services/blocks/store/level/LevelStore"); const classic_level_1 = require("classic-level"); const typed_1 = require("../../../common/rpc/caller/error/typed"); const createRouter = (services) => { const router = ObjectValue_1.ObjectValue.create(system_1.system); const deps = { services, router, system: system_1.system, t: system_1.system.t, }; return (0, routes_1.routes)(deps)(router); }; exports.createRouter = createRouter; const createCaller = (services = new Services_1.Services()) => { const router = (0, exports.createRouter)(services); const caller = new ObjectValueCaller_1.ObjectValueCaller({ router, wrapInternalError: (error) => { if (error instanceof Value_1.RpcValue) return error; if (error instanceof caller_1.RpcError) return typed_1.TypedRpcError.value(error); console.error(error); return typed_1.TypedRpcError.valueFrom(error); }, }); return { router, caller, services }; }; exports.createCaller = createCaller; const createServices = async () => { let store = new MemoryStore_1.MemoryStore(); if (process.env.JSON_CRDT_STORE === 'level') { const path = process.env.JSON_CRDT_STORE_PATH || './db'; const kv = new classic_level_1.ClassicLevel(path, { valueEncoding: 'view' }); await kv.open(); store = new LevelStore_1.LevelStore(kv); } const services = new Services_1.Services({ store }); return services; }; exports.createServices = createServices; //# sourceMappingURL=index.js.map