@xyo-network/rebilly-payment-card-authorization-plugin 2.99.4 → 2.99.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/Api/PaymentCardToken/Response.d.cts +1 -1
- package/dist/browser/Api/PaymentCardToken/Response.d.mts +1 -1
- package/dist/browser/Api/PaymentCardToken/Response.d.ts +1 -1
- package/dist/browser/Api/PaymentCardToken/index.d.cts +2 -2
- package/dist/browser/Api/PaymentCardToken/index.d.mts +2 -2
- package/dist/browser/Api/PaymentCardToken/index.d.ts +2 -2
- package/dist/browser/Api/index.d.cts +1 -1
- package/dist/browser/Api/index.d.mts +1 -1
- package/dist/browser/Api/index.d.ts +1 -1
- package/dist/browser/Config.d.cts.map +1 -1
- package/dist/browser/Config.d.mts.map +1 -1
- package/dist/browser/Config.d.ts.map +1 -1
- package/dist/browser/Params.d.cts +1 -1
- package/dist/browser/Params.d.mts +1 -1
- package/dist/browser/Params.d.ts +1 -1
- package/dist/browser/Sentinel.d.cts +2 -2
- package/dist/browser/Sentinel.d.cts.map +1 -1
- package/dist/browser/Sentinel.d.mts +2 -2
- package/dist/browser/Sentinel.d.mts.map +1 -1
- package/dist/browser/Sentinel.d.ts +2 -2
- package/dist/browser/Sentinel.d.ts.map +1 -1
- package/dist/browser/index.cjs +2 -1
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.d.cts +4 -4
- package/dist/browser/index.d.mts +4 -4
- package/dist/browser/index.d.ts +4 -4
- package/dist/browser/{index.js → index.mjs} +3 -2
- package/dist/browser/index.mjs.map +1 -0
- package/dist/browser/util/index.d.cts +1 -1
- package/dist/browser/util/index.d.mts +1 -1
- package/dist/browser/util/index.d.ts +1 -1
- package/dist/browser/util/toTokenRequest.d.cts +1 -1
- package/dist/browser/util/toTokenRequest.d.mts +1 -1
- package/dist/browser/util/toTokenRequest.d.ts +1 -1
- package/dist/neutral/Api/PaymentCardToken/Response.d.cts +1 -1
- package/dist/neutral/Api/PaymentCardToken/Response.d.mts +1 -1
- package/dist/neutral/Api/PaymentCardToken/Response.d.ts +1 -1
- package/dist/neutral/Api/PaymentCardToken/index.d.cts +2 -2
- package/dist/neutral/Api/PaymentCardToken/index.d.mts +2 -2
- package/dist/neutral/Api/PaymentCardToken/index.d.ts +2 -2
- package/dist/neutral/Api/index.d.cts +1 -1
- package/dist/neutral/Api/index.d.mts +1 -1
- package/dist/neutral/Api/index.d.ts +1 -1
- package/dist/neutral/Config.d.cts.map +1 -1
- package/dist/neutral/Config.d.mts.map +1 -1
- package/dist/neutral/Config.d.ts.map +1 -1
- package/dist/neutral/Params.d.cts +1 -1
- package/dist/neutral/Params.d.mts +1 -1
- package/dist/neutral/Params.d.ts +1 -1
- package/dist/neutral/Sentinel.d.cts +2 -2
- package/dist/neutral/Sentinel.d.cts.map +1 -1
- package/dist/neutral/Sentinel.d.mts +2 -2
- package/dist/neutral/Sentinel.d.mts.map +1 -1
- package/dist/neutral/Sentinel.d.ts +2 -2
- package/dist/neutral/Sentinel.d.ts.map +1 -1
- package/dist/neutral/index.cjs +2 -1
- package/dist/neutral/index.cjs.map +1 -1
- package/dist/neutral/index.d.cts +4 -4
- package/dist/neutral/index.d.mts +4 -4
- package/dist/neutral/index.d.ts +4 -4
- package/dist/neutral/{index.js → index.mjs} +3 -2
- package/dist/neutral/index.mjs.map +1 -0
- package/dist/neutral/util/index.d.cts +1 -1
- package/dist/neutral/util/index.d.mts +1 -1
- package/dist/neutral/util/index.d.ts +1 -1
- package/dist/neutral/util/toTokenRequest.d.cts +1 -1
- package/dist/neutral/util/toTokenRequest.d.mts +1 -1
- package/dist/neutral/util/toTokenRequest.d.ts +1 -1
- package/dist/node/Api/PaymentCardToken/Response.d.cts +1 -1
- package/dist/node/Api/PaymentCardToken/Response.d.mts +1 -1
- package/dist/node/Api/PaymentCardToken/Response.d.ts +1 -1
- package/dist/node/Api/PaymentCardToken/index.d.cts +2 -2
- package/dist/node/Api/PaymentCardToken/index.d.mts +2 -2
- package/dist/node/Api/PaymentCardToken/index.d.ts +2 -2
- package/dist/node/Api/index.d.cts +1 -1
- package/dist/node/Api/index.d.mts +1 -1
- package/dist/node/Api/index.d.ts +1 -1
- package/dist/node/Config.d.cts.map +1 -1
- package/dist/node/Config.d.mts.map +1 -1
- package/dist/node/Config.d.ts.map +1 -1
- package/dist/node/Params.d.cts +1 -1
- package/dist/node/Params.d.mts +1 -1
- package/dist/node/Params.d.ts +1 -1
- package/dist/node/Sentinel.d.cts +2 -2
- package/dist/node/Sentinel.d.cts.map +1 -1
- package/dist/node/Sentinel.d.mts +2 -2
- package/dist/node/Sentinel.d.mts.map +1 -1
- package/dist/node/Sentinel.d.ts +2 -2
- package/dist/node/Sentinel.d.ts.map +1 -1
- package/dist/node/index.cjs +2 -1
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.cts +4 -4
- package/dist/node/index.d.mts +4 -4
- package/dist/node/index.d.ts +4 -4
- package/dist/node/{index.js → index.mjs} +3 -2
- package/dist/node/index.mjs.map +1 -0
- package/dist/node/util/index.d.cts +1 -1
- package/dist/node/util/index.d.mts +1 -1
- package/dist/node/util/index.d.ts +1 -1
- package/dist/node/util/toTokenRequest.d.cts +1 -1
- package/dist/node/util/toTokenRequest.d.mts +1 -1
- package/dist/node/util/toTokenRequest.d.ts +1 -1
- package/package.json +19 -18
- package/src/Api/PaymentCardToken/Response.ts +1 -1
- package/src/Api/PaymentCardToken/index.ts +2 -2
- package/src/Api/index.ts +1 -1
- package/src/Config.ts +2 -2
- package/src/Params.ts +1 -1
- package/src/Sentinel.ts +6 -5
- package/src/index.ts +4 -4
- package/src/util/index.ts +1 -1
- package/src/util/toTokenRequest.ts +1 -1
- package/dist/browser/index.js.map +0 -1
- package/dist/neutral/index.js.map +0 -1
- package/dist/node/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/Schema.ts","../../src/Config.ts","../../src/Sentinel.ts","../../src/util/toTokenRequest.ts"],"sourcesContent":["export * from './Config.
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/Schema.ts","../../src/Config.ts","../../src/Sentinel.ts","../../src/util/toTokenRequest.ts"],"sourcesContent":["export * from './Config.ts'\nexport * from './Params.ts'\nexport * from './Schema.ts'\nexport * from './Sentinel.ts'\n","export const RebillyPaymentCardAuthorizationSentinelSchema = 'network.xyo.sentinel.payments.payment.instrument.card.authorization.rebilly'\nexport type RebillyPaymentCardAuthorizationSentinelSchema = typeof RebillyPaymentCardAuthorizationSentinelSchema\n","import { RebillyApiDomainSettings } from '@xyo-network/rebilly-payment-payload-plugin'\nimport { SentinelConfig } from '@xyo-network/sentinel-model'\n\nimport { RebillyPaymentCardAuthorizationSentinelSchema } from './Schema.ts'\n\nexport const RebillyPaymentCardAuthorizationSentinelConfigSchema = `${RebillyPaymentCardAuthorizationSentinelSchema}.config`\nexport type RebillyPaymentCardAuthorizationSentinelConfigSchema = typeof RebillyPaymentCardAuthorizationSentinelConfigSchema\n\n/*\n * The Rebilly Payment Card Authorization Sentinel Config\n */\nexport type RebillyPaymentCardAuthorizationSentinelConfig = SentinelConfig<{\n /**\n * The config schema\n */\n schema: RebillyPaymentCardAuthorizationSentinelConfigSchema\n}> &\nPartial<RebillyApiDomainSettings>\n","import { assertEx } from '@xylabs/assert'\nimport { AxiosJson } from '@xylabs/axios'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithSources } from '@xyo-network/payload-model'\nimport { isBillingAddress, isPaymentCard } from '@xyo-network/payment-payload-plugins'\nimport { RebillyPaymentAuthorizationToken, RebillyPaymentAuthorizationTokenSchema } from '@xyo-network/rebilly-payment-payload-plugin'\nimport { AbstractSentinel } from '@xyo-network/sentinel-abstract'\nimport { SentinelInstance, SentinelModuleEventData } from '@xyo-network/sentinel-model'\nimport { AxiosRequestConfig, HttpStatusCode } from 'axios'\n\nimport { CreateTokenResponse } from './Api/index.ts'\nimport { RebillyPaymentCardAuthorizationSentinelConfigSchema } from './Config.ts'\nimport { RebillyPaymentCardAuthorizationSentinelParams } from './Params.ts'\nimport { toTokenRequest } from './util/index.ts'\n\nconst removePrefix = (str: string, prefix: string) => {\n const regex = new RegExp(`^${prefix}`)\n return str.replace(regex, '')\n}\n\nconst moduleName = 'RebillyPaymentCardAuthorizationSentinel'\nexport class RebillyPaymentCardAuthorizationSentinel<\n TParams extends RebillyPaymentCardAuthorizationSentinelParams = RebillyPaymentCardAuthorizationSentinelParams,\n TEventData extends SentinelModuleEventData<SentinelInstance<TParams>> = SentinelModuleEventData<SentinelInstance<TParams>>,\n> extends AbstractSentinel<TParams, TEventData> {\n static override configSchemas = [RebillyPaymentCardAuthorizationSentinelConfigSchema]\n static override defaultConfigSchema = RebillyPaymentCardAuthorizationSentinelConfigSchema\n\n protected _apiRoot: string | undefined = undefined\n protected _domain: string | undefined = undefined\n protected _headers: AxiosRequestConfig['headers'] | undefined = undefined\n protected _organizationId: string | undefined = undefined\n protected _publishableApiKey: string | undefined = undefined\n protected _tokenEndpoint: string | undefined = undefined\n\n /**\n * The Rebilly Organization API root endpoint\n */\n protected get apiRoot() {\n if (!this._apiRoot) this._apiRoot = `${this.domain}/organizations/${this.organizationId}`\n return this._apiRoot\n }\n\n /**\n * The Rebilly domain\n */\n protected get domain() {\n if (!this._domain) this._domain = assertEx(this.params.domain ?? this.config.domain, () => `${moduleName}: Missing domain in params/config`)\n return this._domain\n }\n\n /**\n * The headers to be included in the request for each request\n */\n protected get headers(): AxiosRequestConfig['headers'] {\n if (!this._headers) this._headers = { Authorization: this.publishableApiKey }\n return this._headers\n }\n\n /**\n * True if the environment is sandbox (testing), false otherwise\n */\n protected get isSandboxEnvironment(): boolean {\n return this.domain.includes('sandbox')\n }\n\n /**\n * The Rebilly organization ID\n */\n protected get organizationId() {\n if (!this._organizationId)\n this._organizationId = removePrefix(\n assertEx(this.params.organizationId, () => `${moduleName}: Missing organizationId in params`),\n 'org_',\n )\n return this._organizationId\n }\n\n /**\n * The Rebilly Publishable API key\n */\n protected get publishableApiKey(): string {\n if (!this._publishableApiKey)\n this._publishableApiKey = assertEx(this.params.publishableApiKey, () => `${moduleName}: Missing publishableApiKey in params`)\n return this._publishableApiKey\n }\n\n /**\n * The Rebilly Organization token creation endpoint\n */\n protected get tokenEndpoint() {\n if (!this._tokenEndpoint) this._tokenEndpoint = `${this.apiRoot}/tokens`\n return this._tokenEndpoint\n }\n\n override async reportHandler(payloads?: Payload[]): Promise<Payload[]> {\n await this.started('throw')\n const results: WithSources<RebillyPaymentAuthorizationToken>[] = []\n // Verify necessary inputs and if nothing meets our criteria, bail early\n if (!payloads || payloads.length === 0) return results\n const paymentCard = payloads?.find(isPaymentCard)\n if (!paymentCard) return results\n const billingAddress = payloads?.find(isBillingAddress)\n if (!billingAddress) return results\n const axios = new AxiosJson({ headers: this.headers })\n try {\n const data = toTokenRequest(paymentCard, billingAddress)\n const response = await axios.post<CreateTokenResponse>(this.tokenEndpoint, data)\n assertEx(response.status === HttpStatusCode.Created, () => `Failed to tokenize payment card: ${response.status}`)\n const { id } = response.data\n const sources = await PayloadBuilder.dataHashes([paymentCard, billingAddress])\n results.push({ id, schema: RebillyPaymentAuthorizationTokenSchema, sources })\n } catch (error) {\n this.logger?.error?.(`${moduleName}: Error creating payment token: ${error}`)\n }\n return results\n }\n}\n","import { BillingAddress, PaymentCard } from '@xyo-network/payment-payload-plugins'\n\nimport { CreatePaymentTokenRequest } from '../Api/index.ts'\n\n/**\n * Converts a payment card and billing address to a token request\n * @param paymentCard The payment card\n * @param billingAddress The billing address\n * @returns The token request\n */\nexport const toTokenRequest = (paymentCard: PaymentCard, billingAddress: BillingAddress): CreatePaymentTokenRequest => {\n const { cvv, expMonth, expYear, cardNumber } = paymentCard\n // NOTE: We are destructuring all but the schema and passing it along to the billingAddress. This\n // is to allow for missing fields to be omitted rather than set to undefined and for any new fields\n // that might be added later to be automatically picked up on. It is fine to pass this along since\n // the user is supplying this data about themselves.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { schema: _, ...fields } = billingAddress\n return {\n billingAddress: { ...fields },\n method: 'payment-card',\n paymentInstrument: { cvv, expMonth, expYear, pan: cardNumber },\n }\n}\n"],"mappings":"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","names":["import_axios"]}
|
package/dist/neutral/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from './Config.
|
|
2
|
-
export * from './Params.
|
|
3
|
-
export * from './Schema.
|
|
4
|
-
export * from './Sentinel.
|
|
1
|
+
export * from './Config.ts';
|
|
2
|
+
export * from './Params.ts';
|
|
3
|
+
export * from './Schema.ts';
|
|
4
|
+
export * from './Sentinel.ts';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/neutral/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from './Config.
|
|
2
|
-
export * from './Params.
|
|
3
|
-
export * from './Schema.
|
|
4
|
-
export * from './Sentinel.
|
|
1
|
+
export * from './Config.ts';
|
|
2
|
+
export * from './Params.ts';
|
|
3
|
+
export * from './Schema.ts';
|
|
4
|
+
export * from './Sentinel.ts';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/neutral/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from './Config.
|
|
2
|
-
export * from './Params.
|
|
3
|
-
export * from './Schema.
|
|
4
|
-
export * from './Sentinel.
|
|
1
|
+
export * from './Config.ts';
|
|
2
|
+
export * from './Params.ts';
|
|
3
|
+
export * from './Schema.ts';
|
|
4
|
+
export * from './Sentinel.ts';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -6,11 +6,12 @@ var RebillyPaymentCardAuthorizationSentinelConfigSchema = `${RebillyPaymentCardA
|
|
|
6
6
|
|
|
7
7
|
// src/Sentinel.ts
|
|
8
8
|
import { assertEx } from "@xylabs/assert";
|
|
9
|
-
import { AxiosJson
|
|
9
|
+
import { AxiosJson } from "@xylabs/axios";
|
|
10
10
|
import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
11
11
|
import { isBillingAddress, isPaymentCard } from "@xyo-network/payment-payload-plugins";
|
|
12
12
|
import { RebillyPaymentAuthorizationTokenSchema } from "@xyo-network/rebilly-payment-payload-plugin";
|
|
13
13
|
import { AbstractSentinel } from "@xyo-network/sentinel-abstract";
|
|
14
|
+
import { HttpStatusCode } from "axios";
|
|
14
15
|
|
|
15
16
|
// src/util/toTokenRequest.ts
|
|
16
17
|
var toTokenRequest = (paymentCard, billingAddress) => {
|
|
@@ -118,4 +119,4 @@ export {
|
|
|
118
119
|
RebillyPaymentCardAuthorizationSentinelConfigSchema,
|
|
119
120
|
RebillyPaymentCardAuthorizationSentinelSchema
|
|
120
121
|
};
|
|
121
|
-
//# sourceMappingURL=index.
|
|
122
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/Schema.ts","../../src/Config.ts","../../src/Sentinel.ts","../../src/util/toTokenRequest.ts"],"sourcesContent":["export const RebillyPaymentCardAuthorizationSentinelSchema = 'network.xyo.sentinel.payments.payment.instrument.card.authorization.rebilly'\nexport type RebillyPaymentCardAuthorizationSentinelSchema = typeof RebillyPaymentCardAuthorizationSentinelSchema\n","import { RebillyApiDomainSettings } from '@xyo-network/rebilly-payment-payload-plugin'\nimport { SentinelConfig } from '@xyo-network/sentinel-model'\n\nimport { RebillyPaymentCardAuthorizationSentinelSchema } from './Schema.ts'\n\nexport const RebillyPaymentCardAuthorizationSentinelConfigSchema = `${RebillyPaymentCardAuthorizationSentinelSchema}.config`\nexport type RebillyPaymentCardAuthorizationSentinelConfigSchema = typeof RebillyPaymentCardAuthorizationSentinelConfigSchema\n\n/*\n * The Rebilly Payment Card Authorization Sentinel Config\n */\nexport type RebillyPaymentCardAuthorizationSentinelConfig = SentinelConfig<{\n /**\n * The config schema\n */\n schema: RebillyPaymentCardAuthorizationSentinelConfigSchema\n}> &\nPartial<RebillyApiDomainSettings>\n","import { assertEx } from '@xylabs/assert'\nimport { AxiosJson } from '@xylabs/axios'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithSources } from '@xyo-network/payload-model'\nimport { isBillingAddress, isPaymentCard } from '@xyo-network/payment-payload-plugins'\nimport { RebillyPaymentAuthorizationToken, RebillyPaymentAuthorizationTokenSchema } from '@xyo-network/rebilly-payment-payload-plugin'\nimport { AbstractSentinel } from '@xyo-network/sentinel-abstract'\nimport { SentinelInstance, SentinelModuleEventData } from '@xyo-network/sentinel-model'\nimport { AxiosRequestConfig, HttpStatusCode } from 'axios'\n\nimport { CreateTokenResponse } from './Api/index.ts'\nimport { RebillyPaymentCardAuthorizationSentinelConfigSchema } from './Config.ts'\nimport { RebillyPaymentCardAuthorizationSentinelParams } from './Params.ts'\nimport { toTokenRequest } from './util/index.ts'\n\nconst removePrefix = (str: string, prefix: string) => {\n const regex = new RegExp(`^${prefix}`)\n return str.replace(regex, '')\n}\n\nconst moduleName = 'RebillyPaymentCardAuthorizationSentinel'\nexport class RebillyPaymentCardAuthorizationSentinel<\n TParams extends RebillyPaymentCardAuthorizationSentinelParams = RebillyPaymentCardAuthorizationSentinelParams,\n TEventData extends SentinelModuleEventData<SentinelInstance<TParams>> = SentinelModuleEventData<SentinelInstance<TParams>>,\n> extends AbstractSentinel<TParams, TEventData> {\n static override configSchemas = [RebillyPaymentCardAuthorizationSentinelConfigSchema]\n static override defaultConfigSchema = RebillyPaymentCardAuthorizationSentinelConfigSchema\n\n protected _apiRoot: string | undefined = undefined\n protected _domain: string | undefined = undefined\n protected _headers: AxiosRequestConfig['headers'] | undefined = undefined\n protected _organizationId: string | undefined = undefined\n protected _publishableApiKey: string | undefined = undefined\n protected _tokenEndpoint: string | undefined = undefined\n\n /**\n * The Rebilly Organization API root endpoint\n */\n protected get apiRoot() {\n if (!this._apiRoot) this._apiRoot = `${this.domain}/organizations/${this.organizationId}`\n return this._apiRoot\n }\n\n /**\n * The Rebilly domain\n */\n protected get domain() {\n if (!this._domain) this._domain = assertEx(this.params.domain ?? this.config.domain, () => `${moduleName}: Missing domain in params/config`)\n return this._domain\n }\n\n /**\n * The headers to be included in the request for each request\n */\n protected get headers(): AxiosRequestConfig['headers'] {\n if (!this._headers) this._headers = { Authorization: this.publishableApiKey }\n return this._headers\n }\n\n /**\n * True if the environment is sandbox (testing), false otherwise\n */\n protected get isSandboxEnvironment(): boolean {\n return this.domain.includes('sandbox')\n }\n\n /**\n * The Rebilly organization ID\n */\n protected get organizationId() {\n if (!this._organizationId)\n this._organizationId = removePrefix(\n assertEx(this.params.organizationId, () => `${moduleName}: Missing organizationId in params`),\n 'org_',\n )\n return this._organizationId\n }\n\n /**\n * The Rebilly Publishable API key\n */\n protected get publishableApiKey(): string {\n if (!this._publishableApiKey)\n this._publishableApiKey = assertEx(this.params.publishableApiKey, () => `${moduleName}: Missing publishableApiKey in params`)\n return this._publishableApiKey\n }\n\n /**\n * The Rebilly Organization token creation endpoint\n */\n protected get tokenEndpoint() {\n if (!this._tokenEndpoint) this._tokenEndpoint = `${this.apiRoot}/tokens`\n return this._tokenEndpoint\n }\n\n override async reportHandler(payloads?: Payload[]): Promise<Payload[]> {\n await this.started('throw')\n const results: WithSources<RebillyPaymentAuthorizationToken>[] = []\n // Verify necessary inputs and if nothing meets our criteria, bail early\n if (!payloads || payloads.length === 0) return results\n const paymentCard = payloads?.find(isPaymentCard)\n if (!paymentCard) return results\n const billingAddress = payloads?.find(isBillingAddress)\n if (!billingAddress) return results\n const axios = new AxiosJson({ headers: this.headers })\n try {\n const data = toTokenRequest(paymentCard, billingAddress)\n const response = await axios.post<CreateTokenResponse>(this.tokenEndpoint, data)\n assertEx(response.status === HttpStatusCode.Created, () => `Failed to tokenize payment card: ${response.status}`)\n const { id } = response.data\n const sources = await PayloadBuilder.dataHashes([paymentCard, billingAddress])\n results.push({ id, schema: RebillyPaymentAuthorizationTokenSchema, sources })\n } catch (error) {\n this.logger?.error?.(`${moduleName}: Error creating payment token: ${error}`)\n }\n return results\n }\n}\n","import { BillingAddress, PaymentCard } from '@xyo-network/payment-payload-plugins'\n\nimport { CreatePaymentTokenRequest } from '../Api/index.ts'\n\n/**\n * Converts a payment card and billing address to a token request\n * @param paymentCard The payment card\n * @param billingAddress The billing address\n * @returns The token request\n */\nexport const toTokenRequest = (paymentCard: PaymentCard, billingAddress: BillingAddress): CreatePaymentTokenRequest => {\n const { cvv, expMonth, expYear, cardNumber } = paymentCard\n // NOTE: We are destructuring all but the schema and passing it along to the billingAddress. This\n // is to allow for missing fields to be omitted rather than set to undefined and for any new fields\n // that might be added later to be automatically picked up on. It is fine to pass this along since\n // the user is supplying this data about themselves.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { schema: _, ...fields } = billingAddress\n return {\n billingAddress: { ...fields },\n method: 'payment-card',\n paymentInstrument: { cvv, expMonth, expYear, pan: cardNumber },\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './toTokenRequest.
|
|
1
|
+
export * from './toTokenRequest.ts';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './toTokenRequest.
|
|
1
|
+
export * from './toTokenRequest.ts';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './toTokenRequest.
|
|
1
|
+
export * from './toTokenRequest.ts';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { BillingAddress, PaymentCard } from '@xyo-network/payment-payload-plugins';
|
|
2
|
-
import { CreatePaymentTokenRequest } from '../Api/index.
|
|
2
|
+
import { CreatePaymentTokenRequest } from '../Api/index.ts';
|
|
3
3
|
export declare const toTokenRequest: (paymentCard: PaymentCard, billingAddress: BillingAddress) => CreatePaymentTokenRequest;
|
|
4
4
|
//# sourceMappingURL=toTokenRequest.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { BillingAddress, PaymentCard } from '@xyo-network/payment-payload-plugins';
|
|
2
|
-
import { CreatePaymentTokenRequest } from '../Api/index.
|
|
2
|
+
import { CreatePaymentTokenRequest } from '../Api/index.ts';
|
|
3
3
|
export declare const toTokenRequest: (paymentCard: PaymentCard, billingAddress: BillingAddress) => CreatePaymentTokenRequest;
|
|
4
4
|
//# sourceMappingURL=toTokenRequest.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { BillingAddress, PaymentCard } from '@xyo-network/payment-payload-plugins';
|
|
2
|
-
import { CreatePaymentTokenRequest } from '../Api/index.
|
|
2
|
+
import { CreatePaymentTokenRequest } from '../Api/index.ts';
|
|
3
3
|
export declare const toTokenRequest: (paymentCard: PaymentCard, billingAddress: BillingAddress) => CreatePaymentTokenRequest;
|
|
4
4
|
//# sourceMappingURL=toTokenRequest.d.ts.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './Request.
|
|
2
|
-
export * from './Response.
|
|
1
|
+
export * from './Request.ts';
|
|
2
|
+
export * from './Response.ts';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './Request.
|
|
2
|
-
export * from './Response.
|
|
1
|
+
export * from './Request.ts';
|
|
2
|
+
export * from './Response.ts';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './Request.
|
|
2
|
-
export * from './Response.
|
|
1
|
+
export * from './Request.ts';
|
|
2
|
+
export * from './Response.ts';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './PaymentCardToken/index.
|
|
1
|
+
export * from './PaymentCardToken/index.ts';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './PaymentCardToken/index.
|
|
1
|
+
export * from './PaymentCardToken/index.ts';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/node/Api/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './PaymentCardToken/index.
|
|
1
|
+
export * from './PaymentCardToken/index.ts';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAA;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAI5D,eAAO,MAAM,mDAAmD,uFAA4D,CAAA;AAC5H,MAAM,MAAM,mDAAmD,GAAG,OAAO,mDAAmD,CAAA;AAK5H,MAAM,MAAM,6CAA6C,GAAG,cAAc,CAAC;IAIzE,MAAM,EAAE,mDAAmD,CAAA;CAC5D,CAAC,
|
|
1
|
+
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAA;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAI5D,eAAO,MAAM,mDAAmD,uFAA4D,CAAA;AAC5H,MAAM,MAAM,mDAAmD,GAAG,OAAO,mDAAmD,CAAA;AAK5H,MAAM,MAAM,6CAA6C,GAAG,cAAc,CAAC;IAIzE,MAAM,EAAE,mDAAmD,CAAA;CAC5D,CAAC,GACF,OAAO,CAAC,wBAAwB,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAA;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAI5D,eAAO,MAAM,mDAAmD,uFAA4D,CAAA;AAC5H,MAAM,MAAM,mDAAmD,GAAG,OAAO,mDAAmD,CAAA;AAK5H,MAAM,MAAM,6CAA6C,GAAG,cAAc,CAAC;IAIzE,MAAM,EAAE,mDAAmD,CAAA;CAC5D,CAAC,
|
|
1
|
+
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAA;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAI5D,eAAO,MAAM,mDAAmD,uFAA4D,CAAA;AAC5H,MAAM,MAAM,mDAAmD,GAAG,OAAO,mDAAmD,CAAA;AAK5H,MAAM,MAAM,6CAA6C,GAAG,cAAc,CAAC;IAIzE,MAAM,EAAE,mDAAmD,CAAA;CAC5D,CAAC,GACF,OAAO,CAAC,wBAAwB,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAA;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAI5D,eAAO,MAAM,mDAAmD,uFAA4D,CAAA;AAC5H,MAAM,MAAM,mDAAmD,GAAG,OAAO,mDAAmD,CAAA;AAK5H,MAAM,MAAM,6CAA6C,GAAG,cAAc,CAAC;IAIzE,MAAM,EAAE,mDAAmD,CAAA;CAC5D,CAAC,
|
|
1
|
+
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAA;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAI5D,eAAO,MAAM,mDAAmD,uFAA4D,CAAA;AAC5H,MAAM,MAAM,mDAAmD,GAAG,OAAO,mDAAmD,CAAA;AAK5H,MAAM,MAAM,6CAA6C,GAAG,cAAc,CAAC;IAIzE,MAAM,EAAE,mDAAmD,CAAA;CAC5D,CAAC,GACF,OAAO,CAAC,wBAAwB,CAAC,CAAA"}
|
package/dist/node/Params.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AnyConfigSchema } from '@xyo-network/module-model';
|
|
2
2
|
import { RebillyOrganizationSettings, RebillyPublishableApiSettings } from '@xyo-network/rebilly-payment-payload-plugin';
|
|
3
3
|
import { SentinelParams } from '@xyo-network/sentinel-model';
|
|
4
|
-
import { RebillyPaymentCardAuthorizationSentinelConfig } from './Config.
|
|
4
|
+
import { RebillyPaymentCardAuthorizationSentinelConfig } from './Config.ts';
|
|
5
5
|
export type RebillyPaymentCardAuthorizationParams = Partial<RebillyPublishableApiSettings & RebillyOrganizationSettings>;
|
|
6
6
|
export type RebillyPaymentCardAuthorizationSentinelParams<TConfig extends AnyConfigSchema<RebillyPaymentCardAuthorizationSentinelConfig> = AnyConfigSchema<RebillyPaymentCardAuthorizationSentinelConfig>, TParams extends RebillyPaymentCardAuthorizationParams = RebillyPaymentCardAuthorizationParams> = SentinelParams<TConfig, TParams>;
|
|
7
7
|
//# sourceMappingURL=Params.d.ts.map
|
package/dist/node/Params.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AnyConfigSchema } from '@xyo-network/module-model';
|
|
2
2
|
import { RebillyOrganizationSettings, RebillyPublishableApiSettings } from '@xyo-network/rebilly-payment-payload-plugin';
|
|
3
3
|
import { SentinelParams } from '@xyo-network/sentinel-model';
|
|
4
|
-
import { RebillyPaymentCardAuthorizationSentinelConfig } from './Config.
|
|
4
|
+
import { RebillyPaymentCardAuthorizationSentinelConfig } from './Config.ts';
|
|
5
5
|
export type RebillyPaymentCardAuthorizationParams = Partial<RebillyPublishableApiSettings & RebillyOrganizationSettings>;
|
|
6
6
|
export type RebillyPaymentCardAuthorizationSentinelParams<TConfig extends AnyConfigSchema<RebillyPaymentCardAuthorizationSentinelConfig> = AnyConfigSchema<RebillyPaymentCardAuthorizationSentinelConfig>, TParams extends RebillyPaymentCardAuthorizationParams = RebillyPaymentCardAuthorizationParams> = SentinelParams<TConfig, TParams>;
|
|
7
7
|
//# sourceMappingURL=Params.d.ts.map
|
package/dist/node/Params.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AnyConfigSchema } from '@xyo-network/module-model';
|
|
2
2
|
import { RebillyOrganizationSettings, RebillyPublishableApiSettings } from '@xyo-network/rebilly-payment-payload-plugin';
|
|
3
3
|
import { SentinelParams } from '@xyo-network/sentinel-model';
|
|
4
|
-
import { RebillyPaymentCardAuthorizationSentinelConfig } from './Config.
|
|
4
|
+
import { RebillyPaymentCardAuthorizationSentinelConfig } from './Config.ts';
|
|
5
5
|
export type RebillyPaymentCardAuthorizationParams = Partial<RebillyPublishableApiSettings & RebillyOrganizationSettings>;
|
|
6
6
|
export type RebillyPaymentCardAuthorizationSentinelParams<TConfig extends AnyConfigSchema<RebillyPaymentCardAuthorizationSentinelConfig> = AnyConfigSchema<RebillyPaymentCardAuthorizationSentinelConfig>, TParams extends RebillyPaymentCardAuthorizationParams = RebillyPaymentCardAuthorizationParams> = SentinelParams<TConfig, TParams>;
|
|
7
7
|
//# sourceMappingURL=Params.d.ts.map
|
package/dist/node/Sentinel.d.cts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { AxiosRequestConfig } from '@xylabs/axios';
|
|
2
1
|
import { Payload } from '@xyo-network/payload-model';
|
|
3
2
|
import { AbstractSentinel } from '@xyo-network/sentinel-abstract';
|
|
4
3
|
import { SentinelInstance, SentinelModuleEventData } from '@xyo-network/sentinel-model';
|
|
5
|
-
import {
|
|
4
|
+
import { AxiosRequestConfig } from 'axios';
|
|
5
|
+
import { RebillyPaymentCardAuthorizationSentinelParams } from './Params.ts';
|
|
6
6
|
export declare class RebillyPaymentCardAuthorizationSentinel<TParams extends RebillyPaymentCardAuthorizationSentinelParams = RebillyPaymentCardAuthorizationSentinelParams, TEventData extends SentinelModuleEventData<SentinelInstance<TParams>> = SentinelModuleEventData<SentinelInstance<TParams>>> extends AbstractSentinel<TParams, TEventData> {
|
|
7
7
|
static configSchemas: string[];
|
|
8
8
|
static defaultConfigSchema: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sentinel.d.ts","sourceRoot":"","sources":["../../src/Sentinel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Sentinel.d.ts","sourceRoot":"","sources":["../../src/Sentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAe,MAAM,4BAA4B,CAAA;AAGjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AACvF,OAAO,EAAE,kBAAkB,EAAkB,MAAM,OAAO,CAAA;AAI1D,OAAO,EAAE,6CAA6C,EAAE,MAAM,aAAa,CAAA;AAS3E,qBAAa,uCAAuC,CAClD,OAAO,SAAS,6CAA6C,GAAG,6CAA6C,EAC7G,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAC1H,SAAQ,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7C,OAAgB,aAAa,WAAwD;IACrF,OAAgB,mBAAmB,SAAsD;IAEzF,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAY;IAClD,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAY;IACjD,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,SAAS,CAAC,GAAG,SAAS,CAAY;IACzE,SAAS,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAY;IACzD,SAAS,CAAC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAY;IAC5D,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAY;IAKxD,SAAS,KAAK,OAAO,WAGpB;IAKD,SAAS,KAAK,MAAM,WAGnB;IAKD,SAAS,KAAK,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAGrD;IAKD,SAAS,KAAK,oBAAoB,IAAI,OAAO,CAE5C;IAKD,SAAS,KAAK,cAAc,WAO3B;IAKD,SAAS,KAAK,iBAAiB,IAAI,MAAM,CAIxC;IAKD,SAAS,KAAK,aAAa,WAG1B;IAEc,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAsBvE"}
|
package/dist/node/Sentinel.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { AxiosRequestConfig } from '@xylabs/axios';
|
|
2
1
|
import { Payload } from '@xyo-network/payload-model';
|
|
3
2
|
import { AbstractSentinel } from '@xyo-network/sentinel-abstract';
|
|
4
3
|
import { SentinelInstance, SentinelModuleEventData } from '@xyo-network/sentinel-model';
|
|
5
|
-
import {
|
|
4
|
+
import { AxiosRequestConfig } from 'axios';
|
|
5
|
+
import { RebillyPaymentCardAuthorizationSentinelParams } from './Params.ts';
|
|
6
6
|
export declare class RebillyPaymentCardAuthorizationSentinel<TParams extends RebillyPaymentCardAuthorizationSentinelParams = RebillyPaymentCardAuthorizationSentinelParams, TEventData extends SentinelModuleEventData<SentinelInstance<TParams>> = SentinelModuleEventData<SentinelInstance<TParams>>> extends AbstractSentinel<TParams, TEventData> {
|
|
7
7
|
static configSchemas: string[];
|
|
8
8
|
static defaultConfigSchema: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sentinel.d.ts","sourceRoot":"","sources":["../../src/Sentinel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Sentinel.d.ts","sourceRoot":"","sources":["../../src/Sentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAe,MAAM,4BAA4B,CAAA;AAGjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AACvF,OAAO,EAAE,kBAAkB,EAAkB,MAAM,OAAO,CAAA;AAI1D,OAAO,EAAE,6CAA6C,EAAE,MAAM,aAAa,CAAA;AAS3E,qBAAa,uCAAuC,CAClD,OAAO,SAAS,6CAA6C,GAAG,6CAA6C,EAC7G,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAC1H,SAAQ,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7C,OAAgB,aAAa,WAAwD;IACrF,OAAgB,mBAAmB,SAAsD;IAEzF,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAY;IAClD,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAY;IACjD,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,SAAS,CAAC,GAAG,SAAS,CAAY;IACzE,SAAS,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAY;IACzD,SAAS,CAAC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAY;IAC5D,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAY;IAKxD,SAAS,KAAK,OAAO,WAGpB;IAKD,SAAS,KAAK,MAAM,WAGnB;IAKD,SAAS,KAAK,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAGrD;IAKD,SAAS,KAAK,oBAAoB,IAAI,OAAO,CAE5C;IAKD,SAAS,KAAK,cAAc,WAO3B;IAKD,SAAS,KAAK,iBAAiB,IAAI,MAAM,CAIxC;IAKD,SAAS,KAAK,aAAa,WAG1B;IAEc,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAsBvE"}
|
package/dist/node/Sentinel.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { AxiosRequestConfig } from '@xylabs/axios';
|
|
2
1
|
import { Payload } from '@xyo-network/payload-model';
|
|
3
2
|
import { AbstractSentinel } from '@xyo-network/sentinel-abstract';
|
|
4
3
|
import { SentinelInstance, SentinelModuleEventData } from '@xyo-network/sentinel-model';
|
|
5
|
-
import {
|
|
4
|
+
import { AxiosRequestConfig } from 'axios';
|
|
5
|
+
import { RebillyPaymentCardAuthorizationSentinelParams } from './Params.ts';
|
|
6
6
|
export declare class RebillyPaymentCardAuthorizationSentinel<TParams extends RebillyPaymentCardAuthorizationSentinelParams = RebillyPaymentCardAuthorizationSentinelParams, TEventData extends SentinelModuleEventData<SentinelInstance<TParams>> = SentinelModuleEventData<SentinelInstance<TParams>>> extends AbstractSentinel<TParams, TEventData> {
|
|
7
7
|
static configSchemas: string[];
|
|
8
8
|
static defaultConfigSchema: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sentinel.d.ts","sourceRoot":"","sources":["../../src/Sentinel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Sentinel.d.ts","sourceRoot":"","sources":["../../src/Sentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAe,MAAM,4BAA4B,CAAA;AAGjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AACvF,OAAO,EAAE,kBAAkB,EAAkB,MAAM,OAAO,CAAA;AAI1D,OAAO,EAAE,6CAA6C,EAAE,MAAM,aAAa,CAAA;AAS3E,qBAAa,uCAAuC,CAClD,OAAO,SAAS,6CAA6C,GAAG,6CAA6C,EAC7G,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAC1H,SAAQ,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7C,OAAgB,aAAa,WAAwD;IACrF,OAAgB,mBAAmB,SAAsD;IAEzF,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAY;IAClD,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAY;IACjD,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,SAAS,CAAC,GAAG,SAAS,CAAY;IACzE,SAAS,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAY;IACzD,SAAS,CAAC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAY;IAC5D,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAY;IAKxD,SAAS,KAAK,OAAO,WAGpB;IAKD,SAAS,KAAK,MAAM,WAGnB;IAKD,SAAS,KAAK,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAGrD;IAKD,SAAS,KAAK,oBAAoB,IAAI,OAAO,CAE5C;IAKD,SAAS,KAAK,cAAc,WAO3B;IAKD,SAAS,KAAK,iBAAiB,IAAI,MAAM,CAIxC;IAKD,SAAS,KAAK,aAAa,WAG1B;IAEc,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAsBvE"}
|
package/dist/node/index.cjs
CHANGED
|
@@ -39,6 +39,7 @@ var import_payload_builder = require("@xyo-network/payload-builder");
|
|
|
39
39
|
var import_payment_payload_plugins = require("@xyo-network/payment-payload-plugins");
|
|
40
40
|
var import_rebilly_payment_payload_plugin = require("@xyo-network/rebilly-payment-payload-plugin");
|
|
41
41
|
var import_sentinel_abstract = require("@xyo-network/sentinel-abstract");
|
|
42
|
+
var import_axios2 = require("axios");
|
|
42
43
|
|
|
43
44
|
// src/util/toTokenRequest.ts
|
|
44
45
|
var toTokenRequest = (paymentCard, billingAddress) => {
|
|
@@ -132,7 +133,7 @@ var RebillyPaymentCardAuthorizationSentinel = class extends import_sentinel_abst
|
|
|
132
133
|
try {
|
|
133
134
|
const data = toTokenRequest(paymentCard, billingAddress);
|
|
134
135
|
const response = await axios.post(this.tokenEndpoint, data);
|
|
135
|
-
(0, import_assert.assertEx)(response.status ===
|
|
136
|
+
(0, import_assert.assertEx)(response.status === import_axios2.HttpStatusCode.Created, () => `Failed to tokenize payment card: ${response.status}`);
|
|
136
137
|
const { id } = response.data;
|
|
137
138
|
const sources = await import_payload_builder.PayloadBuilder.dataHashes([paymentCard, billingAddress]);
|
|
138
139
|
results.push({ id, schema: import_rebilly_payment_payload_plugin.RebillyPaymentAuthorizationTokenSchema, sources });
|
package/dist/node/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/Schema.ts","../../src/Config.ts","../../src/Sentinel.ts","../../src/util/toTokenRequest.ts"],"sourcesContent":["export * from './Config.
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/Schema.ts","../../src/Config.ts","../../src/Sentinel.ts","../../src/util/toTokenRequest.ts"],"sourcesContent":["export * from './Config.ts'\nexport * from './Params.ts'\nexport * from './Schema.ts'\nexport * from './Sentinel.ts'\n","export const RebillyPaymentCardAuthorizationSentinelSchema = 'network.xyo.sentinel.payments.payment.instrument.card.authorization.rebilly'\nexport type RebillyPaymentCardAuthorizationSentinelSchema = typeof RebillyPaymentCardAuthorizationSentinelSchema\n","import { RebillyApiDomainSettings } from '@xyo-network/rebilly-payment-payload-plugin'\nimport { SentinelConfig } from '@xyo-network/sentinel-model'\n\nimport { RebillyPaymentCardAuthorizationSentinelSchema } from './Schema.ts'\n\nexport const RebillyPaymentCardAuthorizationSentinelConfigSchema = `${RebillyPaymentCardAuthorizationSentinelSchema}.config`\nexport type RebillyPaymentCardAuthorizationSentinelConfigSchema = typeof RebillyPaymentCardAuthorizationSentinelConfigSchema\n\n/*\n * The Rebilly Payment Card Authorization Sentinel Config\n */\nexport type RebillyPaymentCardAuthorizationSentinelConfig = SentinelConfig<{\n /**\n * The config schema\n */\n schema: RebillyPaymentCardAuthorizationSentinelConfigSchema\n}> &\nPartial<RebillyApiDomainSettings>\n","import { assertEx } from '@xylabs/assert'\nimport { AxiosJson } from '@xylabs/axios'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithSources } from '@xyo-network/payload-model'\nimport { isBillingAddress, isPaymentCard } from '@xyo-network/payment-payload-plugins'\nimport { RebillyPaymentAuthorizationToken, RebillyPaymentAuthorizationTokenSchema } from '@xyo-network/rebilly-payment-payload-plugin'\nimport { AbstractSentinel } from '@xyo-network/sentinel-abstract'\nimport { SentinelInstance, SentinelModuleEventData } from '@xyo-network/sentinel-model'\nimport { AxiosRequestConfig, HttpStatusCode } from 'axios'\n\nimport { CreateTokenResponse } from './Api/index.ts'\nimport { RebillyPaymentCardAuthorizationSentinelConfigSchema } from './Config.ts'\nimport { RebillyPaymentCardAuthorizationSentinelParams } from './Params.ts'\nimport { toTokenRequest } from './util/index.ts'\n\nconst removePrefix = (str: string, prefix: string) => {\n const regex = new RegExp(`^${prefix}`)\n return str.replace(regex, '')\n}\n\nconst moduleName = 'RebillyPaymentCardAuthorizationSentinel'\nexport class RebillyPaymentCardAuthorizationSentinel<\n TParams extends RebillyPaymentCardAuthorizationSentinelParams = RebillyPaymentCardAuthorizationSentinelParams,\n TEventData extends SentinelModuleEventData<SentinelInstance<TParams>> = SentinelModuleEventData<SentinelInstance<TParams>>,\n> extends AbstractSentinel<TParams, TEventData> {\n static override configSchemas = [RebillyPaymentCardAuthorizationSentinelConfigSchema]\n static override defaultConfigSchema = RebillyPaymentCardAuthorizationSentinelConfigSchema\n\n protected _apiRoot: string | undefined = undefined\n protected _domain: string | undefined = undefined\n protected _headers: AxiosRequestConfig['headers'] | undefined = undefined\n protected _organizationId: string | undefined = undefined\n protected _publishableApiKey: string | undefined = undefined\n protected _tokenEndpoint: string | undefined = undefined\n\n /**\n * The Rebilly Organization API root endpoint\n */\n protected get apiRoot() {\n if (!this._apiRoot) this._apiRoot = `${this.domain}/organizations/${this.organizationId}`\n return this._apiRoot\n }\n\n /**\n * The Rebilly domain\n */\n protected get domain() {\n if (!this._domain) this._domain = assertEx(this.params.domain ?? this.config.domain, () => `${moduleName}: Missing domain in params/config`)\n return this._domain\n }\n\n /**\n * The headers to be included in the request for each request\n */\n protected get headers(): AxiosRequestConfig['headers'] {\n if (!this._headers) this._headers = { Authorization: this.publishableApiKey }\n return this._headers\n }\n\n /**\n * True if the environment is sandbox (testing), false otherwise\n */\n protected get isSandboxEnvironment(): boolean {\n return this.domain.includes('sandbox')\n }\n\n /**\n * The Rebilly organization ID\n */\n protected get organizationId() {\n if (!this._organizationId)\n this._organizationId = removePrefix(\n assertEx(this.params.organizationId, () => `${moduleName}: Missing organizationId in params`),\n 'org_',\n )\n return this._organizationId\n }\n\n /**\n * The Rebilly Publishable API key\n */\n protected get publishableApiKey(): string {\n if (!this._publishableApiKey)\n this._publishableApiKey = assertEx(this.params.publishableApiKey, () => `${moduleName}: Missing publishableApiKey in params`)\n return this._publishableApiKey\n }\n\n /**\n * The Rebilly Organization token creation endpoint\n */\n protected get tokenEndpoint() {\n if (!this._tokenEndpoint) this._tokenEndpoint = `${this.apiRoot}/tokens`\n return this._tokenEndpoint\n }\n\n override async reportHandler(payloads?: Payload[]): Promise<Payload[]> {\n await this.started('throw')\n const results: WithSources<RebillyPaymentAuthorizationToken>[] = []\n // Verify necessary inputs and if nothing meets our criteria, bail early\n if (!payloads || payloads.length === 0) return results\n const paymentCard = payloads?.find(isPaymentCard)\n if (!paymentCard) return results\n const billingAddress = payloads?.find(isBillingAddress)\n if (!billingAddress) return results\n const axios = new AxiosJson({ headers: this.headers })\n try {\n const data = toTokenRequest(paymentCard, billingAddress)\n const response = await axios.post<CreateTokenResponse>(this.tokenEndpoint, data)\n assertEx(response.status === HttpStatusCode.Created, () => `Failed to tokenize payment card: ${response.status}`)\n const { id } = response.data\n const sources = await PayloadBuilder.dataHashes([paymentCard, billingAddress])\n results.push({ id, schema: RebillyPaymentAuthorizationTokenSchema, sources })\n } catch (error) {\n this.logger?.error?.(`${moduleName}: Error creating payment token: ${error}`)\n }\n return results\n }\n}\n","import { BillingAddress, PaymentCard } from '@xyo-network/payment-payload-plugins'\n\nimport { CreatePaymentTokenRequest } from '../Api/index.ts'\n\n/**\n * Converts a payment card and billing address to a token request\n * @param paymentCard The payment card\n * @param billingAddress The billing address\n * @returns The token request\n */\nexport const toTokenRequest = (paymentCard: PaymentCard, billingAddress: BillingAddress): CreatePaymentTokenRequest => {\n const { cvv, expMonth, expYear, cardNumber } = paymentCard\n // NOTE: We are destructuring all but the schema and passing it along to the billingAddress. This\n // is to allow for missing fields to be omitted rather than set to undefined and for any new fields\n // that might be added later to be automatically picked up on. It is fine to pass this along since\n // the user is supplying this data about themselves.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { schema: _, ...fields } = billingAddress\n return {\n billingAddress: { ...fields },\n method: 'payment-card',\n paymentInstrument: { cvv, expMonth, expYear, pan: cardNumber },\n }\n}\n"],"mappings":"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","names":["import_axios"]}
|
package/dist/node/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from './Config.
|
|
2
|
-
export * from './Params.
|
|
3
|
-
export * from './Schema.
|
|
4
|
-
export * from './Sentinel.
|
|
1
|
+
export * from './Config.ts';
|
|
2
|
+
export * from './Params.ts';
|
|
3
|
+
export * from './Schema.ts';
|
|
4
|
+
export * from './Sentinel.ts';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/node/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from './Config.
|
|
2
|
-
export * from './Params.
|
|
3
|
-
export * from './Schema.
|
|
4
|
-
export * from './Sentinel.
|
|
1
|
+
export * from './Config.ts';
|
|
2
|
+
export * from './Params.ts';
|
|
3
|
+
export * from './Schema.ts';
|
|
4
|
+
export * from './Sentinel.ts';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/node/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from './Config.
|
|
2
|
-
export * from './Params.
|
|
3
|
-
export * from './Schema.
|
|
4
|
-
export * from './Sentinel.
|
|
1
|
+
export * from './Config.ts';
|
|
2
|
+
export * from './Params.ts';
|
|
3
|
+
export * from './Schema.ts';
|
|
4
|
+
export * from './Sentinel.ts';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -6,11 +6,12 @@ var RebillyPaymentCardAuthorizationSentinelConfigSchema = `${RebillyPaymentCardA
|
|
|
6
6
|
|
|
7
7
|
// src/Sentinel.ts
|
|
8
8
|
import { assertEx } from "@xylabs/assert";
|
|
9
|
-
import { AxiosJson
|
|
9
|
+
import { AxiosJson } from "@xylabs/axios";
|
|
10
10
|
import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
11
11
|
import { isBillingAddress, isPaymentCard } from "@xyo-network/payment-payload-plugins";
|
|
12
12
|
import { RebillyPaymentAuthorizationTokenSchema } from "@xyo-network/rebilly-payment-payload-plugin";
|
|
13
13
|
import { AbstractSentinel } from "@xyo-network/sentinel-abstract";
|
|
14
|
+
import { HttpStatusCode } from "axios";
|
|
14
15
|
|
|
15
16
|
// src/util/toTokenRequest.ts
|
|
16
17
|
var toTokenRequest = (paymentCard, billingAddress) => {
|
|
@@ -119,4 +120,4 @@ export {
|
|
|
119
120
|
RebillyPaymentCardAuthorizationSentinelConfigSchema,
|
|
120
121
|
RebillyPaymentCardAuthorizationSentinelSchema
|
|
121
122
|
};
|
|
122
|
-
//# sourceMappingURL=index.
|
|
123
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/Schema.ts","../../src/Config.ts","../../src/Sentinel.ts","../../src/util/toTokenRequest.ts"],"sourcesContent":["export const RebillyPaymentCardAuthorizationSentinelSchema = 'network.xyo.sentinel.payments.payment.instrument.card.authorization.rebilly'\nexport type RebillyPaymentCardAuthorizationSentinelSchema = typeof RebillyPaymentCardAuthorizationSentinelSchema\n","import { RebillyApiDomainSettings } from '@xyo-network/rebilly-payment-payload-plugin'\nimport { SentinelConfig } from '@xyo-network/sentinel-model'\n\nimport { RebillyPaymentCardAuthorizationSentinelSchema } from './Schema.ts'\n\nexport const RebillyPaymentCardAuthorizationSentinelConfigSchema = `${RebillyPaymentCardAuthorizationSentinelSchema}.config`\nexport type RebillyPaymentCardAuthorizationSentinelConfigSchema = typeof RebillyPaymentCardAuthorizationSentinelConfigSchema\n\n/*\n * The Rebilly Payment Card Authorization Sentinel Config\n */\nexport type RebillyPaymentCardAuthorizationSentinelConfig = SentinelConfig<{\n /**\n * The config schema\n */\n schema: RebillyPaymentCardAuthorizationSentinelConfigSchema\n}> &\nPartial<RebillyApiDomainSettings>\n","import { assertEx } from '@xylabs/assert'\nimport { AxiosJson } from '@xylabs/axios'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithSources } from '@xyo-network/payload-model'\nimport { isBillingAddress, isPaymentCard } from '@xyo-network/payment-payload-plugins'\nimport { RebillyPaymentAuthorizationToken, RebillyPaymentAuthorizationTokenSchema } from '@xyo-network/rebilly-payment-payload-plugin'\nimport { AbstractSentinel } from '@xyo-network/sentinel-abstract'\nimport { SentinelInstance, SentinelModuleEventData } from '@xyo-network/sentinel-model'\nimport { AxiosRequestConfig, HttpStatusCode } from 'axios'\n\nimport { CreateTokenResponse } from './Api/index.ts'\nimport { RebillyPaymentCardAuthorizationSentinelConfigSchema } from './Config.ts'\nimport { RebillyPaymentCardAuthorizationSentinelParams } from './Params.ts'\nimport { toTokenRequest } from './util/index.ts'\n\nconst removePrefix = (str: string, prefix: string) => {\n const regex = new RegExp(`^${prefix}`)\n return str.replace(regex, '')\n}\n\nconst moduleName = 'RebillyPaymentCardAuthorizationSentinel'\nexport class RebillyPaymentCardAuthorizationSentinel<\n TParams extends RebillyPaymentCardAuthorizationSentinelParams = RebillyPaymentCardAuthorizationSentinelParams,\n TEventData extends SentinelModuleEventData<SentinelInstance<TParams>> = SentinelModuleEventData<SentinelInstance<TParams>>,\n> extends AbstractSentinel<TParams, TEventData> {\n static override configSchemas = [RebillyPaymentCardAuthorizationSentinelConfigSchema]\n static override defaultConfigSchema = RebillyPaymentCardAuthorizationSentinelConfigSchema\n\n protected _apiRoot: string | undefined = undefined\n protected _domain: string | undefined = undefined\n protected _headers: AxiosRequestConfig['headers'] | undefined = undefined\n protected _organizationId: string | undefined = undefined\n protected _publishableApiKey: string | undefined = undefined\n protected _tokenEndpoint: string | undefined = undefined\n\n /**\n * The Rebilly Organization API root endpoint\n */\n protected get apiRoot() {\n if (!this._apiRoot) this._apiRoot = `${this.domain}/organizations/${this.organizationId}`\n return this._apiRoot\n }\n\n /**\n * The Rebilly domain\n */\n protected get domain() {\n if (!this._domain) this._domain = assertEx(this.params.domain ?? this.config.domain, () => `${moduleName}: Missing domain in params/config`)\n return this._domain\n }\n\n /**\n * The headers to be included in the request for each request\n */\n protected get headers(): AxiosRequestConfig['headers'] {\n if (!this._headers) this._headers = { Authorization: this.publishableApiKey }\n return this._headers\n }\n\n /**\n * True if the environment is sandbox (testing), false otherwise\n */\n protected get isSandboxEnvironment(): boolean {\n return this.domain.includes('sandbox')\n }\n\n /**\n * The Rebilly organization ID\n */\n protected get organizationId() {\n if (!this._organizationId)\n this._organizationId = removePrefix(\n assertEx(this.params.organizationId, () => `${moduleName}: Missing organizationId in params`),\n 'org_',\n )\n return this._organizationId\n }\n\n /**\n * The Rebilly Publishable API key\n */\n protected get publishableApiKey(): string {\n if (!this._publishableApiKey)\n this._publishableApiKey = assertEx(this.params.publishableApiKey, () => `${moduleName}: Missing publishableApiKey in params`)\n return this._publishableApiKey\n }\n\n /**\n * The Rebilly Organization token creation endpoint\n */\n protected get tokenEndpoint() {\n if (!this._tokenEndpoint) this._tokenEndpoint = `${this.apiRoot}/tokens`\n return this._tokenEndpoint\n }\n\n override async reportHandler(payloads?: Payload[]): Promise<Payload[]> {\n await this.started('throw')\n const results: WithSources<RebillyPaymentAuthorizationToken>[] = []\n // Verify necessary inputs and if nothing meets our criteria, bail early\n if (!payloads || payloads.length === 0) return results\n const paymentCard = payloads?.find(isPaymentCard)\n if (!paymentCard) return results\n const billingAddress = payloads?.find(isBillingAddress)\n if (!billingAddress) return results\n const axios = new AxiosJson({ headers: this.headers })\n try {\n const data = toTokenRequest(paymentCard, billingAddress)\n const response = await axios.post<CreateTokenResponse>(this.tokenEndpoint, data)\n assertEx(response.status === HttpStatusCode.Created, () => `Failed to tokenize payment card: ${response.status}`)\n const { id } = response.data\n const sources = await PayloadBuilder.dataHashes([paymentCard, billingAddress])\n results.push({ id, schema: RebillyPaymentAuthorizationTokenSchema, sources })\n } catch (error) {\n this.logger?.error?.(`${moduleName}: Error creating payment token: ${error}`)\n }\n return results\n }\n}\n","import { BillingAddress, PaymentCard } from '@xyo-network/payment-payload-plugins'\n\nimport { CreatePaymentTokenRequest } from '../Api/index.ts'\n\n/**\n * Converts a payment card and billing address to a token request\n * @param paymentCard The payment card\n * @param billingAddress The billing address\n * @returns The token request\n */\nexport const toTokenRequest = (paymentCard: PaymentCard, billingAddress: BillingAddress): CreatePaymentTokenRequest => {\n const { cvv, expMonth, expYear, cardNumber } = paymentCard\n // NOTE: We are destructuring all but the schema and passing it along to the billingAddress. This\n // is to allow for missing fields to be omitted rather than set to undefined and for any new fields\n // that might be added later to be automatically picked up on. It is fine to pass this along since\n // the user is supplying this data about themselves.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { schema: _, ...fields } = billingAddress\n return {\n billingAddress: { ...fields },\n method: 'payment-card',\n paymentInstrument: { cvv, expMonth, expYear, pan: cardNumber },\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './toTokenRequest.
|
|
1
|
+
export * from './toTokenRequest.ts';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './toTokenRequest.
|
|
1
|
+
export * from './toTokenRequest.ts';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './toTokenRequest.
|
|
1
|
+
export * from './toTokenRequest.ts';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { BillingAddress, PaymentCard } from '@xyo-network/payment-payload-plugins';
|
|
2
|
-
import { CreatePaymentTokenRequest } from '../Api/index.
|
|
2
|
+
import { CreatePaymentTokenRequest } from '../Api/index.ts';
|
|
3
3
|
export declare const toTokenRequest: (paymentCard: PaymentCard, billingAddress: BillingAddress) => CreatePaymentTokenRequest;
|
|
4
4
|
//# sourceMappingURL=toTokenRequest.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { BillingAddress, PaymentCard } from '@xyo-network/payment-payload-plugins';
|
|
2
|
-
import { CreatePaymentTokenRequest } from '../Api/index.
|
|
2
|
+
import { CreatePaymentTokenRequest } from '../Api/index.ts';
|
|
3
3
|
export declare const toTokenRequest: (paymentCard: PaymentCard, billingAddress: BillingAddress) => CreatePaymentTokenRequest;
|
|
4
4
|
//# sourceMappingURL=toTokenRequest.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { BillingAddress, PaymentCard } from '@xyo-network/payment-payload-plugins';
|
|
2
|
-
import { CreatePaymentTokenRequest } from '../Api/index.
|
|
2
|
+
import { CreatePaymentTokenRequest } from '../Api/index.ts';
|
|
3
3
|
export declare const toTokenRequest: (paymentCard: PaymentCard, billingAddress: BillingAddress) => CreatePaymentTokenRequest;
|
|
4
4
|
//# sourceMappingURL=toTokenRequest.d.ts.map
|