@buiducnhat/ritel-sdk 0.1.0 → 0.2.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/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":"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"}
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":";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;;;;;;ACtBjB,IAAa,qBAAb,MAAgC;CAC9B,AAAiB;CAEjB,YAAY,SAAoB;AAC9B,OAAK,UAAU;;CAGjB,MAAM,KACJ,SAA8B,EAAE,EACC;AACjC,SAAO,KAAK,QACV,OACA,eACA,QACA,OACD;;;;;;ACFL,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;;;;;;AChC9D,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;;CAGH,MAAM,IAAI,IAA8B;AACtC,SAAO,KAAK,QAAiB,OAAO,aAAa,KAAK;;;;;;AC9B1D,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;;;;;ACTzB,IAAa,cAAb,MAAyB;CACvB,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CAEjB,AAAS;CACT,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,aAAa,IAAI,mBAAmB,aAAa;AACtD,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"}
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.0",
4
4
  "description": "TypeScript SDK for Ritel Mini ERP external APIs",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",