@agroyaar/sdk 3.6.1 → 3.6.2

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
@@ -37,14 +37,114 @@ module.exports = __toCommonJS(src_exports);
37
37
  // src/core/client.ts
38
38
  var import_axios = __toESM(require("axios"), 1);
39
39
 
40
+ // src/errors/sdkError.ts
41
+ var isSDKError = (e) => !!e && typeof e === "object" && "kind" in e;
42
+ function fromAxiosError(err) {
43
+ const e = err;
44
+ if (e?.__CANCEL__ || e?.code === "ERR_CANCELED") {
45
+ return { kind: "CanceledError", message: "Request canceled", cause: err };
46
+ }
47
+ if (e?.code === "ECONNABORTED") {
48
+ const duration = parseInt(e?.config?.timeout, 10);
49
+ return {
50
+ kind: "TimeoutError",
51
+ message: "Request timed out",
52
+ durationMs: Number.isFinite(duration) ? duration : void 0,
53
+ cause: err
54
+ };
55
+ }
56
+ if (e?.isAxiosError && !e?.response) {
57
+ return {
58
+ kind: "NetworkError",
59
+ message: "Network error or CORS issue",
60
+ cause: err
61
+ };
62
+ }
63
+ const axiosErr = e;
64
+ const status = axiosErr?.response?.status;
65
+ const data = axiosErr?.response?.data;
66
+ const headers = axiosErr?.response?.headers ?? {};
67
+ const requestId = headers["x-request-id"] || headers["x-correlation-id"] || headers["x-amzn-trace-id"] || null;
68
+ if (status === 401 || status === 403) {
69
+ return {
70
+ kind: "AuthError",
71
+ status,
72
+ message: data?.message ?? "Authentication/authorization failed",
73
+ requestId,
74
+ cause: err
75
+ };
76
+ }
77
+ if (status === 404) {
78
+ return {
79
+ kind: "NotFoundError",
80
+ status,
81
+ message: data?.message ?? "Resource not found",
82
+ requestId,
83
+ cause: err
84
+ };
85
+ }
86
+ if (status === 429) {
87
+ const raHeader = headers["retry-after"];
88
+ const retryAfter = raHeader ? Number(raHeader) || null : null;
89
+ return {
90
+ kind: "RateLimitError",
91
+ status,
92
+ message: data?.message ?? "Too many requests",
93
+ retryAfter,
94
+ requestId,
95
+ cause: err
96
+ };
97
+ }
98
+ if (status === 400) {
99
+ return {
100
+ kind: "ValidationError",
101
+ status,
102
+ message: data?.message ?? "Validation failed",
103
+ fieldErrors: data?.errors,
104
+ raw: data,
105
+ requestId,
106
+ cause: err
107
+ };
108
+ }
109
+ if (status && [500, 502, 503, 504].includes(status)) {
110
+ return {
111
+ kind: "ServerError",
112
+ status,
113
+ message: data?.message ?? "Server error",
114
+ data,
115
+ requestId,
116
+ cause: err
117
+ };
118
+ }
119
+ if (typeof status === "number") {
120
+ return {
121
+ kind: "HttpError",
122
+ status,
123
+ message: data?.message ?? `HTTP error ${status}`,
124
+ data,
125
+ requestId,
126
+ cause: err
127
+ };
128
+ }
129
+ return {
130
+ kind: "NetworkError",
131
+ message: e?.message ?? "Unknown error",
132
+ cause: err
133
+ };
134
+ }
135
+
40
136
  // src/middlewares/errorHandler.ts
41
137
  var errorHandler = (error) => {
138
+ const sdkErr = fromAxiosError(error);
42
139
  console.error("[HTTP Error]", {
43
- url: error.config?.url,
44
- status: error.response?.status,
45
- message: error.message
140
+ kind: sdkErr.kind,
141
+ status: sdkErr.status,
142
+ message: sdkErr.message,
143
+ requestId: sdkErr.requestId,
144
+ url: error?.config?.url,
145
+ method: error?.config?.method
46
146
  });
47
- return Promise.reject(error);
147
+ return Promise.reject(sdkErr);
48
148
  };
49
149
 
50
150
  // src/middlewares/logger.ts
@@ -121,8 +221,8 @@ var import_ts_belt2 = require("@mobily/ts-belt");
121
221
  // src/utils/wrapError.ts
122
222
  var import_ts_belt = require("@mobily/ts-belt");
123
223
  var wrapError = (error) => {
124
- const err = error instanceof Error ? error : new Error(String(error));
125
- return import_ts_belt.R.Error(err);
224
+ const e = isSDKError(error) ? error : fromAxiosError(error);
225
+ return import_ts_belt.R.Error(e);
126
226
  };
127
227
 
128
228
  // src/services/dashboard/cropping-pattern/croppingPattern.service.ts
@@ -639,7 +739,7 @@ var createAuthService = (client) => ({
639
739
  });
640
740
 
641
741
  // src/services/dashboard/mechanization/mechanization.service.ts
642
- var import_ts_belt10 = require("@mobily/ts-belt");
742
+ var import_ts_belt11 = require("@mobily/ts-belt");
643
743
 
644
744
  // src/services/dashboard/mechanization/mechanization.mapper.ts
645
745
  var mechanizationMapper = {
@@ -661,6 +761,17 @@ var mechanizationMapper = {
661
761
  create: (_dto) => ({})
662
762
  };
663
763
 
764
+ // src/utils/call.ts
765
+ var import_ts_belt10 = require("@mobily/ts-belt");
766
+ var call = async (fn) => {
767
+ try {
768
+ const data = await fn();
769
+ return import_ts_belt10.R.Ok(data);
770
+ } catch (e) {
771
+ return wrapError(e);
772
+ }
773
+ };
774
+
664
775
  // src/services/dashboard/mechanization/mechanization.service.ts
665
776
  var createMechanizationServices = (client) => ({
666
777
  getOne: async ({
@@ -675,7 +786,7 @@ var createMechanizationServices = (client) => ({
675
786
  }
676
787
  );
677
788
  const mechanization = response.result.data.mechanization;
678
- return import_ts_belt10.R.Ok(mechanizationMapper.getOne(mechanization));
789
+ return import_ts_belt11.R.Ok(mechanizationMapper.getOne(mechanization));
679
790
  } catch (error) {
680
791
  return wrapError(error);
681
792
  }
@@ -684,7 +795,7 @@ var createMechanizationServices = (client) => ({
684
795
  pathParams: { farmerId },
685
796
  path: { kindName }
686
797
  }) => {
687
- try {
798
+ call(async () => {
688
799
  const response = await client.typed(
689
800
  "get",
690
801
  "/farmers/{farmerId}/mechanizations",
@@ -698,10 +809,8 @@ var createMechanizationServices = (client) => ({
698
809
  }
699
810
  );
700
811
  const mechanizations = response.result.data.mechanizations;
701
- return import_ts_belt10.R.Ok(mechanizationMapper.getAll(mechanizations));
702
- } catch (error) {
703
- return wrapError(error);
704
- }
812
+ return mechanizationMapper.getAll(mechanizations);
813
+ });
705
814
  },
706
815
  create: async ({
707
816
  body,
@@ -722,7 +831,7 @@ var createMechanizationServices = (client) => ({
722
831
  }
723
832
  }
724
833
  );
725
- return import_ts_belt10.R.Ok(
834
+ return import_ts_belt11.R.Ok(
726
835
  mechanizationMapper.create(response.result.data.mechanization)
727
836
  );
728
837
  } catch (error) {
@@ -732,7 +841,7 @@ var createMechanizationServices = (client) => ({
732
841
  });
733
842
 
734
843
  // src/services/dashboard/experiments/experiments.service.ts
735
- var import_ts_belt11 = require("@mobily/ts-belt");
844
+ var import_ts_belt12 = require("@mobily/ts-belt");
736
845
 
737
846
  // src/services/dashboard/experiments/experiments.mapper.ts
738
847
  var experimentMapper = {
@@ -764,7 +873,7 @@ var createExperimentServices = (client) => ({
764
873
  pathParams
765
874
  }
766
875
  );
767
- return import_ts_belt11.R.Ok(experimentMapper.getExperiments(response.result.data));
876
+ return import_ts_belt12.R.Ok(experimentMapper.getExperiments(response.result.data));
768
877
  } catch (error) {
769
878
  return wrapError(error);
770
879
  }
@@ -782,12 +891,12 @@ var staticsMappers = {
782
891
  };
783
892
 
784
893
  // src/services/dashboard/statics/statics.service.ts
785
- var import_ts_belt12 = require("@mobily/ts-belt");
894
+ var import_ts_belt13 = require("@mobily/ts-belt");
786
895
  var createStaticsServices = (client) => ({
787
896
  getPlantType: async () => {
788
897
  try {
789
898
  const response = await client.typed("get", "/statics/product-kinds");
790
- return import_ts_belt12.R.Ok(
899
+ return import_ts_belt13.R.Ok(
791
900
  staticsMappers.getPlantTypes(response.result.data.productKinds)
792
901
  );
793
902
  } catch (error) {
@@ -797,7 +906,7 @@ var createStaticsServices = (client) => ({
797
906
  });
798
907
 
799
908
  // src/services/dashboard/products/products.service.ts
800
- var import_ts_belt13 = require("@mobily/ts-belt");
909
+ var import_ts_belt14 = require("@mobily/ts-belt");
801
910
 
802
911
  // src/services/dashboard/products/products.mapper.ts
803
912
  var productsMappers = {
@@ -825,7 +934,7 @@ var createProductsServices = (client) => ({
825
934
  params
826
935
  }
827
936
  );
828
- return import_ts_belt13.R.Ok(productsMappers.getProducts(response.result.data.products));
937
+ return import_ts_belt14.R.Ok(productsMappers.getProducts(response.result.data.products));
829
938
  } catch (error) {
830
939
  return wrapError(error);
831
940
  }
package/dist/index.d.ts CHANGED
@@ -5402,6 +5402,52 @@ declare namespace ApiTypes {
5402
5402
  type Products = ProductsTypes;
5403
5403
  }
5404
5404
 
5405
+ type Base = {
5406
+ readonly message: string;
5407
+ readonly requestId?: string | null;
5408
+ readonly cause?: unknown;
5409
+ };
5410
+ type NetworkError = Base & {
5411
+ kind: "NetworkError";
5412
+ };
5413
+ type TimeoutError = Base & {
5414
+ kind: "TimeoutError";
5415
+ durationMs?: number;
5416
+ };
5417
+ type CanceledError = Base & {
5418
+ kind: "CanceledError";
5419
+ };
5420
+ type AuthError = Base & {
5421
+ kind: "AuthError";
5422
+ status: 401 | 403;
5423
+ };
5424
+ type NotFoundError = Base & {
5425
+ kind: "NotFoundError";
5426
+ status: 404;
5427
+ };
5428
+ type RateLimitError = Base & {
5429
+ kind: "RateLimitError";
5430
+ status: 429;
5431
+ retryAfter?: number | null;
5432
+ };
5433
+ type ValidationError = Base & {
5434
+ kind: "ValidationError";
5435
+ status: 400;
5436
+ fieldErrors?: Record<string, string[]>;
5437
+ raw?: unknown;
5438
+ };
5439
+ type ServerError = Base & {
5440
+ kind: "ServerError";
5441
+ status: number;
5442
+ data?: unknown;
5443
+ };
5444
+ type HttpError = Base & {
5445
+ kind: "HttpError";
5446
+ status: number;
5447
+ data?: unknown;
5448
+ };
5449
+ type SDKError = NetworkError | TimeoutError | CanceledError | AuthError | NotFoundError | RateLimitError | ValidationError | ServerError | HttpError;
5450
+
5405
5451
  type GetProductsParams = paths["/farmers/{farmerId}/products"]["get"]["parameters"];
5406
5452
  type ProductsTypes = ApiRequestType<{
5407
5453
  products: components["schemas"]["Product"];
@@ -5464,57 +5510,57 @@ declare const createClient: (config: ClientConfig, middlewares?: ((_config: Inte
5464
5510
  declare const createSDK: (config: ClientConfig, middlewares?: Parameters<typeof createClient>[1]) => {
5465
5511
  dashboardServices: {
5466
5512
  mechanization: {
5467
- getOne: ({ pathParams, }: MechanizationTypes["RequestParams"]["getOne"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<MechanizationModel>>;
5468
- getAll: ({ pathParams: { farmerId }, path: { kindName }, }: MechanizationTypes["RequestParams"]["getAll"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<MechanizationModel[]>>;
5469
- create: ({ body, pathParams, }: MechanizationTypes["RequestParams"]["create"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<unknown>>;
5513
+ getOne: ({ pathParams, }: MechanizationTypes["RequestParams"]["getOne"]) => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<MechanizationModel>>;
5514
+ getAll: ({ pathParams: { farmerId }, path: { kindName }, }: MechanizationTypes["RequestParams"]["getAll"]) => Promise<void>;
5515
+ create: ({ body, pathParams, }: MechanizationTypes["RequestParams"]["create"]) => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<unknown>>;
5470
5516
  };
5471
5517
  auth: {
5472
- verifyPhoneNumber: ({ body, }: AuthType["RequestParams"]["createVerifyPhoneNumber"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<VerifyPhoneNumberModel>>;
5518
+ verifyPhoneNumber: ({ body, }: AuthType["RequestParams"]["createVerifyPhoneNumber"]) => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<VerifyPhoneNumberModel>>;
5473
5519
  };
5474
5520
  deviceCode: {
5475
- create: ({ body, pathParams, }: DeviceCodeType["RequestParams"]["create"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<DeviceCodeModel>>;
5476
- update: ({ body, pathParams, }: DeviceCodeType["RequestParams"]["update"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<DeviceCodeModel>>;
5477
- delete: ({ body, pathParams, }: DeviceCodeType["RequestParams"]["delete"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<DeviceCodeModel>>;
5521
+ create: ({ body, pathParams, }: DeviceCodeType["RequestParams"]["create"]) => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<DeviceCodeModel>>;
5522
+ update: ({ body, pathParams, }: DeviceCodeType["RequestParams"]["update"]) => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<DeviceCodeModel>>;
5523
+ delete: ({ body, pathParams, }: DeviceCodeType["RequestParams"]["delete"]) => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<DeviceCodeModel>>;
5478
5524
  };
5479
5525
  mechanizationQuestion: {
5480
- getAll: ({ params, }: MechanizationQuestionType["RequestParams"]["getAll"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<MechanizationQuestionModel[]>>;
5526
+ getAll: ({ params, }: MechanizationQuestionType["RequestParams"]["getAll"]) => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<MechanizationQuestionModel[]>>;
5481
5527
  };
5482
5528
  seasonsProcess: {
5483
- getSeasonsProcess: () => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<SeasonsProcessModel[]>>;
5529
+ getSeasonsProcess: () => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<SeasonsProcessModel[]>>;
5484
5530
  };
5485
5531
  sensors: {
5486
- getMechanizationSensors: ({ pathParams, }: SensorType["RequestParams"]["getSensors"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<MotorizedMechanizationSensorsModel>>;
5487
- getMechanizationTemperatureChanges: ({ params, pathParams, }: SensorType["RequestParams"]["getTemperatureChanges"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<MechanizationTemperatureChangesModel[]>>;
5488
- getMechanizationFuelConsumptionChanges: ({ params, pathParams, }: SensorType["RequestParams"]["getFuelConsumptionChanges"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<MechanizationFuelConsumptionChangesModel[]>>;
5489
- getSpeedChanges: ({ params, pathParams, }: SensorType["RequestParams"]["getSpeedChange"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<{
5532
+ getMechanizationSensors: ({ pathParams, }: SensorType["RequestParams"]["getSensors"]) => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<MotorizedMechanizationSensorsModel>>;
5533
+ getMechanizationTemperatureChanges: ({ params, pathParams, }: SensorType["RequestParams"]["getTemperatureChanges"]) => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<MechanizationTemperatureChangesModel[]>>;
5534
+ getMechanizationFuelConsumptionChanges: ({ params, pathParams, }: SensorType["RequestParams"]["getFuelConsumptionChanges"]) => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<MechanizationFuelConsumptionChangesModel[]>>;
5535
+ getSpeedChanges: ({ params, pathParams, }: SensorType["RequestParams"]["getSpeedChange"]) => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<{
5490
5536
  readonly speed: number;
5491
5537
  readonly date: string;
5492
5538
  }[]>>;
5493
- getMechanizationMovementChanges: ({ params, pathParams, }: SensorType["RequestParams"]["getMovementChange"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<MovementChangeModel>>;
5539
+ getMechanizationMovementChanges: ({ params, pathParams, }: SensorType["RequestParams"]["getMovementChange"]) => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<MovementChangeModel>>;
5494
5540
  };
5495
5541
  varieties: {
5496
- getAll: ({ params }: VarietiesType["RequestParams"]["getAll"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<MechanizationVarietyModel[]>>;
5542
+ getAll: ({ params }: VarietiesType["RequestParams"]["getAll"]) => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<MechanizationVarietyModel[]>>;
5497
5543
  };
5498
5544
  experiment: {
5499
- getListExperiments: ({ params, pathParams, }: ExperimentsType["RequestParams"]["getExperiments"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<ExperimentsModel>>;
5545
+ getListExperiments: ({ params, pathParams, }: ExperimentsType["RequestParams"]["getExperiments"]) => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<ExperimentsModel>>;
5500
5546
  };
5501
5547
  croppingPattern: {
5502
- getOne: ({ pathParams, }: CroppingPatternTypes["RequestParams"]["getOne"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<CroppingPatternModel>>;
5503
- getAll: ({ pathParams, }: CroppingPatternTypes["RequestParams"]["getAll"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<CroppingPatternModel[]>>;
5504
- create: ({ body, pathParams, }: CroppingPatternTypes["RequestParams"]["create"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<unknown>>;
5548
+ getOne: ({ pathParams, }: CroppingPatternTypes["RequestParams"]["getOne"]) => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<CroppingPatternModel>>;
5549
+ getAll: ({ pathParams, }: CroppingPatternTypes["RequestParams"]["getAll"]) => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<CroppingPatternModel[]>>;
5550
+ create: ({ body, pathParams, }: CroppingPatternTypes["RequestParams"]["create"]) => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<unknown>>;
5505
5551
  };
5506
5552
  croppingSuitability: {
5507
- getOne: ({ pathParams, }: CroppingSuitabilityTypes["RequestParams"]["getOne"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<CroppingSuitabilityModel>>;
5508
- getAll: ({ pathParams, }: CroppingSuitabilityTypes["RequestParams"]["getAll"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<CroppingSuitabilityModel[]>>;
5509
- create: ({ body, pathParams, }: CroppingSuitabilityTypes["RequestParams"]["create"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<unknown>>;
5553
+ getOne: ({ pathParams, }: CroppingSuitabilityTypes["RequestParams"]["getOne"]) => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<CroppingSuitabilityModel>>;
5554
+ getAll: ({ pathParams, }: CroppingSuitabilityTypes["RequestParams"]["getAll"]) => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<CroppingSuitabilityModel[]>>;
5555
+ create: ({ body, pathParams, }: CroppingSuitabilityTypes["RequestParams"]["create"]) => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<unknown>>;
5510
5556
  };
5511
5557
  statics: {
5512
- getPlantType: () => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<PlantTypeModel[]>>;
5558
+ getPlantType: () => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<PlantTypeModel[]>>;
5513
5559
  };
5514
5560
  products: {
5515
- getProducts: ({ pathParams, params }: ProductsTypes["RequestParams"]["getProducts"]) => Promise<_mobily_ts_belt.Error<Error> | _mobily_ts_belt.Ok<ProductModel[]>>;
5561
+ getProducts: ({ pathParams, params }: ProductsTypes["RequestParams"]["getProducts"]) => Promise<_mobily_ts_belt.Error<SDKError> | _mobily_ts_belt.Ok<ProductModel[]>>;
5516
5562
  };
5517
5563
  };
5518
5564
  };
5519
5565
 
5520
- export { type Alert, type AnnuallyChartReportModel, type ApiRequestType, ApiTypes, type City, type CroppingPatternModel, type CroppingPatternReportModel, type CroppingPatternRiskChartModel, type CroppingSuitabilityKindsModel, type CroppingSuitabilityModel, type CroppingSuitabilityReportModel, type CroppingSuitabilityType, type DayOfYearChartReportModel, type DeviceCodeModel, type Experiment, type ExperimentModel, type ExperimentModelWithMeta, type ExperimentParameters, type ExperimentsModel, type Farm, type Farmer, Identifiers, type Invoice, type IrrigationSource, type LandSuitabilityClassesKindsModel, type LandSuitabilityClassesType, type Location, type MechanizationFuelConsumptionChangesModel, type MechanizationMachineUsageKind, type MechanizationMachineUsageType, type MechanizationModel, type MechanizationMovementChangesModel, type MechanizationMovementChangesModelWithMeta, type MechanizationQuestionModel, type MechanizationSeasonProcessKind, type MechanizationSeasonProcessType, type MechanizationTemperatureChangesModel, type MechanizationType, type MechanizationVarietyModel, type MotorizedMechanizationSensorsModel, type MovementChangeModel, type OwnershipType, type PlantTypeModel, type Product, type ProductKind, type ProductKindType, type ProductModel, type Province, type SeasonsProcessModel, type ServiceType, type SpeedChangesChartModel, type Status, type StatusType, type TaskType, type TrackingDeviceCodeModel, type UnavailableExperimentParameters, type VarietyKind, type VerifyPhoneNumberModel, type WeatherStation, type WeatherStationAlertPhoneNumber, createSDK };
5566
+ export { type Alert, type AnnuallyChartReportModel, type ApiRequestType, ApiTypes, type City, type CroppingPatternModel, type CroppingPatternReportModel, type CroppingPatternRiskChartModel, type CroppingSuitabilityKindsModel, type CroppingSuitabilityModel, type CroppingSuitabilityReportModel, type CroppingSuitabilityType, type DayOfYearChartReportModel, type DeviceCodeModel, type Experiment, type ExperimentModel, type ExperimentModelWithMeta, type ExperimentParameters, type ExperimentsModel, type Farm, type Farmer, Identifiers, type Invoice, type IrrigationSource, type LandSuitabilityClassesKindsModel, type LandSuitabilityClassesType, type Location, type MechanizationFuelConsumptionChangesModel, type MechanizationMachineUsageKind, type MechanizationMachineUsageType, type MechanizationModel, type MechanizationMovementChangesModel, type MechanizationMovementChangesModelWithMeta, type MechanizationQuestionModel, type MechanizationSeasonProcessKind, type MechanizationSeasonProcessType, type MechanizationTemperatureChangesModel, type MechanizationType, type MechanizationVarietyModel, type MotorizedMechanizationSensorsModel, type MovementChangeModel, type OwnershipType, type PlantTypeModel, type Product, type ProductKind, type ProductKindType, type ProductModel, type Province, type SDKError, type SeasonsProcessModel, type ServiceType, type SpeedChangesChartModel, type Status, type StatusType, type TaskType, type TrackingDeviceCodeModel, type UnavailableExperimentParameters, type VarietyKind, type VerifyPhoneNumberModel, type WeatherStation, type WeatherStationAlertPhoneNumber, createSDK };
package/dist/index.mjs CHANGED
@@ -1,14 +1,114 @@
1
1
  // src/core/client.ts
2
2
  import axios from "axios";
3
3
 
4
+ // src/errors/sdkError.ts
5
+ var isSDKError = (e) => !!e && typeof e === "object" && "kind" in e;
6
+ function fromAxiosError(err) {
7
+ const e = err;
8
+ if (e?.__CANCEL__ || e?.code === "ERR_CANCELED") {
9
+ return { kind: "CanceledError", message: "Request canceled", cause: err };
10
+ }
11
+ if (e?.code === "ECONNABORTED") {
12
+ const duration = parseInt(e?.config?.timeout, 10);
13
+ return {
14
+ kind: "TimeoutError",
15
+ message: "Request timed out",
16
+ durationMs: Number.isFinite(duration) ? duration : void 0,
17
+ cause: err
18
+ };
19
+ }
20
+ if (e?.isAxiosError && !e?.response) {
21
+ return {
22
+ kind: "NetworkError",
23
+ message: "Network error or CORS issue",
24
+ cause: err
25
+ };
26
+ }
27
+ const axiosErr = e;
28
+ const status = axiosErr?.response?.status;
29
+ const data = axiosErr?.response?.data;
30
+ const headers = axiosErr?.response?.headers ?? {};
31
+ const requestId = headers["x-request-id"] || headers["x-correlation-id"] || headers["x-amzn-trace-id"] || null;
32
+ if (status === 401 || status === 403) {
33
+ return {
34
+ kind: "AuthError",
35
+ status,
36
+ message: data?.message ?? "Authentication/authorization failed",
37
+ requestId,
38
+ cause: err
39
+ };
40
+ }
41
+ if (status === 404) {
42
+ return {
43
+ kind: "NotFoundError",
44
+ status,
45
+ message: data?.message ?? "Resource not found",
46
+ requestId,
47
+ cause: err
48
+ };
49
+ }
50
+ if (status === 429) {
51
+ const raHeader = headers["retry-after"];
52
+ const retryAfter = raHeader ? Number(raHeader) || null : null;
53
+ return {
54
+ kind: "RateLimitError",
55
+ status,
56
+ message: data?.message ?? "Too many requests",
57
+ retryAfter,
58
+ requestId,
59
+ cause: err
60
+ };
61
+ }
62
+ if (status === 400) {
63
+ return {
64
+ kind: "ValidationError",
65
+ status,
66
+ message: data?.message ?? "Validation failed",
67
+ fieldErrors: data?.errors,
68
+ raw: data,
69
+ requestId,
70
+ cause: err
71
+ };
72
+ }
73
+ if (status && [500, 502, 503, 504].includes(status)) {
74
+ return {
75
+ kind: "ServerError",
76
+ status,
77
+ message: data?.message ?? "Server error",
78
+ data,
79
+ requestId,
80
+ cause: err
81
+ };
82
+ }
83
+ if (typeof status === "number") {
84
+ return {
85
+ kind: "HttpError",
86
+ status,
87
+ message: data?.message ?? `HTTP error ${status}`,
88
+ data,
89
+ requestId,
90
+ cause: err
91
+ };
92
+ }
93
+ return {
94
+ kind: "NetworkError",
95
+ message: e?.message ?? "Unknown error",
96
+ cause: err
97
+ };
98
+ }
99
+
4
100
  // src/middlewares/errorHandler.ts
5
101
  var errorHandler = (error) => {
102
+ const sdkErr = fromAxiosError(error);
6
103
  console.error("[HTTP Error]", {
7
- url: error.config?.url,
8
- status: error.response?.status,
9
- message: error.message
104
+ kind: sdkErr.kind,
105
+ status: sdkErr.status,
106
+ message: sdkErr.message,
107
+ requestId: sdkErr.requestId,
108
+ url: error?.config?.url,
109
+ method: error?.config?.method
10
110
  });
11
- return Promise.reject(error);
111
+ return Promise.reject(sdkErr);
12
112
  };
13
113
 
14
114
  // src/middlewares/logger.ts
@@ -85,8 +185,8 @@ import { R as R2 } from "@mobily/ts-belt";
85
185
  // src/utils/wrapError.ts
86
186
  import { R } from "@mobily/ts-belt";
87
187
  var wrapError = (error) => {
88
- const err = error instanceof Error ? error : new Error(String(error));
89
- return R.Error(err);
188
+ const e = isSDKError(error) ? error : fromAxiosError(error);
189
+ return R.Error(e);
90
190
  };
91
191
 
92
192
  // src/services/dashboard/cropping-pattern/croppingPattern.service.ts
@@ -603,7 +703,7 @@ var createAuthService = (client) => ({
603
703
  });
604
704
 
605
705
  // src/services/dashboard/mechanization/mechanization.service.ts
606
- import { R as R10 } from "@mobily/ts-belt";
706
+ import { R as R11 } from "@mobily/ts-belt";
607
707
 
608
708
  // src/services/dashboard/mechanization/mechanization.mapper.ts
609
709
  var mechanizationMapper = {
@@ -625,6 +725,17 @@ var mechanizationMapper = {
625
725
  create: (_dto) => ({})
626
726
  };
627
727
 
728
+ // src/utils/call.ts
729
+ import { R as R10 } from "@mobily/ts-belt";
730
+ var call = async (fn) => {
731
+ try {
732
+ const data = await fn();
733
+ return R10.Ok(data);
734
+ } catch (e) {
735
+ return wrapError(e);
736
+ }
737
+ };
738
+
628
739
  // src/services/dashboard/mechanization/mechanization.service.ts
629
740
  var createMechanizationServices = (client) => ({
630
741
  getOne: async ({
@@ -639,7 +750,7 @@ var createMechanizationServices = (client) => ({
639
750
  }
640
751
  );
641
752
  const mechanization = response.result.data.mechanization;
642
- return R10.Ok(mechanizationMapper.getOne(mechanization));
753
+ return R11.Ok(mechanizationMapper.getOne(mechanization));
643
754
  } catch (error) {
644
755
  return wrapError(error);
645
756
  }
@@ -648,7 +759,7 @@ var createMechanizationServices = (client) => ({
648
759
  pathParams: { farmerId },
649
760
  path: { kindName }
650
761
  }) => {
651
- try {
762
+ call(async () => {
652
763
  const response = await client.typed(
653
764
  "get",
654
765
  "/farmers/{farmerId}/mechanizations",
@@ -662,10 +773,8 @@ var createMechanizationServices = (client) => ({
662
773
  }
663
774
  );
664
775
  const mechanizations = response.result.data.mechanizations;
665
- return R10.Ok(mechanizationMapper.getAll(mechanizations));
666
- } catch (error) {
667
- return wrapError(error);
668
- }
776
+ return mechanizationMapper.getAll(mechanizations);
777
+ });
669
778
  },
670
779
  create: async ({
671
780
  body,
@@ -686,7 +795,7 @@ var createMechanizationServices = (client) => ({
686
795
  }
687
796
  }
688
797
  );
689
- return R10.Ok(
798
+ return R11.Ok(
690
799
  mechanizationMapper.create(response.result.data.mechanization)
691
800
  );
692
801
  } catch (error) {
@@ -696,7 +805,7 @@ var createMechanizationServices = (client) => ({
696
805
  });
697
806
 
698
807
  // src/services/dashboard/experiments/experiments.service.ts
699
- import { R as R11 } from "@mobily/ts-belt";
808
+ import { R as R12 } from "@mobily/ts-belt";
700
809
 
701
810
  // src/services/dashboard/experiments/experiments.mapper.ts
702
811
  var experimentMapper = {
@@ -728,7 +837,7 @@ var createExperimentServices = (client) => ({
728
837
  pathParams
729
838
  }
730
839
  );
731
- return R11.Ok(experimentMapper.getExperiments(response.result.data));
840
+ return R12.Ok(experimentMapper.getExperiments(response.result.data));
732
841
  } catch (error) {
733
842
  return wrapError(error);
734
843
  }
@@ -746,12 +855,12 @@ var staticsMappers = {
746
855
  };
747
856
 
748
857
  // src/services/dashboard/statics/statics.service.ts
749
- import { R as R12 } from "@mobily/ts-belt";
858
+ import { R as R13 } from "@mobily/ts-belt";
750
859
  var createStaticsServices = (client) => ({
751
860
  getPlantType: async () => {
752
861
  try {
753
862
  const response = await client.typed("get", "/statics/product-kinds");
754
- return R12.Ok(
863
+ return R13.Ok(
755
864
  staticsMappers.getPlantTypes(response.result.data.productKinds)
756
865
  );
757
866
  } catch (error) {
@@ -761,7 +870,7 @@ var createStaticsServices = (client) => ({
761
870
  });
762
871
 
763
872
  // src/services/dashboard/products/products.service.ts
764
- import { R as R13 } from "@mobily/ts-belt";
873
+ import { R as R14 } from "@mobily/ts-belt";
765
874
 
766
875
  // src/services/dashboard/products/products.mapper.ts
767
876
  var productsMappers = {
@@ -789,7 +898,7 @@ var createProductsServices = (client) => ({
789
898
  params
790
899
  }
791
900
  );
792
- return R13.Ok(productsMappers.getProducts(response.result.data.products));
901
+ return R14.Ok(productsMappers.getProducts(response.result.data.products));
793
902
  } catch (error) {
794
903
  return wrapError(error);
795
904
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agroyaar/sdk",
3
- "version": "3.6.1",
3
+ "version": "3.6.2",
4
4
  "description": "",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.mjs",