kmod-cli 1.4.8 → 1.4.10

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.
@@ -217,16 +217,23 @@ class DataProvider {
217
217
  private options: Required<DataProviderOptions>;
218
218
 
219
219
  constructor(
220
- apiUrl: string,
221
- httpClient: AxiosInstance = axios,
220
+ httpClient: AxiosInstance = axios.create(),
222
221
  options: DataProviderOptions = {}
223
222
  ) {
224
- this.apiUrl = apiUrl.endsWith('/') ? apiUrl.slice(0, -1) : apiUrl;
225
223
  this.httpClient = httpClient;
224
+
225
+ // Lấy baseURL từ httpClient
226
+ const baseURL = httpClient.defaults.baseURL || '';
227
+ this.apiUrl = baseURL.endsWith('/') ? baseURL.slice(0, -1) : baseURL;
228
+
229
+ if (!this.apiUrl) {
230
+ console.warn('[DataProvider] No baseURL found in httpClient. Please set baseURL when creating httpClient.');
231
+ }
232
+
226
233
  this.cache = new Map();
227
234
  this.options = {
228
235
  cacheTime: 5 * 60 * 1000,
229
- retryCount: 3,
236
+ retryCount: 1,
230
237
  retryDelay: 1000,
231
238
  debug: false,
232
239
  ...options
@@ -653,11 +660,12 @@ class DataProvider {
653
660
  if (!url) throw this.handleError("No url provided");
654
661
  try {
655
662
  return await this.retryRequest(async () => {
656
- const fullUrl = url.startsWith('http') ? url : `${this.apiUrl}${url}`;
657
- this.log(`${method.toUpperCase()} ${fullUrl}`, { payload, query });
658
-
663
+ // if url is not absolute, assume it's a relative path
664
+ const requestUrl = url.startsWith('http') ? url : url;
665
+ this.log(`${method.toUpperCase()} ${requestUrl}`, { payload, query });
666
+
659
667
  const response = await this.httpClient<T>({
660
- url: fullUrl,
668
+ url: requestUrl,
661
669
  method,
662
670
  data: payload,
663
671
  params: query,
@@ -1159,9 +1167,29 @@ export const cookiesProvider = {
1159
1167
 
1160
1168
  // =================== Example ===================
1161
1169
 
1170
+ // create httpClient
1171
+
1172
+ // const TOKEN = "token";
1173
+
1174
+ // const httpClient = createHttpClient(
1175
+ // `${process.env.NEXT_PUBLIC_API_URL}`,
1176
+ // TOKEN, --> key_name_cookie
1177
+ // "cookie", --> storage
1178
+ // "Bearer" --> prefix
1179
+ // );
1180
+
1181
+
1182
+ // create dataProvider
1183
+
1184
+ // const dataProvider = useDataProvider(httpClient);
1185
+
1162
1186
  // wrapped all into:
1163
- // <DataProvider>
1164
- // <AuthProvider>
1187
+ // <DataProvider dataProvider={dataProvider}>
1188
+ // <AuthProvider
1189
+ // loginUrl={"/auth/login"} --> api_login
1190
+ // tokenKey={TOKEN}
1191
+ // meUrl='/auth/me' --> api_get_me_by_token
1192
+ // >
1165
1193
  // <App />
1166
1194
  // </AuthProvider>
1167
1195
  // </DataProvider>
@@ -1199,7 +1227,7 @@ export const cookiesProvider = {
1199
1227
  // });
1200
1228
 
1201
1229
  // const { data, isLoading, error } = useCustom<DataResponse>({
1202
- // url: '/route_name',
1230
+ // url: '/route_name or api_url/route/...',
1203
1231
  // method: 'post',
1204
1232
  // payload: {},
1205
1233
  // });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kmod-cli",
3
- "version": "1.4.8",
3
+ "version": "1.4.10",
4
4
  "description": "Stack components utilities fast setup in projects",
5
5
  "author": "kumo_d",
6
6
  "license": "MIT",