@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 CHANGED
@@ -1,21 +1,21 @@
1
- # @ritel/sdk
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/sdk
8
+ npm install @buiducnhat/ritel-sdk
9
9
  # or
10
- bun add @ritel/sdk
10
+ bun add @buiducnhat/ritel-sdk
11
11
  # or
12
- pnpm add @ritel/sdk
12
+ pnpm add @buiducnhat/ritel-sdk
13
13
  ```
14
14
 
15
15
  ## Quick Start
16
16
 
17
17
  ```typescript
18
- import { RitelClient } from "@ritel/sdk";
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", // "pending" | "completed" | "cancelled"
175
+ status: "pending", // "pending" | "completed" | "cancelled"
114
176
  paymentStatus: "pending", // "pending" | "paid" | "failed"
115
- orderNumber: "ORD-001", // Exact match
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 { RitelApiError, RitelNetworkError } from "@ritel/sdk";
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
- GetProductsParams,
179
- // ... more
180
- } from "@ritel/sdk";
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) {
@@ -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 { GetProductsParams, ProductsListResponse } 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","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 { 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 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.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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"}
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/orders.d.ts
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 OrdersResource {
143
+ declare class ProductsResource {
129
144
  private readonly request;
130
145
  constructor(request: RequestFn$1);
131
- create(input: CreateOrderInput): Promise<OrderCreateResponse>;
132
- list(params?: ListOrdersParams): Promise<OrdersListResponse>;
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/products.d.ts
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 ProductsResource {
159
+ declare class OrdersResource {
141
160
  private readonly request;
142
161
  constructor(request: RequestFn);
143
- list(params?: GetProductsParams): Promise<ProductsListResponse>;
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;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/resources/orders.ts","../src/resources/products.ts","../src/client.ts","../src/errors.ts"],"sourcesContent":[],"mappings":"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"}
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":"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"}
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/orders.d.ts
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 OrdersResource {
143
+ declare class ProductsResource {
129
144
  private readonly request;
130
145
  constructor(request: RequestFn$1);
131
- create(input: CreateOrderInput): Promise<OrderCreateResponse>;
132
- list(params?: ListOrdersParams): Promise<OrdersListResponse>;
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/products.d.ts
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 ProductsResource {
159
+ declare class OrdersResource {
141
160
  private readonly request;
142
161
  constructor(request: RequestFn);
143
- list(params?: GetProductsParams): Promise<ProductsListResponse>;
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;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/resources/orders.ts","../src/resources/products.ts","../src/client.ts","../src/errors.ts"],"sourcesContent":[],"mappings":";UACiB,iBAAA;EAAA,KAAA,CAAA,EAAA,MAAA;EAYA,MAAA,CAAA,EAAA,MAAA;EAKA,MAAA,CAAA,EAAA,MAAO;EAcP,UAAA,CAAA,EAAA,MAAA;EAMA,WAAA,CAAA,EAAA,UAAgB,GAAA,cAKxB,GAAA,KAGgB;EAGR,QAAA,CAAA,EAAA,MAAc;EAMd,QAAA,CAAA,EAAA,MAAA;EAQA,MAAA,CAAA,EAAA,MAAA,GAAA,OAAgB,GAAA,YAGhB;EAGA,SAAA,CAAA,EAAA,KAAY,GAAA,MAAA;AAO7B;AAUiB,UAzEA,eAAA,CAqFD;EAMC,EAAA,EAAA,MAAA;EAcA,IAAA,EAAA,MAAA;AAMjB;AAOiB,UAjHA,OAAA,CAiHiB;EAMjB,EAAA,EAAA,MAAA;;;;EChIL,gBAAS,EAAA,MAAA,GAAA,IAAA;EAIV,QAAA,EAAA,MAAA,GAAA,IAAA;EACE,WAAA,EAAA,MAAA,GAAA,IAAA;EAAR,IAAA,EAAA,MAAA,GAAA,IAAA;EAAO,QAAA,EDaA,eCbA,GAAA,IAAA;EAEC,gBAAA,EDYO,MCZO,CAAA,MAAA,EAAA,OAAA,CAAA,GAAA,IAAA;EAGJ,aAAA,EAAA,MAAA;;AAI0B,UDShC,oBAAA,CCTgC;EAAR,IAAA,EDUjC,OCViC,EAAA;EAIpB,UAAA,EDOP,UCPO;;AAAwB,UDW5B,gBAAA,CCX4B;EASZ,YAAA,EAAA,MAAA;EAAR,aAAA,EAAA,MAAA;EAIS,aAAA,CAAA,EAAA,MAAA;EAA2B,eAAA,CAAA,EAAA,MAAA;EAAR,KAAA,EDG5C,cCH4C,EAAA;EAIjB,aAAA,EAAA,MAAA,GAAA,eAAA,GAAA,UAAA;EAAR,KAAA,CAAA,EAAA,MAAA;EAAO,oBAAA,CAAA,EDEV,ICFU,GAAA,MAAA;;UDKlB,cAAA;;EE/CL,QAAA,EAAA,MAAS;EAIV,SAAA,EAAA,MAAA;;AACN,UFgDY,gBAAA,CEhDZ;EAAO,KAAA,CAAA,EAAA,MAAA;EAEC,MAAA,CAAA,EAAA,MAAA;EAGU,MAAA,CAAA,EAAA,SAAA,GAAA,WAAA,GAAA,WAAA;EAIF,aAAA,CAAA,EAAA,SAAA,GAAA,MAAA,GAAA,QAAA;EAAiC,WAAA,CAAA,EAAA,MAAA;;AAAD,UF+CpC,gBAAA,CE/CoC;;yBFiD5B;iBACR;AG5DjB;AAKqB,UH0DJ,YAAA,CG1DI;EACF,IAAA,EAAA,MAAA;EAEG,KAAA,EAAA,MAAA;EAAiB,KAAA,CAAA,EAAA,MAAA,GAAA,IAAA;;;UH8DtB,SAAA;EI5EJ,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;;UJmEhC,KAAA;;;;;;;;;;;;gBAYD;UACN;;;;UAKO,mBAAA;;;;;;;;;;;;;UAcA,kBAAA;QACT;cACM;;UAIG,UAAA;;;;;;UAOA,iBAAA;;;;;UAMA,gBAAA;;;;;;AAxIA,KCQL,WAAA,GDRsB,CAAA,CAAA,CAAA,CAAA,MAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,CAAA,EAAA,OAAA,EAAA,MAAA,CAAA,ECYvB,MDZuB,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,GCa7B,ODb6B,CCarB,CDbqB,CAAA;AAYjB,cCGJ,cAAA,CDHmB;EAKf,iBAAO,OASZ;EAKK,WAAA,CAAA,OAAA,ECbM,WDac;EAMpB,MAAA,CAAA,KAAA,ECfK,gBDoBb,CAAA,ECpBgC,ODoBhC,CCpBwC,mBDuBpB,CAAA;EAGZ,IAAA,CAAA,MAAc,CAAd,ECtBI,gBDsBU,CAAA,ECtBc,ODsBd,CCtBsB,kBDsBtB,CAAA;EAMd,GAAA,CAAA,EAAA,EAAA,MAAA,CAAA,ECnBQ,ODmBQ,CCnBA,KDmBA,CAAA;EAQhB,MAAA,CAAA,EAAA,EAAA,MAAA,EAAgB,KAAA,ECvBC,gBD0BjB,CAAA,EC1BoC,OD0BxB,CC1BgC,KD0BhC,CAAA;EAGZ,MAAA,CAAA,EAAA,EAAA,MAAY,CAAA,ECzBD,ODyBC,CCzBO,KDyBP,CAAA;AAO7B;;;AA3EiB,KECL,SAAA,GFDsB,CAAA,CAAA,CAAA,CAAA,MAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,CAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EEKvB,MFLuB,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,GEM7B,OFN6B,CEMrB,CFNqB,CAAA;AAYjB,cEJJ,gBAAA,CFImB;EAKf,iBAAO,OASZ;EAKK,WAAA,CAAA,OAAA,EEpBM,SFoBc;EAMpB,IAAA,CAAA,MAKR,CALQ,EEtBI,iBF2BZ,CAAA,EE3BqC,OF2BrC,CE3B6C,oBF8BzB,CAAA;AAG7B;;;AA/BiB,cGZJ,WAAA,CHqBD;EAKK,iBAAA,OAAoB;EAMpB,iBAAA,MAAgB;EAWhB,iBAAc,OAAA;EAMd,SAAA,QAAA,EG5CI,gBH4CY;EAQhB,SAAA,MAAA,EGnDE,cHqDM;EAIR,WAAA,CAAA,MAAY,EGvDP,iBHuDO;EAOZ,QAAA,OAAS;AAU1B;;;cItFa,UAAA,SAAmB,KAAA;EJCf,WAAA,CAAA,OAAA,EAAiB,MAAA;AAYlC;AAKiB,cIXJ,aAAA,SAAsB,UAAA,CJqBT;EAIT,SAAA,MAAA,EAAA,MAAoB;EAMpB,SAAA,IAAA,EAAA,MAAgB;EAWhB,WAAA,CAAA,MAAc,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA;AAM/B;AAQiB,cI5CJ,iBAAA,SAA0B,UAAA,CJ+CV;EAGZ,SAAA,KAAA,CAAY,EIjDV,KJiDU;EAOZ,WAAA,CAAS,OAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EItDa,KJsDb;AAU1B"}
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) {
@@ -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 { GetProductsParams, ProductsListResponse } 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","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 { 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 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.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":";AAAA,IAAa,aAAb,cAAgC,MAAM;CACpC,YAAY,SAAiB;AAC3B,QAAM,QAAQ;AACd,OAAK,OAAO;;;AAIhB,IAAa,gBAAb,cAAmC,WAAW;CAC5C,AAAS;CACT,AAAS;CAET,YAAY,QAAgB,MAAc,SAAiB;AACzD,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,OAAK,SAAS;AACd,OAAK,OAAO;;;AAIhB,IAAa,oBAAb,cAAuC,WAAW;CAChD,AAAS;CAET,YAAY,SAAiB,OAAe;AAC1C,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,OAAK,QAAQ;;;;;;ACTjB,IAAa,iBAAb,MAA4B;CAC1B,AAAiB;CAEjB,YAAY,SAAoB;AAC9B,OAAK,UAAU;;CAGjB,MAAM,OAAO,OAAuD;AAClE,SAAO,KAAK,QAA6B,QAAQ,WAAW,MAAM;;CAGpE,MAAM,KAAK,SAA2B,EAAE,EAA+B;AACrE,SAAO,KAAK,QACV,OACA,WACA,QACA,OACD;;CAGH,MAAM,IAAI,IAA4B;AACpC,SAAO,KAAK,QAAe,OAAO,WAAW,KAAK;;CAGpD,MAAM,OAAO,IAAY,OAAyC;AAChE,SAAO,KAAK,QAAe,SAAS,WAAW,MAAM,MAAM;;CAG7D,MAAM,OAAO,IAA4B;AACvC,SAAO,KAAK,QAAe,QAAQ,WAAW,GAAG,SAAS;;;;;;ACpC9D,IAAa,mBAAb,MAA8B;CAC5B,AAAiB;CAEjB,YAAY,SAAoB;AAC9B,OAAK,UAAU;;CAGjB,MAAM,KAAK,SAA4B,EAAE,EAAiC;AACxE,SAAO,KAAK,QACV,OACA,aACA,QACA,OACD;;;;;;ACtBL,SAAgB,iBAAiB,QAAyC;CACxE,MAAM,eAAe,IAAI,iBAAiB;AAE1C,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,OAAO,EAAE;AACjD,MAAI,UAAU,UAAa,UAAU,KACnC;AAGF,MAAI,iBAAiB,KACnB,cAAa,IAAI,KAAK,MAAM,aAAa,CAAC;MAE1C,cAAa,IAAI,KAAK,OAAO,MAAM,CAAC;;CAIxC,MAAM,KAAK,aAAa,UAAU;AAClC,QAAO,KAAK,IAAI,OAAO;;;;;ACVzB,IAAa,cAAb,MAAyB;CACvB,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CAEjB,AAAS;CACT,AAAS;CAET,YAAY,QAA2B;AACrC,OAAK,UAAU,OAAO,QAAQ,QAAQ,OAAO,GAAG;AAChD,OAAK,SAAS,OAAO;AACrB,OAAK,UAAU,OAAO,WAAW;EAGjC,MAAM,eAAe,KAAK,QAAQ,KAAK,KAAK;AAC5C,OAAK,WAAW,IAAI,iBAAiB,aAAa;AAClD,OAAK,SAAS,IAAI,eAAe,aAAa;;CAGhD,MAAc,QACZ,QACA,MACA,MACA,QACY;EACZ,MAAM,MAAM,GAAG,KAAK,QAAQ,WAAW,OAAO,SAAS,iBAAiB,OAAO,GAAG;EAElF,MAAM,aAAa,IAAI,iBAAiB;EACxC,MAAM,YAAY,iBAAiB,WAAW,OAAO,EAAE,KAAK,QAAQ;AAEpE,MAAI;GACF,MAAM,WAAW,MAAM,MAAM,KAAK;IAChC;IACA,SAAS;KACP,gBAAgB;KAChB,aAAa,KAAK;KACnB;IACD,MAAM,OAAO,KAAK,UAAU,KAAK,GAAG;IACpC,QAAQ,WAAW;IACpB,CAAC;AAEF,gBAAa,UAAU;AAEvB,OAAI,CAAC,SAAS,IAAI;IAChB,MAAM,YAAa,MAAM,SAAS,MAAM,CAAC,aAAa;KACpD,OAAO;KACP,SAAS,SAAS;KACnB,EAAE;AAEH,UAAM,IAAI,cACR,SAAS,QACT,UAAU,OACV,UAAU,QACX;;AAGH,UAAO,SAAS,MAAM;WACf,OAAO;AACd,gBAAa,UAAU;AAEvB,OAAI,iBAAiB,cACnB,OAAM;AAGR,OAAI,iBAAiB,OAAO;AAC1B,QAAI,MAAM,SAAS,aACjB,OAAM,IAAI,kBAAkB,mBAAmB,MAAM;AAEvD,UAAM,IAAI,kBAAkB,MAAM,SAAS,MAAM;;AAGnD,SAAM,IAAI,kBAAkB,wBAAwB"}
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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buiducnhat/ritel-sdk",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "TypeScript SDK for Ritel Mini ERP external APIs",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",