Skip to main content

@eigeninteractive/server/commerce-kit

@eigeninteractive/server/commerce-kit: the small, sharp things every commerce adapter needs and none of them should reimplement.

Adapters run on Workers, so there is no Node crypto and no provider SDK that assumes one. What they do all need is the same three primitives: an HMAC, a comparison that does not leak where two secrets diverge, and a JSON call whose failures say which provider failed without quoting the token that failed with it.

Classes

ProviderRequestError

Defined in: server/packages/server/src/commerce/provider-kit.ts:41

A provider call that failed, named by provider and status, never by token.

Extends

  • Error

Constructors

Constructor
new ProviderRequestError(
provider,
status,
detail
): ProviderRequestError;

Defined in: server/packages/server/src/commerce/provider-kit.ts:42

Parameters
ParameterType
providerstring
statusnumber
detailstring
Returns

ProviderRequestError

Overrides
Error.constructor

Properties

provider
readonly provider: string;

Defined in: server/packages/server/src/commerce/provider-kit.ts:43

status
readonly status: number;

Defined in: server/packages/server/src/commerce/provider-kit.ts:44

Functions

basicAuth()

function basicAuth(id, secret): string;

Defined in: server/packages/server/src/commerce/provider-kit.ts:68

Basic authorization header value for a key/secret pair.

Parameters

ParameterType
idstring
secretstring

Returns

string


hmacSha256Hex()

function hmacSha256Hex(secret, message): Promise<string>;

Defined in: server/packages/server/src/commerce/provider-kit.ts:21

HMAC-SHA256 of message under secret, lowercase hex.

Parameters

ParameterType
secretstring
messagestring

Returns

Promise<string>


providerJson()

function providerJson<T>(provider, request): Promise<T>;

Defined in: server/packages/server/src/commerce/provider-kit.ts:58

A JSON call to a provider.

The body of a failed response is truncated into the error: providers put the useful part first, and an untruncated one is how a token ends up in a log.

Type Parameters

Type Parameter
T

Parameters

ParameterType
providerstring
requestRequest

Returns

Promise<T>


requireSecret()

function requireSecret(value, name): string;

Defined in: server/packages/server/src/commerce/provider-kit.ts:73

Require a configured secret, naming what is missing rather than failing later.

Parameters

ParameterType
valuestring | undefined
namestring

Returns

string


timingSafeEqualHex()

function timingSafeEqualHex(a, b): boolean;

Defined in: server/packages/server/src/commerce/provider-kit.ts:33

Compare two hex digests without revealing how far they agreed.

Length is compared first and separately: two digests of different lengths cannot match anyway, and hashing both sides to a fixed width first means the loop below runs over equal-length inputs every time.

Parameters

ParameterType
astring
bstring

Returns

boolean