npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

futoin-xferengine

v0.9.10

Published

Neutral clustered multi-currency transaction engine with limits

Downloads

20

Readme

NPM Version NPM Downloads Build Status stable

NPM

About

Work in progress. Technology preview, even though partially used in production.

Universal cluster focused transaction engine concept implementation.

Documentation --> FutoIn Guide

Reference implementation of:

FTN19: FutoIn Interface - Transaction Engine
Version: 1.0

Features:

  • Market cases (aka transaction domains):
    • Deposits & Withdrawals
    • Retail
    • Payments
    • Online Gaming
    • Fee bound to transaction (both deducted & extra)
  • Multi-currency
    • ISO fiat currencies
    • Crypto currency namespace
    • Any custom currency namespace
  • Advanced limits per transaction domain:
    • Per-account statistics
    • Daily, Weekly, Monthly limits for amounts & transaction count
    • Overdraft for balance
    • Dedicated "External" accounts for integration limits of third-party systems
  • Clustering with protocol level interaction
  • External Wallet (Seamless Wallet)
  • DB-based event stream for reliable state distribution for ad-hoc systems

Supported database types

  • MySQL
  • PostgreSQL
  • SQLite
  • Potentially, any other SQL-compliant supported by futoin-database

BIG FAT WARNING

Please DO NOT use it unless you really understand what it is. The package is published as essential open source part of derived custom closed source projects of different vendors.

Installation for Node.js

Command line:

$ yarn add futoin-xferengine 

or

$ npm install futoin-xferengine --save

Concept

More detailed concept is in the FTN19 spec.

Examples

1.

API documentation

The concept is described in FutoIn specification: FTN19: FutoIn Interface - Transaction Engine v1.x

Classes

AccountsFace

Accounts Face

Kind: global class

AccountsService

Accounts Service

Kind: global class

BaseFace

Base Face with neutral common registration functionality

Kind: global class
Note: Not official API

BaseFace.LATEST_VERSION

Latest supported FTN17 version

Kind: static property of BaseFace

BaseFace.PING_VERSION

Latest supported FTN4 version

Kind: static property of BaseFace

BaseFace.register(as, ccm, name, endpoint, [credentials], [options])

CCM registration helper

Kind: static method of BaseFace

| Param | Type | Default | Description | | --- | --- | --- | --- | | as | AsyncSteps | | steps interface | | ccm | AdvancedCCM | | CCM instance | | name | string | | CCM registration name | | endpoint | * | | see AdvancedCCM#register | | [credentials] | * | | see AdvancedCCM#register | | [options] | object | {} | interface options | | [options.version] | string | "1.0" | interface version to use |

BaseService

Base Service with common registration logic

Kind: global class

baseService._checkType(type, val) ⇒ boolean

Check value against type in spec of implemented interface

Kind: instance method of BaseService
Returns: boolean - result of check

| Param | Type | Description | | --- | --- | --- | | type | string | name of defined type | | val | * | value to check |

BaseService.register(as, executor, options) ⇒ LimitsService

Register futoin.xfers.limits interface with Executor

Kind: static method of BaseService
Returns: LimitsService - instance

| Param | Type | Description | | --- | --- | --- | | as | AsyncSteps | steps interface | | executor | Executor | executor instance | | options | object | implementation defined options |

BonusFace

Bonus Face

Kind: global class

BonusService

Bonus Service

Kind: global class

CachedAccountsFace

Efficient cached AccountsFace with event-based cache invalidation

Keeps local cache of limits and invalidates based on LIVE events.

Kind: global class

CachedAccountsFace.register(as, ccm, name, endpoint, [credentials], [options])

CCM registration helper

Kind: static method of CachedAccountsFace

| Param | Type | Default | Description | | --- | --- | --- | --- | | as | AsyncSteps | | steps interface | | ccm | AdvancedCCM | | CCM instance | | name | string | | CCM registration name | | endpoint | * | | see AdvancedCCM#register | | [credentials] | * | | see AdvancedCCM#register | | [options] | object | {} | interface options | | [options.version] | string | "<latest>" | interface version to use |

CachedLimitsFace

Efficient cached LimitsFace with event-based cache invalidation

Keeps local cache of limits and invalidates based on LIVE events.

Kind: global class

CachedLimitsFace.register(as, ccm, name, endpoint, [credentials], [options])

CCM registration helper

Kind: static method of CachedLimitsFace

| Param | Type | Default | Description | | --- | --- | --- | --- | | as | AsyncSteps | | steps interface | | ccm | AdvancedCCM | | CCM instance | | name | string | | CCM registration name | | endpoint | * | | see AdvancedCCM#register | | [credentials] | * | | see AdvancedCCM#register | | [options] | object | {} | interface options | | [options.version] | string | "<latest>" | interface version to use |

DepositFace

Deposits Face

Kind: global class

DepositService

Deposits Service

Kind: global class

DepositTools

XferTools with focus on Deposits use case

Kind: global class

GamingFace

Gaming Face

Kind: global class

GamingService

Gaming Service

Kind: global class

GamingTools

XferTools with focus on Gaming use case

Kind: global class

GenericFace

Generic Face

Kind: global class

GenericService

Generic Service

Kind: global class

LimitsFace

Limits Face

Kind: global class

LimitsService

Limits Service

Kind: global class

MessageFace

Message Face

Kind: global class

MessageService

Message Service

Kind: global class

MessageTools

XferTools with focus on Message processing

Kind: global class

PaymentFace

Payments Face

Kind: global class

PaymentService

Payments Service

Kind: global class

PaymentTools

XferTools with focus on Payments use case

Kind: global class

PeerFace

Peer Face

Kind: global class

PeerService

Peer Service

Kind: global class

RetailFace

Payments Face

Kind: global class

RetailService

Retail Service

Kind: global class

RetailTools

XferTools with focus on Retail use case

Kind: global class

UUIDTool

Extended UUIDTool with focus on collision safety in whole history of particular instance.

Kind: global class

UUIDTool.addXfer(xfer, val)

Call on xfer to ensure whole history uniqueness (just in case)

Kind: static method of UUIDTool

| Param | Type | Description | | --- | --- | --- | | xfer | XferBuilder | xfer builder object | | val | string | UUID in Base64 format without padding |

UUIDTool.genXfer(xfer) ⇒ string

Generate UUID v4 in scope of transaction

Kind: static method of UUIDTool
Returns: string - UUID encoded in Base64 without padding

| Param | Type | Description | | --- | --- | --- | | xfer | XferBuilder | xfer builder object |

WithdrawFace

Witdrawals Face

Kind: global class

WithdrawService

Withdrawals Service

Kind: global class

XferCCM

Special CCM implementation for XferCore

Kind: global class

xferCCM.registerServices(as, executor)

Register all services required for operation

Kind: instance method of XferCCM

| Param | Type | Description | | --- | --- | --- | | as | AsyncSteps | async step interface | | executor | Executor | internal protected executor |

xferCCM.registerEventServices(as, executor)

Register event services required for operation

Kind: instance method of XferCCM

| Param | Type | Description | | --- | --- | --- | | as | AsyncSteps | async step interface | | executor | Executor | internal protected executor |

xferCCM.registerCurrencyServices(as, executor)

Register currency services required for operation

Kind: instance method of XferCCM

| Param | Type | Description | | --- | --- | --- | | as | AsyncSteps | async step interface | | executor | Executor | internal protected executor |

xferCCM.registerLimitServices(as, executor)

Register limit services required for operation

Kind: instance method of XferCCM

| Param | Type | Description | | --- | --- | --- | | as | AsyncSteps | async step interface | | executor | Executor | internal protected executor |

xferCCM.registerAccountServices(as, executor)

Register account services required for operation

Kind: instance method of XferCCM

| Param | Type | Description | | --- | --- | --- | | as | AsyncSteps | async step interface | | executor | Executor | internal protected executor |

xferCCM.makeManualAlias(iface, key) ⇒ string

Get manual alias for specific iface & key combination

Kind: instance method of XferCCM
Returns: string - - manual key to be used with registerOnDemand()

| Param | Type | Description | | --- | --- | --- | | iface | string | interface identifier | | key | string | arbitrary key, typically account # |

xferCCM.registerOnDemand(iface, flavour, callback)

Register callback for on-demand interface creation

Kind: instance method of XferCCM

| Param | Type | Description | | --- | --- | --- | | iface | string | full iface identifier | | flavour | string | a type of interface implementation | | callback | callable | callback to register interface |

xferCCM.xferIface(as, iface, account)

Get interface with on-demand logic

Kind: instance method of XferCCM

| Param | Type | Description | | --- | --- | --- | | as | AsyncSteps | async step interface | | iface | string | full iface identifier | | account | string | related account ID |

CurrencyCacheInfoFace

An efficient version of Currency/InfoFace.

Keeps local cache of currencies and exchange rates. Listens on related event stream for changes as LIVE component.

Kind: global class

CurrencyCacheInfoFace.register(as, ccm, name, endpoint, [credentials], [options])

CCM registration helper

Kind: static method of CurrencyCacheInfoFace

| Param | Type | Default | Description | | --- | --- | --- | --- | | as | AsyncSteps | | steps interface | | ccm | AdvancedCCM | | CCM instance | | name | string | | CCM registration name | | endpoint | * | | see AdvancedCCM#register | | [credentials] | * | | see AdvancedCCM#register | | [options] | object | {} | interface options | | [options.version] | string | "<latest>" | interface version to use |

CurrencyInfoFace

Currency Information Face

Kind: global class

CurrencyInfoService

Currency Manage Service

Kind: global class

CurrencyManageFace

Currency Management Face

Kind: global class

CurrencyManageService

Currency Manage Service

Kind: global class

documented by jsdoc-to-markdown.