Skip to content

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.

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

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

Authentication

JWT Tokens

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

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

Payments

Payments

Generic payment payload builder

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

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

Refunds

Generic refund payload builder

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

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

Date/Time

Timestamps

Generic timestamp function with standard format

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

const time = timestamp();

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

Formatting

js
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

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

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

console.log(encoded); // 005400650073007400200073007400720069006e0067

Formatting

Joining

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

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

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

Rounding

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

const rounded = round(9.7555);

console.log(rounded); // 9.76

Pricing

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

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

console.log(formatted); // $7.95

3rd Party Pricing

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

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

console.log(rounded); // 975