@hubcommerce/n11 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 (223) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/LICENSE +21 -0
  3. package/README.md +81 -0
  4. package/dist/categories/api.d.ts +12 -0
  5. package/dist/categories/api.d.ts.map +1 -0
  6. package/dist/categories/api.js +34 -0
  7. package/dist/client.d.ts +37 -0
  8. package/dist/client.d.ts.map +1 -0
  9. package/dist/client.js +70 -0
  10. package/dist/config.d.ts +9 -0
  11. package/dist/config.d.ts.map +1 -0
  12. package/dist/config.js +58 -0
  13. package/dist/connection.d.ts +5 -0
  14. package/dist/connection.d.ts.map +1 -0
  15. package/dist/connection.js +4 -0
  16. package/dist/constants/defaults.d.ts +16 -0
  17. package/dist/constants/defaults.d.ts.map +1 -0
  18. package/dist/constants/defaults.js +15 -0
  19. package/dist/constants/hosts.d.ts +9 -0
  20. package/dist/constants/hosts.d.ts.map +1 -0
  21. package/dist/constants/hosts.js +25 -0
  22. package/dist/constants/page-limits.d.ts +15 -0
  23. package/dist/constants/page-limits.d.ts.map +1 -0
  24. package/dist/constants/page-limits.js +14 -0
  25. package/dist/errors.d.ts +42 -0
  26. package/dist/errors.d.ts.map +1 -0
  27. package/dist/errors.js +162 -0
  28. package/dist/http/query.d.ts +2 -0
  29. package/dist/http/query.d.ts.map +1 -0
  30. package/dist/http/query.js +10 -0
  31. package/dist/http/response.d.ts +12 -0
  32. package/dist/http/response.d.ts.map +1 -0
  33. package/dist/http/response.js +43 -0
  34. package/dist/http/security.d.ts +6 -0
  35. package/dist/http/security.d.ts.map +1 -0
  36. package/dist/http/security.js +29 -0
  37. package/dist/http/signals.d.ts +5 -0
  38. package/dist/http/signals.d.ts.map +1 -0
  39. package/dist/http/signals.js +26 -0
  40. package/dist/http.d.ts +12 -0
  41. package/dist/http.d.ts.map +1 -0
  42. package/dist/http.js +143 -0
  43. package/dist/index.d.ts +47 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +37 -0
  46. package/dist/invoice/api.d.ts +14 -0
  47. package/dist/invoice/api.d.ts.map +1 -0
  48. package/dist/invoice/api.js +12 -0
  49. package/dist/invoice/parse.d.ts +3 -0
  50. package/dist/invoice/parse.d.ts.map +1 -0
  51. package/dist/invoice/parse.js +12 -0
  52. package/dist/invoice/send-link.d.ts +9 -0
  53. package/dist/invoice/send-link.d.ts.map +1 -0
  54. package/dist/invoice/send-link.js +16 -0
  55. package/dist/invoice/soap-body.d.ts +6 -0
  56. package/dist/invoice/soap-body.d.ts.map +1 -0
  57. package/dist/invoice/soap-body.js +23 -0
  58. package/dist/invoice/validate.d.ts +7 -0
  59. package/dist/invoice/validate.d.ts.map +1 -0
  60. package/dist/invoice/validate.js +73 -0
  61. package/dist/logger.d.ts +20 -0
  62. package/dist/logger.d.ts.map +1 -0
  63. package/dist/logger.js +61 -0
  64. package/dist/orders/api.d.ts +22 -0
  65. package/dist/orders/api.d.ts.map +1 -0
  66. package/dist/orders/api.js +40 -0
  67. package/dist/orders/date.d.ts +12 -0
  68. package/dist/orders/date.d.ts.map +1 -0
  69. package/dist/orders/date.js +21 -0
  70. package/dist/orders/labor-cost.d.ts +9 -0
  71. package/dist/orders/labor-cost.d.ts.map +1 -0
  72. package/dist/orders/labor-cost.js +23 -0
  73. package/dist/orders/list.d.ts +23 -0
  74. package/dist/orders/list.d.ts.map +1 -0
  75. package/dist/orders/list.js +76 -0
  76. package/dist/orders/paths.d.ts +7 -0
  77. package/dist/orders/paths.d.ts.map +1 -0
  78. package/dist/orders/paths.js +6 -0
  79. package/dist/orders/reconciler.d.ts +30 -0
  80. package/dist/orders/reconciler.d.ts.map +1 -0
  81. package/dist/orders/reconciler.js +38 -0
  82. package/dist/orders/shipping.d.ts +11 -0
  83. package/dist/orders/shipping.d.ts.map +1 -0
  84. package/dist/orders/shipping.js +57 -0
  85. package/dist/orders/update.d.ts +15 -0
  86. package/dist/orders/update.d.ts.map +1 -0
  87. package/dist/orders/update.js +25 -0
  88. package/dist/products/api.d.ts +21 -0
  89. package/dist/products/api.d.ts.map +1 -0
  90. package/dist/products/api.js +35 -0
  91. package/dist/products/builder.d.ts +18 -0
  92. package/dist/products/builder.d.ts.map +1 -0
  93. package/dist/products/builder.js +138 -0
  94. package/dist/products/paths.d.ts +6 -0
  95. package/dist/products/paths.d.ts.map +1 -0
  96. package/dist/products/paths.js +5 -0
  97. package/dist/products/query.d.ts +9 -0
  98. package/dist/products/query.d.ts.map +1 -0
  99. package/dist/products/query.js +49 -0
  100. package/dist/products/tasks.d.ts +12 -0
  101. package/dist/products/tasks.d.ts.map +1 -0
  102. package/dist/products/tasks.js +49 -0
  103. package/dist/qna/answer.d.ts +10 -0
  104. package/dist/qna/answer.d.ts.map +1 -0
  105. package/dist/qna/answer.js +23 -0
  106. package/dist/qna/api.d.ts +17 -0
  107. package/dist/qna/api.d.ts.map +1 -0
  108. package/dist/qna/api.js +20 -0
  109. package/dist/qna/detail.d.ts +9 -0
  110. package/dist/qna/detail.d.ts.map +1 -0
  111. package/dist/qna/detail.js +18 -0
  112. package/dist/qna/list.d.ts +9 -0
  113. package/dist/qna/list.d.ts.map +1 -0
  114. package/dist/qna/list.js +16 -0
  115. package/dist/qna/parse.d.ts +6 -0
  116. package/dist/qna/parse.d.ts.map +1 -0
  117. package/dist/qna/parse.js +65 -0
  118. package/dist/qna/soap-body.d.ts +14 -0
  119. package/dist/qna/soap-body.d.ts.map +1 -0
  120. package/dist/qna/soap-body.js +48 -0
  121. package/dist/qna/validate.d.ts +7 -0
  122. package/dist/qna/validate.d.ts.map +1 -0
  123. package/dist/qna/validate.js +75 -0
  124. package/dist/rate-limit/governor.d.ts +8 -0
  125. package/dist/rate-limit/governor.d.ts.map +1 -0
  126. package/dist/rate-limit/governor.js +30 -0
  127. package/dist/rate-limit/groups.d.ts +34 -0
  128. package/dist/rate-limit/groups.d.ts.map +1 -0
  129. package/dist/rate-limit/groups.js +32 -0
  130. package/dist/retry.d.ts +5 -0
  131. package/dist/retry.d.ts.map +1 -0
  132. package/dist/retry.js +22 -0
  133. package/dist/returns/api.d.ts +21 -0
  134. package/dist/returns/api.d.ts.map +1 -0
  135. package/dist/returns/api.js +36 -0
  136. package/dist/returns/call.d.ts +2 -0
  137. package/dist/returns/call.d.ts.map +1 -0
  138. package/dist/returns/call.js +1 -0
  139. package/dist/returns/cancel-partial.d.ts +9 -0
  140. package/dist/returns/cancel-partial.d.ts.map +1 -0
  141. package/dist/returns/cancel-partial.js +18 -0
  142. package/dist/returns/list.d.ts +9 -0
  143. package/dist/returns/list.d.ts.map +1 -0
  144. package/dist/returns/list.js +16 -0
  145. package/dist/returns/mutations.d.ts +11 -0
  146. package/dist/returns/mutations.d.ts.map +1 -0
  147. package/dist/returns/mutations.js +22 -0
  148. package/dist/returns/parse.d.ts +6 -0
  149. package/dist/returns/parse.d.ts.map +1 -0
  150. package/dist/returns/parse.js +89 -0
  151. package/dist/returns/reasons.d.ts +11 -0
  152. package/dist/returns/reasons.d.ts.map +1 -0
  153. package/dist/returns/reasons.js +20 -0
  154. package/dist/returns/soap-body.d.ts +26 -0
  155. package/dist/returns/soap-body.d.ts.map +1 -0
  156. package/dist/returns/soap-body.js +95 -0
  157. package/dist/soap/call.d.ts +8 -0
  158. package/dist/soap/call.d.ts.map +1 -0
  159. package/dist/soap/call.js +22 -0
  160. package/dist/soap/client.d.ts +13 -0
  161. package/dist/soap/client.d.ts.map +1 -0
  162. package/dist/soap/client.js +125 -0
  163. package/dist/soap/envelope.d.ts +10 -0
  164. package/dist/soap/envelope.d.ts.map +1 -0
  165. package/dist/soap/envelope.js +47 -0
  166. package/dist/soap/operations.d.ts +6 -0
  167. package/dist/soap/operations.d.ts.map +1 -0
  168. package/dist/soap/operations.js +91 -0
  169. package/dist/soap/parse.d.ts +17 -0
  170. package/dist/soap/parse.d.ts.map +1 -0
  171. package/dist/soap/parse.js +37 -0
  172. package/dist/tasks/api.d.ts +11 -0
  173. package/dist/tasks/api.d.ts.map +1 -0
  174. package/dist/tasks/api.js +44 -0
  175. package/dist/tasks/module.d.ts +14 -0
  176. package/dist/tasks/module.d.ts.map +1 -0
  177. package/dist/tasks/module.js +15 -0
  178. package/dist/tasks/poller.d.ts +12 -0
  179. package/dist/tasks/poller.d.ts.map +1 -0
  180. package/dist/tasks/poller.js +133 -0
  181. package/dist/tasks/types.d.ts +27 -0
  182. package/dist/tasks/types.d.ts.map +1 -0
  183. package/dist/tasks/types.js +2 -0
  184. package/dist/testing/fixtures/category-leaf.json +11 -0
  185. package/dist/testing/fixtures/order-package.json +12 -0
  186. package/dist/testing/fixtures/task-partial-fail.json +18 -0
  187. package/dist/testing/fixtures.d.ts +76 -0
  188. package/dist/testing/fixtures.d.ts.map +1 -0
  189. package/dist/testing/fixtures.js +85 -0
  190. package/dist/testing/guard.d.ts +21 -0
  191. package/dist/testing/guard.d.ts.map +1 -0
  192. package/dist/testing/guard.js +50 -0
  193. package/dist/testing/index.d.ts +6 -0
  194. package/dist/testing/index.d.ts.map +1 -0
  195. package/dist/testing/index.js +4 -0
  196. package/dist/testing/mock-client.d.ts +49 -0
  197. package/dist/testing/mock-client.d.ts.map +1 -0
  198. package/dist/testing/mock-client.js +100 -0
  199. package/dist/types/invoice.d.ts +21 -0
  200. package/dist/types/invoice.d.ts.map +1 -0
  201. package/dist/types/invoice.js +1 -0
  202. package/dist/types/orders.d.ts +127 -0
  203. package/dist/types/orders.d.ts.map +1 -0
  204. package/dist/types/orders.js +1 -0
  205. package/dist/types/products.d.ts +146 -0
  206. package/dist/types/products.d.ts.map +1 -0
  207. package/dist/types/products.js +1 -0
  208. package/dist/types/qna.d.ts +61 -0
  209. package/dist/types/qna.d.ts.map +1 -0
  210. package/dist/types/qna.js +1 -0
  211. package/dist/types/returns.d.ts +96 -0
  212. package/dist/types/returns.d.ts.map +1 -0
  213. package/dist/types/returns.js +1 -0
  214. package/dist/types.d.ts +112 -0
  215. package/dist/types.d.ts.map +1 -0
  216. package/dist/types.js +1 -0
  217. package/dist/wire/normalize.d.ts +20 -0
  218. package/dist/wire/normalize.d.ts.map +1 -0
  219. package/dist/wire/normalize.js +158 -0
  220. package/dist/wire/validate.d.ts +6 -0
  221. package/dist/wire/validate.d.ts.map +1 -0
  222. package/dist/wire/validate.js +53 -0
  223. package/package.json +53 -0
@@ -0,0 +1,65 @@
1
+ import { extractXmlElements, extractXmlTag, parsePagingData, parseSoapResult } from "../soap/parse.js";
2
+ import { attachRaw } from "../wire/normalize.js";
3
+ const LIST_QUESTION_FIELDS = [
4
+ "id",
5
+ "productId",
6
+ "productTitle",
7
+ "question",
8
+ "questionSubject",
9
+ "answer",
10
+ ];
11
+ const DETAIL_QUESTION_FIELDS = [
12
+ "answer",
13
+ "answeredDate",
14
+ "buyerExpose",
15
+ "email",
16
+ "fullName",
17
+ "productId",
18
+ "productStatus",
19
+ "productTitle",
20
+ "question",
21
+ "questionDate",
22
+ "questionSubject",
23
+ "sellerExpose",
24
+ "status",
25
+ ];
26
+ function parseQuestionFragment(fragment, fields) {
27
+ const row = {};
28
+ for (const name of fields) {
29
+ const value = extractXmlTag(fragment, name);
30
+ if (value !== undefined) {
31
+ row[name] = value;
32
+ }
33
+ }
34
+ return row;
35
+ }
36
+ export function parseProductQuestionListResponse(xml) {
37
+ const fragments = extractXmlElements(xml, "productQuestion");
38
+ const pagingRaw = parsePagingData(xml);
39
+ return {
40
+ productQuestions: fragments.map((fragment) => attachRaw(parseQuestionFragment(fragment, LIST_QUESTION_FIELDS))),
41
+ paging: {
42
+ currentPage: pagingRaw.currentPage ? Number(pagingRaw.currentPage) : undefined,
43
+ pageSize: pagingRaw.pageSize ? Number(pagingRaw.pageSize) : undefined,
44
+ totalCount: pagingRaw.totalCount ? Number(pagingRaw.totalCount) : undefined,
45
+ pageCount: extractXmlTag(xml, "pageCount")
46
+ ? Number(extractXmlTag(xml, "pageCount"))
47
+ : undefined,
48
+ },
49
+ raw: { xmlSnippet: xml.slice(0, 500) },
50
+ };
51
+ }
52
+ export function parseProductQuestionDetailResponse(xml) {
53
+ const fragment = extractXmlTag(xml, "productQuestion") ?? xml;
54
+ return {
55
+ productQuestion: attachRaw(parseQuestionFragment(fragment, DETAIL_QUESTION_FIELDS)),
56
+ raw: { xmlSnippet: xml.slice(0, 500) },
57
+ };
58
+ }
59
+ export function parseSaveProductAnswerResponse(xml) {
60
+ const result = parseSoapResult(xml);
61
+ return {
62
+ status: result.status,
63
+ raw: { status: result.status, errorMessage: result.errorMessage },
64
+ };
65
+ }
@@ -0,0 +1,14 @@
1
+ import type { N11ProductQuestionAnswerParams, N11ProductQuestionDetailParams, N11ProductQuestionListParams } from "../types/qna.js";
2
+ export declare function buildGetProductQuestionListRequestBody(auth: {
3
+ appKey: string;
4
+ appSecret: string;
5
+ }, params: N11ProductQuestionListParams): string;
6
+ export declare function buildGetProductQuestionDetailRequestBody(auth: {
7
+ appKey: string;
8
+ appSecret: string;
9
+ }, params: N11ProductQuestionDetailParams): string;
10
+ export declare function buildSaveProductAnswerRequestBody(auth: {
11
+ appKey: string;
12
+ appSecret: string;
13
+ }, params: N11ProductQuestionAnswerParams): string;
14
+ //# sourceMappingURL=soap-body.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soap-body.d.ts","sourceRoot":"","sources":["../../src/qna/soap-body.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,8BAA8B,EAC9B,8BAA8B,EAC9B,4BAA4B,EAC7B,MAAM,iBAAiB,CAAC;AAazB,wBAAgB,sCAAsC,CACpD,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAC3C,MAAM,EAAE,4BAA4B,GACnC,MAAM,CAsBR;AAED,wBAAgB,wCAAwC,CACtD,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAC3C,MAAM,EAAE,8BAA8B,GACrC,MAAM,CAOR;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAC3C,MAAM,EAAE,8BAA8B,GACrC,MAAM,CAQR"}
@@ -0,0 +1,48 @@
1
+ import { buildAuthBlock, xmlEscape } from "../soap/envelope.js";
2
+ function field(name, value) {
3
+ if (value === undefined || value === null) {
4
+ return "";
5
+ }
6
+ return `<${name}>${xmlEscape(String(value))}</${name}>`;
7
+ }
8
+ function emptyField(name) {
9
+ return `<${name}></${name}>`;
10
+ }
11
+ export function buildGetProductQuestionListRequestBody(auth, params) {
12
+ const searchData = [
13
+ params.productId !== undefined ? field("productId", params.productId) : emptyField("productId"),
14
+ params.buyerEmail !== undefined ? field("buyerEmail", params.buyerEmail) : emptyField("buyerEmail"),
15
+ params.subject !== undefined ? field("subject", params.subject) : emptyField("subject"),
16
+ field("status", params.status ?? "OPEN"),
17
+ field("startDate", params.startDate),
18
+ field("endDate", params.endDate),
19
+ ].join("");
20
+ const pagingData = [
21
+ field("currentPage", params.currentPage),
22
+ field("pageSize", params.pageSize),
23
+ ].join("");
24
+ return [
25
+ "<GetProductQuestionListRequest>",
26
+ buildAuthBlock(auth.appKey, auth.appSecret),
27
+ `<productQuestionSearch>${searchData}</productQuestionSearch>`,
28
+ `<pagingData>${pagingData}</pagingData>`,
29
+ "</GetProductQuestionListRequest>",
30
+ ].join("");
31
+ }
32
+ export function buildGetProductQuestionDetailRequestBody(auth, params) {
33
+ return [
34
+ "<GetProductQuestionDetailRequest>",
35
+ buildAuthBlock(auth.appKey, auth.appSecret),
36
+ field("productQuestionId", params.productQuestionId),
37
+ "</GetProductQuestionDetailRequest>",
38
+ ].join("");
39
+ }
40
+ export function buildSaveProductAnswerRequestBody(auth, params) {
41
+ return [
42
+ "<SaveProductAnswerRequest>",
43
+ buildAuthBlock(auth.appKey, auth.appSecret),
44
+ field("productQuestionId", params.productQuestionId),
45
+ field("answer", params.answer),
46
+ "</SaveProductAnswerRequest>",
47
+ ].join("");
48
+ }
@@ -0,0 +1,7 @@
1
+ import type { N11Result } from "../types.js";
2
+ import type { N11ProductQuestionListParams } from "../types/qna.js";
3
+ export declare const N11_QNA_ANSWER_MAX_LENGTH = 2048;
4
+ export declare function validateDdMmYyyyDate(value: string, fieldName: string): N11Result<void>;
5
+ export declare function validateProductQuestionListParams(params: N11ProductQuestionListParams): N11Result<void>;
6
+ export declare function validateProductQuestionAnswer(answer: string): N11Result<void>;
7
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/qna/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAEpE,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAI9C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAgCtF;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,4BAA4B,GACnC,SAAS,CAAC,IAAI,CAAC,CAwBjB;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAgB7E"}
@@ -0,0 +1,75 @@
1
+ export const N11_QNA_ANSWER_MAX_LENGTH = 2048;
2
+ const DD_MM_YYYY_PATTERN = /^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[0-2])\/\d{4}$/;
3
+ export function validateDdMmYyyyDate(value, fieldName) {
4
+ if (!value || value.trim().length === 0) {
5
+ return {
6
+ ok: false,
7
+ reason: `${fieldName} zorunludur (DD/MM/YYYY).`,
8
+ code: "INVALID_QNA_DATE",
9
+ };
10
+ }
11
+ if (!DD_MM_YYYY_PATTERN.test(value)) {
12
+ return {
13
+ ok: false,
14
+ reason: `${fieldName} DD/MM/YYYY formatinda olmalidir.`,
15
+ code: "INVALID_QNA_DATE",
16
+ };
17
+ }
18
+ const [dayStr, monthStr, yearStr] = value.split("/");
19
+ const day = Number(dayStr);
20
+ const month = Number(monthStr);
21
+ const year = Number(yearStr);
22
+ const date = new Date(year, month - 1, day);
23
+ if (date.getFullYear() !== year ||
24
+ date.getMonth() !== month - 1 ||
25
+ date.getDate() !== day) {
26
+ return {
27
+ ok: false,
28
+ reason: `${fieldName} gecerli bir tarih olmalidir.`,
29
+ code: "INVALID_QNA_DATE",
30
+ };
31
+ }
32
+ return { ok: true, data: undefined };
33
+ }
34
+ export function validateProductQuestionListParams(params) {
35
+ const startCheck = validateDdMmYyyyDate(params.startDate, "startDate");
36
+ if (!startCheck.ok) {
37
+ return startCheck;
38
+ }
39
+ const endCheck = validateDdMmYyyyDate(params.endDate, "endDate");
40
+ if (!endCheck.ok) {
41
+ return endCheck;
42
+ }
43
+ if (!Number.isInteger(params.currentPage) || params.currentPage < 0) {
44
+ return {
45
+ ok: false,
46
+ reason: "currentPage 0 veya pozitif tam sayi olmalidir.",
47
+ code: "INVALID_QNA_PAGING",
48
+ };
49
+ }
50
+ if (!Number.isInteger(params.pageSize) || params.pageSize < 1) {
51
+ return {
52
+ ok: false,
53
+ reason: "pageSize en az 1 olmalidir.",
54
+ code: "INVALID_QNA_PAGING",
55
+ };
56
+ }
57
+ return { ok: true, data: undefined };
58
+ }
59
+ export function validateProductQuestionAnswer(answer) {
60
+ if (!answer || answer.trim().length === 0) {
61
+ return {
62
+ ok: false,
63
+ reason: "answer en az 1 karakter olmalidir.",
64
+ code: "INVALID_QNA_ANSWER",
65
+ };
66
+ }
67
+ if (answer.length > N11_QNA_ANSWER_MAX_LENGTH) {
68
+ return {
69
+ ok: false,
70
+ reason: `answer en fazla ${N11_QNA_ANSWER_MAX_LENGTH} karakter olabilir.`,
71
+ code: "INVALID_QNA_ANSWER",
72
+ };
73
+ }
74
+ return { ok: true, data: undefined };
75
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Opsiyonel client-side throttle — varsayilan kapali (enableClientSideLimiter: false).
3
+ */
4
+ export declare class RateLimitGovernor {
5
+ private readonly tokens;
6
+ acquire(path: string): Promise<number>;
7
+ }
8
+ //# 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;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6D;IAE9E,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA0B7C"}
@@ -0,0 +1,30 @@
1
+ import { RATE_LIMIT_GROUPS, resolveRateLimitResource } from "./groups.js";
2
+ /**
3
+ * Opsiyonel client-side throttle — varsayilan kapali (enableClientSideLimiter: false).
4
+ */
5
+ export class RateLimitGovernor {
6
+ tokens = new Map();
7
+ async acquire(path) {
8
+ const resource = resolveRateLimitResource(path);
9
+ const profile = RATE_LIMIT_GROUPS[resource];
10
+ const now = Date.now();
11
+ const state = this.tokens.get(resource) ?? { count: 0, windowStart: now };
12
+ if (now - state.windowStart >= profile.intervalMs) {
13
+ state.count = 0;
14
+ state.windowStart = now;
15
+ }
16
+ let waitedMs = 0;
17
+ if (state.count >= profile.capacity) {
18
+ const waitMs = profile.intervalMs - (now - state.windowStart);
19
+ if (waitMs > 0) {
20
+ waitedMs = waitMs;
21
+ await new Promise((resolve) => setTimeout(resolve, waitMs));
22
+ state.count = 0;
23
+ state.windowStart = Date.now();
24
+ }
25
+ }
26
+ state.count += 1;
27
+ this.tokens.set(resource, state);
28
+ return waitedMs;
29
+ }
30
+ }
@@ -0,0 +1,34 @@
1
+ /** Portal gate + TD-002 — resmi limitler kilitli; digerleri muhafazakâr default. */
2
+ export declare const RATE_LIMIT_GROUPS: {
3
+ readonly categories: {
4
+ readonly capacity: 600;
5
+ readonly intervalMs: 60000;
6
+ };
7
+ readonly productsTasks: {
8
+ readonly capacity: 120;
9
+ readonly intervalMs: 60000;
10
+ };
11
+ readonly productQuery: {
12
+ readonly capacity: 120;
13
+ readonly intervalMs: 60000;
14
+ };
15
+ readonly orders: {
16
+ readonly capacity: 1000;
17
+ readonly intervalMs: 60000;
18
+ };
19
+ readonly returns: {
20
+ readonly capacity: 60;
21
+ readonly intervalMs: 60000;
22
+ };
23
+ readonly qna: {
24
+ readonly capacity: 1;
25
+ readonly intervalMs: 60000;
26
+ };
27
+ readonly invoice: {
28
+ readonly capacity: 60;
29
+ readonly intervalMs: 60000;
30
+ };
31
+ };
32
+ export type RateLimitResource = keyof typeof RATE_LIMIT_GROUPS;
33
+ export declare function resolveRateLimitResource(path: string): RateLimitResource;
34
+ //# 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,oFAAoF;AACpF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQpB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAE/D,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAkBxE"}
@@ -0,0 +1,32 @@
1
+ /** Portal gate + TD-002 — resmi limitler kilitli; digerleri muhafazakâr default. */
2
+ export const RATE_LIMIT_GROUPS = {
3
+ categories: { capacity: 600, intervalMs: 60_000 },
4
+ productsTasks: { capacity: 120, intervalMs: 60_000 },
5
+ productQuery: { capacity: 120, intervalMs: 60_000 },
6
+ orders: { capacity: 1000, intervalMs: 60_000 },
7
+ returns: { capacity: 60, intervalMs: 60_000 },
8
+ qna: { capacity: 1, intervalMs: 60_000 },
9
+ invoice: { capacity: 60, intervalMs: 60_000 },
10
+ };
11
+ export function resolveRateLimitResource(path) {
12
+ const normalized = path.toLowerCase();
13
+ if (normalized.includes("/cdn/"))
14
+ return "categories";
15
+ if (normalized.includes("task-details") || normalized.includes("/tasks/")) {
16
+ return "productsTasks";
17
+ }
18
+ if (normalized.includes("product-query"))
19
+ return "productQuery";
20
+ if (normalized.includes("shipmentpackages") || normalized.includes("/order/")) {
21
+ return "orders";
22
+ }
23
+ if (normalized.includes("returnservice") || normalized.includes("claimcancel")) {
24
+ return "returns";
25
+ }
26
+ if (normalized.includes("productservice") || normalized.includes("productquestion")) {
27
+ return "qna";
28
+ }
29
+ if (normalized.includes("sellerinvoice"))
30
+ return "invoice";
31
+ return "orders";
32
+ }
@@ -0,0 +1,5 @@
1
+ import type { N11Config } from "./types.js";
2
+ export declare function computeRetryDelayMs(config: N11Config, attempt: number, retryAfterHeader?: string | null): number;
3
+ export declare function sleep(ms: number): Promise<void>;
4
+ export declare function shouldRetryStatus(status: number, retryPolicy: "safe" | "none"): boolean;
5
+ //# 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,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,GAC/B,MAAM,CAUR;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"}
package/dist/retry.js ADDED
@@ -0,0 +1,22 @@
1
+ import { N11_RETRY_DELAY_CAP_MS } from "./constants/defaults.js";
2
+ export function computeRetryDelayMs(config, attempt, retryAfterHeader) {
3
+ if (retryAfterHeader) {
4
+ const seconds = Number(retryAfterHeader);
5
+ if (Number.isFinite(seconds) && seconds >= 0) {
6
+ return Math.min(seconds * 1000, N11_RETRY_DELAY_CAP_MS);
7
+ }
8
+ }
9
+ const exponential = config.retryBaseMs * 2 ** attempt;
10
+ return Math.min(exponential, N11_RETRY_DELAY_CAP_MS);
11
+ }
12
+ export function sleep(ms) {
13
+ return new Promise((resolve) => {
14
+ setTimeout(resolve, ms);
15
+ });
16
+ }
17
+ export function shouldRetryStatus(status, retryPolicy) {
18
+ if (retryPolicy === "none") {
19
+ return false;
20
+ }
21
+ return status === 429 || status >= 500;
22
+ }
@@ -0,0 +1,21 @@
1
+ import type { N11SoapClient } from "../soap/client.js";
2
+ import type { N11Config, N11Result } from "../types.js";
3
+ import type { N11ClaimCancelPartialParams, N11ClaimReturnApproveParams, N11ClaimReturnDenyParams, N11ClaimReturnListParams, N11ClaimReturnListResponse, N11ClaimReturnPendingParams, N11ReasonTypeListResponse, N11SoapMutationResult } from "../types/returns.js";
4
+ type ReturnRequestOptions = {
5
+ signal?: AbortSignal;
6
+ };
7
+ export declare class ReturnsApi {
8
+ private readonly soap;
9
+ private readonly config;
10
+ constructor(soap: N11SoapClient, config: N11Config);
11
+ list(params?: N11ClaimReturnListParams, options?: ReturnRequestOptions): Promise<N11Result<N11ClaimReturnListResponse>>;
12
+ denyReasonTypes(options?: ReturnRequestOptions): Promise<N11Result<N11ReasonTypeListResponse>>;
13
+ pendingReasonTypes(options?: ReturnRequestOptions): Promise<N11Result<N11ReasonTypeListResponse>>;
14
+ approve(params: N11ClaimReturnApproveParams, options?: ReturnRequestOptions): Promise<N11Result<N11SoapMutationResult>>;
15
+ pending(params: N11ClaimReturnPendingParams, options?: ReturnRequestOptions): Promise<N11Result<N11SoapMutationResult>>;
16
+ deny(params: N11ClaimReturnDenyParams, options?: ReturnRequestOptions): Promise<N11Result<N11SoapMutationResult>>;
17
+ cancelPartial(params: N11ClaimCancelPartialParams, options?: ReturnRequestOptions): Promise<N11Result<N11SoapMutationResult>>;
18
+ cancelPartialReasonTypes(options?: ReturnRequestOptions): Promise<N11Result<N11ReasonTypeListResponse>>;
19
+ }
20
+ export {};
21
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/returns/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EACV,2BAA2B,EAC3B,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC1B,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAc7B,KAAK,oBAAoB,GAAG;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AAErD,qBAAa,UAAU;IAEnB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,SAAS;IAGpC,IAAI,CACF,MAAM,CAAC,EAAE,wBAAwB,EACjC,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;IAIjD,eAAe,CACb,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;IAIhD,kBAAkB,CAChB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;IAIhD,OAAO,CACL,MAAM,EAAE,2BAA2B,EACnC,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAI5C,OAAO,CACL,MAAM,EAAE,2BAA2B,EACnC,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAI5C,IAAI,CACF,MAAM,EAAE,wBAAwB,EAChC,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAI5C,aAAa,CACX,MAAM,EAAE,2BAA2B,EACnC,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAI5C,wBAAwB,CACtB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;CAGjD"}
@@ -0,0 +1,36 @@
1
+ import { claimCancelPartial as claimCancelPartialImpl } from "./cancel-partial.js";
2
+ import { listClaimReturns } from "./list.js";
3
+ import { approveClaimReturn, denyClaimReturn, pendingClaimReturn, } from "./mutations.js";
4
+ import { listCancelPartialReasonTypes, listDenyReasonTypes, listPendingReasonTypes, } from "./reasons.js";
5
+ export class ReturnsApi {
6
+ soap;
7
+ config;
8
+ constructor(soap, config) {
9
+ this.soap = soap;
10
+ this.config = config;
11
+ }
12
+ list(params, options) {
13
+ return listClaimReturns(this.soap, this.config, params, options);
14
+ }
15
+ denyReasonTypes(options) {
16
+ return listDenyReasonTypes(this.soap, this.config, options);
17
+ }
18
+ pendingReasonTypes(options) {
19
+ return listPendingReasonTypes(this.soap, this.config, options);
20
+ }
21
+ approve(params, options) {
22
+ return approveClaimReturn(this.soap, this.config, params, options);
23
+ }
24
+ pending(params, options) {
25
+ return pendingClaimReturn(this.soap, this.config, params, options);
26
+ }
27
+ deny(params, options) {
28
+ return denyClaimReturn(this.soap, this.config, params, options);
29
+ }
30
+ cancelPartial(params, options) {
31
+ return claimCancelPartialImpl(this.soap, this.config, params, options);
32
+ }
33
+ cancelPartialReasonTypes(options) {
34
+ return listCancelPartialReasonTypes(this.soap, this.config, options);
35
+ }
36
+ }
@@ -0,0 +1,2 @@
1
+ export { invokeSoapOperation } from "../soap/call.js";
2
+ //# sourceMappingURL=call.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../src/returns/call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1 @@
1
+ export { invokeSoapOperation } from "../soap/call.js";
@@ -0,0 +1,9 @@
1
+ import type { N11SoapClient } from "../soap/client.js";
2
+ import type { N11Config, N11Result } from "../types.js";
3
+ import type { N11ClaimCancelPartialParams, N11SoapMutationResult } from "../types/returns.js";
4
+ type CancelPartialOptions = {
5
+ signal?: AbortSignal;
6
+ };
7
+ export declare function claimCancelPartial(soap: N11SoapClient, config: N11Config, params: N11ClaimCancelPartialParams, options?: CancelPartialOptions): Promise<N11Result<N11SoapMutationResult>>;
8
+ export {};
9
+ //# sourceMappingURL=cancel-partial.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancel-partial.d.ts","sourceRoot":"","sources":["../../src/returns/cancel-partial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAK9F,KAAK,oBAAoB,GAAG;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AAErD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,2BAA2B,EACnC,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAoB3C"}
@@ -0,0 +1,18 @@
1
+ import { invokeSoapOperation } from "./call.js";
2
+ import { parseSoapMutationResponse } from "./parse.js";
3
+ import { buildClaimCancelPartialRequestBody } from "./soap-body.js";
4
+ export async function claimCancelPartial(soap, config, params, options) {
5
+ if (params.cancelQuantity < 1) {
6
+ return {
7
+ ok: false,
8
+ reason: "cancelQuantity en az 1 olmalidir.",
9
+ code: "INVALID_CANCEL_QUANTITY",
10
+ };
11
+ }
12
+ const bodyXml = buildClaimCancelPartialRequestBody({ appKey: config.appKey, appSecret: config.appSecret }, params);
13
+ const result = await invokeSoapOperation(soap, "ClaimCancelPartial", bodyXml, options);
14
+ if (!result.ok) {
15
+ return result;
16
+ }
17
+ return { ok: true, data: parseSoapMutationResponse(result.data) };
18
+ }
@@ -0,0 +1,9 @@
1
+ import type { N11SoapClient } from "../soap/client.js";
2
+ import type { N11Config, N11Result } from "../types.js";
3
+ import type { N11ClaimReturnListParams, N11ClaimReturnListResponse } from "../types/returns.js";
4
+ type ListOptions = {
5
+ signal?: AbortSignal;
6
+ };
7
+ export declare function listClaimReturns(soap: N11SoapClient, config: N11Config, params?: N11ClaimReturnListParams, options?: ListOptions): Promise<N11Result<N11ClaimReturnListResponse>>;
8
+ export {};
9
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/returns/list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAKhG,KAAK,WAAW,GAAG;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AAE5C,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,SAAS,EACjB,MAAM,GAAE,wBAA6B,EACrC,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,CAiBhD"}
@@ -0,0 +1,16 @@
1
+ import { N11_RETURN_LIST_PAGE_SIZE } from "../constants/page-limits.js";
2
+ import { invokeSoapOperation } from "./call.js";
3
+ import { parseClaimReturnListResponse } from "./parse.js";
4
+ import { buildClaimReturnListRequestBody } from "./soap-body.js";
5
+ export async function listClaimReturns(soap, config, params = {}, options) {
6
+ const bodyXml = buildClaimReturnListRequestBody({ appKey: config.appKey, appSecret: config.appSecret }, params);
7
+ const result = await invokeSoapOperation(soap, "ClaimReturnList", bodyXml, options);
8
+ if (!result.ok) {
9
+ return result;
10
+ }
11
+ const parsed = parseClaimReturnListResponse(result.data);
12
+ if (parsed.paging?.pageSize === undefined) {
13
+ parsed.paging = { ...parsed.paging, pageSize: N11_RETURN_LIST_PAGE_SIZE };
14
+ }
15
+ return { ok: true, data: parsed };
16
+ }
@@ -0,0 +1,11 @@
1
+ import type { N11SoapClient } from "../soap/client.js";
2
+ import type { N11Config, N11Result } from "../types.js";
3
+ import type { N11ClaimReturnApproveParams, N11ClaimReturnDenyParams, N11ClaimReturnPendingParams, N11SoapMutationResult } from "../types/returns.js";
4
+ type MutationOptions = {
5
+ signal?: AbortSignal;
6
+ };
7
+ export declare function approveClaimReturn(soap: N11SoapClient, config: N11Config, params: N11ClaimReturnApproveParams, options?: MutationOptions): Promise<N11Result<N11SoapMutationResult>>;
8
+ export declare function pendingClaimReturn(soap: N11SoapClient, config: N11Config, params: N11ClaimReturnPendingParams, options?: MutationOptions): Promise<N11Result<N11SoapMutationResult>>;
9
+ export declare function denyClaimReturn(soap: N11SoapClient, config: N11Config, params: N11ClaimReturnDenyParams, options?: MutationOptions): Promise<N11Result<N11SoapMutationResult>>;
10
+ export {};
11
+ //# sourceMappingURL=mutations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutations.d.ts","sourceRoot":"","sources":["../../src/returns/mutations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EACV,2BAA2B,EAC3B,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAS7B,KAAK,eAAe,GAAG;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AAehD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,2BAA2B,EACnC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAM3C;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,2BAA2B,EACnC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAM3C;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,wBAAwB,EAChC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAM3C"}
@@ -0,0 +1,22 @@
1
+ import { invokeSoapOperation } from "./call.js";
2
+ import { parseSoapMutationResponse } from "./parse.js";
3
+ import { buildClaimReturnApproveRequestBody, buildClaimReturnDenyRequestBody, buildClaimReturnPendingRequestBody, } from "./soap-body.js";
4
+ async function invokeReturnMutation(soap, operation, bodyXml, options) {
5
+ const result = await invokeSoapOperation(soap, operation, bodyXml, options);
6
+ if (!result.ok) {
7
+ return result;
8
+ }
9
+ return { ok: true, data: parseSoapMutationResponse(result.data) };
10
+ }
11
+ export function approveClaimReturn(soap, config, params, options) {
12
+ const bodyXml = buildClaimReturnApproveRequestBody({ appKey: config.appKey, appSecret: config.appSecret }, params);
13
+ return invokeReturnMutation(soap, "ClaimReturnApprove", bodyXml, options);
14
+ }
15
+ export function pendingClaimReturn(soap, config, params, options) {
16
+ const bodyXml = buildClaimReturnPendingRequestBody({ appKey: config.appKey, appSecret: config.appSecret }, params);
17
+ return invokeReturnMutation(soap, "ClaimReturnPending", bodyXml, options);
18
+ }
19
+ export function denyClaimReturn(soap, config, params, options) {
20
+ const bodyXml = buildClaimReturnDenyRequestBody({ appKey: config.appKey, appSecret: config.appSecret }, params);
21
+ return invokeReturnMutation(soap, "ClaimReturnDeny", bodyXml, options);
22
+ }
@@ -0,0 +1,6 @@
1
+ import type { N11ClaimReturnListResponse, N11ReasonTypeListResponse, N11SoapMutationResult } from "../types/returns.js";
2
+ export declare function parseClaimReturnListResponse(xml: string): N11ClaimReturnListResponse;
3
+ export declare function parseReasonTypeListResponse(xml: string, listTag: string): N11ReasonTypeListResponse;
4
+ export declare function parseSoapMutationResponse(xml: string): N11SoapMutationResult;
5
+ export declare function computeReturnListHasMore(paging: N11ClaimReturnListResponse["paging"], currentPage: number): boolean;
6
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/returns/parse.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,0BAA0B,EAC1B,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAkD7B,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,0BAA0B,CAgBpF;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,yBAAyB,CAWnG;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAM5E;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,0BAA0B,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAQnH"}