UNPKG

json-crdt-server

Version:

JSON CRDT server and syncing local-first browser client

51 lines (50 loc) 1.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.util = exports.schema = exports.info = exports.echo = exports.ping = void 0; const ping = ({ t }) => (r) => { const Request = t.undef; const Response = t.Const('pong'); const Func = t.Function(Request, Response); return r.prop('util.ping', Func, async () => { return 'pong'; }); }; exports.ping = ping; const echo = ({ t }) => (r) => { const Request = t.any; const Response = t.any; const Func = t.Function(Request, Response); return r.prop('util.echo', Func, async (msg) => msg); }; exports.echo = echo; const info = ({ t, services }) => (r) => { const Request = t.any; const Response = t.Object(t.prop('now', t.num), t.prop('stats', t.Object(t.prop('pubsub', t.Object(t.prop('channels', t.num), t.prop('observers', t.num))), t.prop('presence', t.Object(t.prop('rooms', t.num), t.prop('entries', t.num), t.prop('observers', t.num))), t.prop('blocks', t.Object(t.prop('blocks', t.num), t.prop('batches', t.num)))))); const Func = t.Function(Request, Response); return r.prop('util.info', Func, async () => { return { now: Date.now(), stats: { pubsub: services.pubsub.stats(), presence: services.presence.stats(), blocks: services.blocks.stats(), }, }; }); }; exports.info = info; const schema = ({ t, router }) => (r) => { const Request = t.any; const Response = t.Object(t.prop('typescript', t.str)); const Func = t.Function(Request, Response); return r.prop('util.schema', Func, async () => { return { typescript: router.toTypeScript(), }; }); }; exports.schema = schema; const util = (d) => (r) => // biome-ignore format: each on its own line ((0, exports.ping)(d)((0, exports.echo)(d)((0, exports.info)(d)((0, exports.schema)(d)(r))))); exports.util = util;