Utilities

Fingermark Utility library

Overview

Fingermark Utilities is a general utility library and abstraction for 3rd party utility libraries. This is so we can keep the implementation details of different utility libraries in one place, allowing for easy swapping in future.

This library could probably benefit from being split up into a series of "smaller" libraries given how large it has gotten. There needs to be a clearly defined ruleset provided when deciding whether something should become a utility or a stand alone library.

Usage

Interpret (XState)

Custom XState interpret function for adding additional effects like transition.

This essentially allows us to more easily integrate with frontend frameworks like Vue or React.

import { interpret } from '@fingermarkglobal/utilities';

const { instance: exampleMachine } = interpret({
  name: 'exampleMachine',
  machine,
  transition: state => console.log(state),
});

Authentication

JWT Tokens

import { getJwtToken } from '@fingermarkglobal/request';

(async () => {
  const token = await getJwtToken();
  console.log(token); // eyJhb...
})();

Payments

Payments

Generic payment payload builder

import { buildPaymentPayload } from '@fingermarkglobal/utilities';

const payload = buildPaymentPayload(orderId, deviceConfig, totalPrice, settings, mockState);

Refunds

Generic refund payload builder

import { buildRefundPayload } from '@fingermarkglobal/utilities';

const payload = buildRefundPayload(orderId, deviceConfig, totalPrice, settings, mockState);

Date/Time

Timestamps

Generic timestamp function with standard format

import { timestamp } from '@fingermarkglobal/utilities';

const time = timestamp();

console.log(time); // 2019-08-07T10:16:10.000Z

Formatting

import { timestamp, getFormattedDateTime } from '@fingermarkglobal/utilities';

const datetime = getFormattedDateTime({
  currentTimestamp: timestamp(),
  timezone: 'Brazil/East',
});

console.log(datetime); // 22/11/2021 07:18 PM

Encoding

Hex

import { hexEncode } from '@fingermarkglobal/utilities';

const payload = 'Test string';
const encoded = hexEncode(payload);

console.log(encoded); // 005400650073007400200073007400720069006e0067

Formatting

Joining

import { join } from '@fingermarkglobal/utilities';

const info = join('$2.00', '1000 Kj');

console.log(info); // $2.00 | 1000 Kj

Rounding

import { round } from '@fingermarkglobal/utilities';

const rounded = round(9.7555);

console.log(rounded); // 9.76

Pricing

import { formatPrice } from '@fingermarkglobal/utilities';

const formatted = formatPrice({ price: 9.75 });

console.log(formatted); // $7.95

3rd Party Pricing

import { formatAmountInCents } from '@fingermarkglobal/utilities';

const inCents = formatAmountInCents({ amount: 9.75 });

console.log(rounded); // 975