keez-invoicing 1.1.5

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 (111) hide show
  1. package/LICENSE +28 -0
  2. package/README.md +366 -0
  3. package/dist/coverage/lcov-report/block-navigation.js +71 -0
  4. package/dist/coverage/lcov-report/prettify.js +478 -0
  5. package/dist/coverage/lcov-report/sorter.js +177 -0
  6. package/dist/eslint.config.js +56 -0
  7. package/dist/jest.config.cjs +13 -0
  8. package/dist/jest.config.js +13 -0
  9. package/dist/src/api/__tests__/index.test.js +52 -0
  10. package/dist/src/api/authorise.js +48 -0
  11. package/dist/src/api/invoices/cancel.js +33 -0
  12. package/dist/src/api/invoices/create.js +97 -0
  13. package/dist/src/api/invoices/delete.js +33 -0
  14. package/dist/src/api/invoices/downloadPdf.js +31 -0
  15. package/dist/src/api/invoices/getAll.js +84 -0
  16. package/dist/src/api/invoices/sendMail.js +59 -0
  17. package/dist/src/api/invoices/submitEfactura.js +34 -0
  18. package/dist/src/api/invoices/update.js +61 -0
  19. package/dist/src/api/invoices/validate.js +39 -0
  20. package/dist/src/api/invoices/view.js +93 -0
  21. package/dist/src/api/items/create.js +42 -0
  22. package/dist/src/api/items/getAll.js +74 -0
  23. package/dist/src/api/items/getById.js +46 -0
  24. package/dist/src/api/items/index.js +14 -0
  25. package/dist/src/api/items/patch.js +49 -0
  26. package/dist/src/api/items/update.js +41 -0
  27. package/dist/src/config/constants.js +23 -0
  28. package/dist/src/config/constructorParam.js +3 -0
  29. package/dist/src/config/measureUnit.js +22 -0
  30. package/dist/src/config/paymentType.js +17 -0
  31. package/dist/src/config/paymentType.js.js +16 -0
  32. package/dist/src/dto/allInvoicesResponse.js +3 -0
  33. package/dist/src/dto/authResponse.js +3 -0
  34. package/dist/src/dto/common/index.js +3 -0
  35. package/dist/src/dto/common/paginationParams.js +3 -0
  36. package/dist/src/dto/createInvoiceRequest.js +3 -0
  37. package/dist/src/dto/invoiceResponse.js +3 -0
  38. package/dist/src/dto/invoices/index.js +3 -0
  39. package/dist/src/dto/invoices/invoiceFilterParams.js +3 -0
  40. package/dist/src/dto/invoices/invoiceRequestV2.js +3 -0
  41. package/dist/src/dto/invoices/sendInvoiceParams.js +3 -0
  42. package/dist/src/dto/items/allItemsResponse.js +3 -0
  43. package/dist/src/dto/items/index.js +3 -0
  44. package/dist/src/dto/items/itemRequest.js +3 -0
  45. package/dist/src/dto/items/itemResponse.js +3 -0
  46. package/dist/src/errors/KeezError.js +27 -0
  47. package/dist/src/helpers/logger.js +15 -0
  48. package/dist/src/index.js +15 -0
  49. package/dist/src/keezApi.js +283 -0
  50. package/dist/tests/additional-coverage.test.js +351 -0
  51. package/dist/tests/edge-cases.test.js +353 -0
  52. package/dist/tests/error-handling.test.js +224 -0
  53. package/dist/tests/filter-params.test.js +267 -0
  54. package/dist/tests/index.test.js +493 -0
  55. package/dist/tests/invoices-extended.test.js +168 -0
  56. package/dist/tests/items.test.js +142 -0
  57. package/dist/types/coverage/lcov-report/block-navigation.d.ts +1 -0
  58. package/dist/types/coverage/lcov-report/prettify.d.ts +0 -0
  59. package/dist/types/coverage/lcov-report/sorter.d.ts +1 -0
  60. package/dist/types/eslint.config.d.ts +2 -0
  61. package/dist/types/jest.config.d.cts +9 -0
  62. package/dist/types/jest.config.d.ts +9 -0
  63. package/dist/types/src/api/__tests__/index.test.d.ts +1 -0
  64. package/dist/types/src/api/authorise.d.ts +18 -0
  65. package/dist/types/src/api/invoices/cancel.d.ts +9 -0
  66. package/dist/types/src/api/invoices/create.d.ts +22 -0
  67. package/dist/types/src/api/invoices/delete.d.ts +9 -0
  68. package/dist/types/src/api/invoices/downloadPdf.d.ts +8 -0
  69. package/dist/types/src/api/invoices/getAll.d.ts +22 -0
  70. package/dist/types/src/api/invoices/sendMail.d.ts +24 -0
  71. package/dist/types/src/api/invoices/submitEfactura.d.ts +9 -0
  72. package/dist/types/src/api/invoices/update.d.ts +11 -0
  73. package/dist/types/src/api/invoices/validate.d.ts +21 -0
  74. package/dist/types/src/api/invoices/view.d.ts +22 -0
  75. package/dist/types/src/api/items/create.d.ts +10 -0
  76. package/dist/types/src/api/items/getAll.d.ts +10 -0
  77. package/dist/types/src/api/items/getById.d.ts +10 -0
  78. package/dist/types/src/api/items/index.d.ts +5 -0
  79. package/dist/types/src/api/items/patch.d.ts +11 -0
  80. package/dist/types/src/api/items/update.d.ts +11 -0
  81. package/dist/types/src/config/constants.d.ts +13 -0
  82. package/dist/types/src/config/constructorParam.d.ts +6 -0
  83. package/dist/types/src/config/measureUnit.d.ts +17 -0
  84. package/dist/types/src/config/paymentType.d.ts +12 -0
  85. package/dist/types/src/config/paymentType.js.d.ts +11 -0
  86. package/dist/types/src/dto/allInvoicesResponse.d.ts +21 -0
  87. package/dist/types/src/dto/authResponse.d.ts +7 -0
  88. package/dist/types/src/dto/common/index.d.ts +1 -0
  89. package/dist/types/src/dto/common/paginationParams.d.ts +4 -0
  90. package/dist/types/src/dto/createInvoiceRequest.d.ts +34 -0
  91. package/dist/types/src/dto/invoiceResponse.d.ts +48 -0
  92. package/dist/types/src/dto/invoices/index.d.ts +3 -0
  93. package/dist/types/src/dto/invoices/invoiceFilterParams.d.ts +8 -0
  94. package/dist/types/src/dto/invoices/invoiceRequestV2.d.ts +23 -0
  95. package/dist/types/src/dto/invoices/sendInvoiceParams.d.ts +5 -0
  96. package/dist/types/src/dto/items/allItemsResponse.d.ts +13 -0
  97. package/dist/types/src/dto/items/index.d.ts +3 -0
  98. package/dist/types/src/dto/items/itemRequest.d.ts +34 -0
  99. package/dist/types/src/dto/items/itemResponse.d.ts +15 -0
  100. package/dist/types/src/errors/KeezError.d.ts +11 -0
  101. package/dist/types/src/helpers/logger.d.ts +2 -0
  102. package/dist/types/src/index.d.ts +11 -0
  103. package/dist/types/src/keezApi.d.ts +114 -0
  104. package/dist/types/tests/additional-coverage.test.d.ts +1 -0
  105. package/dist/types/tests/edge-cases.test.d.ts +1 -0
  106. package/dist/types/tests/error-handling.test.d.ts +1 -0
  107. package/dist/types/tests/filter-params.test.d.ts +1 -0
  108. package/dist/types/tests/index.test.d.ts +1 -0
  109. package/dist/types/tests/invoices-extended.test.d.ts +1 -0
  110. package/dist/types/tests/items.test.d.ts +1 -0
  111. package/package.json +66 -0
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ /* eslint-disable */
3
+ var addSorting = (function () {
4
+ 'use strict';
5
+ var cols, currentSort = {
6
+ index: 0,
7
+ desc: false
8
+ };
9
+ // returns the summary table element
10
+ function getTable() {
11
+ return document.querySelector('.coverage-summary');
12
+ }
13
+ // returns the thead element of the summary table
14
+ function getTableHeader() {
15
+ return getTable().querySelector('thead tr');
16
+ }
17
+ // returns the tbody element of the summary table
18
+ function getTableBody() {
19
+ return getTable().querySelector('tbody');
20
+ }
21
+ // returns the th element for nth column
22
+ function getNthColumn(n) {
23
+ return getTableHeader().querySelectorAll('th')[n];
24
+ }
25
+ function onFilterInput() {
26
+ const searchValue = document.getElementById('fileSearch').value;
27
+ const rows = document.getElementsByTagName('tbody')[0].children;
28
+ // Try to create a RegExp from the searchValue. If it fails (invalid regex),
29
+ // it will be treated as a plain text search
30
+ let searchRegex;
31
+ try {
32
+ searchRegex = new RegExp(searchValue, 'i'); // 'i' for case-insensitive
33
+ }
34
+ catch (error) {
35
+ searchRegex = null;
36
+ }
37
+ for (let i = 0; i < rows.length; i++) {
38
+ const row = rows[i];
39
+ let isMatch = false;
40
+ if (searchRegex) {
41
+ // If a valid regex was created, use it for matching
42
+ isMatch = searchRegex.test(row.textContent);
43
+ }
44
+ else {
45
+ // Otherwise, fall back to the original plain text search
46
+ isMatch = row.textContent
47
+ .toLowerCase()
48
+ .includes(searchValue.toLowerCase());
49
+ }
50
+ row.style.display = isMatch ? '' : 'none';
51
+ }
52
+ }
53
+ // loads the search box
54
+ function addSearchBox() {
55
+ var template = document.getElementById('filterTemplate');
56
+ var templateClone = template.content.cloneNode(true);
57
+ templateClone.getElementById('fileSearch').oninput = onFilterInput;
58
+ template.parentElement.appendChild(templateClone);
59
+ }
60
+ // loads all columns
61
+ function loadColumns() {
62
+ var colNodes = getTableHeader().querySelectorAll('th'), colNode, cols = [], col, i;
63
+ for (i = 0; i < colNodes.length; i += 1) {
64
+ colNode = colNodes[i];
65
+ col = {
66
+ key: colNode.getAttribute('data-col'),
67
+ sortable: !colNode.getAttribute('data-nosort'),
68
+ type: colNode.getAttribute('data-type') || 'string'
69
+ };
70
+ cols.push(col);
71
+ if (col.sortable) {
72
+ col.defaultDescSort = col.type === 'number';
73
+ colNode.innerHTML =
74
+ colNode.innerHTML + '<span class="sorter"></span>';
75
+ }
76
+ }
77
+ return cols;
78
+ }
79
+ // attaches a data attribute to every tr element with an object
80
+ // of data values keyed by column name
81
+ function loadRowData(tableRow) {
82
+ var tableCols = tableRow.querySelectorAll('td'), colNode, col, data = {}, i, val;
83
+ for (i = 0; i < tableCols.length; i += 1) {
84
+ colNode = tableCols[i];
85
+ col = cols[i];
86
+ val = colNode.getAttribute('data-value');
87
+ if (col.type === 'number') {
88
+ val = Number(val);
89
+ }
90
+ data[col.key] = val;
91
+ }
92
+ return data;
93
+ }
94
+ // loads all row data
95
+ function loadData() {
96
+ var rows = getTableBody().querySelectorAll('tr'), i;
97
+ for (i = 0; i < rows.length; i += 1) {
98
+ rows[i].data = loadRowData(rows[i]);
99
+ }
100
+ }
101
+ // sorts the table using the data for the ith column
102
+ function sortByIndex(index, desc) {
103
+ var key = cols[index].key, sorter = function (a, b) {
104
+ a = a.data[key];
105
+ b = b.data[key];
106
+ return a < b ? -1 : a > b ? 1 : 0;
107
+ }, finalSorter = sorter, tableBody = document.querySelector('.coverage-summary tbody'), rowNodes = tableBody.querySelectorAll('tr'), rows = [], i;
108
+ if (desc) {
109
+ finalSorter = function (a, b) {
110
+ return -1 * sorter(a, b);
111
+ };
112
+ }
113
+ for (i = 0; i < rowNodes.length; i += 1) {
114
+ rows.push(rowNodes[i]);
115
+ tableBody.removeChild(rowNodes[i]);
116
+ }
117
+ rows.sort(finalSorter);
118
+ for (i = 0; i < rows.length; i += 1) {
119
+ tableBody.appendChild(rows[i]);
120
+ }
121
+ }
122
+ // removes sort indicators for current column being sorted
123
+ function removeSortIndicators() {
124
+ var col = getNthColumn(currentSort.index), cls = col.className;
125
+ cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, '');
126
+ col.className = cls;
127
+ }
128
+ // adds sort indicators for current column being sorted
129
+ function addSortIndicators() {
130
+ getNthColumn(currentSort.index).className += currentSort.desc
131
+ ? ' sorted-desc'
132
+ : ' sorted';
133
+ }
134
+ // adds event listeners for all sorter widgets
135
+ function enableUI() {
136
+ var i, el, ithSorter = function ithSorter(i) {
137
+ var col = cols[i];
138
+ return function () {
139
+ var desc = col.defaultDescSort;
140
+ if (currentSort.index === i) {
141
+ desc = !currentSort.desc;
142
+ }
143
+ sortByIndex(i, desc);
144
+ removeSortIndicators();
145
+ currentSort.index = i;
146
+ currentSort.desc = desc;
147
+ addSortIndicators();
148
+ };
149
+ };
150
+ for (i = 0; i < cols.length; i += 1) {
151
+ if (cols[i].sortable) {
152
+ // add the click event handler on the th so users
153
+ // dont have to click on those tiny arrows
154
+ el = getNthColumn(i).querySelector('.sorter').parentElement;
155
+ if (el.addEventListener) {
156
+ el.addEventListener('click', ithSorter(i));
157
+ }
158
+ else {
159
+ el.attachEvent('onclick', ithSorter(i));
160
+ }
161
+ }
162
+ }
163
+ }
164
+ // adds sorting functionality to the UI
165
+ return function () {
166
+ if (!getTable()) {
167
+ return;
168
+ }
169
+ cols = loadColumns();
170
+ loadData();
171
+ addSearchBox();
172
+ addSortIndicators();
173
+ enableUI();
174
+ };
175
+ })();
176
+ window.addEventListener('load', addSorting);
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY292ZXJhZ2UvbGNvdi1yZXBvcnQvc29ydGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxvQkFBb0I7QUFDcEIsSUFBSSxVQUFVLEdBQUcsQ0FBQztJQUNkLFlBQVksQ0FBQztJQUNiLElBQUksSUFBSSxFQUNKLFdBQVcsR0FBRztRQUNWLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxFQUFFLEtBQUs7S0FDZCxDQUFDO0lBRU4sb0NBQW9DO0lBQ3BDLFNBQVMsUUFBUTtRQUNiLE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRCxpREFBaUQ7SUFDakQsU0FBUyxjQUFjO1FBQ25CLE9BQU8sUUFBUSxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxpREFBaUQ7SUFDakQsU0FBUyxZQUFZO1FBQ2pCLE9BQU8sUUFBUSxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCx3Q0FBd0M7SUFDeEMsU0FBUyxZQUFZLENBQUMsQ0FBQztRQUNuQixPQUFPLGNBQWMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxTQUFTLGFBQWE7UUFDbEIsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDaEUsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUVoRSw0RUFBNEU7UUFDNUUsNENBQTRDO1FBQzVDLElBQUksV0FBVyxDQUFDO1FBQ2hCLElBQUksQ0FBQztZQUNELFdBQVcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxX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SSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkIsaURBQWlEO2dCQUNqRCwwQ0FBMEM7Z0JBQzFDLEVBQUUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztnQkFDNUQsSUFBSSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDdEIsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0MsQ0FBQztxQkFBTSxDQUFDO29CQUNKLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM1QyxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBQ0QsdUNBQXVDO0lBQ3ZDLE9BQU87UUFDSCxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNkLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLFFBQVEsRUFBRSxDQUFDO1FBQ1gsWUFBWSxFQUFFLENBQUM7UUFDZixpQkFBaUIsRUFBRSxDQUFDO1FBQ3BCLFFBQVEsRUFBRSxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUVMLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xudmFyIGFkZFNvcnRpbmcgPSAoZnVuY3Rpb24oKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuICAgIHZhciBjb2xzLFxuICAgICAgICBjdXJyZW50U29ydCA9IHtcbiAgICAgICAgICAgIGluZGV4OiAwLFxuICAgICAgICAgICAgZGVzYzogZmFsc2VcbiAgICAgICAgfTtcblxuICAgIC8vIHJldHVybnMgdGhlIHN1bW1hcnkgdGFibGUgZWxlbWVudFxuICAgIGZ1bmN0aW9uIGdldFRhYmxlKCkge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNvdmVyYWdlLXN1bW1hcnknKTtcbiAgICB9XG4gICAgLy8gcmV0dXJucyB0aGUgdGhlYWQgZWxlbWVudCBvZiB0aGUgc3VtbWFyeSB0YWJsZVxuICAgIGZ1bmN0aW9uIGdldFRhYmxlSGVhZGVyKCkge1xuICAgICAgICByZXR1cm4gZ2V0VGFibGUoKS5xdWVyeVNlbGVjdG9yKCd0aGVhZCB0cicpO1xuICAgIH1cbiAgICAvLyByZXR1cm5zIHRoZSB0Ym9keSBlbGVtZW50IG9mIHRoZSBzdW1tYXJ5IHRhYmxlXG4gICAgZnVuY3Rpb24gZ2V0VGFibGVCb2R5KCkge1xuICAgICAgICByZXR1cm4gZ2V0VGFibGUoKS5xdWVyeVNlbGVjdG9yKCd0Ym9keScpO1xuICAgIH1cbiAgICAvLyByZXR1cm5zIHRoZSB0aCBlbGVtZW50IGZvciBudGggY29sdW1uXG4gICAgZnVuY3Rpb24gZ2V0TnRoQ29sdW1uKG4pIHtcbiAgICAgICAgcmV0dXJuIGdldFRhYmxlSGVhZGVyKCkucXVlcnlTZWxlY3RvckFsbCgndGgnKVtuXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbkZpbHRlcklucHV0KCkge1xuICAgICAgICBjb25zdCBzZWFyY2hWYWx1ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlU2VhcmNoJykudmFsdWU7XG4gICAgICAgIGNvbnN0IHJvd3MgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGJvZHknKVswXS5jaGlsZHJlbjtcblxuICAgICAgICAvLyBUcnkgdG8gY3JlYXRlIGEgUmVnRXhwIGZyb20gdGhlIHNlYXJjaFZhbHVlLiBJZiBpdCBmYWlscyAoaW52YWxpZCByZWdleCksXG4gICAgICAgIC8vIGl0IHdpbGwgYmUgdHJlYXRlZCBhcyBhIHBsYWluIHRleHQgc2VhcmNoXG4gICAgICAgIGxldCBzZWFyY2hSZWdleDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHNlYXJjaFJlZ2V4ID0gbmV3IFJlZ0V4cChzZWFyY2hWYWx1ZSwgJ2knKTsgLy8gJ2knIGZvciBjYXNlLWluc2Vuc2l0aXZlXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBzZWFyY2hSZWdleCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IHJvd3NbaV07XG4gICAgICAgICAgICBsZXQgaXNNYXRjaCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoc2VhcmNoUmVnZXgpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBhIHZhbGlkIHJlZ2V4IHdhcyBjcmVhdGVkLCB1c2UgaXQgZm9yIG1hdGNoaW5nXG4gICAgICAgICAgICAgICAgaXNNYXRjaCA9IHNlYXJjaFJlZ2V4LnRlc3Qocm93LnRleHRDb250ZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBmYWxsIGJhY2sgdG8gdGhlIG9yaWdpbmFsIHBsYWluIHRleHQgc2VhcmNoXG4gICAgICAgICAgICAgICAgaXNNYXRjaCA9IHJvdy50ZXh0Q29udGVudFxuICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJvdy5zdHlsZS5kaXNwbGF5ID0gaXNNYXRjaCA/ICcnIDogJ25vbmUnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gbG9hZHMgdGhlIHNlYXJjaCBib3hcbiAgICBmdW5jdGlvbiBhZGRTZWFyY2hCb3goKSB7XG4gICAgICAgIHZhciB0ZW1wbGF0ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWx0ZXJUZW1wbGF0ZScpO1xuICAgICAgICB2YXIgdGVtcGxhdGVDbG9uZSA9IHRlbXBsYXRlLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgICB0ZW1wbGF0ZUNsb25lLmdldEVsZW1lbnRCeUlkKCdmaWxlU2VhcmNoJykub25pbnB1dCA9IG9uRmlsdGVySW5wdXQ7XG4gICAgICAgIHRlbXBsYXRlLnBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGVtcGxhdGVDbG9uZSk7XG4gICAgfVxuXG4gICAgLy8gbG9hZHMgYWxsIGNvbHVtbnNcbiAgICBmdW5jdGlvbiBsb2FkQ29sdW1ucygpIHtcbiAgICAgICAgdmFyIGNvbE5vZGVzID0gZ2V0VGFibGVIZWFkZXIoKS5xdWVyeVNlbGVjdG9yQWxsKCd0aCcpLFxuICAgICAgICAgICAgY29sTm9kZSxcbiAgICAgICAgICAgIGNvbHMgPSBbXSxcbiAgICAgICAgICAgIGNvbCxcbiAgICAgICAgICAgIGk7XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbE5vZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBjb2xOb2RlID0gY29sTm9kZXNbaV07XG4gICAgICAgICAgICBjb2wgPSB7XG4gICAgICAgICAgICAgICAga2V5OiBjb2xOb2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1jb2wnKSxcbiAgICAgICAgICAgICAgICBzb3J0YWJsZTogIWNvbE5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLW5vc29ydCcpLFxuICAgICAgICAgICAgICAgIHR5cGU6IGNvbE5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLXR5cGUnKSB8fCAnc3RyaW5nJ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbHMucHVzaChjb2wpO1xuICAgICAgICAgICAgaWYgKGNvbC5zb3J0YWJsZSkge1xuICAgICAgICAgICAgICAgIGNvbC5kZWZhdWx0RGVzY1NvcnQgPSBjb2wudHlwZSA9PT0gJ251bWJlcic7XG4gICAgICAgICAgICAgICAgY29sTm9kZS5pbm5lckhUTUwgPVxuICAgICAgICAgICAgICAgICAgICBjb2xOb2RlLmlubmVySFRNTCArICc8c3BhbiBjbGFzcz1cInNvcnRlclwiPjwvc3Bhbj4nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xzO1xuICAgIH1cbiAgICAvLyBhdHRhY2hlcyBhIGRhdGEgYXR0cmlidXRlIHRvIGV2ZXJ5IHRyIGVsZW1lbnQgd2l0aCBhbiBvYmplY3RcbiAgICAvLyBvZiBkYXRhIHZhbHVlcyBrZXllZCBieSBjb2x1bW4gbmFtZVxuICAgIGZ1bmN0aW9uIGxvYWRSb3dEYXRhKHRhYmxlUm93KSB7XG4gICAgICAgIHZhciB0YWJsZUNvbHMgPSB0YWJsZVJvdy5xdWVyeVNlbGVjdG9yQWxsKCd0ZCcpLFxuICAgICAgICAgICAgY29sTm9kZSxcbiAgICAgICAgICAgIGNvbCxcbiAgICAgICAgICAgIGRhdGEgPSB7fSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICB2YWw7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0YWJsZUNvbHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGNvbE5vZGUgPSB0YWJsZUNvbHNbaV07XG4gICAgICAgICAgICBjb2wgPSBjb2xzW2ldO1xuICAgICAgICAgICAgdmFsID0gY29sTm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtdmFsdWUnKTtcbiAgICAgICAgICAgIGlmIChjb2wudHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBOdW1iZXIodmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRhdGFbY29sLmtleV0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIC8vIGxvYWRzIGFsbCByb3cgZGF0YVxuICAgIGZ1bmN0aW9uIGxvYWREYXRhKCkge1xuICAgICAgICB2YXIgcm93cyA9IGdldFRhYmxlQm9keSgpLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJyksXG4gICAgICAgICAgICBpO1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCByb3dzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICByb3dzW2ldLmRhdGEgPSBsb2FkUm93RGF0YShyb3dzW2ldKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBzb3J0cyB0aGUgdGFibGUgdXNpbmcgdGhlIGRhdGEgZm9yIHRoZSBpdGggY29sdW1uXG4gICAgZnVuY3Rpb24gc29ydEJ5SW5kZXgoaW5kZXgsIGRlc2MpIHtcbiAgICAgICAgdmFyIGtleSA9IGNvbHNbaW5kZXhdLmtleSxcbiAgICAgICAgICAgIHNvcnRlciA9IGZ1bmN0aW9uKGEsIGIpIHtcbiAgICAgICAgICAgICAgICBhID0gYS5kYXRhW2tleV07XG4gICAgICAgICAgICAgICAgYiA9IGIuZGF0YVtrZXldO1xuICAgICAgICAgICAgICAgIHJldHVybiBhIDwgYiA/IC0xIDogYSA+IGIgPyAxIDogMDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaW5hbFNvcnRlciA9IHNvcnRlcixcbiAgICAgICAgICAgIHRhYmxlQm9keSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jb3ZlcmFnZS1zdW1tYXJ5IHRib2R5JyksXG4gICAgICAgICAgICByb3dOb2RlcyA9IHRhYmxlQm9keS5xdWVyeVNlbGVjdG9yQWxsKCd0cicpLFxuICAgICAgICAgICAgcm93cyA9IFtdLFxuICAgICAgICAgICAgaTtcblxuICAgICAgICBpZiAoZGVzYykge1xuICAgICAgICAgICAgZmluYWxTb3J0ZXIgPSBmdW5jdGlvbihhLCBiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xICogc29ydGVyKGEsIGIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCByb3dOb2Rlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgcm93cy5wdXNoKHJvd05vZGVzW2ldKTtcbiAgICAgICAgICAgIHRhYmxlQm9keS5yZW1vdmVDaGlsZChyb3dOb2Rlc1tpXSk7XG4gICAgICAgIH1cblxuICAgICAgICByb3dzLnNvcnQoZmluYWxTb3J0ZXIpO1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCByb3dzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICB0YWJsZUJvZHkuYXBwZW5kQ2hpbGQocm93c1tpXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gcmVtb3ZlcyBzb3J0IGluZGljYXRvcnMgZm9yIGN1cnJlbnQgY29sdW1uIGJlaW5nIHNvcnRlZFxuICAgIGZ1bmN0aW9uIHJlbW92ZVNvcnRJbmRpY2F0b3JzKCkge1xuICAgICAgICB2YXIgY29sID0gZ2V0TnRoQ29sdW1uKGN1cnJlbnRTb3J0LmluZGV4KSxcbiAgICAgICAgICAgIGNscyA9IGNvbC5jbGFzc05hbWU7XG5cbiAgICAgICAgY2xzID0gY2xzLnJlcGxhY2UoLyBzb3J0ZWQkLywgJycpLnJlcGxhY2UoLyBzb3J0ZWQtZGVzYyQvLCAnJyk7XG4gICAgICAgIGNvbC5jbGFzc05hbWUgPSBjbHM7XG4gICAgfVxuICAgIC8vIGFkZHMgc29ydCBpbmRpY2F0b3JzIGZvciBjdXJyZW50IGNvbHVtbiBiZWluZyBzb3J0ZWRcbiAgICBmdW5jdGlvbiBhZGRTb3J0SW5kaWNhdG9ycygpIHtcbiAgICAgICAgZ2V0TnRoQ29sdW1uKGN1cnJlbnRTb3J0LmluZGV4KS5jbGFzc05hbWUgKz0gY3VycmVudFNvcnQuZGVzY1xuICAgICAgICAgICAgPyAnIHNvcnRlZC1kZXNjJ1xuICAgICAgICAgICAgOiAnIHNvcnRlZCc7XG4gICAgfVxuICAgIC8vIGFkZHMgZXZlbnQgbGlzdGVuZXJzIGZvciBhbGwgc29ydGVyIHdpZGdldHNcbiAgICBmdW5jdGlvbiBlbmFibGVVSSgpIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBlbCxcbiAgICAgICAgICAgIGl0aFNvcnRlciA9IGZ1bmN0aW9uIGl0aFNvcnRlcihpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvbCA9IGNvbHNbaV07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkZXNjID0gY29sLmRlZmF1bHREZXNjU29ydDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFNvcnQuaW5kZXggPT09IGkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2MgPSAhY3VycmVudFNvcnQuZGVzYztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzb3J0QnlJbmRleChpLCBkZXNjKTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlU29ydEluZGljYXRvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFNvcnQuaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U29ydC5kZXNjID0gZGVzYztcbiAgICAgICAgICAgICAgICAgICAgYWRkU29ydEluZGljYXRvcnMoKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGlmIChjb2xzW2ldLnNvcnRhYmxlKSB7XG4gICAgICAgICAgICAgICAgLy8gYWRkIHRoZSBjbGljayBldmVudCBoYW5kbGVyIG9uIHRoZSB0aCBzbyB1c2Vyc1xuICAgICAgICAgICAgICAgIC8vIGRvbnQgaGF2ZSB0byBjbGljayBvbiB0aG9zZSB0aW55IGFycm93c1xuICAgICAgICAgICAgICAgIGVsID0gZ2V0TnRoQ29sdW1uKGkpLnF1ZXJ5U2VsZWN0b3IoJy5zb3J0ZXInKS5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgICAgIGlmIChlbC5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaXRoU29ydGVyKGkpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlbC5hdHRhY2hFdmVudCgnb25jbGljaycsIGl0aFNvcnRlcihpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIGFkZHMgc29ydGluZyBmdW5jdGlvbmFsaXR5IHRvIHRoZSBVSVxuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKCFnZXRUYWJsZSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29scyA9IGxvYWRDb2x1bW5zKCk7XG4gICAgICAgIGxvYWREYXRhKCk7XG4gICAgICAgIGFkZFNlYXJjaEJveCgpO1xuICAgICAgICBhZGRTb3J0SW5kaWNhdG9ycygpO1xuICAgICAgICBlbmFibGVVSSgpO1xuICAgIH07XG59KSgpO1xuXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFkZFNvcnRpbmcpO1xuIl19
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const js_1 = __importDefault(require("@eslint/js"));
7
+ const typescript_eslint_1 = __importDefault(require("typescript-eslint"));
8
+ const globals_1 = __importDefault(require("globals"));
9
+ exports.default = typescript_eslint_1.default.config(
10
+ // Global ignores (replaces .eslintignore)
11
+ {
12
+ ignores: ['node_modules/**', 'lib/**', 'coverage/**', 'dist/**'],
13
+ },
14
+ // Base ESLint recommended rules
15
+ js_1.default.configs.recommended,
16
+ // TypeScript recommended rules
17
+ ...typescript_eslint_1.default.configs.recommended,
18
+ // Project-specific configuration
19
+ {
20
+ files: ['src/**/*.ts'],
21
+ languageOptions: {
22
+ ecmaVersion: 'latest',
23
+ sourceType: 'module',
24
+ globals: {
25
+ ...globals_1.default.node,
26
+ ...globals_1.default.es2021,
27
+ },
28
+ parserOptions: {
29
+ project: true,
30
+ },
31
+ },
32
+ rules: {
33
+ // Spacing and formatting
34
+ 'indent': 'off',
35
+ '@typescript-eslint/indent': 'off', // Disabled - using Prettier/WebStorm for formatting
36
+ 'object-curly-spacing': ['error', 'always'],
37
+ 'object-curly-newline': 'off',
38
+ 'padded-blocks': 'off',
39
+ // TypeScript specific
40
+ 'no-shadow': 'off',
41
+ '@typescript-eslint/no-shadow': ['error'],
42
+ '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_', caughtErrorsIgnorePattern: '^_' }],
43
+ '@typescript-eslint/no-explicit-any': 'warn',
44
+ // Best practices
45
+ 'max-len': ['error', { code: 144, ignoreUrls: true }],
46
+ 'no-plusplus': ['error', { allowForLoopAfterthoughts: true }],
47
+ 'class-methods-use-this': 'off',
48
+ 'no-underscore-dangle': ['error', { allowAfterThis: true }],
49
+ // Allow certain patterns
50
+ 'no-restricted-syntax': 'off',
51
+ 'arrow-parens': ['error', 'as-needed'],
52
+ 'implicit-arrow-linebreak': 'off',
53
+ 'operator-linebreak': 'off',
54
+ },
55
+ });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNsaW50LmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2VzbGludC5jb25maWcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBZ0M7QUFDaEMsMEVBQXlDO0FBQ3pDLHNEQUE4QjtBQUU5QixrQkFBZSwyQkFBUSxDQUFDLE1BQU07QUFDMUIsMENBQTBDO0FBQzFDO0lBQ0ksT0FBTyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUM7Q0FDbkU7QUFFRCxnQ0FBZ0M7QUFDaEMsWUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXO0FBRTFCLCtCQUErQjtBQUMvQixHQUFHLDJCQUFRLENBQUMsT0FBTyxDQUFDLFdBQVc7QUFFL0IsaUNBQWlDO0FBQ2pDO0lBQ0ksS0FBSyxFQUFFLENBQUMsYUFBYSxDQUFDO0lBQ3RCLGVBQWUsRUFBRTtRQUNiLFdBQVcsRUFBRSxRQUFRO1FBQ3JCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLE9BQU8sRUFBRTtZQUNMLEdBQUcsaUJBQU8sQ0FBQyxJQUFJO1lBQ2YsR0FBRyxpQkFBTyxDQUFDLE1BQU07U0FDcEI7UUFDRCxhQUFhLEVBQUU7WUFDWCxPQUFPLEVBQUUsSUFBSTtTQUNoQjtLQUNKO0lBQ0QsS0FBSyxFQUFFO1FBQ0gseUJBQXlCO1FBQ3pCLFFBQVEsRUFBRSxLQUFLO1FBQ2YsMkJBQTJCLEVBQUUsS0FBSyxFQUFFLG9EQUFvRDtRQUN4RixzQkFBc0IsRUFBRSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUM7UUFDM0Msc0JBQXNCLEVBQUUsS0FBSztRQUM3QixlQUFlLEVBQUUsS0FBSztRQUV0QixzQkFBc0I7UUFDdEIsV0FBVyxFQUFFLEtBQUs7UUFDbEIsOEJBQThCLEVBQUUsQ0FBQyxPQUFPLENBQUM7UUFDekMsbUNBQW1DLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDNUcsb0NBQW9DLEVBQUUsTUFBTTtRQUU1QyxpQkFBaUI7UUFDakIsU0FBUyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDckQsYUFBYSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDN0Qsd0JBQXdCLEVBQUUsS0FBSztRQUMvQixzQkFBc0IsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUUzRCx5QkFBeUI7UUFDekIsc0JBQXNCLEVBQUUsS0FBSztRQUM3QixjQUFjLEVBQUUsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDO1FBQ3RDLDBCQUEwQixFQUFFLEtBQUs7UUFDakMsb0JBQW9CLEVBQUUsS0FBSztLQUM5QjtDQUNKLENBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlc2xpbnQgZnJvbSAnQGVzbGludC9qcyc7XG5pbXBvcnQgdHNlc2xpbnQgZnJvbSAndHlwZXNjcmlwdC1lc2xpbnQnO1xuaW1wb3J0IGdsb2JhbHMgZnJvbSAnZ2xvYmFscyc7XG5cbmV4cG9ydCBkZWZhdWx0IHRzZXNsaW50LmNvbmZpZyhcbiAgICAvLyBHbG9iYWwgaWdub3JlcyAocmVwbGFjZXMgLmVzbGludGlnbm9yZSlcbiAgICB7XG4gICAgICAgIGlnbm9yZXM6IFsnbm9kZV9tb2R1bGVzLyoqJywgJ2xpYi8qKicsICdjb3ZlcmFnZS8qKicsICdkaXN0LyoqJ10sXG4gICAgfSxcblxuICAgIC8vIEJhc2UgRVNMaW50IHJlY29tbWVuZGVkIHJ1bGVzXG4gICAgZXNsaW50LmNvbmZpZ3MucmVjb21tZW5kZWQsXG5cbiAgICAvLyBUeXBlU2NyaXB0IHJlY29tbWVuZGVkIHJ1bGVzXG4gICAgLi4udHNlc2xpbnQuY29uZmlncy5yZWNvbW1lbmRlZCxcblxuICAgIC8vIFByb2plY3Qtc3BlY2lmaWMgY29uZmlndXJhdGlvblxuICAgIHtcbiAgICAgICAgZmlsZXM6IFsnc3JjLyoqLyoudHMnXSxcbiAgICAgICAgbGFuZ3VhZ2VPcHRpb25zOiB7XG4gICAgICAgICAgICBlY21hVmVyc2lvbjogJ2xhdGVzdCcsXG4gICAgICAgICAgICBzb3VyY2VUeXBlOiAnbW9kdWxlJyxcbiAgICAgICAgICAgIGdsb2JhbHM6IHtcbiAgICAgICAgICAgICAgICAuLi5nbG9iYWxzLm5vZGUsXG4gICAgICAgICAgICAgICAgLi4uZ2xvYmFscy5lczIwMjEsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFyc2VyT3B0aW9uczoge1xuICAgICAgICAgICAgICAgIHByb2plY3Q6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBydWxlczoge1xuICAgICAgICAgICAgLy8gU3BhY2luZyBhbmQgZm9ybWF0dGluZ1xuICAgICAgICAgICAgJ2luZGVudCc6ICdvZmYnLFxuICAgICAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQnOiAnb2ZmJywgLy8gRGlzYWJsZWQgLSB1c2luZyBQcmV0dGllci9XZWJTdG9ybSBmb3IgZm9ybWF0dGluZ1xuICAgICAgICAgICAgJ29iamVjdC1jdXJseS1zcGFjaW5nJzogWydlcnJvcicsICdhbHdheXMnXSxcbiAgICAgICAgICAgICdvYmplY3QtY3VybHktbmV3bGluZSc6ICdvZmYnLFxuICAgICAgICAgICAgJ3BhZGRlZC1ibG9ja3MnOiAnb2ZmJyxcblxuICAgICAgICAgICAgLy8gVHlwZVNjcmlwdCBzcGVjaWZpY1xuICAgICAgICAgICAgJ25vLXNoYWRvdyc6ICdvZmYnLFxuICAgICAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9uby1zaGFkb3cnOiBbJ2Vycm9yJ10sXG4gICAgICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzJzogWydlcnJvcicsIHsgYXJnc0lnbm9yZVBhdHRlcm46ICdeXycsIGNhdWdodEVycm9yc0lnbm9yZVBhdHRlcm46ICdeXycgfV0sXG4gICAgICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSc6ICd3YXJuJyxcblxuICAgICAgICAgICAgLy8gQmVzdCBwcmFjdGljZXNcbiAgICAgICAgICAgICdtYXgtbGVuJzogWydlcnJvcicsIHsgY29kZTogMTQ0LCBpZ25vcmVVcmxzOiB0cnVlIH1dLFxuICAgICAgICAgICAgJ25vLXBsdXNwbHVzJzogWydlcnJvcicsIHsgYWxsb3dGb3JMb29wQWZ0ZXJ0aG91Z2h0czogdHJ1ZSB9XSxcbiAgICAgICAgICAgICdjbGFzcy1tZXRob2RzLXVzZS10aGlzJzogJ29mZicsXG4gICAgICAgICAgICAnbm8tdW5kZXJzY29yZS1kYW5nbGUnOiBbJ2Vycm9yJywgeyBhbGxvd0FmdGVyVGhpczogdHJ1ZSB9XSxcblxuICAgICAgICAgICAgLy8gQWxsb3cgY2VydGFpbiBwYXR0ZXJuc1xuICAgICAgICAgICAgJ25vLXJlc3RyaWN0ZWQtc3ludGF4JzogJ29mZicsXG4gICAgICAgICAgICAnYXJyb3ctcGFyZW5zJzogWydlcnJvcicsICdhcy1uZWVkZWQnXSxcbiAgICAgICAgICAgICdpbXBsaWNpdC1hcnJvdy1saW5lYnJlYWsnOiAnb2ZmJyxcbiAgICAgICAgICAgICdvcGVyYXRvci1saW5lYnJlYWsnOiAnb2ZmJyxcbiAgICAgICAgfSxcbiAgICB9LFxuKTtcbiJdfQ==
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ module.exports = {
3
+ transform: {
4
+ '^.+\\.(t|j)s$': 'ts-jest',
5
+ },
6
+ testRegex: '(/tests/.*|(\\.|/)(test|spec))\\.(t|j)s$',
7
+ modulePathIgnorePatterns: ['<rootDir>/dist/'],
8
+ moduleFileExtensions: ['ts', 'js', 'json', 'node'],
9
+ moduleNameMapper: {
10
+ '^@/(.*)$': '<rootDir>/src/$1',
11
+ },
12
+ };
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamVzdC5jb25maWcuY2pzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vamVzdC5jb25maWcuY2pzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFNLENBQUMsT0FBTyxHQUFHO0lBQ2IsU0FBUyxFQUFFO1FBQ1AsZUFBZSxFQUFFLFNBQVM7S0FDN0I7SUFDRCxTQUFTLEVBQUUsMENBQTBDO0lBQ3JELHdCQUF3QixFQUFFLENBQUMsaUJBQWlCLENBQUM7SUFDN0Msb0JBQW9CLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDbEQsZ0JBQWdCLEVBQUU7UUFDZCxVQUFVLEVBQUUsa0JBQWtCO0tBQ2pDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0ge1xuICAgIHRyYW5zZm9ybToge1xuICAgICAgICAnXi4rXFxcXC4odHxqKXMkJzogJ3RzLWplc3QnLFxuICAgIH0sXG4gICAgdGVzdFJlZ2V4OiAnKC90ZXN0cy8uKnwoXFxcXC58LykodGVzdHxzcGVjKSlcXFxcLih0fGopcyQnLFxuICAgIG1vZHVsZVBhdGhJZ25vcmVQYXR0ZXJuczogWyc8cm9vdERpcj4vZGlzdC8nXSxcbiAgICBtb2R1bGVGaWxlRXh0ZW5zaW9uczogWyd0cycsICdqcycsICdqc29uJywgJ25vZGUnXSxcbiAgICBtb2R1bGVOYW1lTWFwcGVyOiB7XG4gICAgICAgICdeQC8oLiopJCc6ICc8cm9vdERpcj4vc3JjLyQxJyxcbiAgICB9LFxufTtcbiJdfQ==
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ module.exports = {
3
+ transform: {
4
+ '^.+\\.(t|j)s$': 'ts-jest',
5
+ },
6
+ testRegex: '(/tests/.*|(\\.|/)(test|spec))\\.(t|j)s$',
7
+ modulePathIgnorePatterns: ['<rootDir>/dist/'],
8
+ moduleFileExtensions: ['ts', 'js', 'json', 'node'],
9
+ moduleNameMapper: {
10
+ '^@/(.*)$': '<rootDir>/src/$1',
11
+ },
12
+ };
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamVzdC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9qZXN0LmNvbmZpZy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSxDQUFDLE9BQU8sR0FBRztJQUNiLFNBQVMsRUFBRTtRQUNQLGVBQWUsRUFBRSxTQUFTO0tBQzdCO0lBQ0QsU0FBUyxFQUFFLDBDQUEwQztJQUNyRCx3QkFBd0IsRUFBRSxDQUFDLGlCQUFpQixDQUFDO0lBQzdDLG9CQUFvQixFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2xELGdCQUFnQixFQUFFO1FBQ2QsVUFBVSxFQUFFLGtCQUFrQjtLQUNqQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICB0cmFuc2Zvcm06IHtcbiAgICAgICAgJ14uK1xcXFwuKHR8ailzJCc6ICd0cy1qZXN0JyxcbiAgICB9LFxuICAgIHRlc3RSZWdleDogJygvdGVzdHMvLip8KFxcXFwufC8pKHRlc3R8c3BlYykpXFxcXC4odHxqKXMkJyxcbiAgICBtb2R1bGVQYXRoSWdub3JlUGF0dGVybnM6IFsnPHJvb3REaXI+L2Rpc3QvJ10sXG4gICAgbW9kdWxlRmlsZUV4dGVuc2lvbnM6IFsndHMnLCAnanMnLCAnanNvbicsICdub2RlJ10sXG4gICAgbW9kdWxlTmFtZU1hcHBlcjoge1xuICAgICAgICAnXkAvKC4qKSQnOiAnPHJvb3REaXI+L3NyYy8kMScsXG4gICAgfSxcbn07XG4iXX0=
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // import nock = require('nock');
4
+ const keezApi_1 = require("../../keezApi");
5
+ describe('Keez API authorisation', () => {
6
+ let keezApi;
7
+ beforeAll(() => {
8
+ keezApi = new keezApi_1.KeezApi({
9
+ application_id: '123',
10
+ client_eid: '123',
11
+ secret: '123',
12
+ user: '123',
13
+ live: true,
14
+ });
15
+ });
16
+ /* test('should generate a new token', async () => {
17
+ const result = await keezApi.createInvoice({
18
+ amount: 400,
19
+ currencyCode: 'RON',
20
+ itemId: '123',
21
+ partner: {
22
+ isLegalPerson: false,
23
+ partnerName: 'Marian Ion',
24
+ countryName: 'Romania',
25
+ countryCode: 'RO',
26
+ countyCode: 'RO.B',
27
+ countyName: 'Bucuresti',
28
+ addressDetails: 'Strada Testez nr. 4',
29
+ cityName: 'Timisoara',
30
+ identificationNumber: '1234',
31
+ },
32
+ paymentType: 10,
33
+ series: 'PDI',
34
+ });
35
+ console.log('result is');
36
+ console.log(result);
37
+ expect(result).toBeTruthy();
38
+ });
39
+
40
+ test('should generate a new token', async () => {
41
+ const result = await keezApi.validateInvoice('f28730f84ed04613a36583e8c2a755c3');
42
+ console.log('result is');
43
+ console.log(result);
44
+ expect(result).toBeTruthy();
45
+ }); */
46
+ test('should change the live mode', () => {
47
+ keezApi.setLive(false);
48
+ expect(keezApi.getBaseDomain())
49
+ .toBe('https://staging.keez.ro');
50
+ });
51
+ });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvX190ZXN0c19fL2luZGV4LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpQ0FBaUM7QUFDakMsMkNBQXdDO0FBRXhDLFFBQVEsQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLEVBQUU7SUFDcEMsSUFBSSxPQUFnQixDQUFDO0lBRXJCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDWCxPQUFPLEdBQUcsSUFBSSxpQkFBTyxDQUFDO1lBQ2xCLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsSUFBSSxFQUFFLEtBQUs7WUFDWCxJQUFJLEVBQUUsSUFBSTtTQUNiLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBRUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBNkJPO0lBRVAsSUFBSSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsRUFBRTtRQUNyQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDMUIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCBub2NrID0gcmVxdWlyZSgnbm9jaycpO1xuaW1wb3J0IHsgS2VlekFwaSB9IGZyb20gJy4uLy4uL2tlZXpBcGknO1xuXG5kZXNjcmliZSgnS2VleiBBUEkgYXV0aG9yaXNhdGlvbicsICgpID0+IHtcbiAgICBsZXQga2VlekFwaTogS2VlekFwaTtcblxuICAgIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgICAgIGtlZXpBcGkgPSBuZXcgS2VlekFwaSh7XG4gICAgICAgICAgICBhcHBsaWNhdGlvbl9pZDogJzEyMycsXG4gICAgICAgICAgICBjbGllbnRfZWlkOiAnMTIzJyxcbiAgICAgICAgICAgIHNlY3JldDogJzEyMycsXG4gICAgICAgICAgICB1c2VyOiAnMTIzJyxcbiAgICAgICAgICAgIGxpdmU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLyogdGVzdCgnc2hvdWxkIGdlbmVyYXRlIGEgbmV3IHRva2VuJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBrZWV6QXBpLmNyZWF0ZUludm9pY2Uoe1xuICAgICAgICAgICAgYW1vdW50OiA0MDAsXG4gICAgICAgICAgICBjdXJyZW5jeUNvZGU6ICdST04nLFxuICAgICAgICAgICAgaXRlbUlkOiAnMTIzJyxcbiAgICAgICAgICAgIHBhcnRuZXI6IHtcbiAgICAgICAgICAgICAgICBpc0xlZ2FsUGVyc29uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwYXJ0bmVyTmFtZTogJ01hcmlhbiBJb24nLFxuICAgICAgICAgICAgICAgIGNvdW50cnlOYW1lOiAnUm9tYW5pYScsXG4gICAgICAgICAgICAgICAgY291bnRyeUNvZGU6ICdSTycsXG4gICAgICAgICAgICAgICAgY291bnR5Q29kZTogJ1JPLkInLFxuICAgICAgICAgICAgICAgIGNvdW50eU5hbWU6ICdCdWN1cmVzdGknLFxuICAgICAgICAgICAgICAgIGFkZHJlc3NEZXRhaWxzOiAnU3RyYWRhIFRlc3RleiBuci4gNCcsXG4gICAgICAgICAgICAgICAgY2l0eU5hbWU6ICdUaW1pc29hcmEnLFxuICAgICAgICAgICAgICAgIGlkZW50aWZpY2F0aW9uTnVtYmVyOiAnMTIzNCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGF5bWVudFR5cGU6IDEwLFxuICAgICAgICAgICAgc2VyaWVzOiAnUERJJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdyZXN1bHQgaXMnKTtcbiAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZVRydXRoeSgpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnc2hvdWxkIGdlbmVyYXRlIGEgbmV3IHRva2VuJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBrZWV6QXBpLnZhbGlkYXRlSW52b2ljZSgnZjI4NzMwZjg0ZWQwNDYxM2EzNjU4M2U4YzJhNzU1YzMnKTtcbiAgICAgICAgY29uc29sZS5sb2coJ3Jlc3VsdCBpcycpO1xuICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgICAgICBleHBlY3QocmVzdWx0KS50b0JlVHJ1dGh5KCk7XG4gICAgfSk7ICAqL1xuXG4gICAgdGVzdCgnc2hvdWxkIGNoYW5nZSB0aGUgbGl2ZSBtb2RlJywgKCkgPT4ge1xuICAgICAgICBrZWV6QXBpLnNldExpdmUoZmFsc2UpO1xuICAgICAgICBleHBlY3Qoa2VlekFwaS5nZXRCYXNlRG9tYWluKCkpXG4gICAgICAgICAgICAudG9CZSgnaHR0cHM6Ly9zdGFnaW5nLmtlZXoucm8nKTtcbiAgICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.apiGenerateToken = apiGenerateToken;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const logger_1 = require("../helpers/logger");
9
+ const KeezError_1 = require("../errors/KeezError");
10
+ const constants_1 = require("../config/constants");
11
+ const keezLogger = logger_1.logger.child({ _library: 'KeezWrapper', _method: 'GenerateToken' });
12
+ /**
13
+ * Generate a token for the Keez API
14
+ * @returns {AuthResponse} - The token response containing the access token and the expiry time
15
+ * @param params - As defined in the interface
16
+ */
17
+ async function apiGenerateToken(params) {
18
+ const url = `${params.baseDomain}/idp/connect/token`;
19
+ const formData = new URLSearchParams({
20
+ client_id: `app${params.appId}`,
21
+ client_secret: params.apiSecret,
22
+ grant_type: 'client_credentials',
23
+ scope: 'public-api',
24
+ });
25
+ try {
26
+ const response = await axios_1.default.post(url, formData.toString(), {
27
+ headers: {
28
+ 'Content-Type': 'application/x-www-form-urlencoded',
29
+ },
30
+ timeout: constants_1.HTTP_REQUEST_TIMEOUT_MS,
31
+ });
32
+ const responseObject = response.data;
33
+ return {
34
+ access_token: responseObject.access_token,
35
+ expires_in: responseObject.expires_in,
36
+ expires_at: new Date(Date.now() + constants_1.TOKEN_EXPIRY_BUFFER_MS).getTime(),
37
+ token_type: responseObject.token_type,
38
+ scope: responseObject.scope,
39
+ };
40
+ }
41
+ catch (error) {
42
+ const axiosError = error;
43
+ const errorMessage = axiosError.response?.data || axiosError.message;
44
+ keezLogger.error(`Error encountered while authenticating: ${JSON.stringify(errorMessage)}`);
45
+ throw new KeezError_1.KeezAuthError(`Authentication failed: ${JSON.stringify(errorMessage)}`, axiosError.response?.status, error);
46
+ }
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9hdXRob3Jpc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUF3QkEsNENBbUNDO0FBM0RELGtEQUEwQztBQUMxQyw2Q0FBMEM7QUFFMUMsa0RBQW1EO0FBQ25ELGtEQUFxRjtBQUVyRixNQUFNLFVBQVUsR0FBRyxlQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztBQWF2Rjs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLGdCQUFnQixDQUFDLE1BQTJCO0lBQzlELE1BQU0sR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsb0JBQW9CLENBQUM7SUFDckQsTUFBTSxRQUFRLEdBQUcsSUFBSSxlQUFlLENBQUM7UUFDakMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDLEtBQUssRUFBRTtRQUMvQixhQUFhLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDL0IsVUFBVSxFQUFFLG9CQUFvQjtRQUNoQyxLQUFLLEVBQUUsWUFBWTtLQUN0QixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLGVBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN4RCxPQUFPLEVBQUU7Z0JBQ0wsY0FBYyxFQUFFLG1DQUFtQzthQUN0RDtZQUNELE9BQU8sRUFBRSxtQ0FBdUI7U0FDbkMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUNyQyxPQUFPO1lBQ0gsWUFBWSxFQUFFLGNBQWMsQ0FBQyxZQUFZO1lBQ3pDLFVBQVUsRUFBRSxjQUFjLENBQUMsVUFBVTtZQUNyQyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLGtDQUFzQixDQUFDLENBQUMsT0FBTyxFQUFFO1lBQ25FLFVBQVUsRUFBRSxjQUFjLENBQUMsVUFBVTtZQUNyQyxLQUFLLEVBQUUsY0FBYyxDQUFDLEtBQUs7U0FDOUIsQ0FBQztJQUNOLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsTUFBTSxVQUFVLEdBQUcsS0FBbUIsQ0FBQztRQUN2QyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQ3JFLFVBQVUsQ0FBQyxLQUFLLENBQUMsMkNBQTJDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVGLE1BQU0sSUFBSSx5QkFBYSxDQUNuQiwwQkFBMEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUN4RCxVQUFVLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFDM0IsS0FBSyxDQUNSLENBQUM7SUFDTixDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBheGlvcywgeyBBeGlvc0Vycm9yIH0gZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnQC9oZWxwZXJzL2xvZ2dlcic7XG5pbXBvcnQgeyBBdXRoUmVzcG9uc2UgfSBmcm9tICdAL2R0by9hdXRoUmVzcG9uc2UnO1xuaW1wb3J0IHsgS2VlekF1dGhFcnJvciB9IGZyb20gJ0AvZXJyb3JzL0tlZXpFcnJvcic7XG5pbXBvcnQgeyBIVFRQX1JFUVVFU1RfVElNRU9VVF9NUywgVE9LRU5fRVhQSVJZX0JVRkZFUl9NUyB9IGZyb20gJ0AvY29uZmlnL2NvbnN0YW50cyc7XG5cbmNvbnN0IGtlZXpMb2dnZXIgPSBsb2dnZXIuY2hpbGQoeyBfbGlicmFyeTogJ0tlZXpXcmFwcGVyJywgX21ldGhvZDogJ0dlbmVyYXRlVG9rZW4nIH0pO1xuXG4vKipcbiAqIGJhc2VEb21haW4gLSBUaGUgYmFzZSBkb21haW4gZm9yIHRoZSBBUElcbiAqIGFwcElkIC0gVGhlIGFwcGxpY2F0aW9uIElEXG4gKiBhcGlTZWNyZXQgLSBUaGUgQVBJIHNlY3JldFxuICovXG5pbnRlcmZhY2UgR2VuZXJhdGVUb2tlblBhcmFtcyB7XG4gICAgcmVhZG9ubHkgYmFzZURvbWFpbjogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGFwcElkOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYXBpU2VjcmV0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSB0b2tlbiBmb3IgdGhlIEtlZXogQVBJXG4gKiBAcmV0dXJucyB7QXV0aFJlc3BvbnNlfSAtIFRoZSB0b2tlbiByZXNwb25zZSBjb250YWluaW5nIHRoZSBhY2Nlc3MgdG9rZW4gYW5kIHRoZSBleHBpcnkgdGltZVxuICogQHBhcmFtIHBhcmFtcyAtIEFzIGRlZmluZWQgaW4gdGhlIGludGVyZmFjZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXBpR2VuZXJhdGVUb2tlbihwYXJhbXM6IEdlbmVyYXRlVG9rZW5QYXJhbXMpOiBQcm9taXNlPEF1dGhSZXNwb25zZT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3BhcmFtcy5iYXNlRG9tYWlufS9pZHAvY29ubmVjdC90b2tlbmA7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcbiAgICAgICAgY2xpZW50X2lkOiBgYXBwJHtwYXJhbXMuYXBwSWR9YCxcbiAgICAgICAgY2xpZW50X3NlY3JldDogcGFyYW1zLmFwaVNlY3JldCxcbiAgICAgICAgZ3JhbnRfdHlwZTogJ2NsaWVudF9jcmVkZW50aWFscycsXG4gICAgICAgIHNjb3BlOiAncHVibGljLWFwaScsXG4gICAgfSk7XG5cbiAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLnBvc3QodXJsLCBmb3JtRGF0YS50b1N0cmluZygpLCB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRpbWVvdXQ6IEhUVFBfUkVRVUVTVF9USU1FT1VUX01TLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCByZXNwb25zZU9iamVjdCA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhY2Nlc3NfdG9rZW46IHJlc3BvbnNlT2JqZWN0LmFjY2Vzc190b2tlbixcbiAgICAgICAgICAgIGV4cGlyZXNfaW46IHJlc3BvbnNlT2JqZWN0LmV4cGlyZXNfaW4sXG4gICAgICAgICAgICBleHBpcmVzX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpICsgVE9LRU5fRVhQSVJZX0JVRkZFUl9NUykuZ2V0VGltZSgpLFxuICAgICAgICAgICAgdG9rZW5fdHlwZTogcmVzcG9uc2VPYmplY3QudG9rZW5fdHlwZSxcbiAgICAgICAgICAgIHNjb3BlOiByZXNwb25zZU9iamVjdC5zY29wZSxcbiAgICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zdCBheGlvc0Vycm9yID0gZXJyb3IgYXMgQXhpb3NFcnJvcjtcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYXhpb3NFcnJvci5yZXNwb25zZT8uZGF0YSB8fCBheGlvc0Vycm9yLm1lc3NhZ2U7XG4gICAgICAgIGtlZXpMb2dnZXIuZXJyb3IoYEVycm9yIGVuY291bnRlcmVkIHdoaWxlIGF1dGhlbnRpY2F0aW5nOiAke0pTT04uc3RyaW5naWZ5KGVycm9yTWVzc2FnZSl9YCk7XG4gICAgICAgIHRocm93IG5ldyBLZWV6QXV0aEVycm9yKFxuICAgICAgICAgICAgYEF1dGhlbnRpY2F0aW9uIGZhaWxlZDogJHtKU09OLnN0cmluZ2lmeShlcnJvck1lc3NhZ2UpfWAsXG4gICAgICAgICAgICBheGlvc0Vycm9yLnJlc3BvbnNlPy5zdGF0dXMsXG4gICAgICAgICAgICBlcnJvclxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.apiCancelInvoice = apiCancelInvoice;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const logger_1 = require("../../helpers/logger");
9
+ const KeezError_1 = require("../../errors/KeezError");
10
+ const constants_1 = require("../../config/constants");
11
+ const keezLogger = logger_1.logger.child({ _library: 'KeezWrapper', _method: 'Invoices' });
12
+ async function apiCancelInvoice(params) {
13
+ const url = `${params.baseDomain}/api/v1.0/public-api/${params.appClientId}/invoices/canceled`;
14
+ const body = {
15
+ externalId: params.invoiceId,
16
+ };
17
+ try {
18
+ await axios_1.default.post(url, body, {
19
+ headers: {
20
+ Authorization: `Bearer ${params.bearerToken}`,
21
+ 'Content-Type': 'application/json',
22
+ },
23
+ timeout: constants_1.HTTP_REQUEST_TIMEOUT_MS,
24
+ });
25
+ }
26
+ catch (error) {
27
+ const axiosError = error;
28
+ const errorMessage = axiosError.response?.data || axiosError.message;
29
+ keezLogger.error(`Error encountered while canceling invoice (${params.invoiceId}): ${JSON.stringify(errorMessage)}`);
30
+ throw new KeezError_1.KeezApiError(`Failed to cancel invoice: ${JSON.stringify(errorMessage)}`, axiosError.response?.status, error);
31
+ }
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuY2VsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9pbnZvaWNlcy9jYW5jZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFlQSw0Q0EyQkM7QUExQ0Qsa0RBQTBDO0FBQzFDLDZDQUEwQztBQUMxQyxrREFBa0Q7QUFDbEQsa0RBQTZEO0FBRTdELE1BQU0sVUFBVSxHQUFHLGVBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBVTNFLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxNQUEyQjtJQUM5RCxNQUFNLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxVQUFVLHdCQUF3QixNQUFNLENBQUMsV0FBVyxvQkFBb0IsQ0FBQztJQUUvRixNQUFNLElBQUksR0FBRztRQUNULFVBQVUsRUFBRSxNQUFNLENBQUMsU0FBUztLQUMvQixDQUFDO0lBRUYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxlQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUU7WUFDeEIsT0FBTyxFQUFFO2dCQUNMLGFBQWEsRUFBRSxVQUFVLE1BQU0sQ0FBQyxXQUFXLEVBQUU7Z0JBQzdDLGNBQWMsRUFBRSxrQkFBa0I7YUFDckM7WUFDRCxPQUFPLEVBQUUsbUNBQXVCO1NBQ25DLENBQUMsQ0FBQztJQUNQLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsTUFBTSxVQUFVLEdBQUcsS0FBbUIsQ0FBQztRQUN2QyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQ3JFLFVBQVUsQ0FBQyxLQUFLLENBQ1osOENBQThDLE1BQU0sQ0FBQyxTQUFTLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUNyRyxDQUFDO1FBQ0YsTUFBTSxJQUFJLHdCQUFZLENBQ2xCLDZCQUE2QixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQzNELFVBQVUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUMzQixLQUFLLENBQ1IsQ0FBQztJQUNOLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGF4aW9zLCB7IEF4aW9zRXJyb3IgfSBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICdAL2hlbHBlcnMvbG9nZ2VyJztcbmltcG9ydCB7IEtlZXpBcGlFcnJvciB9IGZyb20gJ0AvZXJyb3JzL0tlZXpFcnJvcic7XG5pbXBvcnQgeyBIVFRQX1JFUVVFU1RfVElNRU9VVF9NUyB9IGZyb20gJ0AvY29uZmlnL2NvbnN0YW50cyc7XG5cbmNvbnN0IGtlZXpMb2dnZXIgPSBsb2dnZXIuY2hpbGQoeyBfbGlicmFyeTogJ0tlZXpXcmFwcGVyJywgX21ldGhvZDogJ0ludm9pY2VzJyB9KTtcblxuaW50ZXJmYWNlIENhbmNlbEludm9pY2VQYXJhbXMge1xuICAgIHJlYWRvbmx5IGJhc2VEb21haW46IHN0cmluZztcbiAgICByZWFkb25seSBhcHBJZDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGFwcENsaWVudElkOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYmVhcmVyVG9rZW46IHN0cmluZztcbiAgICByZWFkb25seSBpbnZvaWNlSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwaUNhbmNlbEludm9pY2UocGFyYW1zOiBDYW5jZWxJbnZvaWNlUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdXJsID0gYCR7cGFyYW1zLmJhc2VEb21haW59L2FwaS92MS4wL3B1YmxpYy1hcGkvJHtwYXJhbXMuYXBwQ2xpZW50SWR9L2ludm9pY2VzL2NhbmNlbGVkYDtcblxuICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICAgIGV4dGVybmFsSWQ6IHBhcmFtcy5pbnZvaWNlSWQsXG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGF4aW9zLnBvc3QodXJsLCBib2R5LCB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3BhcmFtcy5iZWFyZXJUb2tlbn1gLFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGltZW91dDogSFRUUF9SRVFVRVNUX1RJTUVPVVRfTVMsXG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnN0IGF4aW9zRXJyb3IgPSBlcnJvciBhcyBBeGlvc0Vycm9yO1xuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBheGlvc0Vycm9yLnJlc3BvbnNlPy5kYXRhIHx8IGF4aW9zRXJyb3IubWVzc2FnZTtcbiAgICAgICAga2VlekxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgIGBFcnJvciBlbmNvdW50ZXJlZCB3aGlsZSBjYW5jZWxpbmcgaW52b2ljZSAoJHtwYXJhbXMuaW52b2ljZUlkfSk6ICR7SlNPTi5zdHJpbmdpZnkoZXJyb3JNZXNzYWdlKX1gXG4gICAgICAgICk7XG4gICAgICAgIHRocm93IG5ldyBLZWV6QXBpRXJyb3IoXG4gICAgICAgICAgICBgRmFpbGVkIHRvIGNhbmNlbCBpbnZvaWNlOiAke0pTT04uc3RyaW5naWZ5KGVycm9yTWVzc2FnZSl9YCxcbiAgICAgICAgICAgIGF4aW9zRXJyb3IucmVzcG9uc2U/LnN0YXR1cyxcbiAgICAgICAgICAgIGVycm9yXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.apiCreateInvoice = apiCreateInvoice;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const logger_1 = require("../../helpers/logger");
9
+ const KeezError_1 = require("../../errors/KeezError");
10
+ const constants_1 = require("../../config/constants");
11
+ const measureUnit_1 = require("../../config/measureUnit");
12
+ const keezLogger = logger_1.logger.child({
13
+ _library: 'KeezWrapper',
14
+ _method: 'Invoices',
15
+ });
16
+ /**
17
+ * Helper to get current date in YYYYMMDD format
18
+ */
19
+ function getCurrentDateNumber() {
20
+ const now = new Date();
21
+ const year = now.getFullYear();
22
+ const month = String(now.getMonth() + constants_1.MONTH_INDEX_OFFSET).padStart(constants_1.DATE_PAD_LENGTH, '0');
23
+ const day = String(now.getDate()).padStart(constants_1.DATE_PAD_LENGTH, '0');
24
+ return parseInt(`${year}${month}${day}`, constants_1.DECIMAL_RADIX);
25
+ }
26
+ /**
27
+ * Create an invoice
28
+ * @param params as defined in the interface
29
+ * @returns {Promise<string>} - The external ID of the created invoice
30
+ */
31
+ async function apiCreateInvoice(params) {
32
+ const url = `${params.baseDomain}/api/v1.0/public-api/${params.appClientId}/invoices`;
33
+ const currentDate = getCurrentDateNumber();
34
+ const body = {
35
+ series: params.invoice.series,
36
+ documentDate: params.invoice.documentDate ?? currentDate,
37
+ dueDate: params.invoice.dueDate ?? currentDate,
38
+ vatOnCollection: params.invoice.vatOnCollection ?? false,
39
+ currencyCode: params.invoice.currencyCode,
40
+ originalNetAmount: params.invoice.amount,
41
+ originalNetAmountCurrency: params.invoice.amount,
42
+ originalVatAmount: constants_1.DEFAULT_VAT_AMOUNT,
43
+ originalVatAmountCurrency: constants_1.DEFAULT_VAT_AMOUNT,
44
+ netAmount: params.invoice.amount,
45
+ netAmountCurrency: params.invoice.amount,
46
+ vatAmount: constants_1.DEFAULT_VAT_AMOUNT,
47
+ vatAmountCurrency: constants_1.DEFAULT_VAT_AMOUNT,
48
+ grossAmount: params.invoice.amount,
49
+ grossAmountCurrency: params.invoice.amount,
50
+ paymentTypeId: params.invoice.paymentType,
51
+ partner: {
52
+ isLegalPerson: params.invoice.partner.isLegalPerson,
53
+ partnerName: params.invoice.partner.partnerName,
54
+ countryCode: params.invoice.partner.countryCode,
55
+ countryName: params.invoice.partner.countryName,
56
+ countyCode: params.invoice.partner.countyCode,
57
+ countyName: params.invoice.partner.countyName,
58
+ cityName: params.invoice.partner.cityName,
59
+ addressDetails: params.invoice.partner.addressDetails,
60
+ },
61
+ invoiceDetails: [
62
+ {
63
+ itemExternalId: params.invoice.itemId,
64
+ measureUnitId: params.invoice.measureUnitId ?? measureUnit_1.MeasureUnit.PIECE,
65
+ quantity: params.invoice.quantity ?? constants_1.DEFAULT_INVOICE_QUANTITY,
66
+ unitPrice: params.invoice.amount,
67
+ originalNetAmount: params.invoice.amount,
68
+ originalNetAmountCurrency: params.invoice.amount,
69
+ originalVatAmount: constants_1.DEFAULT_VAT_AMOUNT,
70
+ originalVatAmountCurrency: constants_1.DEFAULT_VAT_AMOUNT,
71
+ netAmount: params.invoice.amount,
72
+ netAmountCurrency: params.invoice.amount,
73
+ vatAmount: constants_1.DEFAULT_VAT_AMOUNT,
74
+ vatAmountCurrency: constants_1.DEFAULT_VAT_AMOUNT,
75
+ grossAmount: params.invoice.amount,
76
+ grossAmountCurrency: params.invoice.amount,
77
+ },
78
+ ],
79
+ };
80
+ try {
81
+ const response = await axios_1.default.post(url, body, {
82
+ headers: {
83
+ Authorization: `Bearer ${params.bearerToken}`,
84
+ 'Content-Type': 'application/json',
85
+ },
86
+ timeout: constants_1.HTTP_REQUEST_TIMEOUT_MS,
87
+ });
88
+ return response.data.externalId;
89
+ }
90
+ catch (error) {
91
+ const axiosError = error;
92
+ const errorMessage = axiosError.response?.data?.Message || axiosError.message;
93
+ keezLogger.error(`Error encountered while creating invoice: ${errorMessage}`);
94
+ throw new KeezError_1.KeezApiError(`Failed to create invoice: ${errorMessage}`, axiosError.response?.status, error);
95
+ }
96
+ }
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9pbnZvaWNlcy9jcmVhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFrREEsNENBbUVDO0FBckhELGtEQUEwQztBQUMxQyw2Q0FBMEM7QUFFMUMsa0RBQWtEO0FBQ2xELGtEQU80QjtBQUM1QixzREFBbUQ7QUFFbkQsTUFBTSxVQUFVLEdBQUcsZUFBTSxDQUFDLEtBQUssQ0FBQztJQUM1QixRQUFRLEVBQUUsYUFBYTtJQUN2QixPQUFPLEVBQUUsVUFBVTtDQUN0QixDQUFDLENBQUM7QUFpQkg7O0dBRUc7QUFDSCxTQUFTLG9CQUFvQjtJQUN6QixNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ3ZCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLDhCQUFrQixDQUFDLENBQUMsUUFBUSxDQUFDLDJCQUFlLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekYsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQywyQkFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pFLE9BQU8sUUFBUSxDQUFDLEdBQUcsSUFBSSxHQUFHLEtBQUssR0FBRyxHQUFHLEVBQUUsRUFBRSx5QkFBYSxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsTUFBMkI7SUFDOUQsTUFBTSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSx3QkFBd0IsTUFBTSxDQUFDLFdBQVcsV0FBVyxDQUFDO0lBQ3RGLE1BQU0sV0FBVyxHQUFHLG9CQUFvQixFQUFFLENBQUM7SUFFM0MsTUFBTSxJQUFJLEdBQUc7UUFDVCxN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YyxFQUFFLGtCQUFrQjthQUNyQztZQUNELE9BQU8sRUFBRSxtQ0FBdUI7U0FDbkMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUNwQyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLE1BQU0sVUFBVSxHQUFHLEtBQXlDLENBQUM7UUFDN0QsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUM7UUFDOUUsVUFBVSxDQUFDLEtBQUssQ0FBQyw2Q0FBNkMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUM5RSxNQUFNLElBQUksd0JBQVksQ0FBQyw2QkFBNkIsWUFBWSxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUcsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXhpb3MsIHsgQXhpb3NFcnJvciB9IGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJ0AvaGVscGVycy9sb2dnZXInO1xuaW1wb3J0IHsgSW52b2ljZVJlcXVlc3QgfSBmcm9tICdAL2R0by9jcmVhdGVJbnZvaWNlUmVxdWVzdCc7XG5pbXBvcnQgeyBLZWV6QXBpRXJyb3IgfSBmcm9tICdAL2Vycm9ycy9LZWV6RXJyb3InO1xuaW1wb3J0IHtcbiAgICBIVFRQX1JFUVVFU1RfVElNRU9VVF9NUyxcbiAgICBEQVRFX1BBRF9MRU5HVEgsXG4gICAgTU9OVEhfSU5ERVhfT0ZGU0VULFxuICAgIERFQ0lNQUxfUkFESVgsXG4gICAgREVGQVVMVF9WQVRfQU1PVU5ULFxuICAgIERFRkFVTFRfSU5WT0lDRV9RVUFOVElUWSxcbn0gZnJvbSAnQC9jb25maWcvY29uc3RhbnRzJztcbmltcG9ydCB7IE1lYXN1cmVVbml0IH0gZnJvbSAnQC9jb25maWcvbWVhc3VyZVVuaXQnO1xuXG5jb25zdCBrZWV6TG9nZ2VyID0gbG9nZ2VyLmNoaWxkKHtcbiAgICBfbGlicmFyeTogJ0tlZXpXcmFwcGVyJyxcbiAgICBfbWV0aG9kOiAnSW52b2ljZXMnLFxufSk7XG5cbi8qKlxuICogYmFzZURvbWFpbiAtIFRoZSBiYXNlIGRvbWFpbiBmb3IgdGhlIEFQSVxuICogYXBwSWQgLSBUaGUgYXBwbGljYXRpb24gSURcbiAqIGFwcENsaWVudElkIC0gVGhlIGFwcGxpY2F0aW9uIGNsaWVudCBJRFxuICogYmVhcmVyVG9rZW4gLSBUaGUgYmVhcmVyIHRva2VuIG9idGFpbmVkIGF0IHRoZSBhdXRoZW50aWNhdGlvbiBzdGFnZVxuICogaXRlbUlkIC0gVGhlIGl0ZW0gSURcbiAqL1xuaW50ZXJmYWNlIENyZWF0ZUludm9pY2VQYXJhbXMge1xuICAgIHJlYWRvbmx5IGJhc2VEb21haW46IHN0cmluZztcbiAgICByZWFkb25seSBhcHBJZDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGFwcENsaWVudElkOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYmVhcmVyVG9rZW46IHN0cmluZztcbiAgICByZWFkb25seSBpbnZvaWNlOiBJbnZvaWNlUmVxdWVzdDtcbn1cblxuLyoqXG4gKiBIZWxwZXIgdG8gZ2V0IGN1cnJlbnQgZGF0ZSBpbiBZWVlZTU1ERCBmb3JtYXRcbiAqL1xuZnVuY3Rpb24gZ2V0Q3VycmVudERhdGVOdW1iZXIoKTogbnVtYmVyIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IHllYXIgPSBub3cuZ2V0RnVsbFllYXIoKTtcbiAgICBjb25zdCBtb250aCA9IFN0cmluZyhub3cuZ2V0TW9udGgoKSArIE1PTlRIX0lOREVYX09GRlNFVCkucGFkU3RhcnQoREFURV9QQURfTEVOR1RILCAnMCcpO1xuICAgIGNvbnN0IGRheSA9IFN0cmluZyhub3cuZ2V0RGF0ZSgpKS5wYWRTdGFydChEQVRFX1BBRF9MRU5HVEgsICcwJyk7XG4gICAgcmV0dXJuIHBhcnNlSW50KGAke3llYXJ9JHttb250aH0ke2RheX1gLCBERUNJTUFMX1JBRElYKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYW4gaW52b2ljZVxuICogQHBhcmFtIHBhcmFtcyBhcyBkZWZpbmVkIGluIHRoZSBpbnRlcmZhY2VcbiAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59IC0gVGhlIGV4dGVybmFsIElEIG9mIHRoZSBjcmVhdGVkIGludm9pY2VcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwaUNyZWF0ZUludm9pY2UocGFyYW1zOiBDcmVhdGVJbnZvaWNlUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCB1cmwgPSBgJHtwYXJhbXMuYmFzZURvbWFpbn0vYXBpL3YxLjAvcHVibGljLWFwaS8ke3BhcmFtcy5hcHBDbGllbnRJZH0vaW52b2ljZXNgO1xuICAgIGNvbnN0IGN1cnJlbnREYXRlID0gZ2V0Q3VycmVudERhdGVOdW1iZXIoKTtcblxuICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICAgIHNlcmllczogcGFyYW1zLmludm9pY2Uuc2VyaWVzLFxuICAgICAgICBkb2N1bWVudERhdGU6IHBhcmFtcy5pbnZvaWNlLmRvY3VtZW50RGF0ZSA/PyBjdXJyZW50RGF0ZSxcbiAgICAgICAgZHVlRGF0ZTogcGFyYW1zLmludm9pY2UuZHVlRGF0ZSA/PyBjdXJyZW50RGF0ZSxcbiAgICAgICAgdmF0T25Db2xsZWN0aW9uOiBwYXJhbXMuaW52b2ljZS52YXRPbkNvbGxlY3Rpb24gPz8gZmFsc2UsXG4gICAgICAgIGN1cnJlbmN5Q29kZTogcGFyYW1zLmludm9pY2UuY3VycmVuY3lDb2RlLFxuICAgICAgICBvcmlnaW5hbE5ldEFtb3VudDogcGFyYW1zLmludm9pY2UuYW1vdW50LFxuICAgICAgICBvcmlnaW5hbE5ldEFtb3VudEN1cnJlbmN5OiBwYXJhbXMuaW52b2ljZS5hbW91bnQsXG4gICAgICAgIG9yaWdpbmFsVmF0QW1vdW50OiBERUZBVUxUX1ZBVF9BTU9VTlQsXG4gICAgICAgIG9yaWdpbmFsVmF0QW1vdW50Q3VycmVuY3k6IERFRkFVTFRfVkFUX0FNT1VOVCxcbiAgICAgICAgbmV0QW1vdW50OiBwYXJhbXMuaW52b2ljZS5hbW91bnQsXG4gICAgICAgIG5ldEFtb3VudEN1cnJlbmN5OiBwYXJhbXMuaW52b2ljZS5hbW91bnQsXG4gICAgICAgIHZhdEFtb3VudDogREVGQVVMVF9WQVRfQU1PVU5ULFxuICAgICAgICB2YXRBbW91bnRDdXJyZW5jeTogREVGQVVMVF9WQVRfQU1PVU5ULFxuICAgICAgICBncm9zc0Ftb3VudDogcGFyYW1zLmludm9pY2UuYW1vdW50LFxuICAgICAgICBncm9zc0Ftb3VudEN1cnJlbmN5OiBwYXJhbXMuaW52b2ljZS5hbW91bnQsXG4gICAgICAgIHBheW1lbnRUeXBlSWQ6IHBhcmFtcy5pbnZvaWNlLnBheW1lbnRUeXBlLFxuICAgICAgICBwYXJ0bmVyOiB7XG4gICAgICAgICAgICBpc0xlZ2FsUGVyc29uOiBwYXJhbXMuaW52b2ljZS5wYXJ0bmVyLmlzTGVnYWxQZXJzb24sXG4gICAgICAgICAgICBwYXJ0bmVyTmFtZTogcGFyYW1zLmludm9pY2UucGFydG5lci5wYXJ0bmVyTmFtZSxcbiAgICAgICAgICAgIGNvdW50cnlDb2RlOiBwYXJhbXMuaW52b2ljZS5wYXJ0bmVyLmNvdW50cnlDb2RlLFxuICAgICAgICAgICAgY291bnRyeU5hbWU6IHBhcmFtcy5pbnZvaWNlLnBhcnRuZXIuY291bnRyeU5hbWUsXG4gICAgICAgICAgICBjb3VudHlDb2RlOiBwYXJhbXMuaW52b2ljZS5wYXJ0bmVyLmNvdW50eUNvZGUsXG4gICAgICAgICAgICBjb3VudHlOYW1lOiBwYXJhbXMuaW52b2ljZS5wYXJ0bmVyLmNvdW50eU5hbWUsXG4gICAgICAgICAgICBjaXR5TmFtZTogcGFyYW1zLmludm9pY2UucGFydG5lci5jaXR5TmFtZSxcbiAgICAgICAgICAgIGFkZHJlc3NEZXRhaWxzOiBwYXJhbXMuaW52b2ljZS5wYXJ0bmVyLmFkZHJlc3NEZXRhaWxzLFxuICAgICAgICB9LFxuICAgICAgICBpbnZvaWNlRGV0YWlsczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGl0ZW1FeHRlcm5hbElkOiBwYXJhbXMuaW52b2ljZS5pdGVtSWQsXG4gICAgICAgICAgICAgICAgbWVhc3VyZVVuaXRJZDogcGFyYW1zLmludm9pY2UubWVhc3VyZVVuaXRJZCA/PyBNZWFzdXJlVW5pdC5QSUVDRSxcbiAgICAgICAgICAgICAgICBxdWFudGl0eTogcGFyYW1zLmludm9pY2UucXVhbnRpdHkgPz8gREVGQVVMVF9JTlZPSUNFX1FVQU5USVRZLFxuICAgICAgICAgICAgICAgIHVuaXRQcmljZTogcGFyYW1zLmludm9pY2UuYW1vdW50LFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsTmV0QW1vdW50OiBwYXJhbXMuaW52b2ljZS5hbW91bnQsXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxOZXRBbW91bnRDdXJyZW5jeTogcGFyYW1zLmludm9pY2UuYW1vdW50LFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsVmF0QW1vdW50OiBERUZBVUxUX1ZBVF9BTU9VTlQsXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxWYXRBbW91bnRDdXJyZW5jeTogREVGQVVMVF9WQVRfQU1PVU5ULFxuICAgICAgICAgICAgICAgIG5ldEFtb3VudDogcGFyYW1zLmludm9pY2UuYW1vdW50LFxuICAgICAgICAgICAgICAgIG5ldEFtb3VudEN1cnJlbmN5OiBwYXJhbXMuaW52b2ljZS5hbW91bnQsXG4gICAgICAgICAgICAgICAgdmF0QW1vdW50OiBERUZBVUxUX1ZBVF9BTU9VTlQsXG4gICAgICAgICAgICAgICAgdmF0QW1vdW50Q3VycmVuY3k6IERFRkFVTFRfVkFUX0FNT1VOVCxcbiAgICAgICAgICAgICAgICBncm9zc0Ftb3VudDogcGFyYW1zLmludm9pY2UuYW1vdW50LFxuICAgICAgICAgICAgICAgIGdyb3NzQW1vdW50Q3VycmVuY3k6IHBhcmFtcy5pbnZvaWNlLmFtb3VudCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdCh1cmwsIGJvZHksIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7cGFyYW1zLmJlYXJlclRva2VufWAsXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aW1lb3V0OiBIVFRQX1JFUVVFU1RfVElNRU9VVF9NUyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZXh0ZXJuYWxJZDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zdCBheGlvc0Vycm9yID0gZXJyb3IgYXMgQXhpb3NFcnJvcjx7IE1lc3NhZ2U/OiBzdHJpbmcgfT47XG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGF4aW9zRXJyb3IucmVzcG9uc2U/LmRhdGE/Lk1lc3NhZ2UgfHwgYXhpb3NFcnJvci5tZXNzYWdlO1xuICAgICAgICBrZWV6TG9nZ2VyLmVycm9yKGBFcnJvciBlbmNvdW50ZXJlZCB3aGlsZSBjcmVhdGluZyBpbnZvaWNlOiAke2Vycm9yTWVzc2FnZX1gKTtcbiAgICAgICAgdGhyb3cgbmV3IEtlZXpBcGlFcnJvcihgRmFpbGVkIHRvIGNyZWF0ZSBpbnZvaWNlOiAke2Vycm9yTWVzc2FnZX1gLCBheGlvc0Vycm9yLnJlc3BvbnNlPy5zdGF0dXMsIGVycm9yKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.apiDeleteInvoice = apiDeleteInvoice;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const logger_1 = require("../../helpers/logger");
9
+ const KeezError_1 = require("../../errors/KeezError");
10
+ const constants_1 = require("../../config/constants");
11
+ const keezLogger = logger_1.logger.child({ _library: 'KeezWrapper', _method: 'Invoices' });
12
+ async function apiDeleteInvoice(params) {
13
+ const url = `${params.baseDomain}/api/v1.0/public-api/${params.appClientId}/invoices`;
14
+ try {
15
+ await axios_1.default.delete(url, {
16
+ headers: {
17
+ Authorization: `Bearer ${params.bearerToken}`,
18
+ 'Content-Type': 'application/json',
19
+ },
20
+ data: {
21
+ externalId: params.invoiceId,
22
+ },
23
+ timeout: constants_1.HTTP_REQUEST_TIMEOUT_MS,
24
+ });
25
+ }
26
+ catch (error) {
27
+ const axiosError = error;
28
+ const errorMessage = axiosError.response?.data || axiosError.message;
29
+ keezLogger.error(`Error encountered while deleting invoice (${params.invoiceId}): ${JSON.stringify(errorMessage)}`);
30
+ throw new KeezError_1.KeezApiError(`Failed to delete invoice: ${JSON.stringify(errorMessage)}`, axiosError.response?.status, error);
31
+ }
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9pbnZvaWNlcy9kZWxldGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFlQSw0Q0EwQkM7QUF6Q0Qsa0RBQTBDO0FBQzFDLDZDQUEwQztBQUMxQyxrREFBa0Q7QUFDbEQsa0RBQTZEO0FBRTdELE1BQU0sVUFBVSxHQUFHLGVBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBVTNFLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxNQUEyQjtJQUM5RCxNQUFNLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxVQUFVLHdCQUF3QixNQUFNLENBQUMsV0FBVyxXQUFXLENBQUM7SUFFdEYsSUFBSSxDQUFDO1FBQ0QsTUFBTSxlQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNwQixPQUFPLEVBQUU7Z0JBQ0wsYUFBYSxFQUFFLFVBQVUsTUFBTSxDQUFDLFdBQVcsRUFBRTtnQkFDN0MsY0FBYyxFQUFFLGtCQUFrQjthQUNyQztZQUNELElBQUksRUFBRTtnQkFDRixVQUFVLEVBQUUsTUFBTSxDQUFDLFNBQVM7YUFDL0I7WUFDRCxPQUFPLEVBQUUsbUNBQXVCO1NBQ25DLENBQUMsQ0FBQztJQUNQLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsTUFBTSxVQUFVLEdBQUcsS0FBbUIsQ0FBQztRQUN2QyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQ3JFLFVBQVUsQ0FBQyxLQUFLLENBQ1osNkNBQTZDLE1BQU0sQ0FBQyxTQUFTLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUNwRyxDQUFDO1FBQ0YsTUFBTSxJQUFJLHdCQUFZLENBQ2xCLDZCQUE2QixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQzNELFVBQVUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUMzQixLQUFLLENBQ1IsQ0FBQztJQUNOLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGF4aW9zLCB7IEF4aW9zRXJyb3IgfSBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICdAL2hlbHBlcnMvbG9nZ2VyJztcbmltcG9ydCB7IEtlZXpBcGlFcnJvciB9IGZyb20gJ0AvZXJyb3JzL0tlZXpFcnJvcic7XG5pbXBvcnQgeyBIVFRQX1JFUVVFU1RfVElNRU9VVF9NUyB9IGZyb20gJ0AvY29uZmlnL2NvbnN0YW50cyc7XG5cbmNvbnN0IGtlZXpMb2dnZXIgPSBsb2dnZXIuY2hpbGQoeyBfbGlicmFyeTogJ0tlZXpXcmFwcGVyJywgX21ldGhvZDogJ0ludm9pY2VzJyB9KTtcblxuaW50ZXJmYWNlIERlbGV0ZUludm9pY2VQYXJhbXMge1xuICAgIHJlYWRvbmx5IGJhc2VEb21haW46IHN0cmluZztcbiAgICByZWFkb25seSBhcHBJZDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGFwcENsaWVudElkOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYmVhcmVyVG9rZW46IHN0cmluZztcbiAgICByZWFkb25seSBpbnZvaWNlSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwaURlbGV0ZUludm9pY2UocGFyYW1zOiBEZWxldGVJbnZvaWNlUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdXJsID0gYCR7cGFyYW1zLmJhc2VEb21haW59L2FwaS92MS4wL3B1YmxpYy1hcGkvJHtwYXJhbXMuYXBwQ2xpZW50SWR9L2ludm9pY2VzYDtcblxuICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGF4aW9zLmRlbGV0ZSh1cmwsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7cGFyYW1zLmJlYXJlclRva2VufWAsXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZXh0ZXJuYWxJZDogcGFyYW1zLmludm9pY2VJZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aW1lb3V0OiBIVFRQX1JFUVVFU1RfVElNRU9VVF9NUyxcbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgYXhpb3NFcnJvciA9IGVycm9yIGFzIEF4aW9zRXJyb3I7XG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGF4aW9zRXJyb3IucmVzcG9uc2U/LmRhdGEgfHwgYXhpb3NFcnJvci5tZXNzYWdlO1xuICAgICAgICBrZWV6TG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgYEVycm9yIGVuY291bnRlcmVkIHdoaWxlIGRlbGV0aW5nIGludm9pY2UgKCR7cGFyYW1zLmludm9pY2VJZH0pOiAke0pTT04uc3RyaW5naWZ5KGVycm9yTWVzc2FnZSl9YFxuICAgICAgICApO1xuICAgICAgICB0aHJvdyBuZXcgS2VlekFwaUVycm9yKFxuICAgICAgICAgICAgYEZhaWxlZCB0byBkZWxldGUgaW52b2ljZTogJHtKU09OLnN0cmluZ2lmeShlcnJvck1lc3NhZ2UpfWAsXG4gICAgICAgICAgICBheGlvc0Vycm9yLnJlc3BvbnNlPy5zdGF0dXMsXG4gICAgICAgICAgICBlcnJvclxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==