@billfn/client 0.0.1

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.
@@ -0,0 +1,13 @@
1
+ import { type Envelope } from '@superfunctions/envelope';
2
+ import type { BillFnClientOptions } from './types.js';
3
+ interface RequestOptions {
4
+ method: 'GET' | 'POST';
5
+ path: string;
6
+ body?: unknown;
7
+ query?: Record<string, string>;
8
+ }
9
+ export declare function createBillFnHttpClient(options?: BillFnClientOptions): {
10
+ requestJson: <T>(request: RequestOptions) => Promise<Envelope<T>>;
11
+ };
12
+ export {};
13
+ //# sourceMappingURL=http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,UAAU,cAAc;IACtB,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,mBAAwB;kBAMhD,CAAC,WAAW,cAAc,KAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EAsDxE"}
@@ -0,0 +1,61 @@
1
+ import { err, normalizeLegacyEnvelope } from '@superfunctions/envelope';
2
+ export function createBillFnHttpClient(options = {}) {
3
+ const fetchImpl = options.fetch ?? fetch;
4
+ const baseUrl = (options.baseUrl ?? '/billfn').replace(/\/$/, '');
5
+ const credentials = options.credentials ?? 'include';
6
+ return {
7
+ requestJson: async (request) => {
8
+ let url = `${baseUrl}${request.path}`;
9
+ if (request.query && Object.keys(request.query).length > 0) {
10
+ const params = new URLSearchParams(request.query);
11
+ url = `${url}?${params.toString()}`;
12
+ }
13
+ let response;
14
+ try {
15
+ response = await fetchImpl(url, {
16
+ method: request.method,
17
+ credentials,
18
+ headers: request.body === undefined
19
+ ? undefined
20
+ : {
21
+ 'content-type': 'application/json'
22
+ },
23
+ body: request.body === undefined ? undefined : JSON.stringify(request.body)
24
+ });
25
+ }
26
+ catch (error) {
27
+ return err({
28
+ code: 'BILLFN_NETWORK_ERROR',
29
+ message: error instanceof Error ? error.message : 'BillFn request failed before a response was received',
30
+ status: 503,
31
+ retryable: true
32
+ });
33
+ }
34
+ const raw = await response.text();
35
+ if (!raw) {
36
+ return err({
37
+ code: 'BILLFN_EMPTY_RESPONSE',
38
+ message: 'BillFn returned an empty response',
39
+ status: response.status || 500,
40
+ retryable: response.status >= 500
41
+ });
42
+ }
43
+ try {
44
+ const parsed = JSON.parse(raw);
45
+ return normalizeLegacyEnvelope(parsed, {
46
+ defaultStatus: response.status || 500,
47
+ defaultRetryable: response.status >= 500
48
+ });
49
+ }
50
+ catch {
51
+ return err({
52
+ code: 'BILLFN_INVALID_RESPONSE',
53
+ message: 'BillFn returned a non-JSON response',
54
+ status: response.status || 500,
55
+ retryable: response.status >= 500
56
+ });
57
+ }
58
+ }
59
+ };
60
+ }
61
+ //# sourceMappingURL=http-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,uBAAuB,EAAiB,MAAM,0BAA0B,CAAC;AAUvF,MAAM,UAAU,sBAAsB,CAAC,UAA+B,EAAE;IACtE,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IACzC,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC;IAErD,OAAO;QACL,WAAW,EAAE,KAAK,EAAK,OAAuB,EAAwB,EAAE;YACtE,IAAI,GAAG,GAAG,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3D,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAClD,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;YACtC,CAAC;YAED,IAAI,QAAkB,CAAC;YACvB,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;oBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,WAAW;oBACX,OAAO,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS;wBACjC,CAAC,CAAC,SAAS;wBACX,CAAC,CAAC;4BACE,cAAc,EAAE,kBAAkB;yBACnC;oBACL,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;iBAC5E,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,GAAG,CAAC;oBACT,IAAI,EAAE,sBAAsB;oBAC5B,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,sDAAsD;oBACxG,MAAM,EAAE,GAAG;oBACX,SAAS,EAAE,IAAI;iBAChB,CAAC,CAAC;YACL,CAAC;YAED,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,GAAG,CAAC;oBACT,IAAI,EAAE,uBAAuB;oBAC7B,OAAO,EAAE,mCAAmC;oBAC5C,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,GAAG;oBAC9B,SAAS,EAAE,QAAQ,CAAC,MAAM,IAAI,GAAG;iBAClC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC;gBAC9C,OAAO,uBAAuB,CAAC,MAAM,EAAE;oBACrC,aAAa,EAAE,QAAQ,CAAC,MAAM,IAAI,GAAG;oBACrC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,IAAI,GAAG;iBACzC,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,GAAG,CAAC;oBACT,IAAI,EAAE,yBAAyB;oBAC/B,OAAO,EAAE,qCAAqC;oBAC9C,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,GAAG;oBAC9B,SAAS,EAAE,QAAQ,CAAC,MAAM,IAAI,GAAG;iBAClC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { BillFnClient, BillFnClientOptions } from './types.js';
2
+ export type * from './types.js';
3
+ export declare function createBillFnClient(options?: BillFnClientOptions): BillFnClient;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEpE,mBAAmB,YAAY,CAAC;AAEhC,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAsFlF"}
package/dist/index.js ADDED
@@ -0,0 +1,74 @@
1
+ import { createBillFnHttpClient } from './http-client.js';
2
+ export function createBillFnClient(options = {}) {
3
+ const http = createBillFnHttpClient(options);
4
+ return {
5
+ getCatalog: () => http.requestJson({
6
+ method: 'GET',
7
+ path: '/catalog'
8
+ }),
9
+ getEntitlements: (query) => http.requestJson({
10
+ method: 'GET',
11
+ path: '/entitlements',
12
+ query
13
+ }),
14
+ getUsage: (query) => http.requestJson({
15
+ method: 'GET',
16
+ path: '/usage',
17
+ query
18
+ }),
19
+ createCheckout: (input) => http.requestJson({
20
+ method: 'POST',
21
+ path: '/checkouts',
22
+ body: input
23
+ }),
24
+ verifyCheckout: (input) => http.requestJson({
25
+ method: 'POST',
26
+ path: '/checkouts/verify',
27
+ body: input
28
+ }),
29
+ cancelSubscription: (input) => http.requestJson({
30
+ method: 'POST',
31
+ path: '/subscriptions/cancel',
32
+ body: input
33
+ }),
34
+ changeSubscription: (input) => http.requestJson({
35
+ method: 'POST',
36
+ path: '/subscriptions/change',
37
+ body: input
38
+ }),
39
+ resumeSubscription: (input) => http.requestJson({
40
+ method: 'POST',
41
+ path: '/subscriptions/resume',
42
+ body: input
43
+ }),
44
+ refundCharge: (input) => http.requestJson({
45
+ method: 'POST',
46
+ path: '/subscriptions/refund',
47
+ body: input
48
+ }),
49
+ syncSubscription: (input) => http.requestJson({
50
+ method: 'POST',
51
+ path: '/subscriptions/sync',
52
+ body: input
53
+ }),
54
+ restorePurchases: (input) => http.requestJson({
55
+ method: 'POST',
56
+ path: '/purchases/restore',
57
+ body: input
58
+ }),
59
+ enqueueReconciliationJob: (input) => http.requestJson({
60
+ method: 'POST',
61
+ path: '/ops/reconciliation/jobs',
62
+ body: input
63
+ }),
64
+ getReconciliationJob: (jobId) => http.requestJson({
65
+ method: 'GET',
66
+ path: `/ops/reconciliation/jobs/${encodeURIComponent(jobId)}`
67
+ }),
68
+ runReconciliationJob: (jobId) => http.requestJson({
69
+ method: 'POST',
70
+ path: `/ops/reconciliation/jobs/${encodeURIComponent(jobId)}/run`
71
+ })
72
+ };
73
+ }
74
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import type { BillFnCancelSubscriptionResponse, BillFnChangeSubscriptionResponse, BillFnCreateCheckoutResponse, BillFnEntitlementsResponse, BillFnReconciliationJobResponse, BillFnRefundChargeResponse, BillFnRestorePurchasesResponse, BillFnResumeSubscriptionResponse, BillFnSyncSubscriptionResponse, BillFnUsageResponse, BillFnVerifyCheckoutResponse } from '@billfn/core';
2
+ import type { Envelope } from '@superfunctions/envelope';
3
+ export interface BillFnClientOptions {
4
+ baseUrl?: string;
5
+ fetch?: typeof fetch;
6
+ credentials?: RequestCredentials;
7
+ }
8
+ export type BillFnClientErrorEnvelope = Extract<Envelope<never>, {
9
+ ok: false;
10
+ }>;
11
+ export interface BillFnClient {
12
+ getCatalog(): Promise<Envelope<import('@billfn/core').BillFnCatalog>>;
13
+ getEntitlements(query?: Record<string, string>): Promise<BillFnEntitlementsResponse | BillFnClientErrorEnvelope>;
14
+ getUsage(query?: Record<string, string>): Promise<BillFnUsageResponse | BillFnClientErrorEnvelope>;
15
+ createCheckout(input: {
16
+ subject?: import('@billfn/core').BillableSubject;
17
+ planKey: string;
18
+ provider: import('@billfn/core').BillingProviderName;
19
+ interval?: import('@billfn/core').BillingInterval;
20
+ metadata?: Record<string, unknown>;
21
+ customer?: {
22
+ email?: string;
23
+ name?: string;
24
+ billing?: Record<string, unknown>;
25
+ };
26
+ returnUrl?: string;
27
+ successUrl?: string;
28
+ cancelUrl?: string;
29
+ }): Promise<BillFnCreateCheckoutResponse | BillFnClientErrorEnvelope>;
30
+ verifyCheckout(input: {
31
+ subject?: import('@billfn/core').BillableSubject;
32
+ checkoutSessionId: string;
33
+ payload?: Record<string, unknown>;
34
+ }): Promise<BillFnVerifyCheckoutResponse | BillFnClientErrorEnvelope>;
35
+ cancelSubscription(input: {
36
+ subject?: import('@billfn/core').BillableSubject;
37
+ subscriptionId?: string;
38
+ reason?: string;
39
+ }): Promise<BillFnCancelSubscriptionResponse | BillFnClientErrorEnvelope>;
40
+ changeSubscription(input: {
41
+ subject?: import('@billfn/core').BillableSubject;
42
+ subscriptionId?: string;
43
+ targetPriceId: string;
44
+ effectiveAt?: import('@billfn/core').BillFnChangeEffectiveAt;
45
+ prorationBehavior?: import('@billfn/core').BillFnProrationBehavior;
46
+ reason?: string;
47
+ }): Promise<BillFnChangeSubscriptionResponse | BillFnClientErrorEnvelope>;
48
+ resumeSubscription(input: {
49
+ subject?: import('@billfn/core').BillableSubject;
50
+ subscriptionId?: string;
51
+ }): Promise<BillFnResumeSubscriptionResponse | BillFnClientErrorEnvelope>;
52
+ refundCharge(input: {
53
+ subject?: import('@billfn/core').BillableSubject;
54
+ subscriptionId?: string;
55
+ providerChargeId?: string;
56
+ mode?: import('@billfn/core').BillFnRefundMode;
57
+ amount?: number;
58
+ reason?: string;
59
+ }): Promise<BillFnRefundChargeResponse | BillFnClientErrorEnvelope>;
60
+ syncSubscription(input: {
61
+ subject?: import('@billfn/core').BillableSubject;
62
+ subscriptionId?: string;
63
+ }): Promise<BillFnSyncSubscriptionResponse | BillFnClientErrorEnvelope>;
64
+ restorePurchases(input: {
65
+ subject?: import('@billfn/core').BillableSubject;
66
+ planKey: string;
67
+ provider: import('@billfn/core').BillingProviderName;
68
+ purchaseReference: string;
69
+ payload?: Record<string, unknown>;
70
+ }): Promise<BillFnRestorePurchasesResponse | BillFnClientErrorEnvelope>;
71
+ enqueueReconciliationJob(input: {
72
+ kind: import('@billfn/core').BillFnReconciliationJobKind;
73
+ provider?: import('@billfn/core').BillingProviderName;
74
+ billingAccountId?: string;
75
+ subscriptionId?: string;
76
+ providerEventId?: string;
77
+ cursor?: string;
78
+ payload?: Record<string, unknown>;
79
+ }): Promise<BillFnReconciliationJobResponse | BillFnClientErrorEnvelope>;
80
+ getReconciliationJob(jobId: string): Promise<BillFnReconciliationJobResponse | BillFnClientErrorEnvelope>;
81
+ runReconciliationJob(jobId: string): Promise<BillFnReconciliationJobResponse | BillFnClientErrorEnvelope>;
82
+ }
83
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gCAAgC,EAChC,gCAAgC,EAChC,4BAA4B,EAC5B,0BAA0B,EAC1B,+BAA+B,EAC/B,0BAA0B,EAC1B,8BAA8B,EAC9B,gCAAgC,EAChC,8BAA8B,EAC9B,mBAAmB,EACnB,4BAA4B,EAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAED,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAEhF,MAAM,WAAW,YAAY;IAC3B,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC;IACtE,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,0BAA0B,GAAG,yBAAyB,CAAC,CAAC;IACjH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,mBAAmB,GAAG,yBAAyB,CAAC,CAAC;IACnG,cAAc,CAAC,KAAK,EAAE;QACpB,OAAO,CAAC,EAAE,OAAO,cAAc,EAAE,eAAe,CAAC;QACjD,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,OAAO,cAAc,EAAE,mBAAmB,CAAC;QACrD,QAAQ,CAAC,EAAE,OAAO,cAAc,EAAE,eAAe,CAAC;QAClD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,QAAQ,CAAC,EAAE;YACT,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACnC,CAAC;QACF,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,4BAA4B,GAAG,yBAAyB,CAAC,CAAC;IACtE,cAAc,CAAC,KAAK,EAAE;QACpB,OAAO,CAAC,EAAE,OAAO,cAAc,EAAE,eAAe,CAAC;QACjD,iBAAiB,EAAE,MAAM,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,GAAG,OAAO,CAAC,4BAA4B,GAAG,yBAAyB,CAAC,CAAC;IACtE,kBAAkB,CAAC,KAAK,EAAE;QACxB,OAAO,CAAC,EAAE,OAAO,cAAc,EAAE,eAAe,CAAC;QACjD,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,gCAAgC,GAAG,yBAAyB,CAAC,CAAC;IAC1E,kBAAkB,CAAC,KAAK,EAAE;QACxB,OAAO,CAAC,EAAE,OAAO,cAAc,EAAE,eAAe,CAAC;QACjD,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,OAAO,cAAc,EAAE,uBAAuB,CAAC;QAC7D,iBAAiB,CAAC,EAAE,OAAO,cAAc,EAAE,uBAAuB,CAAC;QACnE,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,gCAAgC,GAAG,yBAAyB,CAAC,CAAC;IAC1E,kBAAkB,CAAC,KAAK,EAAE;QACxB,OAAO,CAAC,EAAE,OAAO,cAAc,EAAE,eAAe,CAAC;QACjD,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC,gCAAgC,GAAG,yBAAyB,CAAC,CAAC;IAC1E,YAAY,CAAC,KAAK,EAAE;QAClB,OAAO,CAAC,EAAE,OAAO,cAAc,EAAE,eAAe,CAAC;QACjD,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,IAAI,CAAC,EAAE,OAAO,cAAc,EAAE,gBAAgB,CAAC;QAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,0BAA0B,GAAG,yBAAyB,CAAC,CAAC;IACpE,gBAAgB,CAAC,KAAK,EAAE;QACtB,OAAO,CAAC,EAAE,OAAO,cAAc,EAAE,eAAe,CAAC;QACjD,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC,8BAA8B,GAAG,yBAAyB,CAAC,CAAC;IACxE,gBAAgB,CAAC,KAAK,EAAE;QACtB,OAAO,CAAC,EAAE,OAAO,cAAc,EAAE,eAAe,CAAC;QACjD,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,OAAO,cAAc,EAAE,mBAAmB,CAAC;QACrD,iBAAiB,EAAE,MAAM,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,GAAG,OAAO,CAAC,8BAA8B,GAAG,yBAAyB,CAAC,CAAC;IACxE,wBAAwB,CAAC,KAAK,EAAE;QAC9B,IAAI,EAAE,OAAO,cAAc,EAAE,2BAA2B,CAAC;QACzD,QAAQ,CAAC,EAAE,OAAO,cAAc,EAAE,mBAAmB,CAAC;QACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,GAAG,OAAO,CAAC,+BAA+B,GAAG,yBAAyB,CAAC,CAAC;IACzE,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,+BAA+B,GAAG,yBAAyB,CAAC,CAAC;IAC1G,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,+BAA+B,GAAG,yBAAyB,CAAC,CAAC;CAC3G"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "@billfn/client",
3
+ "version": "0.0.1",
4
+ "description": "Typed browser client for billfn",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "default": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "scripts": {
18
+ "build": "tsc",
19
+ "test": "vitest run",
20
+ "typecheck": "tsc --noEmit",
21
+ "clean": "rm -rf dist"
22
+ },
23
+ "author": "21n",
24
+ "license": "MIT",
25
+ "publishConfig": {
26
+ "access": "public"
27
+ },
28
+ "dependencies": {
29
+ "@billfn/core": "^0.0.1",
30
+ "@superfunctions/envelope": "*"
31
+ },
32
+ "devDependencies": {
33
+ "@types/node": "^22.0.0",
34
+ "typescript": "^5.6.0",
35
+ "vitest": "^3.2.4"
36
+ }
37
+ }