@buiducnhat/ritel-sdk 0.1.0 → 0.2.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.
- package/README.md +111 -15
- package/dist/index.cjs +17 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +34 -10
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +34 -10
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +17 -0
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
# @ritel
|
|
1
|
+
# @buiducnhat/ritel-sdk
|
|
2
2
|
|
|
3
3
|
TypeScript SDK for Ritel Mini ERP external APIs.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
npm install @ritel
|
|
8
|
+
npm install @buiducnhat/ritel-sdk
|
|
9
9
|
# or
|
|
10
|
-
bun add @ritel
|
|
10
|
+
bun add @buiducnhat/ritel-sdk
|
|
11
11
|
# or
|
|
12
|
-
pnpm add @ritel
|
|
12
|
+
pnpm add @buiducnhat/ritel-sdk
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
## Quick Start
|
|
16
16
|
|
|
17
17
|
```typescript
|
|
18
|
-
import { RitelClient } from "@ritel
|
|
18
|
+
import { RitelClient } from "@buiducnhat/ritel-sdk";
|
|
19
19
|
|
|
20
20
|
const client = new RitelClient({
|
|
21
21
|
baseUrl: "https://your-ritel-server.com",
|
|
@@ -32,9 +32,7 @@ const products = await client.products.list({
|
|
|
32
32
|
const order = await client.orders.create({
|
|
33
33
|
customerName: "John Doe",
|
|
34
34
|
customerPhone: "+84901234567",
|
|
35
|
-
items: [
|
|
36
|
-
{ productId: "prod_123", quantity: 2, unitPrice: 50000 },
|
|
37
|
-
],
|
|
35
|
+
items: [{ productId: "prod_123", quantity: 2, unitPrice: 50000 }],
|
|
38
36
|
paymentMethod: "bank_transfer",
|
|
39
37
|
});
|
|
40
38
|
|
|
@@ -79,6 +77,57 @@ const response = await client.products.list({
|
|
|
79
77
|
}
|
|
80
78
|
```
|
|
81
79
|
|
|
80
|
+
#### `client.products.get(id)`
|
|
81
|
+
|
|
82
|
+
Get a single product by ID.
|
|
83
|
+
|
|
84
|
+
```typescript
|
|
85
|
+
const product = await client.products.get("prod_123");
|
|
86
|
+
|
|
87
|
+
// Product interface
|
|
88
|
+
{
|
|
89
|
+
id: string;
|
|
90
|
+
name: string;
|
|
91
|
+
sku: string | null;
|
|
92
|
+
salePrice: number;
|
|
93
|
+
currentSalePrice: number | null; // Discounted price if applicable
|
|
94
|
+
imageUrl: string | null;
|
|
95
|
+
description: string | null;
|
|
96
|
+
unit: string | null; // e.g., "pcs", "kg"
|
|
97
|
+
category: { id: string; name: string } | null;
|
|
98
|
+
customProperties: Record<string, unknown> | null;
|
|
99
|
+
stockQuantity: number;
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Categories
|
|
104
|
+
|
|
105
|
+
#### `client.categories.list(params?)`
|
|
106
|
+
|
|
107
|
+
List product categories with optional filters.
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
const response = await client.categories.list({
|
|
111
|
+
limit: 20, // Pagination limit
|
|
112
|
+
offset: 0, // Pagination offset
|
|
113
|
+
search: "cloth", // Search by name
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
// Response
|
|
117
|
+
{
|
|
118
|
+
data: Category[],
|
|
119
|
+
pagination: { total, limit, offset, hasMore }
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Category interface
|
|
123
|
+
{
|
|
124
|
+
id: string;
|
|
125
|
+
name: string;
|
|
126
|
+
slug: string;
|
|
127
|
+
description: string | null;
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
82
131
|
### Orders
|
|
83
132
|
|
|
84
133
|
#### `client.orders.create(input)`
|
|
@@ -99,7 +148,20 @@ const order = await client.orders.create({
|
|
|
99
148
|
expectedDeliveryDate: "2024-01-20", // Optional
|
|
100
149
|
});
|
|
101
150
|
|
|
102
|
-
// Response includes vietQrUrl for bank_transfer
|
|
151
|
+
// Response includes vietQrUrl and bankInfo for bank_transfer
|
|
152
|
+
{
|
|
153
|
+
id: string;
|
|
154
|
+
orderNumber: string;
|
|
155
|
+
total: number;
|
|
156
|
+
paymentMethod: string;
|
|
157
|
+
paymentStatus: string;
|
|
158
|
+
vietQrUrl: string | null; // QR code URL for payment
|
|
159
|
+
bankInfo: { // Bank details for manual transfer
|
|
160
|
+
bankBin: string | null;
|
|
161
|
+
bankAccountNumber: string | null;
|
|
162
|
+
bankAccountName: string | null;
|
|
163
|
+
} | null;
|
|
164
|
+
}
|
|
103
165
|
```
|
|
104
166
|
|
|
105
167
|
#### `client.orders.list(params?)`
|
|
@@ -110,9 +172,9 @@ List orders with optional filters.
|
|
|
110
172
|
const response = await client.orders.list({
|
|
111
173
|
limit: 20,
|
|
112
174
|
offset: 0,
|
|
113
|
-
status: "pending",
|
|
175
|
+
status: "pending", // "pending" | "completed" | "cancelled"
|
|
114
176
|
paymentStatus: "pending", // "pending" | "paid" | "failed"
|
|
115
|
-
orderNumber: "ORD-001",
|
|
177
|
+
orderNumber: "ORD-001", // Exact match
|
|
116
178
|
});
|
|
117
179
|
```
|
|
118
180
|
|
|
@@ -150,7 +212,11 @@ const order = await client.orders.cancel("order_abc123");
|
|
|
150
212
|
## Error Handling
|
|
151
213
|
|
|
152
214
|
```typescript
|
|
153
|
-
import {
|
|
215
|
+
import {
|
|
216
|
+
RitelApiError,
|
|
217
|
+
RitelNetworkError,
|
|
218
|
+
RitelError,
|
|
219
|
+
} from "@buiducnhat/ritel-sdk";
|
|
154
220
|
|
|
155
221
|
try {
|
|
156
222
|
await client.orders.create(input);
|
|
@@ -172,12 +238,42 @@ All types are exported:
|
|
|
172
238
|
|
|
173
239
|
```typescript
|
|
174
240
|
import type {
|
|
241
|
+
// Client config
|
|
242
|
+
RitelClientConfig,
|
|
243
|
+
|
|
244
|
+
// Products
|
|
175
245
|
Product,
|
|
246
|
+
ProductCategory,
|
|
247
|
+
GetProductsParams,
|
|
248
|
+
ProductsListResponse,
|
|
249
|
+
|
|
250
|
+
// Categories
|
|
251
|
+
Category,
|
|
252
|
+
GetCategoriesParams,
|
|
253
|
+
CategoriesListResponse,
|
|
254
|
+
|
|
255
|
+
// Orders
|
|
176
256
|
Order,
|
|
257
|
+
OrderItem,
|
|
258
|
+
OrderItemInput,
|
|
177
259
|
CreateOrderInput,
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
260
|
+
UpdateOrderInput,
|
|
261
|
+
ListOrdersParams,
|
|
262
|
+
OrderCreateResponse,
|
|
263
|
+
OrdersListResponse,
|
|
264
|
+
DeliveryInfo,
|
|
265
|
+
|
|
266
|
+
// Common
|
|
267
|
+
Pagination,
|
|
268
|
+
ApiErrorResponse,
|
|
269
|
+
} from "@buiducnhat/ritel-sdk";
|
|
270
|
+
|
|
271
|
+
// Resource classes (for advanced usage)
|
|
272
|
+
import {
|
|
273
|
+
ProductsResource,
|
|
274
|
+
CategoriesResource,
|
|
275
|
+
OrdersResource,
|
|
276
|
+
} from "@buiducnhat/ritel-sdk";
|
|
181
277
|
```
|
|
182
278
|
|
|
183
279
|
## License
|
package/dist/index.cjs
CHANGED
|
@@ -25,6 +25,18 @@ var RitelNetworkError = class extends RitelError {
|
|
|
25
25
|
}
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
+
//#endregion
|
|
29
|
+
//#region src/resources/categories.ts
|
|
30
|
+
var CategoriesResource = class {
|
|
31
|
+
request;
|
|
32
|
+
constructor(request) {
|
|
33
|
+
this.request = request;
|
|
34
|
+
}
|
|
35
|
+
async list(params = {}) {
|
|
36
|
+
return this.request("GET", "/categories", void 0, params);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
28
40
|
//#endregion
|
|
29
41
|
//#region src/resources/orders.ts
|
|
30
42
|
var OrdersResource = class {
|
|
@@ -59,6 +71,9 @@ var ProductsResource = class {
|
|
|
59
71
|
async list(params = {}) {
|
|
60
72
|
return this.request("GET", "/products", void 0, params);
|
|
61
73
|
}
|
|
74
|
+
async get(id) {
|
|
75
|
+
return this.request("GET", `/products/${id}`);
|
|
76
|
+
}
|
|
62
77
|
};
|
|
63
78
|
|
|
64
79
|
//#endregion
|
|
@@ -81,6 +96,7 @@ var RitelClient = class {
|
|
|
81
96
|
apiKey;
|
|
82
97
|
timeout;
|
|
83
98
|
products;
|
|
99
|
+
categories;
|
|
84
100
|
orders;
|
|
85
101
|
constructor(config) {
|
|
86
102
|
this.baseUrl = config.baseUrl.replace(/\/$/, "");
|
|
@@ -88,6 +104,7 @@ var RitelClient = class {
|
|
|
88
104
|
this.timeout = config.timeout ?? 3e4;
|
|
89
105
|
const boundRequest = this.request.bind(this);
|
|
90
106
|
this.products = new ProductsResource(boundRequest);
|
|
107
|
+
this.categories = new CategoriesResource(boundRequest);
|
|
91
108
|
this.orders = new OrdersResource(boundRequest);
|
|
92
109
|
}
|
|
93
110
|
async request(method, path, body, params) {
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":[],"sources":["../src/errors.ts","../src/resources/orders.ts","../src/resources/products.ts","../src/utils/query-string.ts","../src/client.ts"],"sourcesContent":["export class RitelError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"RitelError\";\n }\n}\n\nexport class RitelApiError extends RitelError {\n readonly status: number;\n readonly code: string;\n\n constructor(status: number, code: string, message: string) {\n super(message);\n this.name = \"RitelApiError\";\n this.status = status;\n this.code = code;\n }\n}\n\nexport class RitelNetworkError extends RitelError {\n readonly cause?: Error;\n\n constructor(message: string, cause?: Error) {\n super(message);\n this.name = \"RitelNetworkError\";\n this.cause = cause;\n }\n}\n","import type {\n CreateOrderInput,\n ListOrdersParams,\n Order,\n OrderCreateResponse,\n OrdersListResponse,\n UpdateOrderInput,\n} from \"../types\";\n\nexport type RequestFn = <T>(\n method: string,\n path: string,\n body?: unknown,\n params?: Record<string, unknown>\n) => Promise<T>;\n\nexport class OrdersResource {\n private readonly request: RequestFn;\n\n constructor(request: RequestFn) {\n this.request = request;\n }\n\n async create(input: CreateOrderInput): Promise<OrderCreateResponse> {\n return this.request<OrderCreateResponse>(\"POST\", \"/orders\", input);\n }\n\n async list(params: ListOrdersParams = {}): Promise<OrdersListResponse> {\n return this.request<OrdersListResponse>(\n \"GET\",\n \"/orders\",\n undefined,\n params as Record<string, unknown>\n );\n }\n\n async get(id: string): Promise<Order> {\n return this.request<Order>(\"GET\", `/orders/${id}`);\n }\n\n async update(id: string, input: UpdateOrderInput): Promise<Order> {\n return this.request<Order>(\"PATCH\", `/orders/${id}`, input);\n }\n\n async cancel(id: string): Promise<Order> {\n return this.request<Order>(\"POST\", `/orders/${id}/cancel`);\n }\n}\n","import type {
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../src/errors.ts","../src/resources/categories.ts","../src/resources/orders.ts","../src/resources/products.ts","../src/utils/query-string.ts","../src/client.ts"],"sourcesContent":["export class RitelError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"RitelError\";\n }\n}\n\nexport class RitelApiError extends RitelError {\n readonly status: number;\n readonly code: string;\n\n constructor(status: number, code: string, message: string) {\n super(message);\n this.name = \"RitelApiError\";\n this.status = status;\n this.code = code;\n }\n}\n\nexport class RitelNetworkError extends RitelError {\n readonly cause?: Error;\n\n constructor(message: string, cause?: Error) {\n super(message);\n this.name = \"RitelNetworkError\";\n this.cause = cause;\n }\n}\n","import type { RequestFn } from \"../resources/products\";\nimport type { CategoriesListResponse, GetCategoriesParams } from \"../types\";\n\nexport class CategoriesResource {\n private readonly request: RequestFn;\n\n constructor(request: RequestFn) {\n this.request = request;\n }\n\n async list(\n params: GetCategoriesParams = {}\n ): Promise<CategoriesListResponse> {\n return this.request<CategoriesListResponse>(\n \"GET\",\n \"/categories\",\n undefined,\n params as Record<string, unknown>\n );\n }\n}\n","import type {\n CreateOrderInput,\n ListOrdersParams,\n Order,\n OrderCreateResponse,\n OrdersListResponse,\n UpdateOrderInput,\n} from \"../types\";\n\nexport type RequestFn = <T>(\n method: string,\n path: string,\n body?: unknown,\n params?: Record<string, unknown>\n) => Promise<T>;\n\nexport class OrdersResource {\n private readonly request: RequestFn;\n\n constructor(request: RequestFn) {\n this.request = request;\n }\n\n async create(input: CreateOrderInput): Promise<OrderCreateResponse> {\n return this.request<OrderCreateResponse>(\"POST\", \"/orders\", input);\n }\n\n async list(params: ListOrdersParams = {}): Promise<OrdersListResponse> {\n return this.request<OrdersListResponse>(\n \"GET\",\n \"/orders\",\n undefined,\n params as Record<string, unknown>\n );\n }\n\n async get(id: string): Promise<Order> {\n return this.request<Order>(\"GET\", `/orders/${id}`);\n }\n\n async update(id: string, input: UpdateOrderInput): Promise<Order> {\n return this.request<Order>(\"PATCH\", `/orders/${id}`, input);\n }\n\n async cancel(id: string): Promise<Order> {\n return this.request<Order>(\"POST\", `/orders/${id}/cancel`);\n }\n}\n","import type {\n GetProductsParams,\n Product,\n ProductsListResponse,\n} from \"../types\";\n\nexport type RequestFn = <T>(\n method: string,\n path: string,\n body?: unknown,\n params?: Record<string, unknown>\n) => Promise<T>;\n\nexport class ProductsResource {\n private readonly request: RequestFn;\n\n constructor(request: RequestFn) {\n this.request = request;\n }\n\n async list(params: GetProductsParams = {}): Promise<ProductsListResponse> {\n return this.request<ProductsListResponse>(\n \"GET\",\n \"/products\",\n undefined,\n params as Record<string, unknown>\n );\n }\n\n async get(id: string): Promise<Product> {\n return this.request<Product>(\"GET\", `/products/${id}`);\n }\n}\n","export function buildQueryString(params: Record<string, unknown>): string {\n const searchParams = new URLSearchParams();\n\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined || value === null) {\n continue;\n }\n\n if (value instanceof Date) {\n searchParams.set(key, value.toISOString());\n } else {\n searchParams.set(key, String(value));\n }\n }\n\n const qs = searchParams.toString();\n return qs ? `?${qs}` : \"\";\n}\n","import { RitelApiError, RitelNetworkError } from \"./errors\";\nimport { CategoriesResource } from \"./resources/categories\";\nimport { OrdersResource } from \"./resources/orders\";\nimport { ProductsResource } from \"./resources/products\";\nimport type { ApiErrorResponse, RitelClientConfig } from \"./types\";\nimport { buildQueryString } from \"./utils/query-string\";\n\nexport class RitelClient {\n private readonly baseUrl: string;\n private readonly apiKey: string;\n private readonly timeout: number;\n\n readonly products: ProductsResource;\n readonly categories: CategoriesResource;\n readonly orders: OrdersResource;\n\n constructor(config: RitelClientConfig) {\n this.baseUrl = config.baseUrl.replace(/\\/$/, \"\");\n this.apiKey = config.apiKey;\n this.timeout = config.timeout ?? 30_000;\n\n // Bind request method for resources\n const boundRequest = this.request.bind(this);\n this.products = new ProductsResource(boundRequest);\n this.categories = new CategoriesResource(boundRequest);\n this.orders = new OrdersResource(boundRequest);\n }\n\n private async request<T>(\n method: string,\n path: string,\n body?: unknown,\n params?: Record<string, unknown>\n ): Promise<T> {\n const url = `${this.baseUrl}/external${path}${params ? buildQueryString(params) : \"\"}`;\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.timeout);\n\n try {\n const response = await fetch(url, {\n method,\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-Key\": this.apiKey,\n },\n body: body ? JSON.stringify(body) : undefined,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n const errorBody = (await response.json().catch(() => ({\n error: \"Unknown\",\n message: response.statusText,\n }))) as ApiErrorResponse;\n\n throw new RitelApiError(\n response.status,\n errorBody.error,\n errorBody.message\n );\n }\n\n return response.json() as Promise<T>;\n } catch (error) {\n clearTimeout(timeoutId);\n\n if (error instanceof RitelApiError) {\n throw error;\n }\n\n if (error instanceof Error) {\n if (error.name === \"AbortError\") {\n throw new RitelNetworkError(\"Request timeout\", error);\n }\n throw new RitelNetworkError(error.message, error);\n }\n\n throw new RitelNetworkError(\"Unknown network error\");\n }\n }\n}\n"],"mappings":"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"}
|
package/dist/index.d.cts
CHANGED
|
@@ -10,6 +10,21 @@ interface GetProductsParams {
|
|
|
10
10
|
sortBy?: "name" | "price" | "created_at";
|
|
11
11
|
sortOrder?: "asc" | "desc";
|
|
12
12
|
}
|
|
13
|
+
interface GetCategoriesParams {
|
|
14
|
+
limit?: number;
|
|
15
|
+
offset?: number;
|
|
16
|
+
search?: string;
|
|
17
|
+
}
|
|
18
|
+
interface Category {
|
|
19
|
+
id: string;
|
|
20
|
+
name: string;
|
|
21
|
+
slug: string;
|
|
22
|
+
description: string | null;
|
|
23
|
+
}
|
|
24
|
+
interface CategoriesListResponse {
|
|
25
|
+
data: Category[];
|
|
26
|
+
pagination: Pagination;
|
|
27
|
+
}
|
|
13
28
|
interface ProductCategory {
|
|
14
29
|
id: string;
|
|
15
30
|
name: string;
|
|
@@ -123,24 +138,32 @@ interface ApiErrorResponse {
|
|
|
123
138
|
message: string;
|
|
124
139
|
}
|
|
125
140
|
//#endregion
|
|
126
|
-
//#region src/resources/
|
|
141
|
+
//#region src/resources/products.d.ts
|
|
127
142
|
type RequestFn$1 = <T>(method: string, path: string, body?: unknown, params?: Record<string, unknown>) => Promise<T>;
|
|
128
|
-
declare class
|
|
143
|
+
declare class ProductsResource {
|
|
129
144
|
private readonly request;
|
|
130
145
|
constructor(request: RequestFn$1);
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
get(id: string): Promise<Order>;
|
|
134
|
-
update(id: string, input: UpdateOrderInput): Promise<Order>;
|
|
135
|
-
cancel(id: string): Promise<Order>;
|
|
146
|
+
list(params?: GetProductsParams): Promise<ProductsListResponse>;
|
|
147
|
+
get(id: string): Promise<Product>;
|
|
136
148
|
}
|
|
137
149
|
//#endregion
|
|
138
|
-
//#region src/resources/
|
|
150
|
+
//#region src/resources/categories.d.ts
|
|
151
|
+
declare class CategoriesResource {
|
|
152
|
+
private readonly request;
|
|
153
|
+
constructor(request: RequestFn$1);
|
|
154
|
+
list(params?: GetCategoriesParams): Promise<CategoriesListResponse>;
|
|
155
|
+
}
|
|
156
|
+
//#endregion
|
|
157
|
+
//#region src/resources/orders.d.ts
|
|
139
158
|
type RequestFn = <T>(method: string, path: string, body?: unknown, params?: Record<string, unknown>) => Promise<T>;
|
|
140
|
-
declare class
|
|
159
|
+
declare class OrdersResource {
|
|
141
160
|
private readonly request;
|
|
142
161
|
constructor(request: RequestFn);
|
|
143
|
-
|
|
162
|
+
create(input: CreateOrderInput): Promise<OrderCreateResponse>;
|
|
163
|
+
list(params?: ListOrdersParams): Promise<OrdersListResponse>;
|
|
164
|
+
get(id: string): Promise<Order>;
|
|
165
|
+
update(id: string, input: UpdateOrderInput): Promise<Order>;
|
|
166
|
+
cancel(id: string): Promise<Order>;
|
|
144
167
|
}
|
|
145
168
|
//#endregion
|
|
146
169
|
//#region src/client.d.ts
|
|
@@ -149,6 +172,7 @@ declare class RitelClient {
|
|
|
149
172
|
private readonly apiKey;
|
|
150
173
|
private readonly timeout;
|
|
151
174
|
readonly products: ProductsResource;
|
|
175
|
+
readonly categories: CategoriesResource;
|
|
152
176
|
readonly orders: OrdersResource;
|
|
153
177
|
constructor(config: RitelClientConfig);
|
|
154
178
|
private request;
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/resources/
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/resources/products.ts","../src/resources/categories.ts","../src/resources/orders.ts","../src/client.ts","../src/errors.ts"],"sourcesContent":[],"mappings":";UACiB,iBAAA;EAAA,KAAA,CAAA,EAAA,MAAA;EAYA,MAAA,CAAA,EAAA,MAAA;EAMA,MAAA,CAAA,EAAA,MAAQ;EAOR,UAAA,CAAA,EAAA,MAAA;EAKA,WAAA,CAAA,EAAA,UAAe,GAAA,cAAA,GAAA,KAAA;EAKf,QAAA,CAAA,EAAO,MAAA;EAcP,QAAA,CAAA,EAAA,MAAA;EAMA,MAAA,CAAA,EAAA,MAAA,GAAA,OAAgB,GAAA,YAKxB;EAMQ,SAAA,CAAA,EAAA,KAAc,GAAA,MAAA;AAM/B;AAQiB,UApEA,mBAAA,CAsEQ;EAIR,KAAA,CAAA,EAAA,MAAA;EAOA,MAAA,CAAA,EAAA,MAAS;EAUT,MAAA,CAAA,EAAK,MAAA;AAkBtB;AAciB,UArHA,QAAA,CAqHkB;EAMlB,EAAA,EAAA,MAAA;EAOA,IAAA,EAAA,MAAA;EAMA,IAAA,EAAA,MAAA;;;UAjIA,sBAAA;ECpBL,IAAA,EDqBJ,QCrBa,EAAA;EAIV,UAAA,EDkBG,UClBH;;AACN,UDoBY,eAAA,CCpBZ;EAAO,EAAA,EAAA,MAAA;EAEC,IAAA,EAAA,MAAA;;AAOQ,UDgBJ,OAAA,CChBI;EAAiC,EAAA,EAAA,MAAA;EAAR,IAAA,EAAA,MAAA;EASb,GAAA,EAAA,MAAA,GAAA,IAAA;EAAR,SAAA,EAAA,MAAA;EAAO,gBAAA,EAAA,MAAA,GAAA,IAAA;;;;EC1BnB,QAAA,EF0CD,eE1CmB,GAAA,IAAA;EAGR,gBAAA,EFwCH,MExCG,CAAA,MAAA,EAAA,OAAA,CAAA,GAAA,IAAA;EAKX,aAAA,EAAA,MAAA;;AACP,UFsCY,oBAAA,CEtCZ;EAAO,IAAA,EFuCJ,OEvCI,EAAA;cFwCE;;UAIG,gBAAA;EG/CL,YAAS,EAAA,MAAA;EAIV,aAAA,EAAA,MAAA;EACE,aAAA,CAAA,EAAA,MAAA;EAAR,eAAA,CAAA,EAAA,MAAA;EAAO,KAAA,EH+CH,cG/CG,EAAA;EAEC,aAAA,EAAA,MAAc,GAAA,eAAA,GAAA,UAAA;EAGJ,KAAA,CAAA,EAAA,MAAA;EAID,oBAAA,CAAA,EHyCG,IGzCH,GAAA,MAAA;;AAAmB,UH4CxB,cAAA,CG5CwB;EAIpB,SAAA,EAAA,MAAA;EAAgC,QAAA,EAAA,MAAA;EAAR,SAAA,EAAA,MAAA;;AASpB,UHqCR,gBAAA,CGrCQ;EAIS,KAAA,CAAA,EAAA,MAAA;EAA2B,MAAA,CAAA,EAAA,MAAA;EAAR,MAAA,CAAA,EAAA,SAAA,GAAA,WAAA,GAAA,WAAA;EAIjB,aAAA,CAAA,EAAA,SAAA,GAAA,MAAA,GAAA,QAAA;EAAR,WAAA,CAAA,EAAA,MAAA;;UHqCX,gBAAA;;yBAEQ;EI5EZ,YAAA,CAAA,EJ6EI,YI7EO;;AAMD,UJ0EN,YAAA,CI1EM;EACJ,IAAA,EAAA,MAAA;EAEG,KAAA,EAAA,MAAA;EAAiB,KAAA,CAAA,EAAA,MAAA,GAAA,IAAA;;;UJ8EtB,SAAA;EK9FJ,EAAA,EAAA,MAAA;EAOA,SAAA,EAAA,MAAc;EAYd,WAAA,EAAA,MAAA;EACM,UAAA,EAAA,MAAA,GAAA,IAAA;EAEoB,QAAA,EAAA,MAAA;EAHA,SAAA,EAAA,MAAA;EAAU,QAAA,EAAA,MAAA;;ULqFhC,KAAA;;;;;;;;;;;;gBAYD;UACN;;;;UAKO,mBAAA;;;;;;;;;;;;;UAcA,kBAAA;QACT;cACM;;UAIG,UAAA;;;;;;UAOA,iBAAA;;;;;UAMA,gBAAA;;;;;;AA1JA,KCKL,WAAA,GDLsB,CAAA,CAAA,CAAA,CAAA,MAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,CAAA,EAAA,OAAA,EAAA,MAAA,CAAA,ECSvB,MDTuB,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,GCU7B,ODV6B,CCUrB,CDVqB,CAAA;AAYjB,cCAJ,gBAAA,CDAuB;EAMnB,iBAAQ,OAAA;EAOR,WAAA,CAAA,OAAA,ECVM,WDUgB;EAKtB,IAAA,CAAA,MAAe,CAAf,ECXI,iBDWW,CAAA,ECXc,ODWd,CCXsB,oBDWtB,CAAA;EAKf,GAAA,CAAA,EAAA,EAAA,MAAO,CAAA,ECPC,ODgBb,CChBqB,ODgBrB,CAAA;AAKZ;;;AArCiB,cEVJ,kBAAA,CFUuB;EAMnB,iBAAQ,OAAA;EAOR,WAAA,CAAA,OAAA,EEpBM,WFoBgB;EAKtB,IAAA,CAAA,MAAe,CAAf,EEpBL,mBFoBoB,CAAA,EEnB3B,OFmB2B,CEnBnB,sBFmBmB,CAAA;AAKhC;;;AAnCiB,KGQL,SAAA,GHRsB,CAAA,CAAA,CAAA,CAAA,MAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,CAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EGYvB,MHZuB,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,GGa7B,OHb6B,CGarB,CHbqB,CAAA;AAYjB,cGGJ,cAAA,CHHuB;EAMnB,iBAAQ,OAAA;EAOR,WAAA,CAAA,OAAA,EGPM,SHOgB;EAKtB,MAAA,CAAA,KAAA,EGRK,gBHQU,CAAA,EGRS,OHQT,CGRiB,mBHQjB,CAAA;EAKf,IAAA,CAAA,MASL,CATY,EGTH,gBHkBT,CAAA,EGlBiC,OHmBzB,CGnBiC,kBHmB3B,CAAA;EAIT,GAAA,CAAA,EAAA,EAAA,MAAA,CAAA,EGdQ,OHcY,CGdJ,KHcI,CAAA;EAMpB,MAAA,CAAA,EAAA,EAAA,MAAA,EAAgB,KAAA,EGhBC,gBHqBzB,CAAA,EGrB4C,OHwBxB,CGxBgC,KHwBhC,CAAA;EAGZ,MAAA,CAAA,EAAA,EAAA,MAAc,CAAA,EGvBH,OHuBG,CGvBK,KHuBL,CAAA;AAM/B;;;AA/CiB,cInBJ,WAAA,CJmB0B;EAKtB,iBAAA,OAAe;EAKf,iBAAO,MASZ;EAKK,iBAAA,OAAoB;EAMpB,SAAA,QAAA,EI5CI,gBJiDZ;EAMQ,SAAA,UAAc,EItDR,kBJsDQ;EAMd,SAAA,MAAA,EI3DE,cJ2Dc;EAQhB,WAAA,CAAA,MAAA,EIjEK,iBJoEL;EAGA,QAAA,OAAY;AAO7B;;;cK9Fa,UAAA,SAAmB,KAAA;ELCf,WAAA,CAAA,OAAA,EAAiB,MAAA;AAYlC;AAMiB,cKZJ,aAAA,SAAsB,UAAA,CLYV;EAOR,SAAA,MAAA,EAAA,MAAA;EAKA,SAAA,IAAA,EAAA,MAAe;EAKf,WAAO,CAAA,MAAA,EAAA,MASZ,EAAA,IAAA,EAAA,MACQ,EAAA,OAAM,EAAA,MAAA;AAI1B;AAMiB,cKrCJ,iBAAA,SAA0B,UAAA,CL6CV;EAGZ,SAAA,KAAA,CAAA,EK/CE,KL+CY;EAMd,WAAA,CAAA,OAAgB,EAAA,MAAA,EAAA,KAAA,CAAA,EKnDM,KLmDN;AAQjC"}
|
package/dist/index.d.mts
CHANGED
|
@@ -10,6 +10,21 @@ interface GetProductsParams {
|
|
|
10
10
|
sortBy?: "name" | "price" | "created_at";
|
|
11
11
|
sortOrder?: "asc" | "desc";
|
|
12
12
|
}
|
|
13
|
+
interface GetCategoriesParams {
|
|
14
|
+
limit?: number;
|
|
15
|
+
offset?: number;
|
|
16
|
+
search?: string;
|
|
17
|
+
}
|
|
18
|
+
interface Category {
|
|
19
|
+
id: string;
|
|
20
|
+
name: string;
|
|
21
|
+
slug: string;
|
|
22
|
+
description: string | null;
|
|
23
|
+
}
|
|
24
|
+
interface CategoriesListResponse {
|
|
25
|
+
data: Category[];
|
|
26
|
+
pagination: Pagination;
|
|
27
|
+
}
|
|
13
28
|
interface ProductCategory {
|
|
14
29
|
id: string;
|
|
15
30
|
name: string;
|
|
@@ -123,24 +138,32 @@ interface ApiErrorResponse {
|
|
|
123
138
|
message: string;
|
|
124
139
|
}
|
|
125
140
|
//#endregion
|
|
126
|
-
//#region src/resources/
|
|
141
|
+
//#region src/resources/products.d.ts
|
|
127
142
|
type RequestFn$1 = <T>(method: string, path: string, body?: unknown, params?: Record<string, unknown>) => Promise<T>;
|
|
128
|
-
declare class
|
|
143
|
+
declare class ProductsResource {
|
|
129
144
|
private readonly request;
|
|
130
145
|
constructor(request: RequestFn$1);
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
get(id: string): Promise<Order>;
|
|
134
|
-
update(id: string, input: UpdateOrderInput): Promise<Order>;
|
|
135
|
-
cancel(id: string): Promise<Order>;
|
|
146
|
+
list(params?: GetProductsParams): Promise<ProductsListResponse>;
|
|
147
|
+
get(id: string): Promise<Product>;
|
|
136
148
|
}
|
|
137
149
|
//#endregion
|
|
138
|
-
//#region src/resources/
|
|
150
|
+
//#region src/resources/categories.d.ts
|
|
151
|
+
declare class CategoriesResource {
|
|
152
|
+
private readonly request;
|
|
153
|
+
constructor(request: RequestFn$1);
|
|
154
|
+
list(params?: GetCategoriesParams): Promise<CategoriesListResponse>;
|
|
155
|
+
}
|
|
156
|
+
//#endregion
|
|
157
|
+
//#region src/resources/orders.d.ts
|
|
139
158
|
type RequestFn = <T>(method: string, path: string, body?: unknown, params?: Record<string, unknown>) => Promise<T>;
|
|
140
|
-
declare class
|
|
159
|
+
declare class OrdersResource {
|
|
141
160
|
private readonly request;
|
|
142
161
|
constructor(request: RequestFn);
|
|
143
|
-
|
|
162
|
+
create(input: CreateOrderInput): Promise<OrderCreateResponse>;
|
|
163
|
+
list(params?: ListOrdersParams): Promise<OrdersListResponse>;
|
|
164
|
+
get(id: string): Promise<Order>;
|
|
165
|
+
update(id: string, input: UpdateOrderInput): Promise<Order>;
|
|
166
|
+
cancel(id: string): Promise<Order>;
|
|
144
167
|
}
|
|
145
168
|
//#endregion
|
|
146
169
|
//#region src/client.d.ts
|
|
@@ -149,6 +172,7 @@ declare class RitelClient {
|
|
|
149
172
|
private readonly apiKey;
|
|
150
173
|
private readonly timeout;
|
|
151
174
|
readonly products: ProductsResource;
|
|
175
|
+
readonly categories: CategoriesResource;
|
|
152
176
|
readonly orders: OrdersResource;
|
|
153
177
|
constructor(config: RitelClientConfig);
|
|
154
178
|
private request;
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/resources/
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/resources/products.ts","../src/resources/categories.ts","../src/resources/orders.ts","../src/client.ts","../src/errors.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -24,6 +24,18 @@ var RitelNetworkError = class extends RitelError {
|
|
|
24
24
|
}
|
|
25
25
|
};
|
|
26
26
|
|
|
27
|
+
//#endregion
|
|
28
|
+
//#region src/resources/categories.ts
|
|
29
|
+
var CategoriesResource = class {
|
|
30
|
+
request;
|
|
31
|
+
constructor(request) {
|
|
32
|
+
this.request = request;
|
|
33
|
+
}
|
|
34
|
+
async list(params = {}) {
|
|
35
|
+
return this.request("GET", "/categories", void 0, params);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
27
39
|
//#endregion
|
|
28
40
|
//#region src/resources/orders.ts
|
|
29
41
|
var OrdersResource = class {
|
|
@@ -58,6 +70,9 @@ var ProductsResource = class {
|
|
|
58
70
|
async list(params = {}) {
|
|
59
71
|
return this.request("GET", "/products", void 0, params);
|
|
60
72
|
}
|
|
73
|
+
async get(id) {
|
|
74
|
+
return this.request("GET", `/products/${id}`);
|
|
75
|
+
}
|
|
61
76
|
};
|
|
62
77
|
|
|
63
78
|
//#endregion
|
|
@@ -80,6 +95,7 @@ var RitelClient = class {
|
|
|
80
95
|
apiKey;
|
|
81
96
|
timeout;
|
|
82
97
|
products;
|
|
98
|
+
categories;
|
|
83
99
|
orders;
|
|
84
100
|
constructor(config) {
|
|
85
101
|
this.baseUrl = config.baseUrl.replace(/\/$/, "");
|
|
@@ -87,6 +103,7 @@ var RitelClient = class {
|
|
|
87
103
|
this.timeout = config.timeout ?? 3e4;
|
|
88
104
|
const boundRequest = this.request.bind(this);
|
|
89
105
|
this.products = new ProductsResource(boundRequest);
|
|
106
|
+
this.categories = new CategoriesResource(boundRequest);
|
|
90
107
|
this.orders = new OrdersResource(boundRequest);
|
|
91
108
|
}
|
|
92
109
|
async request(method, path, body, params) {
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/errors.ts","../src/resources/orders.ts","../src/resources/products.ts","../src/utils/query-string.ts","../src/client.ts"],"sourcesContent":["export class RitelError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"RitelError\";\n }\n}\n\nexport class RitelApiError extends RitelError {\n readonly status: number;\n readonly code: string;\n\n constructor(status: number, code: string, message: string) {\n super(message);\n this.name = \"RitelApiError\";\n this.status = status;\n this.code = code;\n }\n}\n\nexport class RitelNetworkError extends RitelError {\n readonly cause?: Error;\n\n constructor(message: string, cause?: Error) {\n super(message);\n this.name = \"RitelNetworkError\";\n this.cause = cause;\n }\n}\n","import type {\n CreateOrderInput,\n ListOrdersParams,\n Order,\n OrderCreateResponse,\n OrdersListResponse,\n UpdateOrderInput,\n} from \"../types\";\n\nexport type RequestFn = <T>(\n method: string,\n path: string,\n body?: unknown,\n params?: Record<string, unknown>\n) => Promise<T>;\n\nexport class OrdersResource {\n private readonly request: RequestFn;\n\n constructor(request: RequestFn) {\n this.request = request;\n }\n\n async create(input: CreateOrderInput): Promise<OrderCreateResponse> {\n return this.request<OrderCreateResponse>(\"POST\", \"/orders\", input);\n }\n\n async list(params: ListOrdersParams = {}): Promise<OrdersListResponse> {\n return this.request<OrdersListResponse>(\n \"GET\",\n \"/orders\",\n undefined,\n params as Record<string, unknown>\n );\n }\n\n async get(id: string): Promise<Order> {\n return this.request<Order>(\"GET\", `/orders/${id}`);\n }\n\n async update(id: string, input: UpdateOrderInput): Promise<Order> {\n return this.request<Order>(\"PATCH\", `/orders/${id}`, input);\n }\n\n async cancel(id: string): Promise<Order> {\n return this.request<Order>(\"POST\", `/orders/${id}/cancel`);\n }\n}\n","import type {
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/errors.ts","../src/resources/categories.ts","../src/resources/orders.ts","../src/resources/products.ts","../src/utils/query-string.ts","../src/client.ts"],"sourcesContent":["export class RitelError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"RitelError\";\n }\n}\n\nexport class RitelApiError extends RitelError {\n readonly status: number;\n readonly code: string;\n\n constructor(status: number, code: string, message: string) {\n super(message);\n this.name = \"RitelApiError\";\n this.status = status;\n this.code = code;\n }\n}\n\nexport class RitelNetworkError extends RitelError {\n readonly cause?: Error;\n\n constructor(message: string, cause?: Error) {\n super(message);\n this.name = \"RitelNetworkError\";\n this.cause = cause;\n }\n}\n","import type { RequestFn } from \"../resources/products\";\nimport type { CategoriesListResponse, GetCategoriesParams } from \"../types\";\n\nexport class CategoriesResource {\n private readonly request: RequestFn;\n\n constructor(request: RequestFn) {\n this.request = request;\n }\n\n async list(\n params: GetCategoriesParams = {}\n ): Promise<CategoriesListResponse> {\n return this.request<CategoriesListResponse>(\n \"GET\",\n \"/categories\",\n undefined,\n params as Record<string, unknown>\n );\n }\n}\n","import type {\n CreateOrderInput,\n ListOrdersParams,\n Order,\n OrderCreateResponse,\n OrdersListResponse,\n UpdateOrderInput,\n} from \"../types\";\n\nexport type RequestFn = <T>(\n method: string,\n path: string,\n body?: unknown,\n params?: Record<string, unknown>\n) => Promise<T>;\n\nexport class OrdersResource {\n private readonly request: RequestFn;\n\n constructor(request: RequestFn) {\n this.request = request;\n }\n\n async create(input: CreateOrderInput): Promise<OrderCreateResponse> {\n return this.request<OrderCreateResponse>(\"POST\", \"/orders\", input);\n }\n\n async list(params: ListOrdersParams = {}): Promise<OrdersListResponse> {\n return this.request<OrdersListResponse>(\n \"GET\",\n \"/orders\",\n undefined,\n params as Record<string, unknown>\n );\n }\n\n async get(id: string): Promise<Order> {\n return this.request<Order>(\"GET\", `/orders/${id}`);\n }\n\n async update(id: string, input: UpdateOrderInput): Promise<Order> {\n return this.request<Order>(\"PATCH\", `/orders/${id}`, input);\n }\n\n async cancel(id: string): Promise<Order> {\n return this.request<Order>(\"POST\", `/orders/${id}/cancel`);\n }\n}\n","import type {\n GetProductsParams,\n Product,\n ProductsListResponse,\n} from \"../types\";\n\nexport type RequestFn = <T>(\n method: string,\n path: string,\n body?: unknown,\n params?: Record<string, unknown>\n) => Promise<T>;\n\nexport class ProductsResource {\n private readonly request: RequestFn;\n\n constructor(request: RequestFn) {\n this.request = request;\n }\n\n async list(params: GetProductsParams = {}): Promise<ProductsListResponse> {\n return this.request<ProductsListResponse>(\n \"GET\",\n \"/products\",\n undefined,\n params as Record<string, unknown>\n );\n }\n\n async get(id: string): Promise<Product> {\n return this.request<Product>(\"GET\", `/products/${id}`);\n }\n}\n","export function buildQueryString(params: Record<string, unknown>): string {\n const searchParams = new URLSearchParams();\n\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined || value === null) {\n continue;\n }\n\n if (value instanceof Date) {\n searchParams.set(key, value.toISOString());\n } else {\n searchParams.set(key, String(value));\n }\n }\n\n const qs = searchParams.toString();\n return qs ? `?${qs}` : \"\";\n}\n","import { RitelApiError, RitelNetworkError } from \"./errors\";\nimport { CategoriesResource } from \"./resources/categories\";\nimport { OrdersResource } from \"./resources/orders\";\nimport { ProductsResource } from \"./resources/products\";\nimport type { ApiErrorResponse, RitelClientConfig } from \"./types\";\nimport { buildQueryString } from \"./utils/query-string\";\n\nexport class RitelClient {\n private readonly baseUrl: string;\n private readonly apiKey: string;\n private readonly timeout: number;\n\n readonly products: ProductsResource;\n readonly categories: CategoriesResource;\n readonly orders: OrdersResource;\n\n constructor(config: RitelClientConfig) {\n this.baseUrl = config.baseUrl.replace(/\\/$/, \"\");\n this.apiKey = config.apiKey;\n this.timeout = config.timeout ?? 30_000;\n\n // Bind request method for resources\n const boundRequest = this.request.bind(this);\n this.products = new ProductsResource(boundRequest);\n this.categories = new CategoriesResource(boundRequest);\n this.orders = new OrdersResource(boundRequest);\n }\n\n private async request<T>(\n method: string,\n path: string,\n body?: unknown,\n params?: Record<string, unknown>\n ): Promise<T> {\n const url = `${this.baseUrl}/external${path}${params ? buildQueryString(params) : \"\"}`;\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.timeout);\n\n try {\n const response = await fetch(url, {\n method,\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-Key\": this.apiKey,\n },\n body: body ? JSON.stringify(body) : undefined,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n const errorBody = (await response.json().catch(() => ({\n error: \"Unknown\",\n message: response.statusText,\n }))) as ApiErrorResponse;\n\n throw new RitelApiError(\n response.status,\n errorBody.error,\n errorBody.message\n );\n }\n\n return response.json() as Promise<T>;\n } catch (error) {\n clearTimeout(timeoutId);\n\n if (error instanceof RitelApiError) {\n throw error;\n }\n\n if (error instanceof Error) {\n if (error.name === \"AbortError\") {\n throw new RitelNetworkError(\"Request timeout\", error);\n }\n throw new RitelNetworkError(error.message, error);\n }\n\n throw new RitelNetworkError(\"Unknown network error\");\n }\n }\n}\n"],"mappings":"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"}
|