@buiducnhat/ritel-sdk 0.3.0 → 0.4.0
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 +2 -0
- package/dist/index.cjs +1 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -6
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +11 -6
- package/dist/index.d.mts.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -97,6 +97,7 @@ const product = await client.products.get("prod_123");
|
|
|
97
97
|
category: { id: string; name: string } | null;
|
|
98
98
|
customProperties: Record<string, unknown> | null;
|
|
99
99
|
stockQuantity: number;
|
|
100
|
+
medias: ProductMedia[] | null;
|
|
100
101
|
}
|
|
101
102
|
```
|
|
102
103
|
|
|
@@ -262,6 +263,7 @@ import type {
|
|
|
262
263
|
OrderCreateResponse,
|
|
263
264
|
OrdersListResponse,
|
|
264
265
|
DeliveryInfo,
|
|
266
|
+
ProductMedia,
|
|
265
267
|
|
|
266
268
|
// Common
|
|
267
269
|
Pagination,
|
package/dist/index.cjs
CHANGED
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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":"
|
|
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
|
@@ -29,10 +29,14 @@ interface ProductCategory {
|
|
|
29
29
|
id: string;
|
|
30
30
|
name: string;
|
|
31
31
|
}
|
|
32
|
-
interface
|
|
32
|
+
interface ProductMedia {
|
|
33
|
+
type: "image" | "video";
|
|
33
34
|
url: string;
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
}
|
|
36
|
+
interface ProductTierPrice {
|
|
37
|
+
id: string;
|
|
38
|
+
minQuantity: number;
|
|
39
|
+
price: number;
|
|
36
40
|
}
|
|
37
41
|
interface Product {
|
|
38
42
|
id: string;
|
|
@@ -40,13 +44,14 @@ interface Product {
|
|
|
40
44
|
sku: string | null;
|
|
41
45
|
salePrice: number;
|
|
42
46
|
currentSalePrice: number | null;
|
|
43
|
-
imageUrl: string | null;
|
|
44
47
|
description: string | null;
|
|
45
48
|
unit: string | null;
|
|
49
|
+
minOrderQuantity?: number;
|
|
46
50
|
category: ProductCategory | null;
|
|
47
51
|
customProperties: Record<string, unknown> | null;
|
|
48
52
|
stockQuantity: number;
|
|
49
|
-
|
|
53
|
+
medias: ProductMedia[] | null;
|
|
54
|
+
tierPrices?: ProductTierPrice[];
|
|
50
55
|
}
|
|
51
56
|
interface ProductsListResponse {
|
|
52
57
|
data: Product[];
|
|
@@ -198,5 +203,5 @@ declare class RitelNetworkError extends RitelError {
|
|
|
198
203
|
constructor(message: string, cause?: Error);
|
|
199
204
|
}
|
|
200
205
|
//#endregion
|
|
201
|
-
export { type ApiErrorResponse, type CategoriesListResponse, type Category, type CreateOrderInput, type DeliveryInfo, type GetCategoriesParams, type GetProductsParams, type ListOrdersParams, type Order, type OrderCreateResponse, type OrderItem, type OrderItemInput, type OrdersListResponse, OrdersResource, type Pagination, type Product, type ProductCategory, type ProductsListResponse, ProductsResource, RitelApiError, RitelClient, type RitelClientConfig, RitelError, RitelNetworkError, type UpdateOrderInput };
|
|
206
|
+
export { type ApiErrorResponse, type CategoriesListResponse, type Category, type CreateOrderInput, type DeliveryInfo, type GetCategoriesParams, type GetProductsParams, type ListOrdersParams, type Order, type OrderCreateResponse, type OrderItem, type OrderItemInput, type OrdersListResponse, OrdersResource, type Pagination, type Product, type ProductCategory, type ProductMedia, type ProductsListResponse, ProductsResource, RitelApiError, RitelClient, type RitelClientConfig, RitelError, RitelNetworkError, type UpdateOrderInput };
|
|
202
207
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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"],"mappings":";UACiB,iBAAA;EACf,KAAA;EACA,MAAA;EACA,MAAA;EACA,UAAA;EACA,WAAA;EACA,QAAA;EACA,QAAA;EACA,MAAA;EACA,SAAA;AAAA;AAAA,UAGe,mBAAA;EACf,KAAA;EACA,MAAA;EACA,MAAA;AAAA;AAAA,UAGe,QAAA;EACf,EAAA;EACA,IAAA;EACA,IAAA;EACA,WAAA;AAAA;AAAA,UAGe,sBAAA;EACf,IAAA,EAAM,QAAA;EACN,UAAA,EAAY,UAAA;AAAA;AAAA,UAGG,eAAA;EACf,EAAA;EACA,IAAA;AAAA;AAAA,UAGe,YAAA;EACf,GAAA;EACA,
|
|
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"],"mappings":"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"}
|
package/dist/index.d.mts
CHANGED
|
@@ -29,10 +29,14 @@ interface ProductCategory {
|
|
|
29
29
|
id: string;
|
|
30
30
|
name: string;
|
|
31
31
|
}
|
|
32
|
-
interface
|
|
32
|
+
interface ProductMedia {
|
|
33
|
+
type: "image" | "video";
|
|
33
34
|
url: string;
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
}
|
|
36
|
+
interface ProductTierPrice {
|
|
37
|
+
id: string;
|
|
38
|
+
minQuantity: number;
|
|
39
|
+
price: number;
|
|
36
40
|
}
|
|
37
41
|
interface Product {
|
|
38
42
|
id: string;
|
|
@@ -40,13 +44,14 @@ interface Product {
|
|
|
40
44
|
sku: string | null;
|
|
41
45
|
salePrice: number;
|
|
42
46
|
currentSalePrice: number | null;
|
|
43
|
-
imageUrl: string | null;
|
|
44
47
|
description: string | null;
|
|
45
48
|
unit: string | null;
|
|
49
|
+
minOrderQuantity?: number;
|
|
46
50
|
category: ProductCategory | null;
|
|
47
51
|
customProperties: Record<string, unknown> | null;
|
|
48
52
|
stockQuantity: number;
|
|
49
|
-
|
|
53
|
+
medias: ProductMedia[] | null;
|
|
54
|
+
tierPrices?: ProductTierPrice[];
|
|
50
55
|
}
|
|
51
56
|
interface ProductsListResponse {
|
|
52
57
|
data: Product[];
|
|
@@ -198,5 +203,5 @@ declare class RitelNetworkError extends RitelError {
|
|
|
198
203
|
constructor(message: string, cause?: Error);
|
|
199
204
|
}
|
|
200
205
|
//#endregion
|
|
201
|
-
export { type ApiErrorResponse, type CategoriesListResponse, type Category, type CreateOrderInput, type DeliveryInfo, type GetCategoriesParams, type GetProductsParams, type ListOrdersParams, type Order, type OrderCreateResponse, type OrderItem, type OrderItemInput, type OrdersListResponse, OrdersResource, type Pagination, type Product, type ProductCategory, type ProductsListResponse, ProductsResource, RitelApiError, RitelClient, type RitelClientConfig, RitelError, RitelNetworkError, type UpdateOrderInput };
|
|
206
|
+
export { type ApiErrorResponse, type CategoriesListResponse, type Category, type CreateOrderInput, type DeliveryInfo, type GetCategoriesParams, type GetProductsParams, type ListOrdersParams, type Order, type OrderCreateResponse, type OrderItem, type OrderItemInput, type OrdersListResponse, OrdersResource, type Pagination, type Product, type ProductCategory, type ProductMedia, type ProductsListResponse, ProductsResource, RitelApiError, RitelClient, type RitelClientConfig, RitelError, RitelNetworkError, type UpdateOrderInput };
|
|
202
207
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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"],"mappings":";UACiB,iBAAA;EACf,KAAA;EACA,MAAA;EACA,MAAA;EACA,UAAA;EACA,WAAA;EACA,QAAA;EACA,QAAA;EACA,MAAA;EACA,SAAA;AAAA;AAAA,UAGe,mBAAA;EACf,KAAA;EACA,MAAA;EACA,MAAA;AAAA;AAAA,UAGe,QAAA;EACf,EAAA;EACA,IAAA;EACA,IAAA;EACA,WAAA;AAAA;AAAA,UAGe,sBAAA;EACf,IAAA,EAAM,QAAA;EACN,UAAA,EAAY,UAAA;AAAA;AAAA,UAGG,eAAA;EACf,EAAA;EACA,IAAA;AAAA;AAAA,UAGe,YAAA;EACf,GAAA;EACA,
|
|
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"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@buiducnhat/ritel-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "TypeScript SDK for Ritel Mini ERP external APIs",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
],
|
|
25
25
|
"scripts": {
|
|
26
26
|
"build": "tsdown",
|
|
27
|
-
"typecheck": "tsc --noEmit",
|
|
27
|
+
"typecheck": "tsc -b --noEmit",
|
|
28
28
|
"prepublishOnly": "bun run build"
|
|
29
29
|
},
|
|
30
30
|
"keywords": [
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@ritel/config": "workspace:*",
|
|
50
|
-
"tsdown": "^0.20.
|
|
50
|
+
"tsdown": "^0.20.3",
|
|
51
51
|
"typescript": "^5"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|