@hubcommerce/trendyol 1.0.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.
Files changed (235) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/LICENSE +21 -0
  3. package/README.md +257 -0
  4. package/dist/batch/poller.d.ts +23 -0
  5. package/dist/batch/poller.d.ts.map +1 -0
  6. package/dist/batch/poller.js +85 -0
  7. package/dist/batch/report.d.ts +15 -0
  8. package/dist/batch/report.d.ts.map +1 -0
  9. package/dist/batch/report.js +41 -0
  10. package/dist/batch/types.d.ts +4 -0
  11. package/dist/batch/types.d.ts.map +1 -0
  12. package/dist/batch/types.js +2 -0
  13. package/dist/claims/api.d.ts +48 -0
  14. package/dist/claims/api.d.ts.map +1 -0
  15. package/dist/claims/api.js +116 -0
  16. package/dist/claims/form.d.ts +9 -0
  17. package/dist/claims/form.d.ts.map +1 -0
  18. package/dist/claims/form.js +20 -0
  19. package/dist/claims/paths.d.ts +3 -0
  20. package/dist/claims/paths.d.ts.map +1 -0
  21. package/dist/claims/paths.js +8 -0
  22. package/dist/client.d.ts +39 -0
  23. package/dist/client.d.ts.map +1 -0
  24. package/dist/client.js +66 -0
  25. package/dist/compensation/api.d.ts +17 -0
  26. package/dist/compensation/api.d.ts.map +1 -0
  27. package/dist/compensation/api.js +37 -0
  28. package/dist/compensation/paths.d.ts +2 -0
  29. package/dist/compensation/paths.d.ts.map +1 -0
  30. package/dist/compensation/paths.js +4 -0
  31. package/dist/config.d.ts +10 -0
  32. package/dist/config.d.ts.map +1 -0
  33. package/dist/config.js +78 -0
  34. package/dist/connection.d.ts +4 -0
  35. package/dist/connection.d.ts.map +1 -0
  36. package/dist/connection.js +8 -0
  37. package/dist/constants/claim-reasons.d.ts +10 -0
  38. package/dist/constants/claim-reasons.d.ts.map +1 -0
  39. package/dist/constants/claim-reasons.js +43 -0
  40. package/dist/constants/error-codes.d.ts +3 -0
  41. package/dist/constants/error-codes.d.ts.map +1 -0
  42. package/dist/constants/error-codes.js +9 -0
  43. package/dist/constants/origins.d.ts +6 -0
  44. package/dist/constants/origins.d.ts.map +1 -0
  45. package/dist/constants/origins.js +6 -0
  46. package/dist/constants/package-status.d.ts +3 -0
  47. package/dist/constants/package-status.d.ts.map +1 -0
  48. package/dist/constants/package-status.js +15 -0
  49. package/dist/constants/page-limits.d.ts +3 -0
  50. package/dist/constants/page-limits.d.ts.map +1 -0
  51. package/dist/constants/page-limits.js +9 -0
  52. package/dist/constants.d.ts +18 -0
  53. package/dist/constants.d.ts.map +1 -0
  54. package/dist/constants.js +17 -0
  55. package/dist/errors.d.ts +27 -0
  56. package/dist/errors.d.ts.map +1 -0
  57. package/dist/errors.js +113 -0
  58. package/dist/finance/api.d.ts +39 -0
  59. package/dist/finance/api.d.ts.map +1 -0
  60. package/dist/finance/api.js +165 -0
  61. package/dist/finance/paths.d.ts +6 -0
  62. package/dist/finance/paths.d.ts.map +1 -0
  63. package/dist/finance/paths.js +16 -0
  64. package/dist/http/multipart.d.ts +10 -0
  65. package/dist/http/multipart.d.ts.map +1 -0
  66. package/dist/http/multipart.js +1 -0
  67. package/dist/http/query.d.ts +5 -0
  68. package/dist/http/query.d.ts.map +1 -0
  69. package/dist/http/query.js +24 -0
  70. package/dist/http/response.d.ts +9 -0
  71. package/dist/http/response.d.ts.map +1 -0
  72. package/dist/http/response.js +37 -0
  73. package/dist/http/signals.d.ts +5 -0
  74. package/dist/http/signals.d.ts.map +1 -0
  75. package/dist/http/signals.js +26 -0
  76. package/dist/http.d.ts +14 -0
  77. package/dist/http.d.ts.map +1 -0
  78. package/dist/http.js +180 -0
  79. package/dist/index.d.ts +61 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +41 -0
  82. package/dist/inventory/api.d.ts +26 -0
  83. package/dist/inventory/api.d.ts.map +1 -0
  84. package/dist/inventory/api.js +51 -0
  85. package/dist/inventory/paths.d.ts +2 -0
  86. package/dist/inventory/paths.d.ts.map +1 -0
  87. package/dist/inventory/paths.js +4 -0
  88. package/dist/invoices/api.d.ts +23 -0
  89. package/dist/invoices/api.d.ts.map +1 -0
  90. package/dist/invoices/api.js +52 -0
  91. package/dist/labels/api.d.ts +45 -0
  92. package/dist/labels/api.d.ts.map +1 -0
  93. package/dist/labels/api.js +89 -0
  94. package/dist/labels/paths.d.ts +3 -0
  95. package/dist/labels/paths.d.ts.map +1 -0
  96. package/dist/labels/paths.js +7 -0
  97. package/dist/logger.d.ts +6 -0
  98. package/dist/logger.d.ts.map +1 -0
  99. package/dist/logger.js +47 -0
  100. package/dist/orders/api.d.ts +68 -0
  101. package/dist/orders/api.d.ts.map +1 -0
  102. package/dist/orders/api.js +69 -0
  103. package/dist/orders/created-by.d.ts +4 -0
  104. package/dist/orders/created-by.d.ts.map +1 -0
  105. package/dist/orders/created-by.js +9 -0
  106. package/dist/orders/mutations.d.ts +31 -0
  107. package/dist/orders/mutations.d.ts.map +1 -0
  108. package/dist/orders/mutations.js +139 -0
  109. package/dist/orders/paths.d.ts +4 -0
  110. package/dist/orders/paths.d.ts.map +1 -0
  111. package/dist/orders/paths.js +12 -0
  112. package/dist/orders/read.d.ts +35 -0
  113. package/dist/orders/read.d.ts.map +1 -0
  114. package/dist/orders/read.js +140 -0
  115. package/dist/orders/split.d.ts +17 -0
  116. package/dist/orders/split.d.ts.map +1 -0
  117. package/dist/orders/split.js +45 -0
  118. package/dist/orders/status.d.ts +9 -0
  119. package/dist/orders/status.d.ts.map +1 -0
  120. package/dist/orders/status.js +20 -0
  121. package/dist/orders/stream.d.ts +19 -0
  122. package/dist/orders/stream.d.ts.map +1 -0
  123. package/dist/orders/stream.js +26 -0
  124. package/dist/orders/warranty.d.ts +24 -0
  125. package/dist/orders/warranty.d.ts.map +1 -0
  126. package/dist/orders/warranty.js +30 -0
  127. package/dist/pagination.d.ts +23 -0
  128. package/dist/pagination.d.ts.map +1 -0
  129. package/dist/pagination.js +34 -0
  130. package/dist/products/api.d.ts +52 -0
  131. package/dist/products/api.d.ts.map +1 -0
  132. package/dist/products/api.js +222 -0
  133. package/dist/products/builder.d.ts +22 -0
  134. package/dist/products/builder.d.ts.map +1 -0
  135. package/dist/products/builder.js +89 -0
  136. package/dist/products/paths.d.ts +7 -0
  137. package/dist/products/paths.d.ts.map +1 -0
  138. package/dist/products/paths.js +20 -0
  139. package/dist/qna/api.d.ts +32 -0
  140. package/dist/qna/api.d.ts.map +1 -0
  141. package/dist/qna/api.js +78 -0
  142. package/dist/qna/paths.d.ts +5 -0
  143. package/dist/qna/paths.d.ts.map +1 -0
  144. package/dist/qna/paths.js +13 -0
  145. package/dist/rate-limit/governor.d.ts +11 -0
  146. package/dist/rate-limit/governor.d.ts.map +1 -0
  147. package/dist/rate-limit/governor.js +25 -0
  148. package/dist/rate-limit/groups.d.ts +15 -0
  149. package/dist/rate-limit/groups.d.ts.map +1 -0
  150. package/dist/rate-limit/groups.js +14 -0
  151. package/dist/reference/addresses-cache.d.ts +13 -0
  152. package/dist/reference/addresses-cache.d.ts.map +1 -0
  153. package/dist/reference/addresses-cache.js +33 -0
  154. package/dist/reference/api.d.ts +48 -0
  155. package/dist/reference/api.d.ts.map +1 -0
  156. package/dist/reference/api.js +215 -0
  157. package/dist/reference/paths.d.ts +12 -0
  158. package/dist/reference/paths.d.ts.map +1 -0
  159. package/dist/reference/paths.js +34 -0
  160. package/dist/retry.d.ts +6 -0
  161. package/dist/retry.d.ts.map +1 -0
  162. package/dist/retry.js +37 -0
  163. package/dist/testing/fixtures/batch-partial-fail.json +12 -0
  164. package/dist/testing/fixtures/shipment-package.json +5 -0
  165. package/dist/testing/fixtures/webhook-payload.json +4 -0
  166. package/dist/testing/fixtures.d.ts +23 -0
  167. package/dist/testing/fixtures.d.ts.map +1 -0
  168. package/dist/testing/fixtures.js +9 -0
  169. package/dist/testing/guard.d.ts +13 -0
  170. package/dist/testing/guard.d.ts.map +1 -0
  171. package/dist/testing/guard.js +32 -0
  172. package/dist/testing/index.d.ts +6 -0
  173. package/dist/testing/index.d.ts.map +1 -0
  174. package/dist/testing/index.js +4 -0
  175. package/dist/testing/paths.d.ts +5 -0
  176. package/dist/testing/paths.d.ts.map +1 -0
  177. package/dist/testing/paths.js +14 -0
  178. package/dist/testing/stage-helpers.d.ts +24 -0
  179. package/dist/testing/stage-helpers.d.ts.map +1 -0
  180. package/dist/testing/stage-helpers.js +64 -0
  181. package/dist/testing/types.d.ts +66 -0
  182. package/dist/testing/types.d.ts.map +1 -0
  183. package/dist/testing/types.js +1 -0
  184. package/dist/types/claims.d.ts +132 -0
  185. package/dist/types/claims.d.ts.map +1 -0
  186. package/dist/types/claims.js +1 -0
  187. package/dist/types/compensation.d.ts +32 -0
  188. package/dist/types/compensation.d.ts.map +1 -0
  189. package/dist/types/compensation.js +20 -0
  190. package/dist/types/finance.d.ts +98 -0
  191. package/dist/types/finance.d.ts.map +1 -0
  192. package/dist/types/finance.js +1 -0
  193. package/dist/types/inventory.d.ts +12 -0
  194. package/dist/types/inventory.d.ts.map +1 -0
  195. package/dist/types/inventory.js +1 -0
  196. package/dist/types/labels.d.ts +19 -0
  197. package/dist/types/labels.d.ts.map +1 -0
  198. package/dist/types/labels.js +1 -0
  199. package/dist/types/orders.d.ts +276 -0
  200. package/dist/types/orders.d.ts.map +1 -0
  201. package/dist/types/orders.js +1 -0
  202. package/dist/types/products.d.ts +99 -0
  203. package/dist/types/products.d.ts.map +1 -0
  204. package/dist/types/products.js +1 -0
  205. package/dist/types/qna.d.ts +51 -0
  206. package/dist/types/qna.d.ts.map +1 -0
  207. package/dist/types/qna.js +6 -0
  208. package/dist/types/reference.d.ts +78 -0
  209. package/dist/types/reference.d.ts.map +1 -0
  210. package/dist/types/reference.js +1 -0
  211. package/dist/types/webhooks.d.ts +47 -0
  212. package/dist/types/webhooks.d.ts.map +1 -0
  213. package/dist/types/webhooks.js +19 -0
  214. package/dist/types.d.ts +73 -0
  215. package/dist/types.d.ts.map +1 -0
  216. package/dist/types.js +1 -0
  217. package/dist/validate.d.ts +9 -0
  218. package/dist/validate.d.ts.map +1 -0
  219. package/dist/validate.js +70 -0
  220. package/dist/video/api.d.ts +46 -0
  221. package/dist/video/api.d.ts.map +1 -0
  222. package/dist/video/api.js +95 -0
  223. package/dist/video/paths.d.ts +3 -0
  224. package/dist/video/paths.d.ts.map +1 -0
  225. package/dist/video/paths.js +7 -0
  226. package/dist/webhooks/inbound.d.ts +33 -0
  227. package/dist/webhooks/inbound.d.ts.map +1 -0
  228. package/dist/webhooks/inbound.js +113 -0
  229. package/dist/webhooks/management.d.ts +49 -0
  230. package/dist/webhooks/management.d.ts.map +1 -0
  231. package/dist/webhooks/management.js +89 -0
  232. package/dist/webhooks/paths.d.ts +5 -0
  233. package/dist/webhooks/paths.d.ts.map +1 -0
  234. package/dist/webhooks/paths.js +13 -0
  235. package/package.json +47 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/products/paths.ts"],"names":[],"mappings":"AAIA,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAErF"}
@@ -0,0 +1,20 @@
1
+ import { TRENDYOL_INTEGRATION_PREFIX } from "../constants.js";
2
+ const PRODUCT_SELLER_PREFIX = `${TRENDYOL_INTEGRATION_PREFIX}/product/sellers`;
3
+ export function productSellerBase(sellerId) {
4
+ return `${PRODUCT_SELLER_PREFIX}/${sellerId}`;
5
+ }
6
+ export function productV2Path(sellerId) {
7
+ return `${productSellerBase(sellerId)}/v2/products`;
8
+ }
9
+ export function productsBase(sellerId) {
10
+ return `${productSellerBase(sellerId)}/products`;
11
+ }
12
+ export function productByBarcodePath(sellerId, barcode) {
13
+ return `${productSellerBase(sellerId)}/product/${encodeURIComponent(barcode)}`;
14
+ }
15
+ export function batchRequestPath(sellerId, batchRequestId) {
16
+ return `${productsBase(sellerId)}/batch-requests/${encodeURIComponent(batchRequestId)}`;
17
+ }
18
+ export function updateAuditsPath(sellerId, contentId) {
19
+ return `${productsBase(sellerId)}/${contentId}/update-audits`;
20
+ }
@@ -0,0 +1,32 @@
1
+ import type { TrendyolHttpClient } from "../http.js";
2
+ import type { TrendyolConfig, TrendyolResult } from "../types.js";
3
+ import type { AnswerQuestionBody, GetQuestionsParams, Question, QuestionsListResponse } from "../types/qna.js";
4
+ type QnaOptions = {
5
+ signal?: AbortSignal;
6
+ };
7
+ /**
8
+ * Musteri soru-cevap (QnA) API.
9
+ * Base: /integration/qna/sellers/{sellerId}
10
+ */
11
+ export declare class QnaApi {
12
+ private readonly http;
13
+ private readonly config;
14
+ constructor(http: TrendyolHttpClient, config: TrendyolConfig);
15
+ /**
16
+ * Sorulari filtreler ve sayfali listeler (size max 50).
17
+ * GET .../questions/filter
18
+ */
19
+ getQuestions(params?: GetQuestionsParams): Promise<TrendyolResult<QuestionsListResponse>>;
20
+ /**
21
+ * Tek soru detayi.
22
+ * GET .../questions/{id}
23
+ */
24
+ getQuestion(questionId: number | string, options?: QnaOptions): Promise<TrendyolResult<Question>>;
25
+ /**
26
+ * Soruyu cevaplar (mutasyon — blind retry yok).
27
+ * POST .../questions/{id}/answers
28
+ */
29
+ answerQuestion(questionId: number | string, body: AnswerQuestionBody, options?: QnaOptions): Promise<TrendyolResult<string>>;
30
+ }
31
+ export {};
32
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/qna/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,QAAQ,EACR,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AAQzB,KAAK,UAAU,GAAG;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AAiB3C;;;GAGG;AACH,qBAAa,MAAM;IAEf,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,cAAc;IAGzC;;;OAGG;IACH,YAAY,CACV,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;IAkBjD;;;OAGG;IACH,WAAW,CACT,UAAU,EAAE,MAAM,GAAG,MAAM,EAC3B,OAAO,CAAC,EAAE,UAAU,GACnB,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IASpC;;;OAGG;IACH,cAAc,CACZ,UAAU,EAAE,MAAM,GAAG,MAAM,EAC3B,IAAI,EAAE,kBAAkB,EACxB,OAAO,CAAC,EAAE,UAAU,GACnB,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;CASnC"}
@@ -0,0 +1,78 @@
1
+ import { validatePageSize } from "../validate.js";
2
+ import { questionAnswersPath, questionByIdPath, questionsFilterPath, } from "./paths.js";
3
+ function buildQuestionsQuery(params) {
4
+ const query = {};
5
+ if (params.barcode !== undefined)
6
+ query.barcode = params.barcode;
7
+ if (params.startDate !== undefined)
8
+ query.startDate = params.startDate;
9
+ if (params.endDate !== undefined)
10
+ query.endDate = params.endDate;
11
+ if (params.status !== undefined)
12
+ query.status = params.status;
13
+ if (params.orderByField !== undefined)
14
+ query.orderByField = params.orderByField;
15
+ if (params.orderByDirection !== undefined) {
16
+ query.orderByDirection = params.orderByDirection;
17
+ }
18
+ if (params.page !== undefined)
19
+ query.page = params.page;
20
+ if (params.size !== undefined)
21
+ query.size = params.size;
22
+ return query;
23
+ }
24
+ /**
25
+ * Musteri soru-cevap (QnA) API.
26
+ * Base: /integration/qna/sellers/{sellerId}
27
+ */
28
+ export class QnaApi {
29
+ http;
30
+ config;
31
+ constructor(http, config) {
32
+ this.http = http;
33
+ this.config = config;
34
+ }
35
+ /**
36
+ * Sorulari filtreler ve sayfali listeler (size max 50).
37
+ * GET .../questions/filter
38
+ */
39
+ getQuestions(params) {
40
+ const size = params?.size ?? 10;
41
+ const pageValidation = validatePageSize("qna", size);
42
+ if (!pageValidation.ok) {
43
+ return Promise.resolve(pageValidation);
44
+ }
45
+ return this.http.requestJson({
46
+ method: "GET",
47
+ path: questionsFilterPath(this.config.sellerId),
48
+ query: buildQuestionsQuery({ ...params, size }),
49
+ retryPolicy: "safe",
50
+ signal: params?.signal,
51
+ });
52
+ }
53
+ /**
54
+ * Tek soru detayi.
55
+ * GET .../questions/{id}
56
+ */
57
+ getQuestion(questionId, options) {
58
+ return this.http.requestJson({
59
+ method: "GET",
60
+ path: questionByIdPath(this.config.sellerId, questionId),
61
+ retryPolicy: "safe",
62
+ signal: options?.signal,
63
+ });
64
+ }
65
+ /**
66
+ * Soruyu cevaplar (mutasyon — blind retry yok).
67
+ * POST .../questions/{id}/answers
68
+ */
69
+ answerQuestion(questionId, body, options) {
70
+ return this.http.requestJson({
71
+ method: "POST",
72
+ path: questionAnswersPath(this.config.sellerId, questionId),
73
+ body,
74
+ retryPolicy: "none",
75
+ signal: options?.signal,
76
+ });
77
+ }
78
+ }
@@ -0,0 +1,5 @@
1
+ export declare function qnaSellerBase(sellerId: string): string;
2
+ export declare function questionsFilterPath(sellerId: string): string;
3
+ export declare function questionByIdPath(sellerId: string, questionId: number | string): string;
4
+ export declare function questionAnswersPath(sellerId: string, questionId: number | string): string;
5
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/qna/paths.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEtF;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GAAG,MAAM,GAC1B,MAAM,CAER"}
@@ -0,0 +1,13 @@
1
+ import { TRENDYOL_INTEGRATION_PREFIX } from "../constants.js";
2
+ export function qnaSellerBase(sellerId) {
3
+ return `${TRENDYOL_INTEGRATION_PREFIX}/qna/sellers/${sellerId}`;
4
+ }
5
+ export function questionsFilterPath(sellerId) {
6
+ return `${qnaSellerBase(sellerId)}/questions/filter`;
7
+ }
8
+ export function questionByIdPath(sellerId, questionId) {
9
+ return `${qnaSellerBase(sellerId)}/questions/${questionId}`;
10
+ }
11
+ export function questionAnswersPath(sellerId, questionId) {
12
+ return `${questionByIdPath(sellerId, questionId)}/answers`;
13
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Opsiyonel client-side throttle — varsayilan kapali (enableClientSideLimiter: false).
3
+ * SDK istekleri reddetmez; proaktif gecikme uygular.
4
+ */
5
+ export declare class RateLimitGovernor {
6
+ private readonly minIntervalMs;
7
+ private readonly lastRequestAt;
8
+ constructor(minIntervalMs?: number);
9
+ acquire(path: string): Promise<void>;
10
+ }
11
+ //# sourceMappingURL=governor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governor.d.ts","sourceRoot":"","sources":["../../src/rate-limit/governor.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,qBAAa,iBAAiB;IAGhB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;gBAE9B,aAAa,SAAI;IAExC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAY3C"}
@@ -0,0 +1,25 @@
1
+ import { resolveRateLimitGroup } from "./groups.js";
2
+ /**
3
+ * Opsiyonel client-side throttle — varsayilan kapali (enableClientSideLimiter: false).
4
+ * SDK istekleri reddetmez; proaktif gecikme uygular.
5
+ */
6
+ export class RateLimitGovernor {
7
+ minIntervalMs;
8
+ lastRequestAt = new Map();
9
+ constructor(minIntervalMs = 0) {
10
+ this.minIntervalMs = minIntervalMs;
11
+ }
12
+ async acquire(path) {
13
+ if (this.minIntervalMs <= 0)
14
+ return;
15
+ const group = resolveRateLimitGroup(path);
16
+ const key = group;
17
+ const now = Date.now();
18
+ const last = this.lastRequestAt.get(key) ?? 0;
19
+ const wait = this.minIntervalMs - (now - last);
20
+ if (wait > 0) {
21
+ await new Promise((resolve) => setTimeout(resolve, wait));
22
+ }
23
+ this.lastRequestAt.set(key, Date.now());
24
+ }
25
+ }
@@ -0,0 +1,15 @@
1
+ /** Eyl 2026 grup profilleri — config ile override edilir (Faz 0 iskelet). */
2
+ export declare const RATE_LIMIT_GROUPS: {
3
+ readonly product: {
4
+ readonly burstPer10s: 50;
5
+ };
6
+ readonly order: {
7
+ readonly burstPer10s: 50;
8
+ };
9
+ readonly inventory: {
10
+ readonly burstPer10s: 50;
11
+ };
12
+ };
13
+ export type RateLimitGroup = keyof typeof RATE_LIMIT_GROUPS;
14
+ export declare function resolveRateLimitGroup(path: string): RateLimitGroup;
15
+ //# sourceMappingURL=groups.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../src/rate-limit/groups.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB;;;;;;;;;;CAIpB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAE5D,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAMlE"}
@@ -0,0 +1,14 @@
1
+ /** Eyl 2026 grup profilleri — config ile override edilir (Faz 0 iskelet). */
2
+ export const RATE_LIMIT_GROUPS = {
3
+ product: { burstPer10s: 50 },
4
+ order: { burstPer10s: 50 },
5
+ inventory: { burstPer10s: 50 },
6
+ };
7
+ export function resolveRateLimitGroup(path) {
8
+ if (path.includes("/order"))
9
+ return "order";
10
+ if (path.includes("/inventory") || path.includes("/price-and-inventory")) {
11
+ return "inventory";
12
+ }
13
+ return "product";
14
+ }
@@ -0,0 +1,13 @@
1
+ /** Resmi limit: 1 istek/saat — instance-scoped TTL cache. */
2
+ export declare const SUPPLIER_ADDRESSES_CACHE_TTL_MS = 3600000;
3
+ /**
4
+ * Satıcı adres cache — yalnizca TrendyolClient instance icinde.
5
+ * Modul-level singleton yasak (coklu satıcı veri sizintisi onlemi).
6
+ */
7
+ export declare class SupplierAddressesCache {
8
+ private readonly entries;
9
+ get<T>(sellerId: string): T | undefined;
10
+ set<T>(sellerId: string, data: T): void;
11
+ clear(sellerId?: string): void;
12
+ }
13
+ //# sourceMappingURL=addresses-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addresses-cache.d.ts","sourceRoot":"","sources":["../../src/reference/addresses-cache.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,eAAO,MAAM,+BAA+B,UAAY,CAAC;AAOzD;;;GAGG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;IAElE,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAYvC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI;IAOvC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;CAO/B"}
@@ -0,0 +1,33 @@
1
+ /** Resmi limit: 1 istek/saat — instance-scoped TTL cache. */
2
+ export const SUPPLIER_ADDRESSES_CACHE_TTL_MS = 3_600_000;
3
+ /**
4
+ * Satıcı adres cache — yalnizca TrendyolClient instance icinde.
5
+ * Modul-level singleton yasak (coklu satıcı veri sizintisi onlemi).
6
+ */
7
+ export class SupplierAddressesCache {
8
+ entries = new Map();
9
+ get(sellerId) {
10
+ const entry = this.entries.get(sellerId);
11
+ if (!entry) {
12
+ return undefined;
13
+ }
14
+ if (Date.now() > entry.expiresAt) {
15
+ this.entries.delete(sellerId);
16
+ return undefined;
17
+ }
18
+ return entry.data;
19
+ }
20
+ set(sellerId, data) {
21
+ this.entries.set(sellerId, {
22
+ data,
23
+ expiresAt: Date.now() + SUPPLIER_ADDRESSES_CACHE_TTL_MS,
24
+ });
25
+ }
26
+ clear(sellerId) {
27
+ if (sellerId === undefined) {
28
+ this.entries.clear();
29
+ return;
30
+ }
31
+ this.entries.delete(sellerId);
32
+ }
33
+ }
@@ -0,0 +1,48 @@
1
+ import type { TrendyolHttpClient } from "../http.js";
2
+ import type { TrendyolConfig, CategoryTreeResponse, TrendyolResult } from "../types.js";
3
+ import type { BrandsListResponse, CargoProvider, CategoryAttributeValuesResponse, CategoryAttributesResponse, CreateBrandParams, GeoItem, GetBrandsByNameParams, GetBrandsParams, SupplierAddress } from "../types/reference.js";
4
+ type ReferenceOptions = {
5
+ signal?: AbortSignal;
6
+ };
7
+ type GetSuppliersAddressesOptions = ReferenceOptions & {
8
+ /** Cache'i atla ve API'den taze cek. */
9
+ bypassCache?: boolean;
10
+ };
11
+ /**
12
+ * Referans API — marka, kategori, adres, kargo, geo.
13
+ */
14
+ export declare class ReferenceApi {
15
+ private readonly http;
16
+ private readonly config;
17
+ private readonly addressesCache;
18
+ constructor(http: TrendyolHttpClient, config: TrendyolConfig);
19
+ /** GET /product/brands — min 1000/sayfa onerilir. */
20
+ getBrands(params?: GetBrandsParams, options?: ReferenceOptions): Promise<TrendyolResult<BrandsListResponse>>;
21
+ /** GET /product/brands/by-name — case-sensitive arama. */
22
+ getBrandsByName(params: GetBrandsByNameParams, options?: ReferenceOptions): Promise<TrendyolResult<BrandsListResponse>>;
23
+ /** POST /product/sellers/{sellerId}/brands — multipart: name + 1–3 gorsel. */
24
+ createBrand(params: CreateBrandParams, options?: ReferenceOptions): Promise<TrendyolResult<unknown>>;
25
+ /** GET /product/product-categories — testConnection canonical endpoint. */
26
+ getCategoryTree(options?: ReferenceOptions): Promise<TrendyolResult<CategoryTreeResponse>>;
27
+ getCategoryAttributes(categoryId: number | string, options?: ReferenceOptions): Promise<TrendyolResult<CategoryAttributesResponse>>;
28
+ getCategoryAttributeValues(categoryId: number | string, attributeId: number | string, options?: ReferenceOptions): Promise<TrendyolResult<CategoryAttributeValuesResponse>>;
29
+ /**
30
+ * GET /sellers/{sellerId}/addresses
31
+ *
32
+ * Resmi limit 1 req/saat — instance-scoped TTL cache (1 saat).
33
+ */
34
+ getSuppliersAddresses(options?: GetSuppliersAddressesOptions): Promise<TrendyolResult<SupplierAddress[]>>;
35
+ /** GET /product/lookup/cargo-providers — storeFrontCode header (config varsayilan TR). */
36
+ getCargoProviders(options?: ReferenceOptions): Promise<TrendyolResult<CargoProvider[]>>;
37
+ /**
38
+ * @deprecated V1 dokuman alias — {@link getCargoProviders} tercih edin.
39
+ */
40
+ getProviders(options?: ReferenceOptions): Promise<TrendyolResult<CargoProvider[]>>;
41
+ getTurkeyCities(options?: ReferenceOptions): Promise<TrendyolResult<GeoItem[]>>;
42
+ getTurkeyDistricts(cityId: number | string, options?: ReferenceOptions): Promise<TrendyolResult<GeoItem[]>>;
43
+ getTurkeyNeighborhoods(districtId: number | string, options?: ReferenceOptions): Promise<TrendyolResult<GeoItem[]>>;
44
+ /** Test ve diagnostik — cache instance'a ozel. */
45
+ clearAddressesCache(sellerId?: string): void;
46
+ }
47
+ export {};
48
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/reference/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,KAAK,EAEV,kBAAkB,EAClB,aAAa,EAEb,+BAA+B,EAC/B,0BAA0B,EAC1B,iBAAiB,EACjB,OAAO,EAEP,qBAAqB,EACrB,eAAe,EACf,eAAe,EAEhB,MAAM,uBAAuB,CAAC;AAiB/B,KAAK,gBAAgB,GAAG;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AAEjD,KAAK,4BAA4B,GAAG,gBAAgB,GAAG;IACrD,wCAAwC;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AA2BF;;GAEG;AACH,qBAAa,YAAY;IAIrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgC;gBAG5C,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,cAAc;IAGzC,qDAAqD;IACrD,SAAS,CACP,MAAM,CAAC,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IAsB9C,0DAA0D;IAC1D,eAAe,CACb,MAAM,EAAE,qBAAqB,EAC7B,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IAc9C,8EAA8E;IAC9E,WAAW,CACT,MAAM,EAAE,iBAAiB,EACzB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IA0BnC,2EAA2E;IAC3E,eAAe,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;IAS1F,qBAAqB,CACnB,UAAU,EAAE,MAAM,GAAG,MAAM,EAC3B,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,cAAc,CAAC,0BAA0B,CAAC,CAAC;IAStD,0BAA0B,CACxB,UAAU,EAAE,MAAM,GAAG,MAAM,EAC3B,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,cAAc,CAAC,+BAA+B,CAAC,CAAC;IAS3D;;;;OAIG;IACG,qBAAqB,CACzB,OAAO,CAAC,EAAE,4BAA4B,GACrC,OAAO,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC;IA0B7C,0FAA0F;IAC1F,iBAAiB,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC;IAgBvF;;OAEG;IACH,YAAY,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC;IAIlF,eAAe,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;IAgB/E,kBAAkB,CAChB,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;IAgBrC,sBAAsB,CACpB,UAAU,EAAE,MAAM,GAAG,MAAM,EAC3B,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;IAgBrC,kDAAkD;IAClD,mBAAmB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;CAG7C"}
@@ -0,0 +1,215 @@
1
+ import { validatePageSize } from "../validate.js";
2
+ import { SupplierAddressesCache } from "./addresses-cache.js";
3
+ import { cargoProvidersPath, categoryAttributeValuesPath, categoryAttributesPath, PRODUCT_CATEGORIES_PATH, productBrandsByNamePath, productBrandsPath, sellerAddressesPath, sellerBrandsPath, turkeyCitiesPath, turkeyDistrictsPath, turkeyNeighborhoodsPath, } from "./paths.js";
4
+ function normalizeBrands(response) {
5
+ return response.brands ?? response.content ?? [];
6
+ }
7
+ function normalizeAddresses(response) {
8
+ if (Array.isArray(response)) {
9
+ return response;
10
+ }
11
+ return response.addresses ?? [];
12
+ }
13
+ function normalizeCargoProviders(response) {
14
+ if (Array.isArray(response)) {
15
+ return response;
16
+ }
17
+ return response.cargoProviders ?? [];
18
+ }
19
+ function normalizeGeoList(response) {
20
+ if (Array.isArray(response)) {
21
+ return response;
22
+ }
23
+ return response.content ?? [];
24
+ }
25
+ /**
26
+ * Referans API — marka, kategori, adres, kargo, geo.
27
+ */
28
+ export class ReferenceApi {
29
+ http;
30
+ config;
31
+ addressesCache = new SupplierAddressesCache();
32
+ constructor(http, config) {
33
+ this.http = http;
34
+ this.config = config;
35
+ }
36
+ /** GET /product/brands — min 1000/sayfa onerilir. */
37
+ getBrands(params, options) {
38
+ const size = params?.size ?? 1000;
39
+ const pageValidation = validatePageSize("brands", size);
40
+ if (!pageValidation.ok) {
41
+ return Promise.resolve(pageValidation);
42
+ }
43
+ const query = {};
44
+ if (params?.page !== undefined) {
45
+ query.page = params.page;
46
+ }
47
+ query.size = size;
48
+ return this.http.requestJson({
49
+ method: "GET",
50
+ path: productBrandsPath(),
51
+ query,
52
+ retryPolicy: "safe",
53
+ signal: options?.signal,
54
+ });
55
+ }
56
+ /** GET /product/brands/by-name — case-sensitive arama. */
57
+ getBrandsByName(params, options) {
58
+ if (!params.name.trim()) {
59
+ return Promise.resolve({ ok: false, reason: "name bos olamaz." });
60
+ }
61
+ return this.http.requestJson({
62
+ method: "GET",
63
+ path: productBrandsByNamePath(),
64
+ query: { name: params.name },
65
+ retryPolicy: "safe",
66
+ signal: options?.signal,
67
+ });
68
+ }
69
+ /** POST /product/sellers/{sellerId}/brands — multipart: name + 1–3 gorsel. */
70
+ createBrand(params, options) {
71
+ if (!params.name.trim()) {
72
+ return Promise.resolve({ ok: false, reason: "name bos olamaz." });
73
+ }
74
+ if (params.images.length < 1 || params.images.length > 3) {
75
+ return Promise.resolve({
76
+ ok: false,
77
+ reason: "createBrand icin 1 ile 3 arasi gorsel gerekir.",
78
+ });
79
+ }
80
+ const form = new FormData();
81
+ form.append("name", params.name);
82
+ for (const [index, image] of params.images.entries()) {
83
+ form.append("images", image, `brand-${index}.jpg`);
84
+ }
85
+ return this.http.requestMultipart({
86
+ method: "POST",
87
+ path: sellerBrandsPath(this.config.sellerId),
88
+ formData: form,
89
+ retryPolicy: "none",
90
+ signal: options?.signal,
91
+ });
92
+ }
93
+ /** GET /product/product-categories — testConnection canonical endpoint. */
94
+ getCategoryTree(options) {
95
+ return this.http.requestJson({
96
+ method: "GET",
97
+ path: PRODUCT_CATEGORIES_PATH,
98
+ retryPolicy: "safe",
99
+ signal: options?.signal,
100
+ });
101
+ }
102
+ getCategoryAttributes(categoryId, options) {
103
+ return this.http.requestJson({
104
+ method: "GET",
105
+ path: categoryAttributesPath(categoryId),
106
+ retryPolicy: "safe",
107
+ signal: options?.signal,
108
+ });
109
+ }
110
+ getCategoryAttributeValues(categoryId, attributeId, options) {
111
+ return this.http.requestJson({
112
+ method: "GET",
113
+ path: categoryAttributeValuesPath(categoryId, attributeId),
114
+ retryPolicy: "safe",
115
+ signal: options?.signal,
116
+ });
117
+ }
118
+ /**
119
+ * GET /sellers/{sellerId}/addresses
120
+ *
121
+ * Resmi limit 1 req/saat — instance-scoped TTL cache (1 saat).
122
+ */
123
+ async getSuppliersAddresses(options) {
124
+ const sellerId = this.config.sellerId;
125
+ if (!options?.bypassCache) {
126
+ const cached = this.addressesCache.get(sellerId);
127
+ if (cached) {
128
+ return { ok: true, data: cached };
129
+ }
130
+ }
131
+ const result = await this.http.requestJson({
132
+ method: "GET",
133
+ path: sellerAddressesPath(sellerId),
134
+ retryPolicy: "safe",
135
+ signal: options?.signal,
136
+ });
137
+ if (!result.ok) {
138
+ return result;
139
+ }
140
+ const addresses = normalizeAddresses(result.data);
141
+ this.addressesCache.set(sellerId, addresses);
142
+ return { ok: true, data: addresses };
143
+ }
144
+ /** GET /product/lookup/cargo-providers — storeFrontCode header (config varsayilan TR). */
145
+ getCargoProviders(options) {
146
+ return this.http
147
+ .requestJson({
148
+ method: "GET",
149
+ path: cargoProvidersPath(),
150
+ retryPolicy: "safe",
151
+ signal: options?.signal,
152
+ })
153
+ .then((result) => {
154
+ if (!result.ok) {
155
+ return result;
156
+ }
157
+ return { ok: true, data: normalizeCargoProviders(result.data) };
158
+ });
159
+ }
160
+ /**
161
+ * @deprecated V1 dokuman alias — {@link getCargoProviders} tercih edin.
162
+ */
163
+ getProviders(options) {
164
+ return this.getCargoProviders(options);
165
+ }
166
+ getTurkeyCities(options) {
167
+ return this.http
168
+ .requestJson({
169
+ method: "GET",
170
+ path: turkeyCitiesPath(),
171
+ retryPolicy: "safe",
172
+ signal: options?.signal,
173
+ })
174
+ .then((result) => {
175
+ if (!result.ok) {
176
+ return result;
177
+ }
178
+ return { ok: true, data: normalizeGeoList(result.data) };
179
+ });
180
+ }
181
+ getTurkeyDistricts(cityId, options) {
182
+ return this.http
183
+ .requestJson({
184
+ method: "GET",
185
+ path: turkeyDistrictsPath(cityId),
186
+ retryPolicy: "safe",
187
+ signal: options?.signal,
188
+ })
189
+ .then((result) => {
190
+ if (!result.ok) {
191
+ return result;
192
+ }
193
+ return { ok: true, data: normalizeGeoList(result.data) };
194
+ });
195
+ }
196
+ getTurkeyNeighborhoods(districtId, options) {
197
+ return this.http
198
+ .requestJson({
199
+ method: "GET",
200
+ path: turkeyNeighborhoodsPath(districtId),
201
+ retryPolicy: "safe",
202
+ signal: options?.signal,
203
+ })
204
+ .then((result) => {
205
+ if (!result.ok) {
206
+ return result;
207
+ }
208
+ return { ok: true, data: normalizeGeoList(result.data) };
209
+ });
210
+ }
211
+ /** Test ve diagnostik — cache instance'a ozel. */
212
+ clearAddressesCache(sellerId) {
213
+ this.addressesCache.clear(sellerId);
214
+ }
215
+ }
@@ -0,0 +1,12 @@
1
+ export declare const PRODUCT_CATEGORIES_PATH = "/integration/product/product-categories";
2
+ export declare function productBrandsPath(): string;
3
+ export declare function productBrandsByNamePath(): string;
4
+ export declare function sellerBrandsPath(sellerId: string): string;
5
+ export declare function categoryAttributesPath(categoryId: number | string): string;
6
+ export declare function categoryAttributeValuesPath(categoryId: number | string, attributeId: number | string): string;
7
+ export declare function sellerAddressesPath(sellerId: string): string;
8
+ export declare function cargoProvidersPath(): string;
9
+ export declare function turkeyCitiesPath(): string;
10
+ export declare function turkeyDistrictsPath(cityId: number | string): string;
11
+ export declare function turkeyNeighborhoodsPath(districtId: number | string): string;
12
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/reference/paths.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,uBAAuB,4CAAyC,CAAC;AAE9E,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE1E;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,GAAG,MAAM,EAC3B,WAAW,EAAE,MAAM,GAAG,MAAM,GAC3B,MAAM,CAER;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE3E"}
@@ -0,0 +1,34 @@
1
+ import { TRENDYOL_INTEGRATION_PREFIX } from "../constants.js";
2
+ const PRODUCT_PREFIX = `${TRENDYOL_INTEGRATION_PREFIX}/product`;
3
+ const REFERENCE_PREFIX = `${TRENDYOL_INTEGRATION_PREFIX}/reference`;
4
+ export const PRODUCT_CATEGORIES_PATH = `${PRODUCT_PREFIX}/product-categories`;
5
+ export function productBrandsPath() {
6
+ return `${PRODUCT_PREFIX}/brands`;
7
+ }
8
+ export function productBrandsByNamePath() {
9
+ return `${PRODUCT_PREFIX}/brands/by-name`;
10
+ }
11
+ export function sellerBrandsPath(sellerId) {
12
+ return `${PRODUCT_PREFIX}/sellers/${sellerId}/brands`;
13
+ }
14
+ export function categoryAttributesPath(categoryId) {
15
+ return `${PRODUCT_PREFIX}/categories/${categoryId}/attributes`;
16
+ }
17
+ export function categoryAttributeValuesPath(categoryId, attributeId) {
18
+ return `${PRODUCT_PREFIX}/categories/${categoryId}/attributes/${attributeId}/values`;
19
+ }
20
+ export function sellerAddressesPath(sellerId) {
21
+ return `${TRENDYOL_INTEGRATION_PREFIX}/sellers/${sellerId}/addresses`;
22
+ }
23
+ export function cargoProvidersPath() {
24
+ return `${PRODUCT_PREFIX}/lookup/cargo-providers`;
25
+ }
26
+ export function turkeyCitiesPath() {
27
+ return `${REFERENCE_PREFIX}/countries/TR/cities`;
28
+ }
29
+ export function turkeyDistrictsPath(cityId) {
30
+ return `${REFERENCE_PREFIX}/countries/TR/cities/${cityId}/districts`;
31
+ }
32
+ export function turkeyNeighborhoodsPath(districtId) {
33
+ return `${REFERENCE_PREFIX}/countries/TR/districts/${districtId}/neighborhoods`;
34
+ }
@@ -0,0 +1,6 @@
1
+ import type { TrendyolConfig } from "./types.js";
2
+ export declare function computeRetryDelayMs(config: TrendyolConfig, attempt: number, retryAfterHeader?: string | null, rateLimitResetHeader?: string | null): number;
3
+ export declare function sleep(ms: number): Promise<void>;
4
+ export declare function shouldRetryStatus(status: number, retryPolicy: "safe" | "none"): boolean;
5
+ export declare function shouldRetryError(error: unknown, retryPolicy: "safe" | "none"): boolean;
6
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,EAChC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,GACnC,MAAM,CAoBR;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/C;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,MAAM,GAC3B,OAAO,CAKT;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,MAAM,GAAG,MAAM,GAC3B,OAAO,CAKT"}