1(function(global, factory) { 2 typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, global.APIClient = factory()); 3})(this, function() { 4 "use strict"; 5 class BasicResponseHandler { 6 /** 7 * Handle the response 8 * @param {Response} response 9 * @return {Promise<*>} 10 */ 11 handle(response) { 12 throw new Error("'handle' not implemented."); 13 } 14 /** 15 * Handle the download response 16 * @param {Response} response 17 * @return {Promise<*>} 18 */ 19 handleDownload(response) { 20 throw new Error("'handleDownload' not implemented."); 21 } 22 } 23 class SimpleResponseHandler extends BasicResponseHandler { 24 /** 25 * Handle the response 26 * @param {Response} response 27 */ 28 handle(response) { 29 if (!response.ok) { 30 return Promise.reject(response); 31 } 32 if (response.status !== 204) { 33 return response.json(); 34 } 35 } 36 /** 37 * Handle the download response 38 * @param {Response} response 39 */ 40 handleDownload(response) { 41 if (!response.ok) { 42 return Promise.reject(response); 43 } 44 if (response.status !== 204) { 45 return response.blob(); 46 } 47 } 48 } 49 class Basic { 50 constructor(apiClient) { 51 this.apiClient = apiClient; 52 this.responseHandler = this.getResponseHandler(); 53 } 54 /** 55 * Transforms filters to parameter string and appends it to the url 56 * @param {string} url 57 * @param {GlobalFilter} filters 58 * @return {string} 59 */ 60 addFiltersAsParameters(url, filters) { 61 const parameters = filters.getParameterString(); 62 return parameters ? `${url}?${parameters}` : url; 63 } 64 /** 65 * Returns the response handler 66 * @returns {BasicResponseHandler} 67 */ 68 getResponseHandler() { 69 return new SimpleResponseHandler(); 70 } 71 /** 72 * Returns url part for project 73 * @param {GlobalFilter} filters 74 * @return {string} 75 */ 76 getProjectUrl(filters) { 77 return `project/${filters.projectId}`; 78 } 79 /** 80 * Returns url part for shop 81 * @param {GlobalFilter} filters 82 * @return {string} 83 */ 84 getShopUrl(filters) { 85 return `shop/${filters.shopId}`; 86 } 87 /** 88 * Execute delete request 89 * @param {string} url 90 * @return {Promise<*>} 91 */ 92 async deleteRequest(url) { 93 const response = await this.apiClient.request("DELETE", url); 94 return this.responseHandler.handle(response); 95 } 96 /** 97 * Execute get request 98 * @param {string} url 99 * @return {Promise<*>} 100 */ 101 async getRequest(url) { 102 const response = await this.apiClient.request("GET", url); 103 return this.responseHandler.handle(response); 104 } 105 /** 106 * Execute post request 107 * @param {string} url 108 * @param {Object} data 109 * @return {Promise<*>} 110 */ 111 async postRequest(url, data) { 112 const response = await this.apiClient.request("POST", url, data); 113 return this.responseHandler.handle(response); 114 } 115 /** 116 * Execute put request 117 * @param {string} url 118 * @param {Object} data 119 * @return {Promise<*>} 120 */ 121 async putRequest(url, data) { 122 const response = await this.apiClient.request("PUT", url, data); 123 return this.responseHandler.handle(response); 124 } 125 } 126 class Account extends Basic { 127 /** 128 * Returns systems, shops and privileges for the current user 129 * @return {Promise<*>} 130 */ 131 async get() { 132 const url = `${this.apiClient.getBaseUrl()}/account`; 133 return await this.getRequest(url); 134 } 135 } 136 class Endpoint extends Basic { 137 /** 138 * Returns all items in an array 139 * @param {GlobalFilter} filters 140 * @return {Promise<*[]>} 141 */ 142 async getAll(filters) { 143 return await this.apiClient.getAll(await this.list(filters)); 144 } 145 /** 146 * Return url in specific endpoint 147 * @param {GlobalFilter} filters 148 * @return {string} 149 */ 150 getUrl(filters) { 151 throw new Error("'getUrl' not implemented."); 152 } 153 /** 154 * Returns list of objects for the given page or page 1 in case no page is defined 155 * @param {GlobalFilter} filters 156 * @param {boolean} asPostRequest 157 * @return {Promise<*>} 158 */ 159 async list(filters, asPostRequest = false) { 160 let url = `${this.apiClient.getBaseUrl()}/${this.getUrl(filters)}`; 161 if (asPostRequest) { 162 return await this.postRequest(url, filters.filters); 163 } 164 url = this.addFiltersAsParameters(url, filters);
165 return await this.getRequest(url); 166 } 167 /** 168 * Downloads a file with the given filters and output format. 169 * 170 * @param {GlobalFilter} filters 171 * @param {string} outputFormat 172 * @param {boolean} asPostRequest 173 * @return {Promise<*>} 174 */ 175 async print(filters, outputFormat, asPostRequest = false) { 176 let url = `${this.apiClient.getBaseUrl()}/${this.getUrl(filters)}/${outputFormat}`; 177 url = this.addFiltersAsParameters(url, filters); 178 return await this.apiClient.download("GET", url); 179 } 180 /** 181 * Returns all items with the given search parameters. 182 * 183 * @param {GlobalFilter} filters 184 * @param {boolean} asPostRequest 185 * @return {Promise<*>} 186 */ 187 async search(filters, asPostRequest = false) { 188 let url = `${this.apiClient.getBaseUrl()}/${this.getUrl(filters)}/search`; 189 if (asPostRequest) { 190 return await this.postRequest(url, filters.filters); 191 } 192 url = this.addFiltersAsParameters(url, filters); 193 return await this.getRequest(url); 194 } 195 }
196 let Cancellation$1 = class Cancellation extends Endpoint { 197 /** 198 * Return url for cancellation endpoint 199 * @override 200 * @param {GlobalFilter} filters 201 * @return {string} 202 */ 203 getUrl(filters) { 204 return `${this.getShopUrl(filters)}/accounting/cancellation`; 205 } 206 }; 207 class ComplaintVoucherClearing extends Endpoint { 208 /** 209 * Return url for complaint voucher clearing endpoint. 210 * @override 211 * @param {GlobalFilter} filters 212 * @return {string} 213 */ 214 getUrl(filters) { 215 return `${this.getProjectUrl(filters)}/voucher_clearing/complaint`; 216 } 217 } 218 class DailyReportEndpoint extends Endpoint { 219 /** 220 * Returns the same as list, because no pagination is available 221 * @override 222 * @param {GlobalFilter} filters 223 * @return {Promise<*>} 224 */ 225 async getAll(filters) { 226 return await this.list(filters); 227 } 228 } 229 class Cancellation extends DailyReportEndpoint { 230 /** 231 * Return url for cancellation endpoint 232 * @override 233 * @param {GlobalFilter} filters 234 * @return {string} 235 */ 236 getUrl(filters) { 237 return `${this.getShopUrl(filters)}/dailyreport/cancellation`; 238 } 239 } 240 class Cashbook extends DailyReportEndpoint { 241 /** 242 * Return url for cashbook endpoint 243 * @override 244 * @param {GlobalFilter} filters 245 * @return {string} 246 */ 247 getUrl(filters) { 248 return `${this.getShopUrl(filters)}/dailyreport/cashbook`; 249 } 250 } 251 class Coins extends DailyReportEndpoint { 252 /** 253 * Return url for coins endpoint 254 * @override 255 * @param {GlobalFilter} filters 256 * @return {string} 257 */ 258 getUrl(filters) { 259 return `${this.getShopUrl(filters)}/dailyreport/coins`; 260 } 261 } 262 class Customer extends DailyReportEndpoint { 263 /** 264 * Return url for customer endpoint 265 * @override 266 * @param {GlobalFilter} filters 267 * @return {string} 268 */ 269 getUrl(filters) { 270 return `${this.getShopUrl(filters)}/dailyreport/customer`; 271 } 272 } 273 class DailyClosing extends DailyReportEndpoint { 274 /** 275 * Return url for daily closing endpoint 276 * @override 277 * @param {GlobalFilter} filters 278 * @return {string} 279 */ 280 getUrl(filters) { 281 return `${this.getShopUrl(filters)}/dailyreport/daily_closing`; 282 } 283 } 284 class Download extends DailyReportEndpoint { 285 /** 286 * Return url for download endpoint 287 * @override 288 * @param {GlobalFilter} filters 289 * @return {string} 290 */ 291 getUrl(filters) { 292 return `${this.getShopUrl(filters)}/dailyreport`; 293 } 294 } 295 class DeliveryData extends Basic { 296 /** 297 * Returns delivery data for dailyClosing 298 * @param {GlobalFilter} filters 299 * @param {int} dailyClosing 300 * @returns {Promise<*>} 301 */ 302 async get(filters, dailyClosing) { 303 const url = `${this.apiClient.getBaseUrl()}/${this.getShopUrl(filters)}/dailyreport/delivery_data/${dailyClosing}`; 304 return await this.getRequest(url); 305 } 306 } 307 class Evaluation extends DailyReportEndpoint { 308 /** 309 * Return url for evaluation endpoint 310 * @override 311 * @param {GlobalFilter} filters 312 * @return {string} 313 */ 314 getUrl(filters) { 315 return `${this.getShopUrl(filters)}/dailyreport/evaluation`; 316 } 317 } 318 class SimpleRating extends DailyReportEndpoint { 319 /** 320 * Return url for simple rating endpoint 321 * @override 322 * @param {GlobalFilter} filters 323 * @return {string} 324 */ 325 getUrl(filters) { 326 return `${this.getShopUrl(filters)}/dailyreport/simple_rating`; 327 } 328 } 329 class RevenueData extends Basic { 330 /** 331 * Returns revenue data for dailyClosing 332 * @param {GlobalFilter} filters 333 * @param {int} dailyClosing 334 * @returns {Promise<*>} 335 */ 336 async get(filters, dailyClosing) { 337 const url = `${this.apiClient.getBaseUrl()}/${this.getShopUrl(filters)}/dailyreport/revenue_data/${dailyClosing}`; 338 return await this.getRequest(url); 339 } 340 } 341 class Staff extends DailyReportEndpoint { 342 /** 343 * Return url for staff endpoint 344 * @override 345 * @param {GlobalFilter} filters 346 * @return {string} 347 */ 348 getUrl(filters) {
349 return `${this.getShopUrl(filters)}/dailyreport/staff`; 350 } 351 } 352 class Voucher extends DailyReportEndpoint { 353 /** 354 * Return url for voucher endpoint 355 * @override 356 * @param {GlobalFilter} filters 357 * @return {string} 358 */ 359 getUrl(filters) { 360 return `${this.getShopUrl(filters)}/dailyreport/voucher`; 361 } 362 } 363 class DailyReport extends Basic { 364 cancellation() { 365 return new Cancellation(this.apiClient); 366 } 367 cashbook() { 368 return new Cashbook(this.apiClient); 369 } 370 coins() { 371 return new Coins(this.apiClient); 372 } 373 customer() { 374 return new Customer(this.apiClient); 375 } 376 dailyClosing() { 377 return new DailyClosing(this.apiClient); 378 } 379 download() { 380 return new Download(this.apiClient); 381 } 382 deliveryData() { 383 return new DeliveryData(this.apiClient); 384 } 385 evaluation() { 386 return new Evaluation(this.apiClient); 387 } 388 simpleRating() { 389 return new SimpleRating(this.apiClient); 390 } 391 revenueData() { 392 return new RevenueData(this.apiClient); 393 } 394 staff() { 395 return new Staff(this.apiClient); 396 } 397 voucher() { 398 return new Voucher(this.apiClient); 399 } 400 } 401 class GiftVoucher extends Endpoint { 402 /** 403 * Return url for complaint voucher clearing endpoint. 404 * @override 405 * @param {GlobalFilter} filters 406 * @return {string} 407 */ 408 getUrl(filters) { 409 return `${this.getProjectUrl(filters)}/accounting/gift_voucher`; 410 } 411 } 412 class MovedOrders extends Endpoint { 413 /** 414 * Return url for moved orders endpoint 415 * @override 416 * @param {GlobalFilter} filters 417 * @return {string} 418 */ 419 getUrl(filters) { 420 return `${this.getShopUrl(filters)}/moved_orders/from_shop`; 421 } 422 } 423 class OnlinePayment extends Endpoint { 424 /** 425 * Return url for online payment endpoint 426 * @override 427 * @param {GlobalFilter} filters 428 * @return {string} 429 */ 430 getUrl(filters) { 431 return `${this.getProjectUrl(filters)}/accounting/onlinepayment`; 432 } 433 } 434 class ReceivedOrders extends Endpoint { 435 /** 436 * Return url for received orders endpoint 437 * @override 438 * @param {GlobalFilter} filters 439 * @return {string} 440 */ 441 getUrl(filters) { 442 return `${this.getShopUrl(filters)}/moved_orders/to_shop`; 443 } 444 } 445 class GiftVoucherClearing extends Endpoint { 446 /** 447 * Return url for complaint voucher clearing endpoint. 448 * @override 449 * @param {GlobalFilter} filters 450 * @return {string} 451 */ 452 getUrl(filters) { 453 return `${this.getProjectUrl(filters)}/voucher_clearing/gift`; 454 } 455 } 456 class Accounting extends Basic { 457 cancellation() { 458 return new Cancellation$1(this.apiClient); 459 } 460 complaintVoucherClearing() { 461 return new ComplaintVoucherClearing(this.apiClient); 462 } 463 dailyReport() { 464 return new DailyReport(this.apiClient); 465 } 466 giftVoucher() { 467 return new GiftVoucher(this.apiClient); 468 } 469 giftVoucherClearing() { 470 return new GiftVoucherClearing(this.apiClient); 471 } 472 movedOrder() { 473 return new MovedOrders(this.apiClient); 474 } 475 onlinePayment() { 476 return new OnlinePayment(this.apiClient); 477 } 478 receivedOrder() { 479 return new ReceivedOrders(this.apiClient); 480 } 481 } 482 class CrudEndpoint extends Endpoint { 483 /** 484 * Returns an addon 485 * @param {GlobalFilter} filters 486 * @param {string | int} item 487 * @returns {Promise<*>} 488 */ 489 async get(filters, item) { 490 const parameters = filters.getParameterString(); 491 const url = `${this.apiClient.getBaseUrl()}/${this.getUrl(filters)}/${item}?${parameters}`; 492 return await this.getRequest(url); 493 } 494 /** 495 * creates an item 496 * @param {GlobalFilter} filters 497 * @param {Object} data 498 * @returns {Promise<*>} 499 */ 500 async create(filters, data) { 501 const url = `${this.apiClient.getBaseUrl()}/${this.getUrl(filters)}`; 502 return await this.postRequest(url, data); 503 } 504 /** 505 * Returns data needed for creating a new item 506 * @param filters 507 * @return {Promise<*>} 508 */ 509 async getCreate(filters) { 510 const parameters = filters.getParameterString(); 511 const url = `${this.apiClient.getBaseUrl()}/${this.getUrl(filters)}/create?${parameters}`;
512 return await this.getRequest(url); 513 } 514 /** 515 * updates an item 516 * @param {GlobalFilter} filters 517 * @param {string | int} item 518 * @param {Object} data 519 * @returns {Promise<*>} 520 */ 521 async update(filters, item, data) { 522 const url = `${this.apiClient.getBaseUrl()}/${this.getUrl(filters)}/${item}`; 523 return await this.putRequest(url, data); 524 } 525 /** 526 * updates all given items 527 * @param {GlobalFilter} filters 528 * @param {Array.<Object>} data 529 * @return {Promise<*>} 530 */ 531 async updateAll(filters, data) { 532 const url = `${this.apiClient.getBaseUrl()}/${this.getUrl(filters)}`; 533 return await this.putRequest(url, data); 534 } 535 /** 536 * deletes an item 537 * @param {GlobalFilter} filters 538 * @param {string | int} item 539 * @returns {Promise<*>} 540 */ 541 async delete(filters, item) { 542 const url = `${this.apiClient.getBaseUrl()}/${this.getUrl(filters)}/${item}`; 543 return await this.deleteRequest(url); 544 } 545 } 546 class AddCoins extends CrudEndpoint { 547 /** 548 * Return url for rules endpoint 549 * @override 550 * @param {GlobalFilter} filters 551 * @return {string} 552 */ 553 getUrl(filters) { 554 return `${this.getProjectUrl(filters)}/coin`; 555 } 556 } 557 class CoinRules extends CrudEndpoint { 558 /** 559 * Return url for rules endpoint 560 * @override 561 * @param {GlobalFilter} filters 562 * @return {string} 563 */ 564 getUrl(filters) { 565 return `${this.getProjectUrl(filters)}/coin-rules`; 566 } 567 } 568 class PortalUser extends Endpoint { 569 /** 570 * Return url for rules endpoint 571 * @override 572 * @param {GlobalFilter} filters 573 * @return {string} 574 */ 575 getUrl(filters) { 576 return `${this.getProjectUrl(filters)}/portaluser`; 577 } 578 } 579 class VoucherCombinations extends Endpoint { 580 /** 581 * Return url for voucher combinations endpoint 582 * @override 583 * @param {GlobalFilter} filters 584 * @return {string} 585 */ 586 getUrl(filters) { 587 return `${this.getProjectUrl(filters)}/voucher`; 588 } 589 /** 590 * Returns a voucher 591 * @param {GlobalFilter} filters 592 * @param {int} voucher 593 * @returns {Promise<*>} 594 */ 595 async get(filters, voucher) { 596 const url = `${this.apiClient.getBaseUrl()}/${this.getUrl(filters)}/${voucher}`; 597 return await this.getRequest(url); 598 } 599 /** 600 * Link vouchers to a voucher 601 * @param {GlobalFilter} filters 602 * @param {int} voucher 603 * @param {Array.<int>} voucherIds 604 * @returns {Promise<*>} 605 */ 606 async createLink(filters, voucher, voucherIds) { 607 const data = { 608 voucherIds 609 }; 610 const url = `${this.apiClient.getBaseUrl()}/${this.getUrl(filters)}/${voucher}/link`; 611 return await this.postRequest(url, data); 612 } 613 /** 614 * Unlink vouchers from a voucher 615 * @param {GlobalFilter} filters 616 * @param {int} voucher 617 * @param {int} unlinkId 618 * @returns {Promise<*>} 619 */ 620 async deleteLink(filters, voucher, unlinkId) { 621 const url = `${this.apiClient.getBaseUrl()}/${this.getUrl(filters)}/${voucher}/${unlinkId}`; 622 return await this.deleteRequest(url); 623 } 624 } 625 class CoinClearing extends Endpoint { 626 /** 627 * Return url for coin clearing endpoint 628 * @override 629 * @param {GlobalFilter} filters 630 * @return {string} 631 */ 632 getUrl(filters) { 633 return `${this.getProjectUrl(filters)}/coinclearing`; 634 } 635 } 636 class Marketing extends Basic { 637 addCoin() { 638 return new AddCoins(this.apiClient); 639 } 640 coinClearing() { 641 return new CoinClearing(this.apiClient); 642 } 643 coinRule() { 644 return new CoinRules(this.apiClient); 645 } 646 portalUser() { 647 return new PortalUser(this.apiClient); 648 } 649 voucherCombination() { 650 return new VoucherCombinations(this.apiClient); 651 } 652 } 653 class AddonGroup extends CrudEndpoint { 654 /** 655 * Return url for addon group endpoint 656 * @override 657 * @param {GlobalFilter} filters 658 * @return {string} 659 */ 660 getUrl(filters) { 661 return `${this.getProjectUrl(filters)}/addongroup`; 662 } 663 } 664 class AddonManagement extends CrudEndpoint { 665 /** 666 * Return url for addon management endpoint 667 * @param filters 668 * @return {string} 669 */ 670 getAddonManagementUrl(filters) { 671 return `${this.getProjectUrl(filters)}/addonmanagement`; 672 } 673 /** 674 * Return url for addon management / addon endpoint 675 * @override 676 * @param {GlobalFilter} filters 677 * @return {string} 678 */ 679 getUrl(filters) { 680 return `${this.getAddonManagementUrl(filters)}/addon`; 681 } 682 /** 683 * Returns list of objects for the given page or page 1 in case no page is defined 684 * @override 685 * @param {GlobalFilter} filters 686 * @return {Promise<*>} 687 */ 688 async list(filters) { 689 const parameters = filters.getParameterString(); 690 const url = `${this.apiClient.getBaseUrl()}/${this.getAddonManagementUrl(filters)}?${parameters}`;
691 return await this.getRequest(url); 692 } 693 /** 694 * updates all given items 695 * @override 696 * @param {GlobalFilter} filters 697 * @param {Array.<Object>} data 698 * @return {Promise<*>} 699 */ 700 async updateAll(filters, data) { 701 const url = `${this.apiClient.getBaseUrl()}/${this.getAddonManagementUrl(filters)}`; 702 return await this.putRequest(url, data); 703 } 704 /** 705 * Returns all items with the given search parameters. 706 * 707 * @param {GlobalFilter} filters 708 * @return {Promise<*>} 709 */ 710 async search(filters) { 711 const parameters = filters.getParameterString(); 712 const url = `${this.apiClient.getBaseUrl()}/${this.getAddonManagementUrl(filters)}/search?${parameters}`; 713 return await this.getRequest(url); 714 } 715 } 716 class AddonSize extends Basic { 717 /** 718 * Returns a list of addonSizes for the given page or page 1 in case no page is defined 719 * @param filters {GlobalFilter} shop, page 720 * @param {string} addon 721 * @returns {Promise<*>} 722 */ 723 async list(filters, addon) { 724 const parameters = filters.getParameterString(); 725 const url = `${this.getUrl(filters, addon)}?${parameters}`; 726 return await this.getRequest(url); 727 } 728 /** 729 * Returns an addonSize 730 * @param {GlobalFilter} filters shop 731 * @param {string} addon 732 * @param {string} addonSize 733 * @returns {Promise<*>} 734 */ 735 async get(filters, addon, addonSize) { 736 const url = `${this.getUrl(filters, addon)}/${addonSize}`; 737 return await this.getRequest(url); 738 } 739 /** 740 * returns all addonSizes in an array 741 * @param filters {GlobalFilter} shop 742 * @param {string} addon 743 * @returns {Promise<*>} 744 */ 745 async getAll(filters, addon) { 746 return await this.apiClient.getAll(await this.list(filters, addon)); 747 } 748 /** 749 * Return url in specific endpoint 750 * 751 * @param {GlobalFilter} filters 752 * @param {string} addon name of the addon 753 * @return {string} 754 */ 755 getUrl(filters, addon) { 756 return `${this.apiClient.getBaseUrl()}/${this.getProjectUrl(filters)}/addon/${addon}/addonsize`; 757 } 758 /** 759 * creates an addonSize 760 * @param {GlobalFilter} filters shop 761 * @param {string} addon 762 * @param {Object} data 763 * @returns {Promise<*>} 764 */ 765 async create(filters, addon, data) { 766 const url = this.getUrl(filters, addon); 767 return await this.postRequest(url, data); 768 } 769 /** 770 * updates an addonSize 771 * @param {GlobalFilter} filters 772 * @param {string} addon 773 * @param {string} addonSize 774 * @param {Object} data 775 * @returns {Promise<*>} 776 */ 777 async update(filters, addon, addonSize, data) { 778 const url = `${this.getUrl(filters, addon)}/${addonSize}`; 779 return await this.putRequest(url, data); 780 } 781 /** 782 * deletes an addonSize 783 * @param {GlobalFilter} filters 784 * @param {string} addon 785 * @param {string} addonSize 786 * @returns {Promise<*>} 787 */ 788 async delete(filters, addon, addonSize) { 789 const parameters = filters.getParameterString(); 790 const url = `${this.getUrl(filters, addon)}/${addonSize}?${parameters}`; 791 return await this.deleteRequest(url); 792 } 793 } 794 class LMIV extends Endpoint { 795 /** 796 * Return url for lmiv endpoint 797 * @overwrite 798 * @param {GlobalFilter} filters 799 * @return {string} 800 */ 801 getUrl(filters) { 802 return `${this.getProjectUrl(filters)}/lmiv`; 803 } 804 } 805 class LMIVLocal extends CrudEndpoint { 806 /** 807 * Return url for lmiv local endpoint 808 * @override 809 * @param {GlobalFilter} filters 810 * @return {string} 811 */ 812 getUrl(filters) { 813 return `${this.getProjectUrl(filters)}/lmivlocal`; 814 } 815 } 816 class ProductManagement extends CrudEndpoint { 817 /** 818 * Return url for product management endpoint 819 * @override 820 * @param {GlobalFilter} filters 821 * @return {string} 822 */ 823 getUrl(filters) { 824 return `${this.getProjectUrl(filters)}/productmanagement`; 825 } 826 } 827 class Recipe extends CrudEndpoint { 828 /** 829 * Return url for recipe endpoint 830 * @override 831 * @param {GlobalFilter} filters 832 * @return {string} 833 */ 834 getUrl(filters) { 835 return `${this.getProjectUrl(filters)}/recipe`; 836 } 837 } 838 class Resource extends CrudEndpoint { 839 /** 840 * Return url for resource endpoint 841 * @override 842 * @param {GlobalFilter} filters 843 * @return {string} 844 */ 845 getUrl(filters) { 846 return `${this.getProjectUrl(filters)}/resource`; 847 } 848 } 849 class Menu extends Basic { 850 addonGroup() { 851 return new AddonGroup(this.apiClient); 852 } 853 addonManagement() { 854 return new AddonManagement(this.apiClient); 855 } 856 addonSize() { 857 return new AddonSize(this.apiClient); 858 } 859 lmiv() { 860 return new LMIV(this.apiClient); 861 }
862 lmivLocal() { 863 return new LMIVLocal(this.apiClient); 864 } 865 productManagement() { 866 return new ProductManagement(this.apiClient); 867 } 868 recipe() { 869 return new Recipe(this.apiClient); 870 } 871 resource() { 872 return new Resource(this.apiClient); 873 } 874 } 875 class Status extends Endpoint { 876 /** 877 * Returns OAuth status for mollie connect 878 * @returns {Promise<*>} 879 */ 880 async get() { 881 const url = `${this.apiClient.getBaseUrl()}/oauth/mollie`; 882 return await this.getRequest(url) ?? null; 883 } 884 } 885 class AuthUrl extends Endpoint { 886 /** 887 * Returns OAuth auth url for mollie connect 888 * @returns {Promise<*>} 889 */ 890 async get() { 891 const url = `${this.apiClient.getBaseUrl()}/oauth/mollie/request`; 892 return await this.getRequest(url); 893 } 894 } 895 class Link extends Endpoint { 896 /** 897 * Links a shopId to a mollie account 898 * @param {string} code the still valid mollie auth code 899 * @param {string} stete mollie salted state verification 900 * @returns {Promise<*>} 901 */ 902 async connect(code, state) { 903 const data = { 904 code: code ?? null, 905 state: state ?? null 906 }; 907 const url = `${this.apiClient.getBaseUrl()}/oauth/mollie`; 908 return await this.postRequest(url, data); 909 } 910 /** 911 * unlinks a shopId from a mollie account 912 * @returns {Promise<*>} 913 */ 914 async disconnect() { 915 const url = `${this.apiClient.getBaseUrl()}/oauth/mollie`; 916 return await this.deleteRequest(url); 917 } 918 } 919 class MollieConnect extends Basic { 920 status() { 921 return new Status(this.apiClient); 922 } 923 authUrl() { 924 return new AuthUrl(this.apiClient); 925 } 926 link() { 927 return new Link(this.apiClient); 928 } 929 } 930 class OAuth extends Basic { 931 mollieConnect() { 932 return new MollieConnect(this.apiClient); 933 } 934 } 935 class StatusDataResponseHandler extends BasicResponseHandler { 936 /** 937 * Handle the response 938 * @param {Response} response 939 * @return {Promise<*>|{name: string, json: object}} 940 */ 941 async handle(response) { 942 if (!response.ok) { 943 return Promise.reject(response); 944 } 945 let json = null; 946 if (![202, 204].includes(response.status)) { 947 json = await response.json(); 948 } 949 return { 950 status: response.status, 951 json 952 }; 953 } 954 async handleDownload(response) { 955 if (!response.ok) { 956 return Promise.reject(response); 957 } 958 if (response.status !== 204) { 959 return response.blob(); 960 } 961 } 962 } 963 class Revenues extends Endpoint { 964 /** 965 * Return url for daily sales endpoint 966 * @override 967 * @param {GlobalFilter} filters 968 * @return {string} 969 */ 970 getUrl(filters) { 971 return `${this.getProjectUrl(filters)}/statistics/daily_analytics/revenue`; 972 } 973 /** 974 * Return the response handler 975 * @return {BasicResponseHandler} 976 */ 977 getResponseHandler() { 978 return new StatusDataResponseHandler(); 979 } 980 } 981 class OrderPlatforms extends Endpoint { 982 /** 983 * Return url for daily sales endpoint 984 * @override 985 * @param {GlobalFilter} filters 986 * @return {string} 987 */ 988 getUrl(filters) { 989 return `${this.getProjectUrl(filters)}/statistics/daily_analytics/order_platform`; 990 } 991 /** 992 * Return the response handler 993 * @return {BasicResponseHandler} 994 */ 995 getResponseHandler() { 996 return new StatusDataResponseHandler(); 997 } 998 } 999 let DeliveryTimes$1 = class DeliveryTimes extends Endpoint { 1000 /** 1001 * Return url for daily sales endpoint 1002 * @override 1003 * @param {GlobalFilter} filters 1004 * @return {string} 1005 */ 1006 getUrl(filters) { 1007 return `${this.getProjectUrl(filters)}/statistics/daily_analytics/delivery_time`; 1008 } 1009 /** 1010 * Return the response handler 1011 * @return {BasicResponseHandler} 1012 */ 1013 getResponseHandler() { 1014 return new StatusDataResponseHandler(); 1015 } 1016 }; 1017 let Productivity$1 = class Productivity extends Endpoint { 1018 /** 1019 * Return url for daily sales endpoint 1020 * @override 1021 * @param {GlobalFilter} filters 1022 * @return {string} 1023 */ 1024 getUrl(filters) { 1025 return `${this.getProjectUrl(filters)}
1025/statistics/daily_analytics/productivity`; 1026 } 1027 /** 1028 * Return the response handler 1029 * @return {BasicResponseHandler} 1030 */ 1031 getResponseHandler() { 1032 return new StatusDataResponseHandler(); 1033 } 1034 }; 1035 class DeliveryAreas extends Endpoint { 1036 /** 1037 * Return url for daily sales endpoint 1038 * @override 1039 * @param {GlobalFilter} filters 1040 * @return {string} 1041 */ 1042 getUrl(filters) { 1043 return `${this.getProjectUrl(filters)}/statistics/daily_analytics/delivery_area`; 1044 } 1045 /** 1046 * Return the response handler 1047 * @return {BasicResponseHandler} 1048 */ 1049 getResponseHandler() { 1050 return new StatusDataResponseHandler(); 1051 } 1052 } 1053 class DeliveriesPerHour extends Endpoint { 1054 /** 1055 * Return url for daily sales endpoint 1056 * @override 1057 * @param {GlobalFilter} filters 1058 * @return {string} 1059 */ 1060 getUrl(filters) { 1061 return `${this.getProjectUrl(filters)}/statistics/daily_analytics/deliveries_per_hour`; 1062 } 1063 /** 1064 * Return the response handler 1065 * @return {BasicResponseHandler} 1066 */ 1067 getResponseHandler() { 1068 return new StatusDataResponseHandler(); 1069 } 1070 } 1071 class CustomerEvaluations extends Endpoint { 1072 /** 1073 * Return url for daily sales endpoint 1074 * @override 1075 * @param {GlobalFilter} filters 1076 * @return {string} 1077 */ 1078 getUrl(filters) { 1079 return `${this.getProjectUrl(filters)}/statistics/daily_analytics/customer_evaluation`; 1080 } 1081 /** 1082 * Return the response handler 1083 * @return {BasicResponseHandler} 1084 */ 1085 getResponseHandler() { 1086 return new StatusDataResponseHandler(); 1087 } 1088 } 1089 class Profitability extends Endpoint { 1090 /** 1091 * Return url for daily sales endpoint 1092 * @override 1093 * @param {GlobalFilter} filters 1094 * @return {string} 1095 */ 1096 getUrl(filters) { 1097 return `${this.getProjectUrl(filters)}/statistics/daily_analytics/profitability`; 1098 } 1099 /** 1100 * Return the response handler 1101 * @return {BasicResponseHandler} 1102 */ 1103 getResponseHandler() { 1104 return new StatusDataResponseHandler(); 1105 } 1106 } 1107 class ProductCategories extends Endpoint { 1108 /** 1109 * Return url for product categories statistics 1110 * @override 1111 * @param {GlobalFilter} filters 1112 * @return {string} 1113 */ 1114 getUrl(filters) { 1115 return `${this.getProjectUrl(filters)}/statistics/daily_analytics/product_category`; 1116 } 1117 /** 1118 * Return the response handler 1119 * @return {BasicResponseHandler} 1120 */ 1121 getResponseHandler() { 1122 return new StatusDataResponseHandler(); 1123 } 1124 } 1125 class DailyAnalytics extends Basic { 1126 revenues() { 1127 return new Revenues(this.apiClient); 1128 } 1129 productCategories() { 1130 return new ProductCategories(this.apiClient); 1131 } 1132 orderPlatforms() { 1133 return new OrderPlatforms(this.apiClient); 1134 } 1135 deliveryTimes() { 1136 return new DeliveryTimes$1(this.apiClient); 1137 } 1138 productivity() { 1139 return new Productivity$1(this.apiClient); 1140 } 1141 deliveryAreas() { 1142 return new DeliveryAreas(this.apiClient); 1143 } 1144 deliveriesPerHour() { 1145 return new DeliveriesPerHour(this.apiClient); 1146 } 1147 customerEvaluations() { 1148 return new CustomerEvaluations(this.apiClient); 1149 } 1150 profitability() { 1151 return new Profitability(this.apiClient); 1152 } 1153 } 1154 class Heatmap extends Endpoint { 1155 /** 1156 * Return url for heatmap endpoint 1157 * @override 1158 * @param {GlobalFilter} filters 1159 * @return {string} 1160 */ 1161 getUrl(filters) { 1162 return `${this.getProjectUrl(filters)}/statistics/heatmap`; 1163 } 1164 } 1165 class Productivity extends Endpoint { 1166 /** 1167 * Return url for productivity endpoint 1168 * @override 1169 * @param {GlobalFilter} filters 1170 * @return {string} 1171 */ 1172 getUrl(filters) { 1173 return `${this.getProjectUrl(filters)}/statistics/productivity`; 1174 } 1175 } 1176 class ComplaintVouchers extends Endpoint { 1177 /** 1178 * Return url for complaint vouchers endpoint 1179 * @override 1180 * @param {GlobalFilter} filters 1181 * @return {string} 1182 */ 1183 getUrl(filters) { 1184 return `${this.getProjectUrl(filters)}/statistics/efficiency/complaint_vouchers`; 1185 } 1186 }
1187 class DailySales extends Endpoint { 1188 /** 1189 * Return url for daily sales endpoint 1190 * @override 1191 * @param {GlobalFilter} filters 1192 * @return {string} 1193 */ 1194 getUrl(filters) { 1195 return `${this.getProjectUrl(filters)}/statistics/sales/daily`; 1196 } 1197 } 1198 class DeliveryTimes extends Endpoint { 1199 /** 1200 * Return url for delivery times endpoint 1201 * @override 1202 * @param {GlobalFilter} filters 1203 * @return {string} 1204 */ 1205 getUrl(filters) { 1206 return `${this.getProjectUrl(filters)}/statistics/deliverytimes`; 1207 } 1208 } 1209 class DriverStatistic extends Endpoint { 1210 /** 1211 * Return url for driver statistics endpoint 1212 * @override 1213 * @param {GlobalFilter} filters 1214 * @return {string} 1215 */ 1216 getUrl(filters) { 1217 return `${this.getProjectUrl(filters)}/statistics/efficiency/driver`; 1218 } 1219 } 1220 class OrderFrequency extends Endpoint { 1221 /** 1222 * Return url for order frequency endpoint 1223 * @override 1224 * @param {GlobalFilter} filters 1225 * @return {string} 1226 */ 1227 getUrl(filters) { 1228 return `${this.getProjectUrl(filters)}/statistics/efficiency/order_frequency`; 1229 } 1230 } 1231 class StoreComparison extends Endpoint { 1232 /** 1233 * Return url for store comparison endpoint 1234 * @override 1235 * @param {GlobalFilter} filters 1236 * @return {string} 1237 */ 1238 getUrl(filters) { 1239 return `${this.getProjectUrl(filters)}/statistics/efficiency/storecomparison`; 1240 } 1241 /** 1242 * Return the response handler 1243 * @return {BasicResponseHandler} 1244 */ 1245 getResponseHandler() { 1246 return new StatusDataResponseHandler(); 1247 } 1248 } 1249 class TimeInKitchen extends Endpoint { 1250 /** 1251 * Return url for time in kitchen endpoint 1252 * @override 1253 * @param {GlobalFilter} filters 1254 * @return {string} 1255 */ 1256 getUrl(filters) { 1257 return `${this.getProjectUrl(filters)}/statistics/efficiency/kitchen_time`; 1258 } 1259 } 1260 class DeliveryTimeComparison extends Endpoint { 1261 /** 1262 * Return url for delivery time setting endpoint 1263 * @override 1264 * @param {GlobalFilter} filters 1265 * @return {string} 1266 */ 1267 getUrl(filters) { 1268 return `${this.getProjectUrl(filters)}/statistics/efficiency/delivery_times_comparison`; 1269 } 1270 } 1271 class Efficiency extends Basic { 1272 complaintVouchers() { 1273 return new ComplaintVouchers(this.apiClient); 1274 } 1275 dailySales() { 1276 return new DailySales(this.apiClient); 1277 } 1278 deliveryTimes() { 1279 return new DeliveryTimes(this.apiClient); 1280 } 1281 deliveryTimeComparison() { 1282 return new DeliveryTimeComparison(this.apiClient); 1283 } 1284 driverStatistics() { 1285 return new DriverStatistic(this.apiClient); 1286 } 1287 orderFrequency() { 1288 return new OrderFrequency(this.apiClient); 1289 } 1290 storeComparison() { 1291 return new StoreComparison(this.apiClient); 1292 } 1293 timeInKitchen() { 1294 return new TimeInKitchen(this.apiClient); 1295 } 1296 } 1297 class LiveRanking extends Endpoint { 1298 /** 1299 * Returns statistics ranking data for liveRanking 1300 * @param {GlobalFilter} filters 1301 * @returns {Promise<*>} 1302 */ 1303 async get(filters) { 1304 const url = `${this.apiClient.getBaseUrl()}/${this.getProjectUrl(filters)}/statistics/live_ranking?shop_id=${filters.shopId}`; 1305 return await this.getRequest(url); 1306 } 1307 } 1308 class VoucherStatistic extends Endpoint { 1309 /** 1310 * Return url for voucher endpoint 1311 * @override 1312 * @param {GlobalFilter} filters 1313 * @return {string} 1314 */ 1315 getUrl(filters) { 1316 return `${this.getProjectUrl(filters)}/statistics/voucher`; 1317 } 1318 } 1319 class Statistics extends CrudEndpoint { 1320 dailyAnalytics() { 1321 return new DailyAnalytics(this.apiClient); 1322 } 1323 efficiency() { 1324 return new Efficiency(this.apiClient); 1325 } 1326 heatmap() { 1327 return new Heatmap(this.apiClient); 1328 } 1329 productivity() { 1330 return new Productivity(this.apiClient); 1331 } 1332 liveRanking() { 1333 return new LiveRanking(this.apiClient); 1334 } 1335 voucher() { 1336 return new VoucherStatistic(this.apiClient); 1337 } 1338 /** 1339 * Return url for statistics endpoint 1340 * @override 1341 * @param {GlobalFilter} filters 1342 * @return {string} 1343 */ 1344 getUrl(filters) { 1345 return `${this.getProjectUrl(filters)}/statistics`; 1346 } 1347 } 1348 class Supplier extends CrudEndpoint { 1349 /** 1350 * Return url for supplier endpoint 1351 * @override 1352 * @param {GlobalFilter} filters 1353 * @return {string} 1354 */ 1355 getUrl(filters) { 1356 return `${this.getProjectUrl(filters)}/supplier`; 1357 } 1358 } 1359 class Stock extends Basic { 1360 supplier() { 1361 return new Supplier(this.apiClient); 1362 } 1363 } 1364 class GlobalFilter { 1365 constructor(filters) { 1366 this.filters = filters; 1367 } 1368 /** 1369 * Transforms the filters object into a string that can be appended to the url 1370 * @return {string} 1371 */ 1372 getParameterString() { 1373 return Object.entries(this.filters).filter(([key, value]) => value !== null).map(([key, value]) => `${key}=${value}`).join("&"); 1374 } 1375 /** 1376 * Return the project id from the filters 1377 * @return {number|null} 1378 */ 1379 get projectId() { 1380 var _a; 1381 return ((_a = this.filters) == null ? void 0 : _a.project_id) ?? null; 1382 } 1383 /** 1384 * Return the shop id from the filters 1385 * @return {*|null} 1386 */
1387 get shopId() { 1388 var _a; 1389 return ((_a = this.filters) == null ? void 0 : _a.shop_id) ?? null; 1390 } 1391 } 1392 class APIClient { 1393 constructor(baseUrl = "", bearerToken = "", apiVersion = "v1", timeout = 1e4) { 1394 this.baseUrl = baseUrl.endsWith("/api") ? baseUrl : `${baseUrl}/api`; 1395 this.bearerToken = bearerToken; 1396 this.apiVersion = apiVersion; 1397 this.timeout = timeout; 1398 } 1399 getBaseUrl() { 1400 return `${this.baseUrl}/${this.apiVersion}`; 1401 } 1402 setApiVersion(version) { 1403 this.apiVersion = version; 1404 } 1405 setBearerToken(token) { 1406 this.bearerToken = token; 1407 } 1408 /** 1409 * returns all data for an endpoint while additionally checking for next links 1410 * and getting data from those as well 1411 * @param result 1412 * @returns {Promise<{data: *[]}>} 1413 */ 1414 async getAll(result) { 1415 let data = []; 1416 if (typeof result.data !== "undefined") { 1417 data = data.concat(result.data); 1418 } 1419 while (result.links.next !== null) { 1420 result = await this.next(result); 1421 if (typeof result.data !== "undefined") { 1422 data = data.concat(result.data); 1423 } 1424 } 1425 return { "data": data }; 1426 } 1427 /** 1428 * calls the next link in the result 1429 * @param result 1430 * @returns {Promise<*[]>} 1431 */ 1432 async next(result) { 1433 const response = await this.request("GET", result.links.next); 1434 return response.json(); 1435 } 1436 async download(method, url) { 1437 const headers = new Headers(); 1438 if (this.bearerToken) { 1439 headers.append("Authorization", `Bearer ${this.bearerToken}`); 1440 } 1441 const options = { 1442 method, 1443 headers 1444 }; 1445 const response = await fetch(url, options); 1446 if (!response.ok) { 1447 throw new Error(`HTTP error ${response.status}`); 1448 } 1449 return await response.blob(); 1450 } 1451 /** 1452 * Execute a request 1453 * @param {string} method 1454 * @param {string} url 1455 * @param {*} data 1456 * @param {boolean} isDownload 1457 * @returns {Promise<Response>} 1458 */ 1459 async request(method, url, data = null, isDownload = false) { 1460 const headers = new Headers(); 1461 if (!isDownload) { 1462 headers.append("Content-Type", "application/json"); 1463 headers.append("Accept-Charset", "application/json"); 1464 headers.append("Accept", "application/json"); 1465 } 1466 if (this.bearerToken) { 1467 headers.append("Authorization", `Bearer ${this.bearerToken}`); 1468 } 1469 const options = { 1470 method, 1471 headers, 1472 timeout: this.timeout 1473 }; 1474 if (data) { 1475 options.body = JSON.stringify(data); 1476 } 1477 return await fetch(url, options); 1478 } 1479 account() { 1480 return new Account(this); 1481 } 1482 accounting() { 1483 return new Accounting(this); 1484 } 1485 marketing() { 1486 return new Marketing(this); 1487 } 1488 menu() { 1489 return new Menu(this); 1490 } 1491 oAuth() { 1492 return new OAuth(this); 1493 } 1494 statistics() { 1495 return new Statistics(this); 1496 } 1497 stock() { 1498 return new Stock(this); 1499 } 1500 createFilter(filterObject) { 1501 return new GlobalFilter(filterObject); 1502 } 1503 } 1504 return APIClient; 1505});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.