{"repo":"fasenderos/nodejs-order-book","free":true,"listed":false,"github":"https://github.com/fasenderos/nodejs-order-book","clone":"git clone https://github.com/fasenderos/nodejs-order-book.git","description":"Ultra-fast Limit Order Book for Node.js written in TypeScript for high-frequency trading (HFT) :rocket::rocket:","language":"TypeScript","stars":205,"topics":["exchange","hft","hft-trading","limit-order-book","low-latency","matching-algorithm","matching-engine","nodejs","nodejs-order-book","order-book","orderbook","performance","trading","trading-algorithms","typescript"],"license":"MIT","category":"hft_engine","readme_excerpt":"<p align=\"center\">\n    <a href=\"https://www.npmjs.com/package/nodejs-order-book\" target=\"_blank\"><img src=\"https://img.shields.io/npm/v/nodejs-order-book?color=blue\" alt=\"NPM Version\"></a>\n    <a href=\"https://github.com/fasenderos/nodejs-order-book/blob/main/LICENSE\" target=\"_blank\"><img src=\"https://img.shields.io/npm/l/nodejs-order-book\" alt=\"Package License\"></a>\n    <a href=\"https://www.npmjs.com/package/nodejs-order-book\" target=\"_blank\"><img src=\"https://img.shields.io/npm/dm/nodejs-order-book\" alt=\"NPM Downloads\"></a>\n    <a href=\"https://circleci.com/gh/fasenderos/nodejs-order-book\" target=\"_blank\"><img src=\"https://img.shields.io/circleci/build/github/fasenderos/nodejs-order-book/main\" alt=\"CircleCI\" ></a>\n    <a href=\"https://codecov.io/github/fasenderos/nodejs-order-book\" target=\"_blank\"><img src=\"https://img.shields.io/codecov/c/github/fasenderos/nodejs-order-book\" alt=\"Codecov\"></a>\n    <a href=\"https://github.com/fasenderos/nodejs-order-book\"><img src=\"https://badgen.net/badge/icon/typescript?icon=typescript&label\" alt=\"Built with TypeScript\"></a>\n</p>\n\n# Node.js Order Book\n\n<p align=\"center\">\nA fast, feature-complete limit order book engine for Node.js, written in TypeScript. </br>\nDesigned for trading systems, exchanges, and HFT simulations. </br></br>\n:star: Star me on GitHub — it motivates me a lot!\n</p>\n\n**Why this library?** Originally ported from a [Go orderbook](https://github.com/i25959341/orderbook), this engine has been extended with conditional orders, Self-Trade Prevention (STP), snapshot/journaling for crash recovery, and full TypeScript support — while maintaining high throughput.\n\n## Table of Contents\n\n- [Features](#features)\n- [Quick Start](#quick-start)\n- [Requirements](#requirements)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Conditional Orders](#conditional-orders)\n- [Primary Functions](#primary-functions)\n  - [createOrder()](#createorder)\n  - [limit()](#limit)\n  - [market()](#market)\n  - [stopLimit()](#stoplimit)\n  - [stopMarket()](#stopmarket)\n  - [oco()](#oco)\n  - [modify()](#modify)\n  - [cancel()](#cancel)\n- [Understanding Order Results](#understanding-order-results)\n- [Self-Trade Prevention (STP)](#self-trade-prevention-stp)\n- [Order Book Options](#order-book-options)\n  - [Snapshot](#snapshot)\n  - [Journal Logs](#journal-logs)\n  - [Enable Journaling](#enable-journaling)\n- [Development](#development)\n- [Contributing](#contributing)\n- [License](#license)\n- [Donation](#donation)\n\n## Features\n\n- Standard price-time priority matching\n- Market, limit, and post-only limit orders\n- Conditional orders: Stop Limit, Stop Market, and OCO (One-Cancels-the-Other)\n- Time-in-force: GTC (Good-Til-Cancelled), FOK (Fill-Or-Kill), IOC (Immediate-Or-Cancel)\n- Self-Trade Prevention (STP) with 4 modes (NONE, EXPIRE_MAKER, EXPIRE_TAKER, EXPIRE_BOTH)\n- Order cancellation\n- Order price and/or size modification\n- Snapshot and journaling for order book state persistence and recovery\n- **High throughput** — benchmarked at 300k+ trades per second\n- Full TypeScript support with dual ESM/CJS exports\n\n## Quick Start\n\n```ts\nimport { OrderBook, Side } from 'nodejs-order-book'\n\nconst ob = new OrderBook()\n\n// Place a sell limit order\nob.limit({ side: Side.SELL, id: 'order-1', size: 55, price: 100 })\n\n// Place a buy market order\nconst result = ob.market({ side: Side.BUY, size: 10 })\n\nconsole.log(result.done)     // Filled orders\nconsole.log(result.partial)  // Partial fill, if any\n```\n\n## Requirements\n\n- **Node.js** 18+ (ES2022 target)\n- **npm**, **yarn**, or **pnpm**\n\n## Installation\n\nInstall with npm:\n\n```\nnpm install nodejs-order-book\n```\n\nInstall with yarn:\n\n```\nyarn add nodejs-order-book\n```\n\nInstall with pnpm:\n\n```\npnpm add nodejs-order-book\n```\n\n## Usage\n\nThe package supports both **ESM** and **CommonJS**:\n\n```ts\n// ESM (recommended)\nimport { OrderBook, Side, OrderType, SelfTradePreventionMode } from 'nodejs-order-book'\n\n// CommonJS\nconst { OrderBook, Side, OrderType, SelfTradePreventionMode } = require('nodejs-order-book')\n```\n\nTo start using the order book you need to import `OrderBook` and create a new instance:\n\n```ts\nimport { OrderBook } from 'nodejs-order-book'\n\nconst ob = new OrderBook()\n```\n\nThen you'll be able to use the following primary functions:\n\n```ts\nob.createOrder({\n      type: 'limit' | 'market',\n      side: 'buy' | 'sell',\n      size: number,\n      price?: number,\n      id?: string,\n      postOnly?: boolean,\n      timeInForce?: 'GTC' | 'FOK' | 'IOC'\n})\n\nob.limit({\n      id: string,\n      side: 'buy' | 'sell',\n      size: number,\n      price: number,\n      postOnly?: boolean,\n      timeInForce?: 'GTC' | 'FOK' | 'IOC'\n})\n\nob.market({ side: 'buy' | 'sell', size: number })\n\nob.modify(orderID: string, {\n      side: 'buy' | 'sell',\n      size: number,\n      price: number\n})\n\nob.cancel(orderID: string)\n```\n\n### Conditional Orders\n\n`Stop Market`, `Stop Limit` and `OCO` orders are supported.\n\n```ts\nimport { OrderBook } from 'nodejs-order-book'\n\nconst ob = new OrderBook()\n\nob.createOrder({\n      type: 'stop_limit' | 'stop_market' | 'oco',\n      side: 'buy' | 'sell',\n      size: number,\n      price?: number,\n      id?: string,\n      stopPrice?: number,\n      timeInForce?: 'GTC' | 'FOK' | 'IOC',\n      stopLimitTimeInForce?: 'GTC' | 'FOK' | 'IOC'\n})\n\nob.stopLimit({\n      id: string,\n      side: 'buy' | 'sell',\n      size: number,\n      price: number,\n      stopPrice: number,\n      timeInForce?: 'GTC' | 'FOK' | 'IOC'\n})\n\nob.stopMarket({\n      side: 'buy' | 'sell',\n      size: number,\n      stopPrice: number\n})\n\nob.oco({\n      id: string,\n      side: 'buy' | 'sell',\n      size: number,\n      price: number,\n      stopPrice: number,\n      stopLimitPrice: number,\n      timeInForce?: 'GTC' | 'FOK' | 'IOC',\n      stopLimitTimeInForce?: 'GTC' | 'FOK' | 'IOC'\n})\n```\n\n## Primary Functions\n\nTo add an order to the order book you can call the general `createOrder()` function or use the underlying `limit()`, `market()`, `stopLimit()`, `stopMarket()` or `oco()` directly.\n\n### createOrder()\n\nA unified entry point that accepts a `type` field to dispatch to the correct handler:\n\n```ts\n// Limit order\nob.createOrder({\n      type: 'limit',\n      side: 'buy' | 'sell',\n      size: number,\n      price: number,\n      id: string,\n      postOnly?: boolean,\n      timeInForce?: 'GTC' | 'FOK' | 'IOC'\n})\n\n// Market order\nob.createOrder({\n      type: 'market',\n      side: 'buy' | 'sell',\n      size: number\n})\n\n// Stop limit order\nob.createOrder({\n      type: 'stop_limit',\n      side: 'buy' | 'sell',\n      size: number,\n      price: number,\n      id: string,\n      stopPrice: number,\n      timeInForce?: 'GTC' | 'FOK' | 'IOC'\n})\n\n// Stop market order\nob.createOrder({\n      type: 'stop_market',\n      side: 'buy' | 'sell',\n      size: number,\n      stopPrice: number\n})\n\n// OCO order\nob.createOrder({\n      type: 'oco',\n      side: 'buy' | 'sell',\n      size: number,\n      stopPrice: number,\n      stopLimitPrice: number,\n      timeInForce?: 'GTC' | 'FOK' | 'IOC',\n      stopLimitTimeInForce?: 'GTC' | 'FOK' | 'IOC'\n})\n```\n\n### limit()\n\nCreate a limit order.\n\n```ts\n/**\n * @param options.side - `sell` or `buy`\n * @param options.id - Unique order ID\n * @param options.size - How much of currency you want to trade in units of base currency\n * @param options.price - The price at which the order is to be fulfilled, in units of the quote currency\n * @param options.postOnly - When `true` the order is rejected if it immediately matches as a taker. Default is `false`\n * @param options.timeInForce - GTC, FOK, or IOC. Default is GTC\n * @returns An object with the result of the processed order or an error.\n */\nob.limit({\n      side: 'buy' | 'sell',\n      id: string,\n      size: number,\n      price: number,\n      postOnly?: boolean,\n      timeInForce?: 'GTC' | 'FOK' | 'IOC'\n})\n```\n\nFor example:\n\n```ts\nob.limit({ side: \"sell\", id: \"uniqueID\", size: 55, price: 100 })\n\nasks: 110 -> 5      110 -> 5\n      100 -> 1      100 -> 56\n--------------  ->  --------------\nbids: 90  -> 5      90  -> 5\n      80  -> 1      80  -> 1\n\ndone    - null\npartial - null\n```\n\n```ts\nob.limit({ side: \"buy\", id: \"uniqueID\", size: 7, price: 120 })\n\nasks: 110 -> 5\n      100 -> 1\n--------------  ->  --------------\nbids: 90  -> 5      120 -> 1\n      80  -> 1      90  -> 5\n                    80  -> 1\n\ndone    - 2 (or more orders)\npartial - uniqueID order\n```\n\n```ts\nob.limit({ side: \"buy\", id: \"uniqueID\", size: 3, price: 120 })\n\nasks: 110 -> 5\n      100 -> 1      110 -> 3\n--------------  ->  --------------\nbids: 90  -> 5      90  -> 5\n      80  -> 1      80  -> 1\n\ndone    - 1 order with 100 price, (may be also few orders with 110 price) + uniqueID order\npartial - 1 order with price 110\n```\n\n### market()\n\nCreate a market order.\n\n```ts\n/**\n * @param options.side - `sell` or `buy`\n * @param options.size - How much of currency you want to trade in units of base currency\n * @returns An object with the result of the processed order or an error.\n */\nob.market({ side: 'buy' | 'sell', size: number })\n```\n\nFor example:\n\n```ts\nob.market({ side: 'sell', size: 6 })\n\nasks: 110 -> 5      110 -> 5\n      100 -> 1      100 -> 1\n--------------  ->  --------------\nbids: 90  -> 5      80 -> 1\n      80  -> 2\n\ndone         - 2 (or more orders)\npartial      - 1 order with price 80\nquantityLeft - 0\n```\n\n```ts\nob.market({ side: 'buy', size: 10 })\n\nasks: 110 -> 5\n      100 -> 1\n--------------  ->  --------------\nbids: 90  -> 5      90  -> 5\n      80  -> 1      80  -> 1\n\ndone         - 2 (or more orders)\npartial      - null\nquantityLeft - 4\n```\n\n### stopLimit()\n\nCreate a stop limit order.\n\n```ts\n/**\n * @param options.side - `sell` or `buy`\n * @param options.id - Unique order ID\n * @param options.size - How much of currency you want to trade in units of base currency\n * @param options.price - The price at which the order is to be fulfilled, in units of the quote currency\n * @param options.stopPrice - The price at which the order is triggered\n * @param options.timeInForce - GTC, FOK, or IOC. Default is ","default_branch":"main","files":261,"tree":[".circleci/config.yml",".codecov.yml",".github/FUNDING.yml",".github/ISSUE_TEMPLATE/bug_report.md",".github/ISSUE_TEMPLATE/feature_request.md",".github/PULL_REQUEST_TEMPLATE.md",".github/workflows/codeql-analysis.yml",".github/workflows/dependabot-automerge.yml",".github/workflows/publish.yml",".github/workflows/test.yml",".gitignore",".husky/commit-msg",".husky/pre-commit",".npmrc",".opencode/README.md",".opencode/agent/core/openagent.md",".opencode/agent/core/opencoder.md",".opencode/agent/subagents/code/build-agent.md",".opencode/agent/subagents/code/coder-agent.md",".opencode/agent/subagents/code/reviewer.md",".opencode/agent/subagents/code/test-engineer.md",".opencode/agent/subagents/core/contextscout.md",".opencode/agent/subagents/core/documentation.md",".opencode/agent/subagents/core/externalscout.md",".opencode/agent/subagents/core/task-manager.md",".opencode/agent/subagents/development/devops-specialist.md",".opencode/agent/subagents/development/frontend-specialist.md",".opencode/agent/subagents/system-builder/context-organizer.md",".opencode/command/add-context.md",".opencode/command/analyze-patterns.md",".opencode/command/clean.md",".opencode/command/commit.md",".opencode/command/context.md",".opencode/command/openagents/check-context-deps.md",".opencode/command/optimize.md",".opencode/command/test.md",".opencode/command/validate-repo.md",".opencode/config/agent-metadata.json",".opencode/context/core/config/navigation.md",".opencode/context/core/config/paths.json",".opencode/context/core/context-system.md",".opencode/context/core/context-system/CHANGELOG.md",".opencode/context/core/context-system/examples/navigation-examples.md",".opencode/context/core/context-system/guides/compact.md",".opencode/context/core/context-system/guides/creation.md",".opencode/context/core/context-system/guides/navigation-design-basics.md",".opencode/context/core/context-system/guides/navigation-templates.md",".opencode/context/core/context-system/guides/organizing-context.md",".opencode/context/core/context-system/guides/workflows.md",".opencode/context/core/context-system/navigation.md",".opencode/context/core/context-system/operations/error.md",".opencode/context/core/context-system/operations/extract.md",".opencode/context/core/context-system/operations/harvest.md",".opencode/context/core/context-system/operations/migrate.md",".opencode/context/core/context-system/operations/organize.md",".opencode/context/core/context-system/operations/update.md",".opencode/context/core/context-system/standards/codebase-references.md",".opencode/context/core/context-system/standards/frontmatter.md",".opencode/context/core/context-system/standards/mvi.md",".opencode/context/core/context-system/standards/structure.md",".opencode/context/core/context-system/standards/templates.md",".opencode/context/core/essential-patterns.md",".opencode/context/core/navigation.md",".opencode/context/core/standards/code-analysis.md",".opencode/context/core/standards/code-quality.md",".opencode/context/core/standards/documentation.md",".opencode/context/core/standards/navigation.md",".opencode/context/core/standards/project-intelligence-management.md",".opencode/context/core/standards/project-intelligence.md",".opencode/context/core/standards/security-patterns.md",".opencode/context/core/standards/test-coverage.md",".opencode/context/core/system/context-guide.md",".opencode/context/core/system/context-paths.md",".opencode/context/core/system/navigation.md",".opencode/context/core/task-management/guides/managing-tasks.md",".opencode/context/core/task-management/guides/splitting-tasks.md",".opencode/context/core/task-management/lookup/task-commands.md",".opencode/context/core/task-management/navigation.md",".opencode/context/core/task-management/standards/task-schema.md",".opencode/context/core/visual-development.md",".opencode/context/core/workflows/code-review.md",".opencode/context/core/workflows/component-planning.md",".opencode/context/core/workflows/delegation.md",".opencode/context/core/workflows/design-iteration-best-practices.md",".opencode/context/core/workflows/design-iteration-overview.md",".opencode/context/core/workflows/design-iteration-plan-file.md",".opencode/context/core/workflows/design-iteration-plan-iterations.md",".opencode/context/core/workflows/design-iteration-stage-animation.md",".opencode/context/core/workflows/design-iteration-stage-implementation.md",".opencode/context/core/workflows/design-iteration-stage-layout.md",".opencode/context/core/workflows/design-iteration-stage-theme.md",".opencode/context/core/workflows/design-iteration-visual-content.md",".opencode/context/core/workflows/external-context-integration.md",".opencode/context/core/workflows/external-context-management.md",".opencode/context/core/workflows/external-libraries-faq.md",".opencode/context/core/workflows/external-libraries-scenarios.md",".opencode/context/core/workflows/feature-breakdown.md",".opencode/context/core/workflows/navigation.md",".opencode/context/core/workflows/review.md",".opencode/context/core/workflows/session-management.md",".opencode/context/core/workflows/task-delegation-basics.md",".opencode/context/core/workflows/task-delegation-caching.md",".opencode/context/core/workflows/task-delegation-specialists.md",".opencode/context/development/ai/mastra-ai/concepts/agents-tools.md",".opencode/context/development/ai/mastra-ai/concepts/core.md",".opencode/context/development/ai/mastra-ai/concepts/evaluations.md",".opencode/context/development/ai/mastra-ai/concepts/storage.md",".opencode/context/development/ai/mastra-ai/concepts/workflows.md",".opencode/context/development/ai/mastra-ai/errors/mastra-errors.md",".opencode/context/development/ai/mastra-ai/examples/workflow-example.md",".opencode/context/development/ai/mastra-ai/guides/modular-building.md",".opencode/context/development/ai/mastra-ai/guides/testing.md",".opencode/context/development/ai/mastra-ai/guides/workflow-step-structure.md",".opencode/context/development/ai/mastra-ai/lookup/mastra-config.md",".opencode/context/development/ai/navigation.md",".opencode/context/development/backend-navigation.md",".opencode/context/development/backend/navigation.md",".opencode/context/development/data/navigation.md",".opencode/context/development/frameworks/navigation.md",".opencode/context/development/frontend/navigation.md",".opencode/context/development/frontend/when-to-delegate.md",".opencode/context/development/fullstack-navigation.md",".opencode/context/development/infrastructure/navigation.md",".opencode/context/development/integration/navigation.md",".opencode/context/development/navigation.md",".opencode/context/development/principles/api-design.md",".opencode/context/development/principles/clean-code.md",".opencode/context/development/principles/navigation.md",".opencode/context/development/ui-navigation.md",".opencode/context/navigation.md",".opencode/context/openagents-repo/blueprints/context-bundle-template.md",".opencode/context/openagents-repo/blueprints/navigation.md",".opencode/context/openagents-repo/concepts/navigation.md",".opencode/context/openagents-repo/concepts/subagent-testing-modes.md",".opencode/context/openagents-repo/core-concepts/agent-metadata.md",".opencode/context/openagents-repo/core-concepts/agents.md",".opencode/context/openagents-repo/core-concepts/categories.md",".opencode/context/openagents-repo/core-concepts/evals.md",".opencode/context/openagents-repo/core-concepts/navigation.md",".opencode/context/openagents-repo/core-concepts/registry.md",".opencode/context/openagents-repo/errors/navigation.md",".opencode/context/openagents-repo/errors/tool-permission-errors.md",".opencode/context/openagents-repo/examples/context-bundle-example.md",".opencode/context/openagents-repo/examples/navigation.md",".opencode/context/openagents-repo/examples/subagent-prompt-structure.md",".opencode/context/openagents-repo/guides/adding-agent-basics.md",".opencode/context/openagents-repo/guides/adding-agent-testing.md",".opencode/context/openagents-repo/guides/adding-skill-basics.md",".opencode/context/openagents-repo/guides/adding-skill-example.md",".opencode/context/openagents-repo/guides/adding-skill-implementation.md",".opencode/context/openagents-repo/guides/building-cli-compact.md",".opencode/context/openagents-repo/guides/creating-release.md",".opencode/context/openagents-repo/guides/debugging.md",".opencode/context/openagents-repo/guides/external-libraries-workflow.md",".opencode/context/openagents-repo/guides/github-issues-workflow.md",".opencode/context/openagents-repo/guides/navigation.md",".opencode/context/openagents-repo/guides/npm-publishing.md",".opencode/context/openagents-repo/guides/profile-validation.md",".opencode/context/openagents-repo/guides/resolving-installer-wildcard-failures.md",".opencode/context/openagents-repo/guides/subagent-invocation.md",".opencode/context/openagents-repo/guides/testing-agent.md",".opencode/context/openagents-repo/guides/testing-subagents-approval.md",".opencode/context/openagents-repo/guides/testing-subagents.md",".opencode/context/openagents-repo/guides/updating-registry.md",".opencode/context/openagents-repo/lookup/commands.md",".opencode/context/openagents-repo/lookup/file-locations.md",".opencode/context/openagents-repo/lookup/navigation.md",".opencode/context/openagents-repo/lookup/subagent-framework-maps.md",".opencode/context/openagents-repo/lookup/subagent-test-commands.md",".opencode/context/openagents-repo/navigation.md",".opencode/context/openagents-repo/plugins/context/architecture/lifecycle.md",".opencode/context/openagents-repo/plugins/context/architecture/overview.md",".opencode/context/openagents-repo/plugins/context/capabilities/agents.md",".opencode/context/openagents-repo/plugins/context/capabilities/events.md",".opencode/context/openagents-repo/plugins/context/capabilities/events_skills.md",".opencode/context/openagents-repo/plugins/context/capabilities/tools.md",".opencode/context/openagents-repo/plugins/context/context-overview.md",".opencode/context/openagents-repo/plugins/context/reference/best-practices.md",".opencode/context/openagents-repo/plugins/navigation.md",".opencode/context/openagents-repo/quality/navigation.md",".opencode/context/openagents-repo/quality/registry-dependencies.md",".opencode/context/openagents-repo/quick-start.md",".opencode/context/openagents-repo/templates/context-bundle-template.md",".opencode/context/openagents-repo/templates/navigation.md",".opencode/context/project-intelligence/business-domain.md",".opencode/context/project-intelligence/business-tech-bridge.md",".opencode/context/project-intelligence/decisions-log.md",".opencode/context/project-intelligence/living-notes.md",".opencode/context/project-intelligence/navigation.md",".opencode/context/project-intelligence/technical-domain.md",".opencode/context/project/project-context.md",".opencode/context/ui/navigation.md",".opencode/context/ui/terminal/navigation.md",".opencode/context/ui/web/animation-advanced.md",".opencode/context/ui/web/animation-basics.md",".opencode/context/ui/web/animation-chat.md",".opencode/context/ui/web/animation-components.md",".opencode/context/ui/web/animation-forms.md",".opencode/context/ui/web/animation-loading.md",".opencode/context/ui/web/design-systems.md",".opencode/context/ui/web/design/concepts/scroll-linked-animations.md",".opencode/context/ui/web/design/examples/scrollytelling-headphone.md",".opencode/context/ui/web/design/guides/building-scrollytelling-pages.md",".opencode/context/ui/web/design/lookup/scroll-animation-prompts.md",".opencode/context/ui/web/design/navigation.md",".opencode/context/ui/web/navigation.md",".opencode/context/ui/web/react-patterns.md",".opencode/context/ui/web/ui-styling-standards.md",".opencode/env.example",".opencode/skills/context7/README.md",".opencode/skills/context7/SKILL.md",".opencode/skills/context7/library-registry.md",".opencode/skills/context7/navigation.md",".opencode/skills/task-management/SKILL.md",".opencode/skills/task-management/router.sh",".opencode/skills/task-management/scripts/task-cli.ts",".opencode/tool/env/index.ts",".release-it.json","AUTHORS","CHANGELOG.md","CODE_OF_CONDUCT.md","CONTRIBUTING.md","LICENSE","README.md","SECURITY.md","benchmarks/benchmark_lob.js","biome.json","commitlint.config.js","config/fileTransformer.js","config/tsconfig.cjs.json","config/tsconfig.esm.json","config/tsconfig.types.json","opencode.jsonc","package-lock.json","package.json","src/errors.ts","src/index.ts","src/order.ts","src/orderbook.ts","src/orderqueue.ts","src/orderside.ts","src/stopbook.ts","src/stopqueue.ts","src/stopside.ts","src/types.ts","src/utils.ts","test/error.test.ts","test/order.test.ts","test/orderbook.test.ts","test/orderqueue.test.ts","test/orderside.test.ts","test/stopbook.test.ts","test/stopqueue.test.ts","test/stopside.test.ts","test/stp.test.ts","test/tsconfig.json","test/utils.test.ts","tools/cleanup.js","tools/packagejson.js","tsconfig.eslint.json","tsconfig.json"],"storefront":"/r/fasenderos","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/fasenderos/nodejs-order-book/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}