@checkoutpage/sdk 0.1.2 → 0.1.11
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/README.md +77 -28
- package/dist/index.d.mts +722 -2082
- package/dist/index.d.ts +722 -2082
- package/dist/index.js +109 -16
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +107 -16
- package/dist/index.mjs.map +1 -1
- package/package.json +12 -7
package/dist/index.js
CHANGED
|
@@ -22,6 +22,13 @@ var NotFoundError = class _NotFoundError extends CheckoutPageError {
|
|
|
22
22
|
Object.setPrototypeOf(this, _NotFoundError.prototype);
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
|
+
var ConflictError = class _ConflictError extends CheckoutPageError {
|
|
26
|
+
constructor(message = "Conflict - the created resource already exists.") {
|
|
27
|
+
super(message);
|
|
28
|
+
this.name = "ConflictError";
|
|
29
|
+
Object.setPrototypeOf(this, _ConflictError.prototype);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
25
32
|
var RateLimitError = class _RateLimitError extends CheckoutPageError {
|
|
26
33
|
constructor(message = "Rate limit exceeded. Please try again later.") {
|
|
27
34
|
super(message);
|
|
@@ -49,7 +56,7 @@ var APIError = class _APIError extends CheckoutPageError {
|
|
|
49
56
|
};
|
|
50
57
|
|
|
51
58
|
// src/client.ts
|
|
52
|
-
var
|
|
59
|
+
var CheckoutPageApiClient = class {
|
|
53
60
|
apiKey;
|
|
54
61
|
baseUrl;
|
|
55
62
|
constructor(options) {
|
|
@@ -73,18 +80,8 @@ var CheckoutPageClient = class {
|
|
|
73
80
|
if (options.body) {
|
|
74
81
|
fetchOptions.body = JSON.stringify(options.body);
|
|
75
82
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
return await this.handleResponse(response);
|
|
79
|
-
} catch (error) {
|
|
80
|
-
if (error instanceof APIError) {
|
|
81
|
-
throw error;
|
|
82
|
-
}
|
|
83
|
-
throw new APIError(
|
|
84
|
-
`Network error: ${error instanceof Error ? error.message : "Unknown error"}`,
|
|
85
|
-
0
|
|
86
|
-
);
|
|
87
|
-
}
|
|
83
|
+
const response = await fetch(url, fetchOptions);
|
|
84
|
+
return await this.handleResponse(response);
|
|
88
85
|
}
|
|
89
86
|
buildUrl(path, query) {
|
|
90
87
|
const url = new URL(path, this.baseUrl);
|
|
@@ -114,6 +111,8 @@ var CheckoutPageClient = class {
|
|
|
114
111
|
throw new AuthenticationError(message);
|
|
115
112
|
case 404:
|
|
116
113
|
throw new NotFoundError(message);
|
|
114
|
+
case 409:
|
|
115
|
+
throw new ConflictError(message);
|
|
117
116
|
case 400:
|
|
118
117
|
case 422:
|
|
119
118
|
throw new ValidationError(message);
|
|
@@ -152,24 +151,118 @@ var CustomerResource = class {
|
|
|
152
151
|
path: `/v1/customers/${customerId}`
|
|
153
152
|
});
|
|
154
153
|
}
|
|
154
|
+
async list(args = {}) {
|
|
155
|
+
const query = {
|
|
156
|
+
...args,
|
|
157
|
+
limit: args.limit?.toString(),
|
|
158
|
+
skip: args.skip?.toString()
|
|
159
|
+
};
|
|
160
|
+
return this.client.request({
|
|
161
|
+
method: "GET",
|
|
162
|
+
query,
|
|
163
|
+
path: "/v1/customers/"
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
// src/resources/coupons/coupons.ts
|
|
169
|
+
var CouponResource = class {
|
|
170
|
+
constructor(client) {
|
|
171
|
+
this.client = client;
|
|
172
|
+
}
|
|
173
|
+
async list(args = {}) {
|
|
174
|
+
const query = {
|
|
175
|
+
search: args.search,
|
|
176
|
+
limit: args.limit?.toString(),
|
|
177
|
+
skip: args.skip?.toString()
|
|
178
|
+
};
|
|
179
|
+
return this.client.request({
|
|
180
|
+
method: "GET",
|
|
181
|
+
query,
|
|
182
|
+
path: "/v1/coupons/"
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
async create(params) {
|
|
186
|
+
const body = {
|
|
187
|
+
label: params.label,
|
|
188
|
+
code: params.code,
|
|
189
|
+
duration: params.duration
|
|
190
|
+
};
|
|
191
|
+
if (params.duration === "repeating") {
|
|
192
|
+
body.durationInMonths = params.durationInMonths;
|
|
193
|
+
}
|
|
194
|
+
if (params.appliesToSetupFee !== void 0) {
|
|
195
|
+
body.appliesToSetupFee = params.appliesToSetupFee;
|
|
196
|
+
}
|
|
197
|
+
if (params.pageIds !== void 0) {
|
|
198
|
+
body.pageIds = params.pageIds;
|
|
199
|
+
}
|
|
200
|
+
if (params.maxRedemptions !== void 0) {
|
|
201
|
+
body.maxRedemptions = params.maxRedemptions;
|
|
202
|
+
}
|
|
203
|
+
if (params.redeemBy !== void 0) {
|
|
204
|
+
body.redeemBy = params.redeemBy;
|
|
205
|
+
}
|
|
206
|
+
if (params.type === "amount") {
|
|
207
|
+
body.amountOff = params.amountOff;
|
|
208
|
+
body.currency = params.currency;
|
|
209
|
+
} else {
|
|
210
|
+
body.percentOff = params.percentOff;
|
|
211
|
+
}
|
|
212
|
+
return this.client.request({
|
|
213
|
+
method: "POST",
|
|
214
|
+
path: "/v1/coupons/",
|
|
215
|
+
body
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
// src/resources/payments/payments.ts
|
|
221
|
+
var PaymentResource = class {
|
|
222
|
+
constructor(client) {
|
|
223
|
+
this.client = client;
|
|
224
|
+
}
|
|
225
|
+
async list(args = {}) {
|
|
226
|
+
const query = {
|
|
227
|
+
search: args.search,
|
|
228
|
+
status: args.status,
|
|
229
|
+
pageId: args.pageId,
|
|
230
|
+
limit: args.limit?.toString(),
|
|
231
|
+
skip: args.skip?.toString()
|
|
232
|
+
};
|
|
233
|
+
return this.client.request({
|
|
234
|
+
method: "GET",
|
|
235
|
+
query,
|
|
236
|
+
path: "/v1/payments/"
|
|
237
|
+
});
|
|
238
|
+
}
|
|
155
239
|
};
|
|
156
240
|
|
|
157
241
|
// src/index.ts
|
|
158
|
-
var
|
|
242
|
+
var CheckoutPageClient = class {
|
|
159
243
|
customers;
|
|
244
|
+
coupons;
|
|
245
|
+
payments;
|
|
160
246
|
client;
|
|
161
247
|
constructor(options) {
|
|
162
|
-
this.client = new
|
|
248
|
+
this.client = new CheckoutPageApiClient(options);
|
|
163
249
|
this.customers = new CustomerResource(this.client);
|
|
250
|
+
this.coupons = new CouponResource(this.client);
|
|
251
|
+
this.payments = new PaymentResource(this.client);
|
|
164
252
|
}
|
|
165
253
|
};
|
|
254
|
+
var createCheckoutPageClient = (options) => {
|
|
255
|
+
return new CheckoutPageClient(options);
|
|
256
|
+
};
|
|
166
257
|
|
|
167
258
|
exports.APIError = APIError;
|
|
168
259
|
exports.AuthenticationError = AuthenticationError;
|
|
169
|
-
exports.
|
|
260
|
+
exports.CheckoutPageClient = CheckoutPageClient;
|
|
170
261
|
exports.CheckoutPageError = CheckoutPageError;
|
|
262
|
+
exports.ConflictError = ConflictError;
|
|
171
263
|
exports.NotFoundError = NotFoundError;
|
|
172
264
|
exports.RateLimitError = RateLimitError;
|
|
173
265
|
exports.ValidationError = ValidationError;
|
|
266
|
+
exports.createCheckoutPageClient = createCheckoutPageClient;
|
|
174
267
|
//# sourceMappingURL=index.js.map
|
|
175
268
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/client.ts","../src/resources/customers/customers.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["export class CheckoutPageError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'CheckoutPageError'\n Object.setPrototypeOf(this, CheckoutPageError.prototype)\n }\n}\n\nexport class AuthenticationError extends CheckoutPageError {\n constructor(message = 'Authentication failed. Please check your API key.') {\n super(message)\n this.name = 'AuthenticationError'\n Object.setPrototypeOf(this, AuthenticationError.prototype)\n }\n}\n\nexport class NotFoundError extends CheckoutPageError {\n constructor(message = 'The requested resource was not found.') {\n super(message)\n this.name = 'NotFoundError'\n Object.setPrototypeOf(this, NotFoundError.prototype)\n }\n}\n\nexport class RateLimitError extends CheckoutPageError {\n constructor(message = 'Rate limit exceeded. Please try again later.') {\n super(message)\n this.name = 'RateLimitError'\n Object.setPrototypeOf(this, RateLimitError.prototype)\n }\n}\n\nexport class ValidationError extends CheckoutPageError {\n constructor(message = 'Validation failed.') {\n super(message)\n this.name = 'ValidationError'\n Object.setPrototypeOf(this, ValidationError.prototype)\n }\n}\n\nexport class APIError extends CheckoutPageError {\n public readonly statusCode: number\n public readonly response?: unknown\n\n constructor(message: string, statusCode: number, response?: unknown) {\n super(message)\n this.name = 'APIError'\n this.statusCode = statusCode\n this.response = response\n Object.setPrototypeOf(this, APIError.prototype)\n }\n}\n","import {\n APIError,\n AuthenticationError,\n NotFoundError,\n RateLimitError,\n ValidationError,\n} from './errors'\n\nexport interface CheckoutPageClientOptions {\n apiKey: string\n baseUrl?: string\n}\n\nexport interface RequestOptions {\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'\n path: string\n body?: unknown\n query?: Record<string, string | number | boolean | undefined>\n}\n\nexport class CheckoutPageClient {\n private readonly apiKey: string\n private readonly baseUrl: string\n\n constructor(options: CheckoutPageClientOptions) {\n if (!options.apiKey) {\n throw new Error('API key is required')\n }\n\n this.apiKey = options.apiKey\n this.baseUrl = options.baseUrl || 'https://api.checkoutpage.com'\n }\n\n async request<T>(options: RequestOptions): Promise<T> {\n const url = this.buildUrl(options.path, options.query)\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n 'User-Agent': '@checkoutpage/sdk/0.1.0',\n }\n\n const fetchOptions: RequestInit = {\n method: options.method,\n headers,\n }\n\n if (options.body) {\n fetchOptions.body = JSON.stringify(options.body)\n }\n\n try {\n const response = await fetch(url, fetchOptions)\n return await this.handleResponse<T>(response)\n } catch (error) {\n if (error instanceof APIError) {\n throw error\n }\n throw new APIError(\n `Network error: ${error instanceof Error ? error.message : 'Unknown error'}`,\n 0\n )\n }\n }\n\n private buildUrl(path: string, query?: Record<string, string | number | boolean | undefined>): string {\n const url = new URL(path, this.baseUrl)\n\n if (query) {\n Object.entries(query).forEach(([key, value]) => {\n if (value !== undefined) {\n url.searchParams.append(key, String(value))\n }\n })\n }\n\n return url.toString()\n }\n\n private async handleResponse<T>(response: Response): Promise<T> {\n const contentType = response.headers.get('content-type')\n const isJson = contentType?.includes('application/json')\n\n let data: unknown\n try {\n data = isJson ? await response.json() : await response.text()\n } catch {\n data = null\n }\n\n if (!response.ok) {\n const message = this.extractErrorMessage(data)\n\n switch (response.status) {\n case 401:\n case 403:\n throw new AuthenticationError(message)\n case 404:\n throw new NotFoundError(message)\n case 400:\n case 422:\n throw new ValidationError(message)\n case 429:\n throw new RateLimitError(message)\n default:\n throw new APIError(message, response.status, data)\n }\n }\n\n return data as T\n }\n\n private extractErrorMessage(data: unknown): string {\n if (typeof data === 'object' && data !== null) {\n if ('message' in data && typeof data.message === 'string') {\n return data.message\n }\n if ('error' in data && typeof data.error === 'string') {\n return data.error\n }\n }\n return 'An unexpected error occurred'\n }\n}\n","import type { CheckoutPageClient } from '../../client'\nimport type { Customer } from '../../types'\n\nexport class CustomerResource {\n constructor(private client: CheckoutPageClient) {}\n\n async get(customerId: string): Promise<Customer> {\n if (!customerId) {\n throw new Error('Customer ID is required')\n }\n\n return this.client.request<Customer>({\n method: 'GET',\n path: `/v1/customers/${customerId}`,\n })\n }\n}\n","import { CheckoutPageClient, CheckoutPageClientOptions } from './client'\nimport { CustomerResource } from './resources/customers/customers'\n\nexport class CheckoutPage {\n public readonly customers: CustomerResource\n private readonly client: CheckoutPageClient\n\n constructor(options: CheckoutPageClientOptions) {\n this.client = new CheckoutPageClient(options)\n this.customers = new CustomerResource(this.client)\n }\n}\n\n// Export types and errors for convenience\nexport type { CheckoutPageClientOptions } from './client'\nexport type { Customer, Address, Shipping } from './types'\nexport {\n CheckoutPageError,\n AuthenticationError,\n NotFoundError,\n RateLimitError,\n ValidationError,\n APIError,\n} from './errors'\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/client.ts","../src/resources/customers/customers.ts","../src/resources/coupons/coupons.ts","../src/resources/payments/payments.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["export class CheckoutPageError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'CheckoutPageError';\n Object.setPrototypeOf(this, CheckoutPageError.prototype);\n }\n}\n\nexport class AuthenticationError extends CheckoutPageError {\n constructor(message = 'Authentication failed. Please check your API key.') {\n super(message);\n this.name = 'AuthenticationError';\n Object.setPrototypeOf(this, AuthenticationError.prototype);\n }\n}\n\nexport class NotFoundError extends CheckoutPageError {\n constructor(message = 'The requested resource was not found.') {\n super(message);\n this.name = 'NotFoundError';\n Object.setPrototypeOf(this, NotFoundError.prototype);\n }\n}\n\nexport class ConflictError extends CheckoutPageError {\n constructor(message = 'Conflict - the created resource already exists.') {\n super(message);\n this.name = 'ConflictError';\n Object.setPrototypeOf(this, ConflictError.prototype);\n }\n}\n\nexport class RateLimitError extends CheckoutPageError {\n constructor(message = 'Rate limit exceeded. Please try again later.') {\n super(message);\n this.name = 'RateLimitError';\n Object.setPrototypeOf(this, RateLimitError.prototype);\n }\n}\n\nexport class ValidationError extends CheckoutPageError {\n constructor(message = 'Validation failed.') {\n super(message);\n this.name = 'ValidationError';\n Object.setPrototypeOf(this, ValidationError.prototype);\n }\n}\n\nexport class APIError extends CheckoutPageError {\n public readonly statusCode: number;\n public readonly response?: unknown;\n\n constructor(message: string, statusCode: number, response?: unknown) {\n super(message);\n this.name = 'APIError';\n this.statusCode = statusCode;\n this.response = response;\n Object.setPrototypeOf(this, APIError.prototype);\n }\n}\n","import {\n APIError,\n AuthenticationError,\n ConflictError,\n NotFoundError,\n RateLimitError,\n ValidationError,\n} from './errors';\n\nexport interface CheckoutPageApiClientOptions {\n apiKey: string;\n baseUrl?: string;\n}\n\nexport interface RequestOptions {\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n path: string;\n body?: unknown;\n query?: Record<string, string | number | boolean | undefined>;\n}\n\nexport class CheckoutPageApiClient {\n private readonly apiKey: string;\n private readonly baseUrl: string;\n\n constructor(options: CheckoutPageApiClientOptions) {\n if (!options.apiKey) {\n throw new Error('API key is required');\n }\n\n this.apiKey = options.apiKey;\n this.baseUrl = options.baseUrl || 'https://api.checkoutpage.com';\n }\n\n async request<T>(options: RequestOptions): Promise<T> {\n const url = this.buildUrl(options.path, options.query);\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n 'User-Agent': '@checkoutpage/sdk/0.1.0',\n };\n\n const fetchOptions: RequestInit = {\n method: options.method,\n headers,\n };\n\n if (options.body) {\n fetchOptions.body = JSON.stringify(options.body);\n }\n\n const response = await fetch(url, fetchOptions);\n return await this.handleResponse<T>(response);\n }\n\n private buildUrl(\n path: string,\n query?: Record<string, string | number | boolean | undefined>\n ): string {\n const url = new URL(path, this.baseUrl);\n\n if (query) {\n Object.entries(query).forEach(([key, value]) => {\n if (value !== undefined) {\n url.searchParams.append(key, String(value));\n }\n });\n }\n\n return url.toString();\n }\n\n private async handleResponse<T>(response: Response): Promise<T> {\n const contentType = response.headers.get('content-type');\n const isJson = contentType?.includes('application/json');\n\n let data: unknown;\n try {\n data = isJson ? await response.json() : await response.text();\n } catch {\n data = null;\n }\n\n if (!response.ok) {\n const message = this.extractErrorMessage(data);\n\n switch (response.status) {\n case 401:\n case 403:\n throw new AuthenticationError(message);\n case 404:\n throw new NotFoundError(message);\n case 409:\n throw new ConflictError(message);\n case 400:\n case 422:\n throw new ValidationError(message);\n case 429:\n throw new RateLimitError(message);\n default:\n throw new APIError(message, response.status, data);\n }\n }\n\n return data as T;\n }\n\n private extractErrorMessage(data: unknown): string {\n if (typeof data === 'object' && data !== null) {\n if ('message' in data && typeof data.message === 'string') {\n return data.message;\n }\n if ('error' in data && typeof data.error === 'string') {\n return data.error;\n }\n }\n return 'An unexpected error occurred';\n }\n}\n","import type { CheckoutPageApiClient } from '../../client';\nimport type { Customer, CustomerList, CustomerListParams } from '../../types';\n\nexport class CustomerResource {\n constructor(private client: CheckoutPageApiClient) {}\n\n async get(customerId: string): Promise<Customer> {\n if (!customerId) {\n throw new Error('Customer ID is required');\n }\n\n return this.client.request<Customer>({\n method: 'GET',\n path: `/v1/customers/${customerId}`,\n });\n }\n\n async list(args: CustomerListParams = {}): Promise<CustomerList> {\n const query: Record<string, string | undefined> = {\n ...args,\n limit: args.limit?.toString(),\n skip: args.skip?.toString(),\n };\n\n return this.client.request<CustomerList>({\n method: 'GET',\n query,\n path: '/v1/customers/',\n });\n }\n}\n","import type { CheckoutPageApiClient } from '../../client';\nimport {\n CouponList,\n CouponListParams,\n CreateCouponParams,\n CreateCouponResponse,\n} from '../../types';\n\nexport class CouponResource {\n constructor(private client: CheckoutPageApiClient) {}\n\n async list(args: CouponListParams = {}): Promise<CouponList> {\n const query: Record<string, string | undefined> = {\n search: args.search,\n limit: args.limit?.toString(),\n skip: args.skip?.toString(),\n };\n\n return this.client.request<CouponList>({\n method: 'GET',\n query,\n path: '/v1/coupons/',\n });\n }\n\n async create(params: CreateCouponParams): Promise<CreateCouponResponse> {\n const body: Record<string, unknown> = {\n label: params.label,\n code: params.code,\n duration: params.duration,\n };\n\n if (params.duration === 'repeating') {\n body.durationInMonths = (params as any).durationInMonths;\n }\n\n if (params.appliesToSetupFee !== undefined) {\n body.appliesToSetupFee = params.appliesToSetupFee;\n }\n if (params.pageIds !== undefined) {\n body.pageIds = params.pageIds;\n }\n if (params.maxRedemptions !== undefined) {\n body.maxRedemptions = params.maxRedemptions;\n }\n if (params.redeemBy !== undefined) {\n body.redeemBy = params.redeemBy;\n }\n\n if (params.type === 'amount') {\n body.amountOff = params.amountOff;\n body.currency = params.currency;\n } else {\n body.percentOff = params.percentOff;\n }\n\n return this.client.request<CreateCouponResponse>({\n method: 'POST',\n path: '/v1/coupons/',\n body,\n });\n }\n}\n","import type { CheckoutPageApiClient } from '../../client';\nimport type { PaymentList, PaymentListParams } from '../../types';\n\nexport class PaymentResource {\n constructor(private client: CheckoutPageApiClient) {}\n\n async list(args: PaymentListParams = {}): Promise<PaymentList> {\n const query: Record<string, string | undefined> = {\n search: args.search,\n status: args.status,\n pageId: args.pageId,\n limit: args.limit?.toString(),\n skip: args.skip?.toString(),\n };\n\n return this.client.request<PaymentList>({\n method: 'GET',\n query,\n path: '/v1/payments/',\n });\n }\n}\n","import { CheckoutPageApiClient, CheckoutPageApiClientOptions } from './client';\nimport { CustomerResource } from './resources/customers/customers';\nimport { CouponResource } from './resources/coupons/coupons';\nimport { PaymentResource } from './resources/payments/payments';\n\nexport class CheckoutPageClient {\n public readonly customers: CustomerResource;\n public readonly coupons: CouponResource;\n public readonly payments: PaymentResource;\n private readonly client: CheckoutPageApiClient;\n\n constructor(options: CheckoutPageApiClientOptions) {\n this.client = new CheckoutPageApiClient(options);\n this.customers = new CustomerResource(this.client);\n this.coupons = new CouponResource(this.client);\n this.payments = new PaymentResource(this.client);\n }\n}\n\nexport const createCheckoutPageClient = (options: CheckoutPageApiClientOptions) => {\n return new CheckoutPageClient(options);\n};\n\n// Export types and errors for convenience\nexport type { CheckoutPageApiClientOptions } from './client';\nexport type {\n Customer,\n Address,\n Shipping,\n Coupon,\n CouponList,\n Payment,\n PaymentList,\n} from './types';\nexport {\n CheckoutPageError,\n AuthenticationError,\n NotFoundError,\n ConflictError,\n RateLimitError,\n ValidationError,\n APIError,\n} from './errors';\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -20,6 +20,13 @@ var NotFoundError = class _NotFoundError extends CheckoutPageError {
|
|
|
20
20
|
Object.setPrototypeOf(this, _NotFoundError.prototype);
|
|
21
21
|
}
|
|
22
22
|
};
|
|
23
|
+
var ConflictError = class _ConflictError extends CheckoutPageError {
|
|
24
|
+
constructor(message = "Conflict - the created resource already exists.") {
|
|
25
|
+
super(message);
|
|
26
|
+
this.name = "ConflictError";
|
|
27
|
+
Object.setPrototypeOf(this, _ConflictError.prototype);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
23
30
|
var RateLimitError = class _RateLimitError extends CheckoutPageError {
|
|
24
31
|
constructor(message = "Rate limit exceeded. Please try again later.") {
|
|
25
32
|
super(message);
|
|
@@ -47,7 +54,7 @@ var APIError = class _APIError extends CheckoutPageError {
|
|
|
47
54
|
};
|
|
48
55
|
|
|
49
56
|
// src/client.ts
|
|
50
|
-
var
|
|
57
|
+
var CheckoutPageApiClient = class {
|
|
51
58
|
apiKey;
|
|
52
59
|
baseUrl;
|
|
53
60
|
constructor(options) {
|
|
@@ -71,18 +78,8 @@ var CheckoutPageClient = class {
|
|
|
71
78
|
if (options.body) {
|
|
72
79
|
fetchOptions.body = JSON.stringify(options.body);
|
|
73
80
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
return await this.handleResponse(response);
|
|
77
|
-
} catch (error) {
|
|
78
|
-
if (error instanceof APIError) {
|
|
79
|
-
throw error;
|
|
80
|
-
}
|
|
81
|
-
throw new APIError(
|
|
82
|
-
`Network error: ${error instanceof Error ? error.message : "Unknown error"}`,
|
|
83
|
-
0
|
|
84
|
-
);
|
|
85
|
-
}
|
|
81
|
+
const response = await fetch(url, fetchOptions);
|
|
82
|
+
return await this.handleResponse(response);
|
|
86
83
|
}
|
|
87
84
|
buildUrl(path, query) {
|
|
88
85
|
const url = new URL(path, this.baseUrl);
|
|
@@ -112,6 +109,8 @@ var CheckoutPageClient = class {
|
|
|
112
109
|
throw new AuthenticationError(message);
|
|
113
110
|
case 404:
|
|
114
111
|
throw new NotFoundError(message);
|
|
112
|
+
case 409:
|
|
113
|
+
throw new ConflictError(message);
|
|
115
114
|
case 400:
|
|
116
115
|
case 422:
|
|
117
116
|
throw new ValidationError(message);
|
|
@@ -150,18 +149,110 @@ var CustomerResource = class {
|
|
|
150
149
|
path: `/v1/customers/${customerId}`
|
|
151
150
|
});
|
|
152
151
|
}
|
|
152
|
+
async list(args = {}) {
|
|
153
|
+
const query = {
|
|
154
|
+
...args,
|
|
155
|
+
limit: args.limit?.toString(),
|
|
156
|
+
skip: args.skip?.toString()
|
|
157
|
+
};
|
|
158
|
+
return this.client.request({
|
|
159
|
+
method: "GET",
|
|
160
|
+
query,
|
|
161
|
+
path: "/v1/customers/"
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
// src/resources/coupons/coupons.ts
|
|
167
|
+
var CouponResource = class {
|
|
168
|
+
constructor(client) {
|
|
169
|
+
this.client = client;
|
|
170
|
+
}
|
|
171
|
+
async list(args = {}) {
|
|
172
|
+
const query = {
|
|
173
|
+
search: args.search,
|
|
174
|
+
limit: args.limit?.toString(),
|
|
175
|
+
skip: args.skip?.toString()
|
|
176
|
+
};
|
|
177
|
+
return this.client.request({
|
|
178
|
+
method: "GET",
|
|
179
|
+
query,
|
|
180
|
+
path: "/v1/coupons/"
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
async create(params) {
|
|
184
|
+
const body = {
|
|
185
|
+
label: params.label,
|
|
186
|
+
code: params.code,
|
|
187
|
+
duration: params.duration
|
|
188
|
+
};
|
|
189
|
+
if (params.duration === "repeating") {
|
|
190
|
+
body.durationInMonths = params.durationInMonths;
|
|
191
|
+
}
|
|
192
|
+
if (params.appliesToSetupFee !== void 0) {
|
|
193
|
+
body.appliesToSetupFee = params.appliesToSetupFee;
|
|
194
|
+
}
|
|
195
|
+
if (params.pageIds !== void 0) {
|
|
196
|
+
body.pageIds = params.pageIds;
|
|
197
|
+
}
|
|
198
|
+
if (params.maxRedemptions !== void 0) {
|
|
199
|
+
body.maxRedemptions = params.maxRedemptions;
|
|
200
|
+
}
|
|
201
|
+
if (params.redeemBy !== void 0) {
|
|
202
|
+
body.redeemBy = params.redeemBy;
|
|
203
|
+
}
|
|
204
|
+
if (params.type === "amount") {
|
|
205
|
+
body.amountOff = params.amountOff;
|
|
206
|
+
body.currency = params.currency;
|
|
207
|
+
} else {
|
|
208
|
+
body.percentOff = params.percentOff;
|
|
209
|
+
}
|
|
210
|
+
return this.client.request({
|
|
211
|
+
method: "POST",
|
|
212
|
+
path: "/v1/coupons/",
|
|
213
|
+
body
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
// src/resources/payments/payments.ts
|
|
219
|
+
var PaymentResource = class {
|
|
220
|
+
constructor(client) {
|
|
221
|
+
this.client = client;
|
|
222
|
+
}
|
|
223
|
+
async list(args = {}) {
|
|
224
|
+
const query = {
|
|
225
|
+
search: args.search,
|
|
226
|
+
status: args.status,
|
|
227
|
+
pageId: args.pageId,
|
|
228
|
+
limit: args.limit?.toString(),
|
|
229
|
+
skip: args.skip?.toString()
|
|
230
|
+
};
|
|
231
|
+
return this.client.request({
|
|
232
|
+
method: "GET",
|
|
233
|
+
query,
|
|
234
|
+
path: "/v1/payments/"
|
|
235
|
+
});
|
|
236
|
+
}
|
|
153
237
|
};
|
|
154
238
|
|
|
155
239
|
// src/index.ts
|
|
156
|
-
var
|
|
240
|
+
var CheckoutPageClient = class {
|
|
157
241
|
customers;
|
|
242
|
+
coupons;
|
|
243
|
+
payments;
|
|
158
244
|
client;
|
|
159
245
|
constructor(options) {
|
|
160
|
-
this.client = new
|
|
246
|
+
this.client = new CheckoutPageApiClient(options);
|
|
161
247
|
this.customers = new CustomerResource(this.client);
|
|
248
|
+
this.coupons = new CouponResource(this.client);
|
|
249
|
+
this.payments = new PaymentResource(this.client);
|
|
162
250
|
}
|
|
163
251
|
};
|
|
252
|
+
var createCheckoutPageClient = (options) => {
|
|
253
|
+
return new CheckoutPageClient(options);
|
|
254
|
+
};
|
|
164
255
|
|
|
165
|
-
export { APIError, AuthenticationError,
|
|
256
|
+
export { APIError, AuthenticationError, CheckoutPageClient, CheckoutPageError, ConflictError, NotFoundError, RateLimitError, ValidationError, createCheckoutPageClient };
|
|
166
257
|
//# sourceMappingURL=index.mjs.map
|
|
167
258
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/client.ts","../src/resources/customers/customers.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["export class CheckoutPageError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'CheckoutPageError'\n Object.setPrototypeOf(this, CheckoutPageError.prototype)\n }\n}\n\nexport class AuthenticationError extends CheckoutPageError {\n constructor(message = 'Authentication failed. Please check your API key.') {\n super(message)\n this.name = 'AuthenticationError'\n Object.setPrototypeOf(this, AuthenticationError.prototype)\n }\n}\n\nexport class NotFoundError extends CheckoutPageError {\n constructor(message = 'The requested resource was not found.') {\n super(message)\n this.name = 'NotFoundError'\n Object.setPrototypeOf(this, NotFoundError.prototype)\n }\n}\n\nexport class RateLimitError extends CheckoutPageError {\n constructor(message = 'Rate limit exceeded. Please try again later.') {\n super(message)\n this.name = 'RateLimitError'\n Object.setPrototypeOf(this, RateLimitError.prototype)\n }\n}\n\nexport class ValidationError extends CheckoutPageError {\n constructor(message = 'Validation failed.') {\n super(message)\n this.name = 'ValidationError'\n Object.setPrototypeOf(this, ValidationError.prototype)\n }\n}\n\nexport class APIError extends CheckoutPageError {\n public readonly statusCode: number\n public readonly response?: unknown\n\n constructor(message: string, statusCode: number, response?: unknown) {\n super(message)\n this.name = 'APIError'\n this.statusCode = statusCode\n this.response = response\n Object.setPrototypeOf(this, APIError.prototype)\n }\n}\n","import {\n APIError,\n AuthenticationError,\n NotFoundError,\n RateLimitError,\n ValidationError,\n} from './errors'\n\nexport interface CheckoutPageClientOptions {\n apiKey: string\n baseUrl?: string\n}\n\nexport interface RequestOptions {\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'\n path: string\n body?: unknown\n query?: Record<string, string | number | boolean | undefined>\n}\n\nexport class CheckoutPageClient {\n private readonly apiKey: string\n private readonly baseUrl: string\n\n constructor(options: CheckoutPageClientOptions) {\n if (!options.apiKey) {\n throw new Error('API key is required')\n }\n\n this.apiKey = options.apiKey\n this.baseUrl = options.baseUrl || 'https://api.checkoutpage.com'\n }\n\n async request<T>(options: RequestOptions): Promise<T> {\n const url = this.buildUrl(options.path, options.query)\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n 'User-Agent': '@checkoutpage/sdk/0.1.0',\n }\n\n const fetchOptions: RequestInit = {\n method: options.method,\n headers,\n }\n\n if (options.body) {\n fetchOptions.body = JSON.stringify(options.body)\n }\n\n try {\n const response = await fetch(url, fetchOptions)\n return await this.handleResponse<T>(response)\n } catch (error) {\n if (error instanceof APIError) {\n throw error\n }\n throw new APIError(\n `Network error: ${error instanceof Error ? error.message : 'Unknown error'}`,\n 0\n )\n }\n }\n\n private buildUrl(path: string, query?: Record<string, string | number | boolean | undefined>): string {\n const url = new URL(path, this.baseUrl)\n\n if (query) {\n Object.entries(query).forEach(([key, value]) => {\n if (value !== undefined) {\n url.searchParams.append(key, String(value))\n }\n })\n }\n\n return url.toString()\n }\n\n private async handleResponse<T>(response: Response): Promise<T> {\n const contentType = response.headers.get('content-type')\n const isJson = contentType?.includes('application/json')\n\n let data: unknown\n try {\n data = isJson ? await response.json() : await response.text()\n } catch {\n data = null\n }\n\n if (!response.ok) {\n const message = this.extractErrorMessage(data)\n\n switch (response.status) {\n case 401:\n case 403:\n throw new AuthenticationError(message)\n case 404:\n throw new NotFoundError(message)\n case 400:\n case 422:\n throw new ValidationError(message)\n case 429:\n throw new RateLimitError(message)\n default:\n throw new APIError(message, response.status, data)\n }\n }\n\n return data as T\n }\n\n private extractErrorMessage(data: unknown): string {\n if (typeof data === 'object' && data !== null) {\n if ('message' in data && typeof data.message === 'string') {\n return data.message\n }\n if ('error' in data && typeof data.error === 'string') {\n return data.error\n }\n }\n return 'An unexpected error occurred'\n }\n}\n","import type { CheckoutPageClient } from '../../client'\nimport type { Customer } from '../../types'\n\nexport class CustomerResource {\n constructor(private client: CheckoutPageClient) {}\n\n async get(customerId: string): Promise<Customer> {\n if (!customerId) {\n throw new Error('Customer ID is required')\n }\n\n return this.client.request<Customer>({\n method: 'GET',\n path: `/v1/customers/${customerId}`,\n })\n }\n}\n","import { CheckoutPageClient, CheckoutPageClientOptions } from './client'\nimport { CustomerResource } from './resources/customers/customers'\n\nexport class CheckoutPage {\n public readonly customers: CustomerResource\n private readonly client: CheckoutPageClient\n\n constructor(options: CheckoutPageClientOptions) {\n this.client = new CheckoutPageClient(options)\n this.customers = new CustomerResource(this.client)\n }\n}\n\n// Export types and errors for convenience\nexport type { CheckoutPageClientOptions } from './client'\nexport type { Customer, Address, Shipping } from './types'\nexport {\n CheckoutPageError,\n AuthenticationError,\n NotFoundError,\n RateLimitError,\n ValidationError,\n APIError,\n} from './errors'\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/client.ts","../src/resources/customers/customers.ts","../src/resources/coupons/coupons.ts","../src/resources/payments/payments.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["export class CheckoutPageError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'CheckoutPageError';\n Object.setPrototypeOf(this, CheckoutPageError.prototype);\n }\n}\n\nexport class AuthenticationError extends CheckoutPageError {\n constructor(message = 'Authentication failed. Please check your API key.') {\n super(message);\n this.name = 'AuthenticationError';\n Object.setPrototypeOf(this, AuthenticationError.prototype);\n }\n}\n\nexport class NotFoundError extends CheckoutPageError {\n constructor(message = 'The requested resource was not found.') {\n super(message);\n this.name = 'NotFoundError';\n Object.setPrototypeOf(this, NotFoundError.prototype);\n }\n}\n\nexport class ConflictError extends CheckoutPageError {\n constructor(message = 'Conflict - the created resource already exists.') {\n super(message);\n this.name = 'ConflictError';\n Object.setPrototypeOf(this, ConflictError.prototype);\n }\n}\n\nexport class RateLimitError extends CheckoutPageError {\n constructor(message = 'Rate limit exceeded. Please try again later.') {\n super(message);\n this.name = 'RateLimitError';\n Object.setPrototypeOf(this, RateLimitError.prototype);\n }\n}\n\nexport class ValidationError extends CheckoutPageError {\n constructor(message = 'Validation failed.') {\n super(message);\n this.name = 'ValidationError';\n Object.setPrototypeOf(this, ValidationError.prototype);\n }\n}\n\nexport class APIError extends CheckoutPageError {\n public readonly statusCode: number;\n public readonly response?: unknown;\n\n constructor(message: string, statusCode: number, response?: unknown) {\n super(message);\n this.name = 'APIError';\n this.statusCode = statusCode;\n this.response = response;\n Object.setPrototypeOf(this, APIError.prototype);\n }\n}\n","import {\n APIError,\n AuthenticationError,\n ConflictError,\n NotFoundError,\n RateLimitError,\n ValidationError,\n} from './errors';\n\nexport interface CheckoutPageApiClientOptions {\n apiKey: string;\n baseUrl?: string;\n}\n\nexport interface RequestOptions {\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n path: string;\n body?: unknown;\n query?: Record<string, string | number | boolean | undefined>;\n}\n\nexport class CheckoutPageApiClient {\n private readonly apiKey: string;\n private readonly baseUrl: string;\n\n constructor(options: CheckoutPageApiClientOptions) {\n if (!options.apiKey) {\n throw new Error('API key is required');\n }\n\n this.apiKey = options.apiKey;\n this.baseUrl = options.baseUrl || 'https://api.checkoutpage.com';\n }\n\n async request<T>(options: RequestOptions): Promise<T> {\n const url = this.buildUrl(options.path, options.query);\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n 'User-Agent': '@checkoutpage/sdk/0.1.0',\n };\n\n const fetchOptions: RequestInit = {\n method: options.method,\n headers,\n };\n\n if (options.body) {\n fetchOptions.body = JSON.stringify(options.body);\n }\n\n const response = await fetch(url, fetchOptions);\n return await this.handleResponse<T>(response);\n }\n\n private buildUrl(\n path: string,\n query?: Record<string, string | number | boolean | undefined>\n ): string {\n const url = new URL(path, this.baseUrl);\n\n if (query) {\n Object.entries(query).forEach(([key, value]) => {\n if (value !== undefined) {\n url.searchParams.append(key, String(value));\n }\n });\n }\n\n return url.toString();\n }\n\n private async handleResponse<T>(response: Response): Promise<T> {\n const contentType = response.headers.get('content-type');\n const isJson = contentType?.includes('application/json');\n\n let data: unknown;\n try {\n data = isJson ? await response.json() : await response.text();\n } catch {\n data = null;\n }\n\n if (!response.ok) {\n const message = this.extractErrorMessage(data);\n\n switch (response.status) {\n case 401:\n case 403:\n throw new AuthenticationError(message);\n case 404:\n throw new NotFoundError(message);\n case 409:\n throw new ConflictError(message);\n case 400:\n case 422:\n throw new ValidationError(message);\n case 429:\n throw new RateLimitError(message);\n default:\n throw new APIError(message, response.status, data);\n }\n }\n\n return data as T;\n }\n\n private extractErrorMessage(data: unknown): string {\n if (typeof data === 'object' && data !== null) {\n if ('message' in data && typeof data.message === 'string') {\n return data.message;\n }\n if ('error' in data && typeof data.error === 'string') {\n return data.error;\n }\n }\n return 'An unexpected error occurred';\n }\n}\n","import type { CheckoutPageApiClient } from '../../client';\nimport type { Customer, CustomerList, CustomerListParams } from '../../types';\n\nexport class CustomerResource {\n constructor(private client: CheckoutPageApiClient) {}\n\n async get(customerId: string): Promise<Customer> {\n if (!customerId) {\n throw new Error('Customer ID is required');\n }\n\n return this.client.request<Customer>({\n method: 'GET',\n path: `/v1/customers/${customerId}`,\n });\n }\n\n async list(args: CustomerListParams = {}): Promise<CustomerList> {\n const query: Record<string, string | undefined> = {\n ...args,\n limit: args.limit?.toString(),\n skip: args.skip?.toString(),\n };\n\n return this.client.request<CustomerList>({\n method: 'GET',\n query,\n path: '/v1/customers/',\n });\n }\n}\n","import type { CheckoutPageApiClient } from '../../client';\nimport {\n CouponList,\n CouponListParams,\n CreateCouponParams,\n CreateCouponResponse,\n} from '../../types';\n\nexport class CouponResource {\n constructor(private client: CheckoutPageApiClient) {}\n\n async list(args: CouponListParams = {}): Promise<CouponList> {\n const query: Record<string, string | undefined> = {\n search: args.search,\n limit: args.limit?.toString(),\n skip: args.skip?.toString(),\n };\n\n return this.client.request<CouponList>({\n method: 'GET',\n query,\n path: '/v1/coupons/',\n });\n }\n\n async create(params: CreateCouponParams): Promise<CreateCouponResponse> {\n const body: Record<string, unknown> = {\n label: params.label,\n code: params.code,\n duration: params.duration,\n };\n\n if (params.duration === 'repeating') {\n body.durationInMonths = (params as any).durationInMonths;\n }\n\n if (params.appliesToSetupFee !== undefined) {\n body.appliesToSetupFee = params.appliesToSetupFee;\n }\n if (params.pageIds !== undefined) {\n body.pageIds = params.pageIds;\n }\n if (params.maxRedemptions !== undefined) {\n body.maxRedemptions = params.maxRedemptions;\n }\n if (params.redeemBy !== undefined) {\n body.redeemBy = params.redeemBy;\n }\n\n if (params.type === 'amount') {\n body.amountOff = params.amountOff;\n body.currency = params.currency;\n } else {\n body.percentOff = params.percentOff;\n }\n\n return this.client.request<CreateCouponResponse>({\n method: 'POST',\n path: '/v1/coupons/',\n body,\n });\n }\n}\n","import type { CheckoutPageApiClient } from '../../client';\nimport type { PaymentList, PaymentListParams } from '../../types';\n\nexport class PaymentResource {\n constructor(private client: CheckoutPageApiClient) {}\n\n async list(args: PaymentListParams = {}): Promise<PaymentList> {\n const query: Record<string, string | undefined> = {\n search: args.search,\n status: args.status,\n pageId: args.pageId,\n limit: args.limit?.toString(),\n skip: args.skip?.toString(),\n };\n\n return this.client.request<PaymentList>({\n method: 'GET',\n query,\n path: '/v1/payments/',\n });\n }\n}\n","import { CheckoutPageApiClient, CheckoutPageApiClientOptions } from './client';\nimport { CustomerResource } from './resources/customers/customers';\nimport { CouponResource } from './resources/coupons/coupons';\nimport { PaymentResource } from './resources/payments/payments';\n\nexport class CheckoutPageClient {\n public readonly customers: CustomerResource;\n public readonly coupons: CouponResource;\n public readonly payments: PaymentResource;\n private readonly client: CheckoutPageApiClient;\n\n constructor(options: CheckoutPageApiClientOptions) {\n this.client = new CheckoutPageApiClient(options);\n this.customers = new CustomerResource(this.client);\n this.coupons = new CouponResource(this.client);\n this.payments = new PaymentResource(this.client);\n }\n}\n\nexport const createCheckoutPageClient = (options: CheckoutPageApiClientOptions) => {\n return new CheckoutPageClient(options);\n};\n\n// Export types and errors for convenience\nexport type { CheckoutPageApiClientOptions } from './client';\nexport type {\n Customer,\n Address,\n Shipping,\n Coupon,\n CouponList,\n Payment,\n PaymentList,\n} from './types';\nexport {\n CheckoutPageError,\n AuthenticationError,\n NotFoundError,\n ConflictError,\n RateLimitError,\n ValidationError,\n APIError,\n} from './errors';\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@checkoutpage/sdk",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Official JavaScript SDK for the
|
|
3
|
+
"version": "0.1.11",
|
|
4
|
+
"description": "Official JavaScript SDK for the Checkout Page API",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
@@ -17,8 +17,12 @@
|
|
|
17
17
|
],
|
|
18
18
|
"scripts": {
|
|
19
19
|
"build": "tsup",
|
|
20
|
-
"test": "vitest run",
|
|
21
|
-
"test:
|
|
20
|
+
"test": "vitest run --exclude '**/*.integration.test.ts'",
|
|
21
|
+
"test:unit": "vitest run --exclude '**/*.integration.test.ts'",
|
|
22
|
+
"test:integration": "NODE_OPTIONS='--use-system-ca' vitest run src/resources/**/*.integration.test.ts",
|
|
23
|
+
"test:integration:payments": "NODE_OPTIONS='--use-system-ca' vitest run src/resources/payments/payments.integration.test.ts",
|
|
24
|
+
"test:all": "NODE_OPTIONS='--use-system-ca' vitest run",
|
|
25
|
+
"test:watch": "vitest --exclude '**/*.integration.test.ts'",
|
|
22
26
|
"lint": "eslint src --ext .ts",
|
|
23
27
|
"type-check": "tsc --noEmit"
|
|
24
28
|
},
|
|
@@ -30,22 +34,23 @@
|
|
|
30
34
|
"sdk",
|
|
31
35
|
"api"
|
|
32
36
|
],
|
|
33
|
-
"author": "
|
|
37
|
+
"author": "Checkout Page",
|
|
34
38
|
"license": "MIT",
|
|
35
39
|
"repository": {
|
|
36
40
|
"type": "git",
|
|
37
|
-
"url": "https://github.com/
|
|
41
|
+
"url": "https://github.com/checkout-page/checkoutpage-api-sdk.git",
|
|
38
42
|
"directory": "js"
|
|
39
43
|
},
|
|
40
44
|
"publishConfig": {
|
|
41
45
|
"access": "public"
|
|
42
46
|
},
|
|
43
47
|
"bugs": {
|
|
44
|
-
"url": "https://github.com/
|
|
48
|
+
"url": "https://github.com/checkout-page/checkoutpage-api-sdk/issues"
|
|
45
49
|
},
|
|
46
50
|
"homepage": "https://checkoutpage.com",
|
|
47
51
|
"devDependencies": {
|
|
48
52
|
"@types/node": "^20.11.16",
|
|
53
|
+
"dotenv": "^17.2.3",
|
|
49
54
|
"tsup": "^8.0.1",
|
|
50
55
|
"vitest": "^3.2.4"
|
|
51
56
|
},
|