Appearance
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.000ZFormatting
js
import { timestamp, getFormattedDateTime } from '@fingermarkglobal/utilities';
const datetime = getFormattedDateTime({
currentTimestamp: timestamp(),
timezone: 'Brazil/East',
});
console.log(datetime); // 22/11/2021 07:18 PMEncoding
Hex
js
import { hexEncode } from '@fingermarkglobal/utilities';
const payload = 'Test string';
const encoded = hexEncode(payload);
console.log(encoded); // 005400650073007400200073007400720069006e0067Formatting
Joining
js
import { join } from '@fingermarkglobal/utilities';
const info = join('$2.00', '1000 Kj');
console.log(info); // $2.00 | 1000 KjRounding
js
import { round } from '@fingermarkglobal/utilities';
const rounded = round(9.7555);
console.log(rounded); // 9.76Pricing
js
import { formatPrice } from '@fingermarkglobal/utilities';
const formatted = formatPrice({ price: 9.75 });
console.log(formatted); // $7.953rd Party Pricing
js
import { formatAmountInCents } from '@fingermarkglobal/utilities';
const inCents = formatAmountInCents({ amount: 9.75 });
console.log(rounded); // 975