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​

ProviderRefusal​

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

The provider answered, and what it described is something the engine will never accept -- a Play purchase holding several subscriptions at once, say.

Distinct from a failure because retrying cannot change it. A claim refusing one answers 409 rather than 502, and a webhook accepts the notification rather than asking the provider to resend it for days. The message is logged, so it must not quote a token.

Extends​

  • Error

Constructors​

Constructor​
new ProviderRefusal(message): ProviderRefusal;

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

Parameters​
ParameterType
messagestring
Returns​

ProviderRefusal

Overrides​

Error.constructor


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:84

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:74

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:89

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