json-crdt-server
Version:
JSON CRDT server and syncing local-first browser client
51 lines (50 loc) • 1.96 kB
JavaScript
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;
;