{"version":1,"pages":[{"id":"-LDJBj_xrrlhYJV5lBBK","title":"Marble.js","pathname":"/docs/v3","siteSpaceId":"sitesp_T5pMj","description":"Marble.js is a functional reactive Node.js framework for building server-side applications, based on TypeScript and RxJS."},{"id":"-M-RbrBxxSSFYcBpIXZs","title":"Installation","pathname":"/docs/v3/getting-started/installation","siteSpaceId":"sitesp_T5pMj","description":"","breadcrumbs":[{"label":"Getting started"}]},{"id":"-M-Rc0r8eJ5bkfDW0x1J","title":"Quick setup","pathname":"/docs/v3/getting-started/quick-setup","siteSpaceId":"sitesp_T5pMj","description":"","breadcrumbs":[{"label":"Getting started"}]},{"id":"-M-RcQHoWtXYCsVgDnbB","title":"Effects","pathname":"/docs/v3/http/effects","siteSpaceId":"sitesp_T5pMj","description":"Effect is the main building block of the whole framework. It is just a function that returns a stream of events. Using its generic interface we can define API endpoints, event handlers or middlewares.","breadcrumbs":[{"label":"HTTP"}]},{"id":"-M-RcZ8rzi5wYB10Ogeq","title":"Middlewares","pathname":"/docs/v3/http/middlewares","siteSpaceId":"sitesp_T5pMj","description":"In Marble.js, middlewares are streams of side-effects that can be composed and plugged-in to our request/event lifecycle to perform certain actions before reaching the designated Effect.","breadcrumbs":[{"label":"HTTP"}]},{"id":"-M-ReW3mbY5u5-Favoxz","title":"Routing","pathname":"/docs/v3/http/routing","siteSpaceId":"sitesp_T5pMj","description":"Routing determines how an application responds to a client request to a particular endpoint, which is a path and a specific HTTP method (eg. GET, POST).","breadcrumbs":[{"label":"HTTP"}]},{"id":"-M-ReY1F_cif8iDq6H32","title":"Errors","pathname":"/docs/v3/http/errors","siteSpaceId":"sitesp_T5pMj","description":"Every Marble.js listener factory allows you to intercept outgoing errors via dedicated error$ handler.","breadcrumbs":[{"label":"HTTP"}]},{"id":"-M-RdF2VeDX9rUHkXTy_","title":"Output","pathname":"/docs/v3/http/output","siteSpaceId":"sitesp_T5pMj","description":"Every Marble.js listener factory allows you to intercept outgoing messages via dedicated output$ handler.","breadcrumbs":[{"label":"HTTP"}]},{"id":"-M-Rcrwhon3AXAhlHklH","title":"Context","pathname":"/docs/v3/http/context","siteSpaceId":"sitesp_T5pMj","description":"DI is a very simple concept, which can be implemented in many different ways. Marble.js introduces a Context, which is an abstraction over Reader monad implementation of the DI system.","breadcrumbs":[{"label":"HTTP"}]},{"id":"-M-WP8UcCRdYnC7HBWtf","title":"Advanced","pathname":"/docs/v3/http/advanced","siteSpaceId":"sitesp_T5pMj","description":"","breadcrumbs":[{"label":"HTTP"}]},{"id":"-M-WmDVZ0c-PhwiefmFn","title":"Logging","pathname":"/docs/v3/http/advanced/logging","siteSpaceId":"sitesp_T5pMj","description":"","breadcrumbs":[{"label":"HTTP"},{"label":"Advanced"}]},{"id":"-M-RcyX0kKx7bfEM4JS0","title":"Validation","pathname":"/docs/v3/http/advanced/validation","siteSpaceId":"sitesp_T5pMj","description":"","breadcrumbs":[{"label":"HTTP"},{"label":"Advanced"}]},{"id":"-M-RcmcSj9g9Xi5XyyXz","title":"Server Events","pathname":"/docs/v3/http/advanced/server-events","siteSpaceId":"sitesp_T5pMj","description":"","breadcrumbs":[{"label":"HTTP"},{"label":"Advanced"}]},{"id":"-M-RgEe81dayyk6Hrb5H","title":"Streaming","pathname":"/docs/v3/http/advanced/streaming","siteSpaceId":"sitesp_T5pMj","description":"","breadcrumbs":[{"label":"HTTP"},{"label":"Advanced"}]},{"id":"-M-RgGsOKLhfvHcNhIkr","title":"Continuous mode","pathname":"/docs/v3/http/advanced/modes","siteSpaceId":"sitesp_T5pMj","description":"","breadcrumbs":[{"label":"HTTP"},{"label":"Advanced"}]},{"id":"-M-WQS-AM8tal9WQaigY","title":"Core concepts","pathname":"/docs/v3/messaging/core-concepts","siteSpaceId":"sitesp_T5pMj","description":"The core idea of @marblejs/messaging module is focused around reacting to incoming events.","breadcrumbs":[{"label":"Messaging"}]},{"id":"-M-WdQWLNrpr9wLcSsWx","title":"Events","pathname":"/docs/v3/messaging/core-concepts/events","siteSpaceId":"sitesp_T5pMj","description":"","breadcrumbs":[{"label":"Messaging"},{"label":"Core concepts"}]},{"id":"-M-WdbI2wFL_CaXJgotH","title":"Effects","pathname":"/docs/v3/messaging/core-concepts/effects","siteSpaceId":"sitesp_T5pMj","description":"","breadcrumbs":[{"label":"Messaging"},{"label":"Core concepts"}]},{"id":"-M-Rdj4-gGMRcZJ09EsM","title":"Microservices","pathname":"/docs/v3/messaging/microservices","siteSpaceId":"sitesp_T5pMj","description":"Using a dedicated @marblejs/messaging module, Marble.js offers a robust and unified architecture for building event-based microservices.","breadcrumbs":[{"label":"Messaging"}]},{"id":"-M-RdlAjxDDXQe2nhp7q","title":"AMQP (RabbitMQ)","pathname":"/docs/v3/messaging/microservices/rabbitmq","siteSpaceId":"sitesp_T5pMj","description":"AMQP is an open standard application layer protocol for message-oriented communication, i.e. implemented by RabbitMQ message-broker.","breadcrumbs":[{"label":"Messaging"},{"label":"Microservices"}]},{"id":"-M-RdnEc-eMk_xBwu89I","title":"Redis Pub/Sub","pathname":"/docs/v3/messaging/microservices/redis-pub-sub","siteSpaceId":"sitesp_T5pMj","description":"Redis Pub/Sub implements the messaging system where the publishers sends the messages while the subscribers receive them.","breadcrumbs":[{"label":"Messaging"},{"label":"Microservices"}]},{"id":"-M-RdbkPqCRMgipLWj8i","title":"CQRS","pathname":"/docs/v3/messaging/cqrs","siteSpaceId":"sitesp_T5pMj","description":"","breadcrumbs":[{"label":"Messaging"}]},{"id":"-M-RfgMM5OSzOwlli_nX","title":"WebSockets","pathname":"/docs/v3/messaging/websockets","siteSpaceId":"sitesp_T5pMj","description":"@marblejs/websockets module implements the RFC 6455 WebSocket protocol, providing full-duplex communication channels over a single TCP connection.","breadcrumbs":[{"label":"Messaging"}]},{"id":"-M9Jdw_zjLqxy8lhE5If","title":"HTTP routes testing","pathname":"/docs/v3/testing/http-testing","siteSpaceId":"sitesp_T5pMj","description":"@marblejs/testing is a tool agnostic module for testing Marble.js apps.","breadcrumbs":[{"label":"Testing"}]},{"id":"-M-RgXr1EtrFnO8zp1d8","title":"How does it glue together?","pathname":"/docs/v3/other/how-does-it-glue-together","siteSpaceId":"sitesp_T5pMj","description":"","breadcrumbs":[{"label":"Other"}]},{"id":"-M0OaIBuTA_KMI-mknYG","title":"Migration guides","pathname":"/docs/v3/other/migration-guides","siteSpaceId":"sitesp_T5pMj","description":"This chapter provides a set of guidelines to help you migrate across Marble.js major releases,","breadcrumbs":[{"label":"Other"}]},{"id":"-M-RdyMDrSCSoT_Y4v8f","title":"Migration from version 2.x","pathname":"/docs/v3/other/migration-guides/version-2","siteSpaceId":"sitesp_T5pMj","description":"This chapter provides a set of guidelines to help you migrate from Marble.js version 2.x to the latest 3.x version.","breadcrumbs":[{"label":"Other"},{"label":"Migration guides"}]},{"id":"-LXydGnyzBdwrEXMzDzm","title":"Migration from version 1.x","pathname":"/docs/v3/other/migration-guides/version-1","siteSpaceId":"sitesp_T5pMj","description":"This chapter provides a set of guidelines to help you migrate from Marble.js version 1.x to version 2.x.","breadcrumbs":[{"label":"Other"},{"label":"Migration guides"}]},{"id":"-M-ay0BDBfw555lAuEP2","title":"API reference","pathname":"/docs/v3/other/api-reference","siteSpaceId":"sitesp_T5pMj","description":"The complete API reference will be available soon.","breadcrumbs":[{"label":"Other"}]},{"id":"-LXznf1g6CWH3XLQXJr7","title":"core","pathname":"/docs/v3/other/api-reference/core","siteSpaceId":"sitesp_T5pMj","description":"This section documents the complete @marblejs/core package API.","breadcrumbs":[{"label":"Other"},{"label":"API reference"}]},{"id":"-LXznK99yOv1CuDuYHNP","title":"bindTo","pathname":"/docs/v3/other/api-reference/core/bind","siteSpaceId":"sitesp_T5pMj","description":"Binds injection token to lazy dependency.","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"core"}]},{"id":"-M0Yi1EPjpmyP6eMmo3K","title":"bindEagerlyTo","pathname":"/docs/v3/other/api-reference/core/bindeagerlyto","siteSpaceId":"sitesp_T5pMj","description":"Binds injection token to eager dependency.","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"core"}]},{"id":"-M-azhuTGSC1ZAlayxze","title":"createEvent","pathname":"/docs/v3/other/api-reference/core/createevent","siteSpaceId":"sitesp_T5pMj","description":"","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"core"}]},{"id":"-LXznDO8xRav0nLKmApN","title":"createServer","pathname":"/docs/v3/other/api-reference/core/createserver","siteSpaceId":"sitesp_T5pMj","description":"Creates HTTP server","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"core"}]},{"id":"-LLP8DynB34ap7PTaPVH","title":"combineRoutes","pathname":"/docs/v3/other/api-reference/core/core-combineroutes","siteSpaceId":"sitesp_T5pMj","description":"Combines routing for different Effects, prefixed with path passed as a first argument.","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"core"}]},{"id":"-LXzpOUr_XNFDQy1wXer","title":"createContextToken","pathname":"/docs/v3/other/api-reference/core/createinjectiontoken","siteSpaceId":"sitesp_T5pMj","description":"A lookup token associated with a dependency provider, for use with the Marble.js context system.","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"core"}]},{"id":"-LLPHTZcxo9vrn_p0rak","title":"EffectFactory","pathname":"/docs/v3/other/api-reference/core/core-effectfactory","siteSpaceId":"sitesp_T5pMj","description":"Set of factory functions for building router Effect.","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"core"}]},{"id":"-LYsP1jDG3xuLTdc8rad","title":"r.pipe","pathname":"/docs/v3/other/api-reference/core/r.pipe","siteSpaceId":"sitesp_T5pMj","description":"HttpEffect route builder based on IxMonad","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"core"}]},{"id":"-LLP8833bBbP_co6napS","title":"httpListener","pathname":"/docs/v3/other/api-reference/core/core-httplistener","siteSpaceId":"sitesp_T5pMj","description":"Starting point of every Marble.js application. It includes definitions of all middlewares and API effects.","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"core"}]},{"id":"-LXzp8PC1QuxPB3mNrMo","title":"operator: matchEvent","pathname":"/docs/v3/other/api-reference/core/operator-matchevent","siteSpaceId":"sitesp_T5pMj","description":"Effect operator for matching incoming events.","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"core"}]},{"id":"-LDWZL6uei5XNPgw8KXo","title":"operator: use","pathname":"/docs/v3/other/api-reference/core/operator-use","siteSpaceId":"sitesp_T5pMj","description":"Effect operator for composing middleware directly inside stream pipeline.","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"core"}]},{"id":"-M-aKjf2PjIKk9R0Imhd","title":"operator: act","pathname":"/docs/v3/other/api-reference/core/operator-act","siteSpaceId":"sitesp_T5pMj","description":"","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"core"}]},{"id":"-M-RgamlAJoeMgXNyH7q","title":"messaging","pathname":"/docs/v3/other/api-reference/messaging","siteSpaceId":"sitesp_T5pMj","description":"This section documents the complete @marblejs/messaging package API.","breadcrumbs":[{"label":"Other"},{"label":"API reference"}]},{"id":"-M7DuT_CeaGV0xaGsank","title":"eventBus","pathname":"/docs/v3/other/api-reference/messaging/eventbus","siteSpaceId":"sitesp_T5pMj","description":"Creates messaging client reader for LOCAL transport layer (Event Bus)","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"messaging"}]},{"id":"-M7DrEfehcs6EJSzwlzX","title":"messagingClient","pathname":"/docs/v3/other/api-reference/messaging/messagingclient","siteSpaceId":"sitesp_T5pMj","description":"Creates messaging client reader for given transport layer","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"messaging"}]},{"id":"-M7DmDvPS2j9hg9RHOJu","title":"createMicroservice","pathname":"/docs/v3/other/api-reference/messaging/createmicroservice","siteSpaceId":"sitesp_T5pMj","description":"Creates and bootstraps microservice for given transport layer","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"messaging"}]},{"id":"-M-aLMbGme943h-F2vzc","title":"reply","pathname":"/docs/v3/other/api-reference/messaging/reply","siteSpaceId":"sitesp_T5pMj","description":"Constructs a reply-event","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"messaging"}]},{"id":"-LXznS9JrZ3KkA2P2Lcy","title":"websockets","pathname":"/docs/v3/other/api-reference/websockets","siteSpaceId":"sitesp_T5pMj","description":"This section documents the complete @marblejs/websockets package API.","breadcrumbs":[{"label":"Other"},{"label":"API reference"}]},{"id":"-LXzoOBhke5u4uZxMhZX","title":"webSocketListener","pathname":"/docs/v3/other/api-reference/websockets/websocketlistener","siteSpaceId":"sitesp_T5pMj","description":"","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"websockets"}]},{"id":"-LXzoZqgMpeof-YWtyDe","title":"operator: broadcast","pathname":"/docs/v3/other/api-reference/websockets/operator-broadcast","siteSpaceId":"sitesp_T5pMj","description":"","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"websockets"}]},{"id":"-LXzob9yxYa7xVDVsR_Y","title":"operator: mapToServer","pathname":"/docs/v3/other/api-reference/websockets/operator-maptoserver","siteSpaceId":"sitesp_T5pMj","description":"","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"websockets"}]},{"id":"-LiFF1JxBDtk_zeQ_2-Y","title":"middleware-multipart","pathname":"/docs/v3/other/api-reference/middleware-multipart","siteSpaceId":"sitesp_T5pMj","description":"A multipart/form-data middleware based on busboy library.","breadcrumbs":[{"label":"Other"},{"label":"API reference"}]},{"id":"-Ld_PyYOTx8V00ApwNSa","title":"middleware-cors","pathname":"/docs/v3/other/api-reference/middleware-cors","siteSpaceId":"sitesp_T5pMj","description":"A CORS middleware for Marble.js","breadcrumbs":[{"label":"Other"},{"label":"API reference"}]},{"id":"-LDWRZ4rIiMv2aXxxQOQ","title":"middleware-joi","pathname":"/docs/v3/other/api-reference/middleware-joi","siteSpaceId":"sitesp_T5pMj","description":"A Joi validation middleware for Marble.js.","breadcrumbs":[{"label":"Other"},{"label":"API reference"}]},{"id":"-LNZwqDi15AHCvvdNlkA","title":"middleware-jwt","pathname":"/docs/v3/other/api-reference/middleware-jwt","siteSpaceId":"sitesp_T5pMj","description":"HTTP requests authentication middleware for Marble.js based on JWT mechanism.","breadcrumbs":[{"label":"Other"},{"label":"API reference"}]},{"id":"-LNaLtqOzpJ3st0zMd_1","title":"Token signing","pathname":"/docs/v3/other/api-reference/middleware-jwt/token-creation","siteSpaceId":"sitesp_T5pMj","description":"Besides the common things like token authorization, the middleware comes with handy functions responsible for token signing.","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"middleware-jwt"}]},{"id":"-LXzpZ8l-t7YNDjmNDhA","title":"middleware-io","pathname":"/docs/v3/other/api-reference/middleware-io","siteSpaceId":"sitesp_T5pMj","description":"","breadcrumbs":[{"label":"Other"},{"label":"API reference"}]},{"id":"-LDRtXEJIpnxg8HUAffV","title":"middleware-logger","pathname":"/docs/v3/other/api-reference/middleware-logger","siteSpaceId":"sitesp_T5pMj","description":"HTTP request logger middleware for Marble.js","breadcrumbs":[{"label":"Other"},{"label":"API reference"}]},{"id":"-LDRtbN6OmEFwS4vtP3-","title":"middleware-body","pathname":"/docs/v3/other/api-reference/middleware-body","siteSpaceId":"sitesp_T5pMj","description":"HTTP request body parser middleware for Marble.js.","breadcrumbs":[{"label":"Other"},{"label":"API reference"}]},{"id":"-M-Rgy7dJ-_IrXpxD12z","title":"Style Guide","pathname":"/docs/v3/other/style-guide","siteSpaceId":"sitesp_T5pMj","description":"","breadcrumbs":[{"label":"Other"}]},{"id":"-LDRNFIsEp441idMkiPK","title":"FAQ","pathname":"/docs/v3/other/faq","siteSpaceId":"sitesp_T5pMj","description":"","breadcrumbs":[{"label":"Other"}]},{"id":"-LDJBj_xrrlhYJV5lBBK","title":"Introduction","pathname":"/docs/v2","siteSpaceId":"sitesp_ZWnLb","description":""},{"id":"-LLP6bPrN07T9QRCdmdP","title":"Overview","pathname":"/docs/v2/overview","siteSpaceId":"sitesp_ZWnLb","description":"In this guide, we'll walk you through the basics of a Marble.js."},{"id":"-LDRJ3VIi6Pd2us9_vKy","title":"Getting started","pathname":"/docs/v2/overview/getting-started","siteSpaceId":"sitesp_ZWnLb","description":"","breadcrumbs":[{"label":"Overview"}]},{"id":"-LDRMXWyBYY3cHs9NMj4","title":"Effects","pathname":"/docs/v2/overview/effects","siteSpaceId":"sitesp_ZWnLb","description":"","breadcrumbs":[{"label":"Overview"}]},{"id":"-LDRN-W5HZ2wx3xRzuI-","title":"Routing","pathname":"/docs/v2/overview/routing","siteSpaceId":"sitesp_ZWnLb","description":"Routing determines how an application responds to a client request to a particular endpoint, which is a path and a specific HTTP method (eg. GET, POST).","breadcrumbs":[{"label":"Overview"}]},{"id":"-LDRN65LZbLHGUs2oaIJ","title":"Middlewares","pathname":"/docs/v2/overview/middlewares","siteSpaceId":"sitesp_ZWnLb","description":"","breadcrumbs":[{"label":"Overview"}]},{"id":"-LDRNAmublBDucTZkteC","title":"Error handling","pathname":"/docs/v2/overview/error-handling","siteSpaceId":"sitesp_ZWnLb","description":"","breadcrumbs":[{"label":"Overview"}]},{"id":"-Ler2Smap1L-AGziPaTE","title":"How does it glue​ together?","pathname":"/docs/v2/overview/how-does-it-fit-together","siteSpaceId":"sitesp_ZWnLb","description":"","breadcrumbs":[{"label":"Overview"}]},{"id":"-LXzpi6JDCad9C0vKzXJ","title":"Advanced","pathname":"/docs/v2/advanced","siteSpaceId":"sitesp_ZWnLb","description":""},{"id":"-LYvfOr_m4YaZgfw5OF0","title":"Context","pathname":"/docs/v2/advanced/context","siteSpaceId":"sitesp_ZWnLb","description":"","breadcrumbs":[{"label":"Advanced"}]},{"id":"-LYvfGfsPfcChxoiPsu7","title":"Server events","pathname":"/docs/v2/advanced/server-events","siteSpaceId":"sitesp_ZWnLb","description":"","breadcrumbs":[{"label":"Advanced"}]},{"id":"-LYw8KVuQ5ljVoRB2kao","title":"Validation","pathname":"/docs/v2/advanced/validation","siteSpaceId":"sitesp_ZWnLb","description":"","breadcrumbs":[{"label":"Advanced"}]},{"id":"-LdhYbwwhibKdWY-2jYl","title":"Streaming","pathname":"/docs/v2/advanced/streaming","siteSpaceId":"sitesp_ZWnLb","description":"","breadcrumbs":[{"label":"Advanced"}]},{"id":"-LYx03roCl80UnwbbAfX","title":"Output interceptor","pathname":"/docs/v2/advanced/output","siteSpaceId":"sitesp_ZWnLb","description":"","breadcrumbs":[{"label":"Advanced"}]},{"id":"-LXye-BXpDrlpjCRKFb7","title":"WebSockets","pathname":"/docs/v2/websockets","siteSpaceId":"sitesp_ZWnLb","description":""},{"id":"-LXyeIXV_7xqjaLiMMSR","title":"Getting started","pathname":"/docs/v2/websockets/getting-started","siteSpaceId":"sitesp_ZWnLb","description":"","breadcrumbs":[{"label":"WebSockets"}]},{"id":"-LXyhnOKvqE3LlN46vw2","title":"Effects","pathname":"/docs/v2/websockets/effects","siteSpaceId":"sitesp_ZWnLb","description":"","breadcrumbs":[{"label":"WebSockets"}]},{"id":"-LXyhqJ8azhwvfzUAZ_V","title":"Middlewares","pathname":"/docs/v2/websockets/middlewares","siteSpaceId":"sitesp_ZWnLb","description":"","breadcrumbs":[{"label":"WebSockets"}]},{"id":"-LXyhs7J6wdDBpZE-p1p","title":"Error handling","pathname":"/docs/v2/websockets/error-handling","siteSpaceId":"sitesp_ZWnLb","description":"","breadcrumbs":[{"label":"WebSockets"}]},{"id":"-LYx-tN91ede8Hq7w5Dg","title":"Connections handling","pathname":"/docs/v2/websockets/authorization","siteSpaceId":"sitesp_ZWnLb","description":"","breadcrumbs":[{"label":"WebSockets"}]},{"id":"-LXznf1g6CWH3XLQXJr7","title":"core","pathname":"/docs/v2/api-reference/core","siteSpaceId":"sitesp_ZWnLb","description":"This section documents the complete @marblejs/core package API.","breadcrumbs":[{"label":"API Reference"}]},{"id":"-LXznK99yOv1CuDuYHNP","title":"bindTo","pathname":"/docs/v2/api-reference/core/bind","siteSpaceId":"sitesp_ZWnLb","description":"Binds injection token to dependency.","breadcrumbs":[{"label":"API Reference"},{"label":"core"}]},{"id":"-LXznDO8xRav0nLKmApN","title":"createServer","pathname":"/docs/v2/api-reference/core/createserver","siteSpaceId":"sitesp_ZWnLb","description":"Marble.j abstraction over Node.js server creation with additional features.","breadcrumbs":[{"label":"API Reference"},{"label":"core"}]},{"id":"-LLP8DynB34ap7PTaPVH","title":"combineRoutes","pathname":"/docs/v2/api-reference/core/core-combineroutes","siteSpaceId":"sitesp_ZWnLb","description":"Combines routing for different Effects, prefixed with path passed as a first argument.","breadcrumbs":[{"label":"API Reference"},{"label":"core"}]},{"id":"-LXzpOUr_XNFDQy1wXer","title":"createContextToken","pathname":"/docs/v2/api-reference/core/createinjectiontoken","siteSpaceId":"sitesp_ZWnLb","description":"A lookup token associated with a dependency provider, for use with the Marble.js context system.","breadcrumbs":[{"label":"API Reference"},{"label":"core"}]},{"id":"-LLPHTZcxo9vrn_p0rak","title":"EffectFactory","pathname":"/docs/v2/api-reference/core/core-effectfactory","siteSpaceId":"sitesp_ZWnLb","description":"Set of factory functions for building router Effect.","breadcrumbs":[{"label":"API Reference"},{"label":"core"}]},{"id":"-LYsP1jDG3xuLTdc8rad","title":"r.pipe","pathname":"/docs/v2/api-reference/core/r.pipe","siteSpaceId":"sitesp_ZWnLb","description":"HttpEffect route builder based on IxMonad","breadcrumbs":[{"label":"API Reference"},{"label":"core"}]},{"id":"-LLP8833bBbP_co6napS","title":"httpListener","pathname":"/docs/v2/api-reference/core/core-httplistener","siteSpaceId":"sitesp_ZWnLb","description":"Starting point of every Marble.js application. It includes definitions of all middlewares and API effects.","breadcrumbs":[{"label":"API Reference"},{"label":"core"}]},{"id":"-LXzp8PC1QuxPB3mNrMo","title":"operator: matchEvent","pathname":"/docs/v2/api-reference/core/operator-matchevent","siteSpaceId":"sitesp_ZWnLb","description":"Effect operator for matching incoming events.","breadcrumbs":[{"label":"API Reference"},{"label":"core"}]},{"id":"-LDWZL6uei5XNPgw8KXo","title":"operator: use","pathname":"/docs/v2/api-reference/core/operator-use","siteSpaceId":"sitesp_ZWnLb","description":"Effect operator for composing middleware directly inside stream pipeline.","breadcrumbs":[{"label":"API Reference"},{"label":"core"}]},{"id":"-LXznS9JrZ3KkA2P2Lcy","title":"websockets","pathname":"/docs/v2/api-reference/websockets","siteSpaceId":"sitesp_ZWnLb","description":"This section documents the complete @marblejs/websockets package API.","breadcrumbs":[{"label":"API Reference"}]},{"id":"-LXzoOBhke5u4uZxMhZX","title":"webSocketListener","pathname":"/docs/v2/api-reference/websockets/websocketlistener","siteSpaceId":"sitesp_ZWnLb","description":"","breadcrumbs":[{"label":"API Reference"},{"label":"websockets"}]},{"id":"-LXzoZqgMpeof-YWtyDe","title":"operator: broadcast","pathname":"/docs/v2/api-reference/websockets/operator-broadcast","siteSpaceId":"sitesp_ZWnLb","description":"","breadcrumbs":[{"label":"API Reference"},{"label":"websockets"}]},{"id":"-LXzob9yxYa7xVDVsR_Y","title":"operator: mapToServer","pathname":"/docs/v2/api-reference/websockets/operator-maptoserver","siteSpaceId":"sitesp_ZWnLb","description":"","breadcrumbs":[{"label":"API Reference"},{"label":"websockets"}]},{"id":"-LDRtbN6OmEFwS4vtP3-","title":"middleware-body","pathname":"/docs/v2/api-reference/middleware-body","siteSpaceId":"sitesp_ZWnLb","description":"HTTP request body parser middleware for Marble.js.","breadcrumbs":[{"label":"API Reference"}]},{"id":"-LDRtXEJIpnxg8HUAffV","title":"middleware-logger","pathname":"/docs/v2/api-reference/middleware-logger","siteSpaceId":"sitesp_ZWnLb","description":"HTTP request logger middleware for Marble.js","breadcrumbs":[{"label":"API Reference"}]},{"id":"-LXzpZ8l-t7YNDjmNDhA","title":"middleware-io","pathname":"/docs/v2/api-reference/middleware-io","siteSpaceId":"sitesp_ZWnLb","description":"","breadcrumbs":[{"label":"API Reference"}]},{"id":"-LNZwqDi15AHCvvdNlkA","title":"middleware-jwt","pathname":"/docs/v2/api-reference/middleware-jwt","siteSpaceId":"sitesp_ZWnLb","description":"HTTP requests authentication middleware for Marble.js based on JWT mechanism.","breadcrumbs":[{"label":"API Reference"}]},{"id":"-LNaLtqOzpJ3st0zMd_1","title":"Token signing","pathname":"/docs/v2/api-reference/middleware-jwt/token-creation","siteSpaceId":"sitesp_ZWnLb","description":"Besides the common things like token authorization, the middleware comes with handy functions responsible for token signing.","breadcrumbs":[{"label":"API Reference"},{"label":"middleware-jwt"}]},{"id":"-LDWRZ4rIiMv2aXxxQOQ","title":"middleware-joi","pathname":"/docs/v2/api-reference/middleware-joi","siteSpaceId":"sitesp_ZWnLb","description":"A Joi validation middleware for Marble.js.","breadcrumbs":[{"label":"API Reference"}]},{"id":"-Ld_PyYOTx8V00ApwNSa","title":"middleware-cors","pathname":"/docs/v2/api-reference/middleware-cors","siteSpaceId":"sitesp_ZWnLb","description":"A CORS middleware for Marble.js","breadcrumbs":[{"label":"API Reference"}]},{"id":"-LiFF1JxBDtk_zeQ_2-Y","title":"middleware-multipart","pathname":"/docs/v2/api-reference/middleware-multipart","siteSpaceId":"sitesp_ZWnLb","description":"A multipart/form-data middleware based on busboy library.","breadcrumbs":[{"label":"API Reference"}]},{"id":"-LXydGnyzBdwrEXMzDzm","title":"Migration from version 1.x","pathname":"/docs/v2/other/migration-guide","siteSpaceId":"sitesp_ZWnLb","description":"This chapter provides a set of guidelines to help you migrate from Marble.js version 1.x to the latest 2.x version.","breadcrumbs":[{"label":"Other"}]},{"id":"-LDRNGWp4H4hQ6fdn858","title":"Changelog","pathname":"/docs/v2/other/changelog","siteSpaceId":"sitesp_ZWnLb","description":"","breadcrumbs":[{"label":"Other"}]},{"id":"-LDRNFIsEp441idMkiPK","title":"FAQ","pathname":"/docs/v2/other/faq","siteSpaceId":"sitesp_ZWnLb","description":"","breadcrumbs":[{"label":"Other"}]},{"id":"-LDJBj_xrrlhYJV5lBBK","title":"Introduction","pathname":"/docs/v1","siteSpaceId":"sitesp_RQirz","description":""},{"id":"-LLP6bPrN07T9QRCdmdP","title":"Basics","pathname":"/docs/v1/basics","siteSpaceId":"sitesp_RQirz","description":""},{"id":"-LDRJ3VIi6Pd2us9_vKy","title":"Getting started","pathname":"/docs/v1/basics/getting-started","siteSpaceId":"sitesp_RQirz","description":"","breadcrumbs":[{"label":"Basics"}]},{"id":"-LDRMXWyBYY3cHs9NMj4","title":"Effects","pathname":"/docs/v1/basics/effects","siteSpaceId":"sitesp_RQirz","description":"","breadcrumbs":[{"label":"Basics"}]},{"id":"-LDRN-W5HZ2wx3xRzuI-","title":"Routing","pathname":"/docs/v1/basics/routing","siteSpaceId":"sitesp_RQirz","description":"Routing refers to determining how an application responds to a client request to a particular endpoint, which is a path and a specific HTTP method (eg. GET, POST).","breadcrumbs":[{"label":"Basics"}]},{"id":"-LDRN65LZbLHGUs2oaIJ","title":"Middlewares","pathname":"/docs/v1/basics/middlewares","siteSpaceId":"sitesp_RQirz","description":"","breadcrumbs":[{"label":"Basics"}]},{"id":"-LDRNAmublBDucTZkteC","title":"Error handling","pathname":"/docs/v1/basics/error-handling","siteSpaceId":"sitesp_RQirz","description":"","breadcrumbs":[{"label":"Basics"}]},{"id":"-LLPBEMP_6qkT-5jBO-g","title":"Available middlewares","pathname":"/docs/v1/available-middlewares","siteSpaceId":"sitesp_RQirz","description":""},{"id":"-LDRtXEJIpnxg8HUAffV","title":"middleware-logger","pathname":"/docs/v1/available-middlewares/logger","siteSpaceId":"sitesp_RQirz","description":"HTTP request logger middleware for Marble.js","breadcrumbs":[{"label":"Available middlewares"}]},{"id":"-LDRtbN6OmEFwS4vtP3-","title":"middleware-body","pathname":"/docs/v1/available-middlewares/body","siteSpaceId":"sitesp_RQirz","description":"HTTP request body parser middleware for Marble.js.","breadcrumbs":[{"label":"Available middlewares"}]},{"id":"-LDWRZ4rIiMv2aXxxQOQ","title":"middleware-joi","pathname":"/docs/v1/available-middlewares/joi","siteSpaceId":"sitesp_RQirz","description":"A Joi validation middleware for Marble.js.","breadcrumbs":[{"label":"Available middlewares"}]},{"id":"-LNZwqDi15AHCvvdNlkA","title":"middleware-jwt","pathname":"/docs/v1/available-middlewares/jwt","siteSpaceId":"sitesp_RQirz","description":"HTTP requests authentication middleware for Marble.js based on JWT mechanism.","breadcrumbs":[{"label":"Available middlewares"}]},{"id":"-LNaLtqOzpJ3st0zMd_1","title":"Token signing","pathname":"/docs/v1/available-middlewares/jwt/token-creation","siteSpaceId":"sitesp_RQirz","description":"Besides the common things like token authorization, the middleware comes with handy functions responsible for token signing.","breadcrumbs":[{"label":"Available middlewares"},{"label":"middleware-jwt"}]},{"id":"-LLP7Vkl4KQlx4cTfBJS","title":"API reference","pathname":"/docs/v1/api-reference-old","siteSpaceId":"sitesp_RQirz","description":"This section documents the complete Marble.js API."},{"id":"-LLP8833bBbP_co6napS","title":"core: httpListener","pathname":"/docs/v1/api-reference-old/core-httplistener","siteSpaceId":"sitesp_RQirz","description":"Starting point of every Marble.js application. It includes definitions of all middlewares and API effects.","breadcrumbs":[{"label":"API reference"}]},{"id":"-LLPHTZcxo9vrn_p0rak","title":"core: EffectFactory","pathname":"/docs/v1/api-reference-old/core-effectfactory","siteSpaceId":"sitesp_RQirz","description":"Set of factory functions for building router Effect.","breadcrumbs":[{"label":"API reference"}]},{"id":"-LLP8DynB34ap7PTaPVH","title":"core: combineRoutes","pathname":"/docs/v1/api-reference-old/core-combineroutes","siteSpaceId":"sitesp_RQirz","description":"Combines routing for different Effects, prefixed with path passed as a first argument.","breadcrumbs":[{"label":"API reference"}]},{"id":"-LDWZL6uei5XNPgw8KXo","title":"operator: use","pathname":"/docs/v1/api-reference-old/use","siteSpaceId":"sitesp_RQirz","description":"Effect operator for composing middleware directly inside request pipeline.","breadcrumbs":[{"label":"API reference"}]},{"id":"-LDRNFIsEp441idMkiPK","title":"FAQ","pathname":"/docs/v1/faq","siteSpaceId":"sitesp_RQirz","description":""},{"id":"-LDRNGWp4H4hQ6fdn858","title":"Changelog","pathname":"/docs/v1/changelog","siteSpaceId":"sitesp_RQirz","description":""},{"id":"-LDJBj_xrrlhYJV5lBBK","title":"Marble.js","pathname":"/docs","siteSpaceId":"sitesp_DjuZM","description":"Marble.js is a functional reactive Node.js framework for building server-side applications, based on TypeScript and RxJS."},{"id":"-M-RbrBxxSSFYcBpIXZs","title":"Installation","pathname":"/docs/getting-started/installation","siteSpaceId":"sitesp_DjuZM","description":"","breadcrumbs":[{"label":"Getting started"}]},{"id":"-M-Rc0r8eJ5bkfDW0x1J","title":"Quick setup","pathname":"/docs/getting-started/quick-setup","siteSpaceId":"sitesp_DjuZM","description":"The page describes a quick and basic usage of @marblejs/http module.","breadcrumbs":[{"label":"Getting started"}]},{"id":"-M-RcQHoWtXYCsVgDnbB","title":"Effects","pathname":"/docs/http/effects","siteSpaceId":"sitesp_DjuZM","description":"Effect is the main building block of the whole framework. It is just a function that returns a stream of events. Using its generic interface we can define API endpoints, event handlers or middlewares.","breadcrumbs":[{"label":"HTTP"}]},{"id":"-M-RcZ8rzi5wYB10Ogeq","title":"Middlewares","pathname":"/docs/http/middlewares","siteSpaceId":"sitesp_DjuZM","description":"In Marble.js, middlewares are streams of side-effects that can be composed and plugged-in to our request/event lifecycle to perform certain actions before reaching the designated Effect.","breadcrumbs":[{"label":"HTTP"}]},{"id":"-M-ReW3mbY5u5-Favoxz","title":"Routing","pathname":"/docs/http/routing","siteSpaceId":"sitesp_DjuZM","description":"Routing determines how an application responds to a client request to a particular endpoint, which is a path and a specific HTTP method (eg. GET, POST).","breadcrumbs":[{"label":"HTTP"}]},{"id":"-M-ReY1F_cif8iDq6H32","title":"Errors","pathname":"/docs/http/errors","siteSpaceId":"sitesp_DjuZM","description":"Every Marble.js listener factory allows you to intercept outgoing errors via dedicated error$ handler.","breadcrumbs":[{"label":"HTTP"}]},{"id":"-M-RdF2VeDX9rUHkXTy_","title":"Output","pathname":"/docs/http/output","siteSpaceId":"sitesp_DjuZM","description":"Every Marble.js listener factory allows you to intercept outgoing messages via dedicated output$ handler.","breadcrumbs":[{"label":"HTTP"}]},{"id":"-M-Rcrwhon3AXAhlHklH","title":"Context","pathname":"/docs/http/context","siteSpaceId":"sitesp_DjuZM","description":"DI is a very simple concept, which can be implemented in many different ways. Marble.js introduces a Context, which is an abstraction over Reader monad implementation of the DI system.","breadcrumbs":[{"label":"HTTP"}]},{"id":"-M-WP8UcCRdYnC7HBWtf","title":"Advanced","pathname":"/docs/http/advanced","siteSpaceId":"sitesp_DjuZM","description":"","breadcrumbs":[{"label":"HTTP"}]},{"id":"-M-WmDVZ0c-PhwiefmFn","title":"Logging","pathname":"/docs/http/advanced/logging","siteSpaceId":"sitesp_DjuZM","description":"","breadcrumbs":[{"label":"HTTP"},{"label":"Advanced"}]},{"id":"-M-RcyX0kKx7bfEM4JS0","title":"Validation","pathname":"/docs/http/advanced/validation","siteSpaceId":"sitesp_DjuZM","description":"","breadcrumbs":[{"label":"HTTP"},{"label":"Advanced"}]},{"id":"-M-RcmcSj9g9Xi5XyyXz","title":"Server Events","pathname":"/docs/http/advanced/server-events","siteSpaceId":"sitesp_DjuZM","description":"","breadcrumbs":[{"label":"HTTP"},{"label":"Advanced"}]},{"id":"-M-RgEe81dayyk6Hrb5H","title":"Streaming","pathname":"/docs/http/advanced/streaming","siteSpaceId":"sitesp_DjuZM","description":"","breadcrumbs":[{"label":"HTTP"},{"label":"Advanced"}]},{"id":"-M-RgGsOKLhfvHcNhIkr","title":"Continuous mode","pathname":"/docs/http/advanced/modes","siteSpaceId":"sitesp_DjuZM","description":"","breadcrumbs":[{"label":"HTTP"},{"label":"Advanced"}]},{"id":"-M-WQS-AM8tal9WQaigY","title":"Core concepts","pathname":"/docs/messaging/core-concepts","siteSpaceId":"sitesp_DjuZM","description":"The core idea of @marblejs/messaging module is focused around reacting to incoming events.","breadcrumbs":[{"label":"Messaging"}]},{"id":"-M-WdQWLNrpr9wLcSsWx","title":"Events","pathname":"/docs/messaging/core-concepts/events","siteSpaceId":"sitesp_DjuZM","description":"","breadcrumbs":[{"label":"Messaging"},{"label":"Core concepts"}]},{"id":"-M-WdbI2wFL_CaXJgotH","title":"Effects","pathname":"/docs/messaging/core-concepts/effects","siteSpaceId":"sitesp_DjuZM","description":"","breadcrumbs":[{"label":"Messaging"},{"label":"Core concepts"}]},{"id":"-M-Rdj4-gGMRcZJ09EsM","title":"Microservices","pathname":"/docs/messaging/microservices","siteSpaceId":"sitesp_DjuZM","description":"Using a dedicated @marblejs/messaging module, Marble.js offers a robust and unified architecture for building event-based microservices.","breadcrumbs":[{"label":"Messaging"}]},{"id":"-M-RdlAjxDDXQe2nhp7q","title":"AMQP (RabbitMQ)","pathname":"/docs/messaging/microservices/rabbitmq","siteSpaceId":"sitesp_DjuZM","description":"AMQP is an open standard application layer protocol for message-oriented communication, i.e. implemented by RabbitMQ message-broker.","breadcrumbs":[{"label":"Messaging"},{"label":"Microservices"}]},{"id":"-M-RdnEc-eMk_xBwu89I","title":"Redis Pub/Sub","pathname":"/docs/messaging/microservices/redis-pub-sub","siteSpaceId":"sitesp_DjuZM","description":"Redis Pub/Sub implements the messaging system where the publishers sends the messages while the subscribers receive them.","breadcrumbs":[{"label":"Messaging"},{"label":"Microservices"}]},{"id":"-M-RdbkPqCRMgipLWj8i","title":"CQRS","pathname":"/docs/messaging/cqrs","siteSpaceId":"sitesp_DjuZM","description":"","breadcrumbs":[{"label":"Messaging"}]},{"id":"-M-RfgMM5OSzOwlli_nX","title":"WebSockets","pathname":"/docs/messaging/websockets","siteSpaceId":"sitesp_DjuZM","description":"@marblejs/websockets module implements the RFC 6455 WebSocket protocol, providing full-duplex communication channels over a single TCP connection.","breadcrumbs":[{"label":"Messaging"}]},{"id":"-M9Jdw_zjLqxy8lhE5If","title":"HTTP routes testing","pathname":"/docs/testing/http-testing","siteSpaceId":"sitesp_DjuZM","description":"@marblejs/testing is a tool agnostic module for testing Marble.js apps.","breadcrumbs":[{"label":"Testing"}]},{"id":"-M-RgXr1EtrFnO8zp1d8","title":"How does it glue together?","pathname":"/docs/other/how-does-it-glue-together","siteSpaceId":"sitesp_DjuZM","description":"","breadcrumbs":[{"label":"Other"}]},{"id":"-M0OaIBuTA_KMI-mknYG","title":"Migration guides","pathname":"/docs/other/migration-guides","siteSpaceId":"sitesp_DjuZM","description":"This chapter provides a set of guidelines to help you migrate across Marble.js major releases,","breadcrumbs":[{"label":"Other"}]},{"id":"-MlUJoEV3I6OUio75Yy8","title":"Migration from version 3.x","pathname":"/docs/other/migration-guides/version-3","siteSpaceId":"sitesp_DjuZM","description":"This chapter provides a set of guidelines to help you migrate from Marble.js version 3.x to the latest 4.x version.","breadcrumbs":[{"label":"Other"},{"label":"Migration guides"}]},{"id":"-M-RdyMDrSCSoT_Y4v8f","title":"Migration from version 2.x","pathname":"/docs/other/migration-guides/version-2","siteSpaceId":"sitesp_DjuZM","description":"This chapter provides a set of guidelines to help you migrate from Marble.js version 2.x to the latest 3.x version.","breadcrumbs":[{"label":"Other"},{"label":"Migration guides"}]},{"id":"-LXydGnyzBdwrEXMzDzm","title":"Migration from version 1.x","pathname":"/docs/other/migration-guides/version-1","siteSpaceId":"sitesp_DjuZM","description":"This chapter provides a set of guidelines to help you migrate from Marble.js version 1.x to version 2.x.","breadcrumbs":[{"label":"Other"},{"label":"Migration guides"}]},{"id":"-M-ay0BDBfw555lAuEP2","title":"API reference","pathname":"/docs/other/api-reference","siteSpaceId":"sitesp_DjuZM","description":"The complete API reference will be available soon.","breadcrumbs":[{"label":"Other"}]},{"id":"-LXznf1g6CWH3XLQXJr7","title":"@marblejs/core","pathname":"/docs/other/api-reference/core","siteSpaceId":"sitesp_DjuZM","description":"This section documents the complete @marblejs/core package API.","breadcrumbs":[{"label":"Other"},{"label":"API reference"}]},{"id":"-LXznK99yOv1CuDuYHNP","title":"bindTo","pathname":"/docs/other/api-reference/core/bind","siteSpaceId":"sitesp_DjuZM","description":"Binds injection token to lazy dependency.","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"@marblejs/core"}]},{"id":"-M0Yi1EPjpmyP6eMmo3K","title":"bindEagerlyTo","pathname":"/docs/other/api-reference/core/bindeagerlyto","siteSpaceId":"sitesp_DjuZM","description":"Binds injection token to eager dependency.","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"@marblejs/core"}]},{"id":"-M-azhuTGSC1ZAlayxze","title":"createEvent","pathname":"/docs/other/api-reference/core/createevent","siteSpaceId":"sitesp_DjuZM","description":"","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"@marblejs/core"}]},{"id":"-LXzpOUr_XNFDQy1wXer","title":"createContextToken","pathname":"/docs/other/api-reference/core/createinjectiontoken","siteSpaceId":"sitesp_DjuZM","description":"A lookup token associated with a dependency provider, for use with the Marble.js context system.","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"@marblejs/core"}]},{"id":"-LXzp8PC1QuxPB3mNrMo","title":"operator: matchEvent","pathname":"/docs/other/api-reference/core/operator-matchevent","siteSpaceId":"sitesp_DjuZM","description":"Effect operator for matching incoming events.","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"@marblejs/core"}]},{"id":"-LDWZL6uei5XNPgw8KXo","title":"operator: use","pathname":"/docs/other/api-reference/core/operator-use","siteSpaceId":"sitesp_DjuZM","description":"Effect operator for composing middleware directly inside stream pipeline.","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"@marblejs/core"}]},{"id":"-M-aKjf2PjIKk9R0Imhd","title":"operator: act","pathname":"/docs/other/api-reference/core/operator-act","siteSpaceId":"sitesp_DjuZM","description":"","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"@marblejs/core"}]},{"id":"-MkGvptvPQlMjc4UwcOQ","title":"@marblejs/http","pathname":"/docs/other/api-reference/marblejs-http","siteSpaceId":"sitesp_DjuZM","description":"","breadcrumbs":[{"label":"Other"},{"label":"API reference"}]},{"id":"-LLP8833bBbP_co6napS","title":"httpListener","pathname":"/docs/other/api-reference/marblejs-http/core-httplistener","siteSpaceId":"sitesp_DjuZM","description":"Starting point of every Marble.js application. It includes definitions of all middlewares and API effects.","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"@marblejs/http"}]},{"id":"-LYsP1jDG3xuLTdc8rad","title":"r.pipe","pathname":"/docs/other/api-reference/marblejs-http/r.pipe","siteSpaceId":"sitesp_DjuZM","description":"HttpEffect route builder based on IxMonad","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"@marblejs/http"}]},{"id":"-LLP8DynB34ap7PTaPVH","title":"combineRoutes","pathname":"/docs/other/api-reference/marblejs-http/core-combineroutes","siteSpaceId":"sitesp_DjuZM","description":"Combines routing for different Effects, prefixed with path passed as a first argument.","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"@marblejs/http"}]},{"id":"-LXznDO8xRav0nLKmApN","title":"createServer","pathname":"/docs/other/api-reference/marblejs-http/createserver","siteSpaceId":"sitesp_DjuZM","description":"Creates HTTP server","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"@marblejs/http"}]},{"id":"-M-RgamlAJoeMgXNyH7q","title":"@marblejs/messaging","pathname":"/docs/other/api-reference/messaging","siteSpaceId":"sitesp_DjuZM","description":"This section documents the complete @marblejs/messaging package API.","breadcrumbs":[{"label":"Other"},{"label":"API reference"}]},{"id":"-M7DuT_CeaGV0xaGsank","title":"eventBus","pathname":"/docs/other/api-reference/messaging/eventbus","siteSpaceId":"sitesp_DjuZM","description":"Creates messaging client reader for LOCAL transport layer (Event Bus)","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"@marblejs/messaging"}]},{"id":"-M7DrEfehcs6EJSzwlzX","title":"messagingClient","pathname":"/docs/other/api-reference/messaging/messagingclient","siteSpaceId":"sitesp_DjuZM","description":"Creates messaging client reader for given transport layer","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"@marblejs/messaging"}]},{"id":"-M7DmDvPS2j9hg9RHOJu","title":"createMicroservice","pathname":"/docs/other/api-reference/messaging/createmicroservice","siteSpaceId":"sitesp_DjuZM","description":"Creates and bootstraps microservice for given transport layer","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"@marblejs/messaging"}]},{"id":"-M-aLMbGme943h-F2vzc","title":"reply","pathname":"/docs/other/api-reference/messaging/reply","siteSpaceId":"sitesp_DjuZM","description":"Constructs a reply-event","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"@marblejs/messaging"}]},{"id":"-LXznS9JrZ3KkA2P2Lcy","title":"@marblejs/websockets","pathname":"/docs/other/api-reference/websockets","siteSpaceId":"sitesp_DjuZM","description":"This section documents the complete @marblejs/websockets package API.","breadcrumbs":[{"label":"Other"},{"label":"API reference"}]},{"id":"-LXzoOBhke5u4uZxMhZX","title":"webSocketListener","pathname":"/docs/other/api-reference/websockets/websocketlistener","siteSpaceId":"sitesp_DjuZM","description":"","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"@marblejs/websockets"}]},{"id":"-LXzoZqgMpeof-YWtyDe","title":"operator: broadcast","pathname":"/docs/other/api-reference/websockets/operator-broadcast","siteSpaceId":"sitesp_DjuZM","description":"","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"@marblejs/websockets"}]},{"id":"-LXzob9yxYa7xVDVsR_Y","title":"operator: mapToServer","pathname":"/docs/other/api-reference/websockets/operator-maptoserver","siteSpaceId":"sitesp_DjuZM","description":"","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"@marblejs/websockets"}]},{"id":"-LiFF1JxBDtk_zeQ_2-Y","title":"@marblejs/middleware-multipart","pathname":"/docs/other/api-reference/middleware-multipart","siteSpaceId":"sitesp_DjuZM","description":"A multipart/form-data middleware based on busboy library.","breadcrumbs":[{"label":"Other"},{"label":"API reference"}]},{"id":"-Ld_PyYOTx8V00ApwNSa","title":"@marblejs/middleware-cors","pathname":"/docs/other/api-reference/middleware-cors","siteSpaceId":"sitesp_DjuZM","description":"A CORS middleware for Marble.js","breadcrumbs":[{"label":"Other"},{"label":"API reference"}]},{"id":"-LXzpZ8l-t7YNDjmNDhA","title":"@marblejs/middleware-io","pathname":"/docs/other/api-reference/middleware-io","siteSpaceId":"sitesp_DjuZM","description":"","breadcrumbs":[{"label":"Other"},{"label":"API reference"}]},{"id":"-LDRtXEJIpnxg8HUAffV","title":"@marblejs/middleware-logger","pathname":"/docs/other/api-reference/middleware-logger","siteSpaceId":"sitesp_DjuZM","description":"HTTP request logger middleware for Marble.js","breadcrumbs":[{"label":"Other"},{"label":"API reference"}]},{"id":"-LDRtbN6OmEFwS4vtP3-","title":"@marblejs/middleware-body","pathname":"/docs/other/api-reference/middleware-body","siteSpaceId":"sitesp_DjuZM","description":"HTTP request body parser middleware for Marble.js.","breadcrumbs":[{"label":"Other"},{"label":"API reference"}]},{"id":"-LNZwqDi15AHCvvdNlkA","title":"@marblejs-contrib/middleware-jwt","pathname":"/docs/other/api-reference/middleware-jwt","siteSpaceId":"sitesp_DjuZM","description":"HTTP requests authentication middleware for Marble.js based on JWT mechanism.","breadcrumbs":[{"label":"Other"},{"label":"API reference"}]},{"id":"-LNaLtqOzpJ3st0zMd_1","title":"Token signing","pathname":"/docs/other/api-reference/middleware-jwt/token-creation","siteSpaceId":"sitesp_DjuZM","description":"Besides the common things like token authorization, the middleware comes with handy functions responsible for token signing.","breadcrumbs":[{"label":"Other"},{"label":"API reference"},{"label":"@marblejs-contrib/middleware-jwt"}]},{"id":"-LDWRZ4rIiMv2aXxxQOQ","title":"@marblejs-contrib/middleware-joi","pathname":"/docs/other/api-reference/middleware-joi","siteSpaceId":"sitesp_DjuZM","description":"A Joi validation middleware for Marble.js.","breadcrumbs":[{"label":"Other"},{"label":"API reference"}]},{"id":"-M-Rgy7dJ-_IrXpxD12z","title":"Style Guide","pathname":"/docs/other/style-guide","siteSpaceId":"sitesp_DjuZM","description":"","breadcrumbs":[{"label":"Other"}]},{"id":"-LDRNFIsEp441idMkiPK","title":"FAQ","pathname":"/docs/other/faq","siteSpaceId":"sitesp_DjuZM","description":"","breadcrumbs":[{"label":"Other"}]}]}