@wavemaker/variables 11.14.2-rc.6311 → 11.15.0-1.246
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wavemaker/variables",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.15.0-1.246",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@wavemaker/variables",
|
|
9
|
-
"version": "11.
|
|
9
|
+
"version": "11.15.0-1.246",
|
|
10
10
|
"license": "ISC",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@metrichor/jmespath": "^0.3.1",
|
|
@@ -121,8 +121,8 @@
|
|
|
121
121
|
"license": "MIT"
|
|
122
122
|
},
|
|
123
123
|
"node_modules/@types/node": {
|
|
124
|
-
"version": "
|
|
125
|
-
"integrity": "sha512-
|
|
124
|
+
"version": "25.2.3",
|
|
125
|
+
"integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==",
|
|
126
126
|
"dev": true,
|
|
127
127
|
"license": "MIT",
|
|
128
128
|
"dependencies": {
|
|
@@ -425,8 +425,8 @@
|
|
|
425
425
|
}
|
|
426
426
|
},
|
|
427
427
|
"node_modules/baseline-browser-mapping": {
|
|
428
|
-
"version": "2.
|
|
429
|
-
"integrity": "sha512-
|
|
428
|
+
"version": "2.9.19",
|
|
429
|
+
"integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==",
|
|
430
430
|
"dev": true,
|
|
431
431
|
"license": "Apache-2.0",
|
|
432
432
|
"bin": {
|
|
@@ -446,8 +446,8 @@
|
|
|
446
446
|
}
|
|
447
447
|
},
|
|
448
448
|
"node_modules/browserslist": {
|
|
449
|
-
"version": "4.28.
|
|
450
|
-
"integrity": "sha512-
|
|
449
|
+
"version": "4.28.1",
|
|
450
|
+
"integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==",
|
|
451
451
|
"dev": true,
|
|
452
452
|
"funding": [
|
|
453
453
|
{
|
|
@@ -465,11 +465,11 @@
|
|
|
465
465
|
],
|
|
466
466
|
"license": "MIT",
|
|
467
467
|
"dependencies": {
|
|
468
|
-
"baseline-browser-mapping": "^2.
|
|
469
|
-
"caniuse-lite": "^1.0.
|
|
470
|
-
"electron-to-chromium": "^1.5.
|
|
468
|
+
"baseline-browser-mapping": "^2.9.0",
|
|
469
|
+
"caniuse-lite": "^1.0.30001759",
|
|
470
|
+
"electron-to-chromium": "^1.5.263",
|
|
471
471
|
"node-releases": "^2.0.27",
|
|
472
|
-
"update-browserslist-db": "^1.
|
|
472
|
+
"update-browserslist-db": "^1.2.0"
|
|
473
473
|
},
|
|
474
474
|
"bin": {
|
|
475
475
|
"browserslist": "cli.js"
|
|
@@ -485,8 +485,8 @@
|
|
|
485
485
|
"license": "MIT"
|
|
486
486
|
},
|
|
487
487
|
"node_modules/caniuse-lite": {
|
|
488
|
-
"version": "1.0.
|
|
489
|
-
"integrity": "sha512-
|
|
488
|
+
"version": "1.0.30001769",
|
|
489
|
+
"integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==",
|
|
490
490
|
"dev": true,
|
|
491
491
|
"funding": [
|
|
492
492
|
{
|
|
@@ -608,8 +608,8 @@
|
|
|
608
608
|
}
|
|
609
609
|
},
|
|
610
610
|
"node_modules/electron-to-chromium": {
|
|
611
|
-
"version": "1.5.
|
|
612
|
-
"integrity": "sha512-
|
|
611
|
+
"version": "1.5.286",
|
|
612
|
+
"integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==",
|
|
613
613
|
"dev": true,
|
|
614
614
|
"license": "ISC"
|
|
615
615
|
},
|
|
@@ -620,13 +620,13 @@
|
|
|
620
620
|
"license": "MIT"
|
|
621
621
|
},
|
|
622
622
|
"node_modules/enhanced-resolve": {
|
|
623
|
-
"version": "5.
|
|
624
|
-
"integrity": "sha512-
|
|
623
|
+
"version": "5.19.0",
|
|
624
|
+
"integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==",
|
|
625
625
|
"dev": true,
|
|
626
626
|
"license": "MIT",
|
|
627
627
|
"dependencies": {
|
|
628
628
|
"graceful-fs": "^4.2.4",
|
|
629
|
-
"tapable": "^2.
|
|
629
|
+
"tapable": "^2.3.0"
|
|
630
630
|
},
|
|
631
631
|
"engines": {
|
|
632
632
|
"node": ">=10.13.0"
|
|
@@ -645,8 +645,8 @@
|
|
|
645
645
|
}
|
|
646
646
|
},
|
|
647
647
|
"node_modules/es-module-lexer": {
|
|
648
|
-
"version": "
|
|
649
|
-
"integrity": "sha512-
|
|
648
|
+
"version": "2.0.0",
|
|
649
|
+
"integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==",
|
|
650
650
|
"dev": true,
|
|
651
651
|
"license": "MIT"
|
|
652
652
|
},
|
|
@@ -800,8 +800,8 @@
|
|
|
800
800
|
}
|
|
801
801
|
},
|
|
802
802
|
"node_modules/fs-extra": {
|
|
803
|
-
"version": "11.3.
|
|
804
|
-
"integrity": "sha512-
|
|
803
|
+
"version": "11.3.3",
|
|
804
|
+
"integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==",
|
|
805
805
|
"dev": true,
|
|
806
806
|
"license": "MIT",
|
|
807
807
|
"dependencies": {
|
|
@@ -1105,8 +1105,8 @@
|
|
|
1105
1105
|
}
|
|
1106
1106
|
},
|
|
1107
1107
|
"node_modules/lodash-es": {
|
|
1108
|
-
"version": "4.17.
|
|
1109
|
-
"integrity": "sha512-
|
|
1108
|
+
"version": "4.17.23",
|
|
1109
|
+
"integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==",
|
|
1110
1110
|
"license": "MIT"
|
|
1111
1111
|
},
|
|
1112
1112
|
"node_modules/merge-stream": {
|
|
@@ -1461,8 +1461,8 @@
|
|
|
1461
1461
|
}
|
|
1462
1462
|
},
|
|
1463
1463
|
"node_modules/semver": {
|
|
1464
|
-
"version": "7.7.
|
|
1465
|
-
"integrity": "sha512-
|
|
1464
|
+
"version": "7.7.4",
|
|
1465
|
+
"integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
|
|
1466
1466
|
"dev": true,
|
|
1467
1467
|
"license": "ISC",
|
|
1468
1468
|
"bin": {
|
|
@@ -1623,6 +1623,7 @@
|
|
|
1623
1623
|
"node_modules/tar": {
|
|
1624
1624
|
"version": "6.2.1",
|
|
1625
1625
|
"integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
|
|
1626
|
+
"deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
|
|
1626
1627
|
"dev": true,
|
|
1627
1628
|
"license": "ISC",
|
|
1628
1629
|
"dependencies": {
|
|
@@ -1638,8 +1639,8 @@
|
|
|
1638
1639
|
}
|
|
1639
1640
|
},
|
|
1640
1641
|
"node_modules/terser": {
|
|
1641
|
-
"version": "5.
|
|
1642
|
-
"integrity": "sha512-
|
|
1642
|
+
"version": "5.46.0",
|
|
1643
|
+
"integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==",
|
|
1643
1644
|
"dev": true,
|
|
1644
1645
|
"license": "BSD-2-Clause",
|
|
1645
1646
|
"dependencies": {
|
|
@@ -1656,8 +1657,8 @@
|
|
|
1656
1657
|
}
|
|
1657
1658
|
},
|
|
1658
1659
|
"node_modules/terser-webpack-plugin": {
|
|
1659
|
-
"version": "5.3.
|
|
1660
|
-
"integrity": "sha512-
|
|
1660
|
+
"version": "5.3.16",
|
|
1661
|
+
"integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==",
|
|
1661
1662
|
"dev": true,
|
|
1662
1663
|
"license": "MIT",
|
|
1663
1664
|
"dependencies": {
|
|
@@ -1750,8 +1751,8 @@
|
|
|
1750
1751
|
}
|
|
1751
1752
|
},
|
|
1752
1753
|
"node_modules/update-browserslist-db": {
|
|
1753
|
-
"version": "1.
|
|
1754
|
-
"integrity": "sha512-
|
|
1754
|
+
"version": "1.2.3",
|
|
1755
|
+
"integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
|
|
1755
1756
|
"dev": true,
|
|
1756
1757
|
"funding": [
|
|
1757
1758
|
{
|
|
@@ -1780,8 +1781,8 @@
|
|
|
1780
1781
|
}
|
|
1781
1782
|
},
|
|
1782
1783
|
"node_modules/watchpack": {
|
|
1783
|
-
"version": "2.
|
|
1784
|
-
"integrity": "sha512-
|
|
1784
|
+
"version": "2.5.1",
|
|
1785
|
+
"integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==",
|
|
1785
1786
|
"dev": true,
|
|
1786
1787
|
"license": "MIT",
|
|
1787
1788
|
"dependencies": {
|
|
@@ -1793,8 +1794,8 @@
|
|
|
1793
1794
|
}
|
|
1794
1795
|
},
|
|
1795
1796
|
"node_modules/webpack": {
|
|
1796
|
-
"version": "5.
|
|
1797
|
-
"integrity": "sha512-
|
|
1797
|
+
"version": "5.105.2",
|
|
1798
|
+
"integrity": "sha512-dRXm0a2qcHPUBEzVk8uph0xWSjV/xZxenQQbLwnwP7caQCYpqG1qddwlyEkIDkYn0K8tvmcrZ+bOrzoQ3HxCDw==",
|
|
1798
1799
|
"dev": true,
|
|
1799
1800
|
"license": "MIT",
|
|
1800
1801
|
"dependencies": {
|
|
@@ -1806,10 +1807,10 @@
|
|
|
1806
1807
|
"@webassemblyjs/wasm-parser": "^1.14.1",
|
|
1807
1808
|
"acorn": "^8.15.0",
|
|
1808
1809
|
"acorn-import-phases": "^1.0.3",
|
|
1809
|
-
"browserslist": "^4.
|
|
1810
|
+
"browserslist": "^4.28.1",
|
|
1810
1811
|
"chrome-trace-event": "^1.0.2",
|
|
1811
|
-
"enhanced-resolve": "^5.
|
|
1812
|
-
"es-module-lexer": "^
|
|
1812
|
+
"enhanced-resolve": "^5.19.0",
|
|
1813
|
+
"es-module-lexer": "^2.0.0",
|
|
1813
1814
|
"eslint-scope": "5.1.1",
|
|
1814
1815
|
"events": "^3.2.0",
|
|
1815
1816
|
"glob-to-regexp": "^0.4.1",
|
|
@@ -1820,8 +1821,8 @@
|
|
|
1820
1821
|
"neo-async": "^2.6.2",
|
|
1821
1822
|
"schema-utils": "^4.3.3",
|
|
1822
1823
|
"tapable": "^2.3.0",
|
|
1823
|
-
"terser-webpack-plugin": "^5.3.
|
|
1824
|
-
"watchpack": "^2.
|
|
1824
|
+
"terser-webpack-plugin": "^5.3.16",
|
|
1825
|
+
"watchpack": "^2.5.1",
|
|
1825
1826
|
"webpack-sources": "^3.3.3"
|
|
1826
1827
|
},
|
|
1827
1828
|
"bin": {
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wavemaker/variables",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.15.0-1.246",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@wavemaker/variables",
|
|
9
|
-
"version": "11.
|
|
9
|
+
"version": "11.15.0-1.246",
|
|
10
10
|
"license": "ISC",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@metrichor/jmespath": "^0.3.1",
|
|
@@ -121,8 +121,8 @@
|
|
|
121
121
|
"license": "MIT"
|
|
122
122
|
},
|
|
123
123
|
"node_modules/@types/node": {
|
|
124
|
-
"version": "
|
|
125
|
-
"integrity": "sha512-
|
|
124
|
+
"version": "25.2.3",
|
|
125
|
+
"integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==",
|
|
126
126
|
"dev": true,
|
|
127
127
|
"license": "MIT",
|
|
128
128
|
"dependencies": {
|
|
@@ -425,8 +425,8 @@
|
|
|
425
425
|
}
|
|
426
426
|
},
|
|
427
427
|
"node_modules/baseline-browser-mapping": {
|
|
428
|
-
"version": "2.
|
|
429
|
-
"integrity": "sha512-
|
|
428
|
+
"version": "2.9.19",
|
|
429
|
+
"integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==",
|
|
430
430
|
"dev": true,
|
|
431
431
|
"license": "Apache-2.0",
|
|
432
432
|
"bin": {
|
|
@@ -446,8 +446,8 @@
|
|
|
446
446
|
}
|
|
447
447
|
},
|
|
448
448
|
"node_modules/browserslist": {
|
|
449
|
-
"version": "4.28.
|
|
450
|
-
"integrity": "sha512-
|
|
449
|
+
"version": "4.28.1",
|
|
450
|
+
"integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==",
|
|
451
451
|
"dev": true,
|
|
452
452
|
"funding": [
|
|
453
453
|
{
|
|
@@ -465,11 +465,11 @@
|
|
|
465
465
|
],
|
|
466
466
|
"license": "MIT",
|
|
467
467
|
"dependencies": {
|
|
468
|
-
"baseline-browser-mapping": "^2.
|
|
469
|
-
"caniuse-lite": "^1.0.
|
|
470
|
-
"electron-to-chromium": "^1.5.
|
|
468
|
+
"baseline-browser-mapping": "^2.9.0",
|
|
469
|
+
"caniuse-lite": "^1.0.30001759",
|
|
470
|
+
"electron-to-chromium": "^1.5.263",
|
|
471
471
|
"node-releases": "^2.0.27",
|
|
472
|
-
"update-browserslist-db": "^1.
|
|
472
|
+
"update-browserslist-db": "^1.2.0"
|
|
473
473
|
},
|
|
474
474
|
"bin": {
|
|
475
475
|
"browserslist": "cli.js"
|
|
@@ -485,8 +485,8 @@
|
|
|
485
485
|
"license": "MIT"
|
|
486
486
|
},
|
|
487
487
|
"node_modules/caniuse-lite": {
|
|
488
|
-
"version": "1.0.
|
|
489
|
-
"integrity": "sha512-
|
|
488
|
+
"version": "1.0.30001769",
|
|
489
|
+
"integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==",
|
|
490
490
|
"dev": true,
|
|
491
491
|
"funding": [
|
|
492
492
|
{
|
|
@@ -608,8 +608,8 @@
|
|
|
608
608
|
}
|
|
609
609
|
},
|
|
610
610
|
"node_modules/electron-to-chromium": {
|
|
611
|
-
"version": "1.5.
|
|
612
|
-
"integrity": "sha512-
|
|
611
|
+
"version": "1.5.286",
|
|
612
|
+
"integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==",
|
|
613
613
|
"dev": true,
|
|
614
614
|
"license": "ISC"
|
|
615
615
|
},
|
|
@@ -620,13 +620,13 @@
|
|
|
620
620
|
"license": "MIT"
|
|
621
621
|
},
|
|
622
622
|
"node_modules/enhanced-resolve": {
|
|
623
|
-
"version": "5.
|
|
624
|
-
"integrity": "sha512-
|
|
623
|
+
"version": "5.19.0",
|
|
624
|
+
"integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==",
|
|
625
625
|
"dev": true,
|
|
626
626
|
"license": "MIT",
|
|
627
627
|
"dependencies": {
|
|
628
628
|
"graceful-fs": "^4.2.4",
|
|
629
|
-
"tapable": "^2.
|
|
629
|
+
"tapable": "^2.3.0"
|
|
630
630
|
},
|
|
631
631
|
"engines": {
|
|
632
632
|
"node": ">=10.13.0"
|
|
@@ -645,8 +645,8 @@
|
|
|
645
645
|
}
|
|
646
646
|
},
|
|
647
647
|
"node_modules/es-module-lexer": {
|
|
648
|
-
"version": "
|
|
649
|
-
"integrity": "sha512-
|
|
648
|
+
"version": "2.0.0",
|
|
649
|
+
"integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==",
|
|
650
650
|
"dev": true,
|
|
651
651
|
"license": "MIT"
|
|
652
652
|
},
|
|
@@ -800,8 +800,8 @@
|
|
|
800
800
|
}
|
|
801
801
|
},
|
|
802
802
|
"node_modules/fs-extra": {
|
|
803
|
-
"version": "11.3.
|
|
804
|
-
"integrity": "sha512-
|
|
803
|
+
"version": "11.3.3",
|
|
804
|
+
"integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==",
|
|
805
805
|
"dev": true,
|
|
806
806
|
"license": "MIT",
|
|
807
807
|
"dependencies": {
|
|
@@ -1105,8 +1105,8 @@
|
|
|
1105
1105
|
}
|
|
1106
1106
|
},
|
|
1107
1107
|
"node_modules/lodash-es": {
|
|
1108
|
-
"version": "4.17.
|
|
1109
|
-
"integrity": "sha512-
|
|
1108
|
+
"version": "4.17.23",
|
|
1109
|
+
"integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==",
|
|
1110
1110
|
"license": "MIT"
|
|
1111
1111
|
},
|
|
1112
1112
|
"node_modules/merge-stream": {
|
|
@@ -1461,8 +1461,8 @@
|
|
|
1461
1461
|
}
|
|
1462
1462
|
},
|
|
1463
1463
|
"node_modules/semver": {
|
|
1464
|
-
"version": "7.7.
|
|
1465
|
-
"integrity": "sha512-
|
|
1464
|
+
"version": "7.7.4",
|
|
1465
|
+
"integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
|
|
1466
1466
|
"dev": true,
|
|
1467
1467
|
"license": "ISC",
|
|
1468
1468
|
"bin": {
|
|
@@ -1623,6 +1623,7 @@
|
|
|
1623
1623
|
"node_modules/tar": {
|
|
1624
1624
|
"version": "6.2.1",
|
|
1625
1625
|
"integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
|
|
1626
|
+
"deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
|
|
1626
1627
|
"dev": true,
|
|
1627
1628
|
"license": "ISC",
|
|
1628
1629
|
"dependencies": {
|
|
@@ -1638,8 +1639,8 @@
|
|
|
1638
1639
|
}
|
|
1639
1640
|
},
|
|
1640
1641
|
"node_modules/terser": {
|
|
1641
|
-
"version": "5.
|
|
1642
|
-
"integrity": "sha512-
|
|
1642
|
+
"version": "5.46.0",
|
|
1643
|
+
"integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==",
|
|
1643
1644
|
"dev": true,
|
|
1644
1645
|
"license": "BSD-2-Clause",
|
|
1645
1646
|
"dependencies": {
|
|
@@ -1656,8 +1657,8 @@
|
|
|
1656
1657
|
}
|
|
1657
1658
|
},
|
|
1658
1659
|
"node_modules/terser-webpack-plugin": {
|
|
1659
|
-
"version": "5.3.
|
|
1660
|
-
"integrity": "sha512-
|
|
1660
|
+
"version": "5.3.16",
|
|
1661
|
+
"integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==",
|
|
1661
1662
|
"dev": true,
|
|
1662
1663
|
"license": "MIT",
|
|
1663
1664
|
"dependencies": {
|
|
@@ -1750,8 +1751,8 @@
|
|
|
1750
1751
|
}
|
|
1751
1752
|
},
|
|
1752
1753
|
"node_modules/update-browserslist-db": {
|
|
1753
|
-
"version": "1.
|
|
1754
|
-
"integrity": "sha512-
|
|
1754
|
+
"version": "1.2.3",
|
|
1755
|
+
"integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
|
|
1755
1756
|
"dev": true,
|
|
1756
1757
|
"funding": [
|
|
1757
1758
|
{
|
|
@@ -1780,8 +1781,8 @@
|
|
|
1780
1781
|
}
|
|
1781
1782
|
},
|
|
1782
1783
|
"node_modules/watchpack": {
|
|
1783
|
-
"version": "2.
|
|
1784
|
-
"integrity": "sha512-
|
|
1784
|
+
"version": "2.5.1",
|
|
1785
|
+
"integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==",
|
|
1785
1786
|
"dev": true,
|
|
1786
1787
|
"license": "MIT",
|
|
1787
1788
|
"dependencies": {
|
|
@@ -1793,8 +1794,8 @@
|
|
|
1793
1794
|
}
|
|
1794
1795
|
},
|
|
1795
1796
|
"node_modules/webpack": {
|
|
1796
|
-
"version": "5.
|
|
1797
|
-
"integrity": "sha512-
|
|
1797
|
+
"version": "5.105.2",
|
|
1798
|
+
"integrity": "sha512-dRXm0a2qcHPUBEzVk8uph0xWSjV/xZxenQQbLwnwP7caQCYpqG1qddwlyEkIDkYn0K8tvmcrZ+bOrzoQ3HxCDw==",
|
|
1798
1799
|
"dev": true,
|
|
1799
1800
|
"license": "MIT",
|
|
1800
1801
|
"dependencies": {
|
|
@@ -1806,10 +1807,10 @@
|
|
|
1806
1807
|
"@webassemblyjs/wasm-parser": "^1.14.1",
|
|
1807
1808
|
"acorn": "^8.15.0",
|
|
1808
1809
|
"acorn-import-phases": "^1.0.3",
|
|
1809
|
-
"browserslist": "^4.
|
|
1810
|
+
"browserslist": "^4.28.1",
|
|
1810
1811
|
"chrome-trace-event": "^1.0.2",
|
|
1811
|
-
"enhanced-resolve": "^5.
|
|
1812
|
-
"es-module-lexer": "^
|
|
1812
|
+
"enhanced-resolve": "^5.19.0",
|
|
1813
|
+
"es-module-lexer": "^2.0.0",
|
|
1813
1814
|
"eslint-scope": "5.1.1",
|
|
1814
1815
|
"events": "^3.2.0",
|
|
1815
1816
|
"glob-to-regexp": "^0.4.1",
|
|
@@ -1820,8 +1821,8 @@
|
|
|
1820
1821
|
"neo-async": "^2.6.2",
|
|
1821
1822
|
"schema-utils": "^4.3.3",
|
|
1822
1823
|
"tapable": "^2.3.0",
|
|
1823
|
-
"terser-webpack-plugin": "^5.3.
|
|
1824
|
-
"watchpack": "^2.
|
|
1824
|
+
"terser-webpack-plugin": "^5.3.16",
|
|
1825
|
+
"watchpack": "^2.5.1",
|
|
1825
1826
|
"webpack-sources": "^3.3.3"
|
|
1826
1827
|
},
|
|
1827
1828
|
"bin": {
|
package/package.json
CHANGED
|
@@ -67,7 +67,7 @@ export declare class PaginationUtils {
|
|
|
67
67
|
* @param variable withholds variable information
|
|
68
68
|
* @returns {void} This method does not return anything
|
|
69
69
|
*/
|
|
70
|
-
static setParameterVal(paramName: any, res: any, operationInfo: any, variable: any): void;
|
|
70
|
+
static setParameterVal(paramName: any, res: any, operationInfo: any, variable: any, options?: any): void;
|
|
71
71
|
/**
|
|
72
72
|
* Creates res object from the response recieved from the api triggered
|
|
73
73
|
* @param variable withholds variable information
|
|
@@ -79,4 +79,13 @@ export declare class PaginationUtils {
|
|
|
79
79
|
* @returns {object} An object which holds the information of pagination which has to be stored on the variable
|
|
80
80
|
*/
|
|
81
81
|
static generatePaginationRes(operationInfo: any, paginationInfo: any, response: any, resHeaders: any, options: any, variable: any): {};
|
|
82
|
+
/**
|
|
83
|
+
* If totalElements has $minValue in it, set totalElements as $minValue
|
|
84
|
+
* If the rendered elements are greater than $minValue, set totalElements as Number of elements rendered + 1
|
|
85
|
+
|
|
86
|
+
* If totalElements is present in the pagination's output metadata deduce totalElements from api's response
|
|
87
|
+
|
|
88
|
+
* If Pagination type is offset, deduce totalElements from size and options[page] else deduce from size and res[page]
|
|
89
|
+
*/
|
|
90
|
+
static setTotalElements(resOutput: any, options: any, res: any, variable: any, response: any, paginationInfo: any, resHeaders: any): void;
|
|
82
91
|
}
|
|
@@ -159,14 +159,14 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
159
159
|
* @returns {void} This method does not return anything
|
|
160
160
|
*/
|
|
161
161
|
PaginationUtils.checkPaginationAtQuery = function (operationInfo, variable, options) {
|
|
162
|
-
var _a;
|
|
162
|
+
var _a, _b;
|
|
163
163
|
var paginationInfo = this.getPaginationInfo(operationInfo, variable);
|
|
164
164
|
// If page is not first, pagination is present on the variable and paginationInfo's input meta has size set pagination in query params
|
|
165
165
|
var hasPagination = options && options['page'] && (paginationInfo === null || paginationInfo === void 0 ? void 0 : paginationInfo.input.size) && variable.pagination;
|
|
166
166
|
if (!hasPagination) {
|
|
167
167
|
return;
|
|
168
168
|
}
|
|
169
|
-
var inputParam;
|
|
169
|
+
var inputParam, sizeParam;
|
|
170
170
|
// if pagination type is offset, asssign inputParam to offset else page
|
|
171
171
|
if (paginationInfo.type === 'offset' || paginationInfo.input.offset) {
|
|
172
172
|
inputParam = 'offset';
|
|
@@ -174,6 +174,16 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
174
174
|
else {
|
|
175
175
|
inputParam = 'page';
|
|
176
176
|
}
|
|
177
|
+
if (["page", "offset", "cursor"].includes(paginationInfo.type)) {
|
|
178
|
+
sizeParam = 'size';
|
|
179
|
+
}
|
|
180
|
+
if (sizeParam) {
|
|
181
|
+
var sizeParamName_1 = paginationInfo.input[sizeParam].split('.')[0];
|
|
182
|
+
var sizeParamObj = find(operationInfo.parameters, function (obj) { return obj.name === sizeParamName_1; });
|
|
183
|
+
if (sizeParamObj && sizeParamObj.parameterType === 'query' && ["page", "offset", "cursor"].includes(paginationInfo.type)) {
|
|
184
|
+
variable.pagination['size'] = options['size'] || variable.pagination['size'];
|
|
185
|
+
}
|
|
186
|
+
}
|
|
177
187
|
var paramName = paginationInfo.input[inputParam].split('.')[0];
|
|
178
188
|
var paramObj = find(operationInfo.parameters, function (obj) { return obj.name === paramName; });
|
|
179
189
|
// check if the variable has query params and they are not empty
|
|
@@ -190,6 +200,15 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
190
200
|
}
|
|
191
201
|
this.setPaginationQueryParams(variable, operationInfo, paginationInfo);
|
|
192
202
|
}
|
|
203
|
+
else if (paginationInfo.type === 'cursor') {
|
|
204
|
+
var sParam_1 = (((_b = paginationInfo.input) === null || _b === void 0 ? void 0 : _b.size) && paginationInfo.input['size'].split('.')[0]) || "";
|
|
205
|
+
if (sParam_1) {
|
|
206
|
+
var sParamObj = find(operationInfo.parameters, function (obj) { return obj.name === sParam_1 && obj.parameterType === 'path'; });
|
|
207
|
+
if (sParamObj) {
|
|
208
|
+
sParamObj.sampleValue = options['size'] || variable.pagination['size'] || sParamObj.sampleValue;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
193
212
|
};
|
|
194
213
|
/**
|
|
195
214
|
* Deduces the offset information from the size and page params
|
|
@@ -308,17 +327,26 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
308
327
|
* For cursor type pagination, if pagination info is present in the query
|
|
309
328
|
* Based on whether user clicks on the next or prev button modify the url's query params
|
|
310
329
|
*/
|
|
330
|
+
var sizeParam_1 = paginationInfo.input['size'].split('.')[0];
|
|
331
|
+
var sizeObj = find(operationInfo.parameters, function (obj) { return obj.name === sizeParam_1; });
|
|
311
332
|
var urlParams = url.split('?');
|
|
312
333
|
var invokeUrl = void 0;
|
|
313
334
|
if (variable.pagination.isNext) {
|
|
314
335
|
invokeUrl = variable.pagination.next.split('?');
|
|
315
336
|
}
|
|
316
|
-
else {
|
|
337
|
+
else if (variable.pagination.isPrev) {
|
|
317
338
|
invokeUrl = variable.pagination.prev.split('?');
|
|
318
339
|
}
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
340
|
+
if (invokeUrl) {
|
|
341
|
+
var queryParams = new URLSearchParams(invokeUrl[1]);
|
|
342
|
+
if (sizeObj && sizeObj.sampleValue) {
|
|
343
|
+
queryParams.set(sizeObj.name, sizeObj.sampleValue);
|
|
344
|
+
}
|
|
345
|
+
invokeUrl[1] = queryParams.toString();
|
|
346
|
+
urlParams[1] = invokeUrl[1];
|
|
347
|
+
url = urlParams.join('?');
|
|
348
|
+
resObj['url'] = url;
|
|
349
|
+
}
|
|
322
350
|
}
|
|
323
351
|
}
|
|
324
352
|
return resObj;
|
|
@@ -331,11 +359,14 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
331
359
|
* @param variable withholds variable information
|
|
332
360
|
* @returns {void} This method does not return anything
|
|
333
361
|
*/
|
|
334
|
-
PaginationUtils.setParameterVal = function (paramName, res, operationInfo, variable) {
|
|
362
|
+
PaginationUtils.setParameterVal = function (paramName, res, operationInfo, variable, options) {
|
|
335
363
|
var paginationInfo = this.getPaginationInfo(operationInfo, variable);
|
|
336
364
|
var paginationParams = paginationInfo.input[paramName].split('.');
|
|
337
365
|
var param = paginationParams[0];
|
|
338
366
|
var sizeObj = find(operationInfo.parameters, function (obj) { return obj.name === param; });
|
|
367
|
+
if (paramName === 'size' && paginationInfo && (paginationInfo.type === 'offset' || paginationInfo.type === 'page') && (options === null || options === void 0 ? void 0 : options.size) && (sizeObj === null || sizeObj === void 0 ? void 0 : sizeObj.sampleValue)) {
|
|
368
|
+
sizeObj.sampleValue = options['size'] || result(sizeObj, 'sampleValue');
|
|
369
|
+
}
|
|
339
370
|
res[paramName] = result(sizeObj, 'sampleValue');
|
|
340
371
|
// if input value is configured from object, fetch the value from the specified path
|
|
341
372
|
if (paginationParams.length > 1) {
|
|
@@ -365,11 +396,11 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
365
396
|
if (resOutput === null || resOutput === void 0 ? void 0 : resOutput.size) {
|
|
366
397
|
this.setPaginationItems(resOutput.size, response, res, 'size', resHeaders);
|
|
367
398
|
}
|
|
368
|
-
else if (((_a = paginationInfo.input) === null || _a === void 0 ? void 0 : _a.size) && paginationInfo.type === 'page') {
|
|
369
|
-
res['size'] = Number((_b = paginationInfo.input) === null || _b === void 0 ? void 0 : _b.size) ? (_c = paginationInfo.input) === null || _c === void 0 ? void 0 : _c.size : get(response, (_d = paginationInfo.input) === null || _d === void 0 ? void 0 : _d.size);
|
|
370
|
-
}
|
|
371
399
|
else {
|
|
372
|
-
this.setParameterVal('size', res, operationInfo, variable);
|
|
400
|
+
this.setParameterVal('size', res, operationInfo, variable, options);
|
|
401
|
+
}
|
|
402
|
+
if (!(resOutput === null || resOutput === void 0 ? void 0 : resOutput.size) && ((_a = paginationInfo.input) === null || _a === void 0 ? void 0 : _a.size) && paginationInfo.type === 'page') {
|
|
403
|
+
res['size'] = (Number((_b = paginationInfo.input) === null || _b === void 0 ? void 0 : _b.size) ? (_c = paginationInfo.input) === null || _c === void 0 ? void 0 : _c.size : get(response, (_d = paginationInfo.input) === null || _d === void 0 ? void 0 : _d.size)) || res['size'];
|
|
373
404
|
}
|
|
374
405
|
/**
|
|
375
406
|
* If page is present in the pagination's output metadata deduce page from api's response
|
|
@@ -379,38 +410,9 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
379
410
|
this.setPaginationItems(resOutput.page, response, res, 'page', resHeaders);
|
|
380
411
|
}
|
|
381
412
|
else if (paginationInfo.type !== 'offset') {
|
|
382
|
-
this.setParameterVal('page', res, operationInfo, variable);
|
|
383
|
-
}
|
|
384
|
-
/**
|
|
385
|
-
* If totalElements has $minValue in it, set totalElements as $minValue
|
|
386
|
-
* If the rendered elements are greater than $minValue, set totalElements as Number of elements rendered + 1
|
|
387
|
-
|
|
388
|
-
* If totalElements is present in the pagination's output metadata deduce totalElements from api's response
|
|
389
|
-
|
|
390
|
-
* If Pagination type is offset, deduce totalElements from size and options[page] else deduce from size and res[page]
|
|
391
|
-
*/
|
|
392
|
-
if (startsWith(resOutput === null || resOutput === void 0 ? void 0 : resOutput.totalElements, '$minValue')) {
|
|
393
|
-
var totalEl = resOutput.totalElements.replace('$minValue=', '');
|
|
394
|
-
var pageParam = res['page'] ? res['page'] : options['page'];
|
|
395
|
-
var elRendered = res['size'] * pageParam;
|
|
396
|
-
if (!variable.pagination || variable.pagination['totalElements'] > elRendered) {
|
|
397
|
-
res['totalElements'] = parseInt(totalEl);
|
|
398
|
-
}
|
|
399
|
-
else {
|
|
400
|
-
res['totalElements'] = elRendered + 1;
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
else if (resOutput === null || resOutput === void 0 ? void 0 : resOutput.totalElements) {
|
|
404
|
-
this.setPaginationItems(resOutput.totalElements, response, res, 'totalElements', resHeaders);
|
|
405
|
-
}
|
|
406
|
-
else {
|
|
407
|
-
if (paginationInfo.type === 'offset' || paginationInfo.input.offset) {
|
|
408
|
-
res['totalElements'] = (res['size'] * (options['page'] ? options['page'] : 1)) + 1;
|
|
409
|
-
}
|
|
410
|
-
else {
|
|
411
|
-
res['totalElements'] = (res['size'] * res['page']) + 1;
|
|
412
|
-
}
|
|
413
|
+
this.setParameterVal('page', res, operationInfo, variable, options);
|
|
413
414
|
}
|
|
415
|
+
this.setTotalElements(resOutput, options, res, variable, response, paginationInfo, resHeaders);
|
|
414
416
|
/**
|
|
415
417
|
* If hasMoreItems is present in the pagination's output metadata deduce hasMoreItems from api's response
|
|
416
418
|
* Else assign it as empty which will be calculated at pagination object generation
|
|
@@ -425,9 +427,44 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
425
427
|
else if (resOutput) { // For cursor type pagination set next and prev keys in res object
|
|
426
428
|
this.setPaginationItems(resOutput.next, response, res, 'next', resHeaders);
|
|
427
429
|
this.setPaginationItems(resOutput.prev, response, res, 'prev', resHeaders);
|
|
430
|
+
this.setPaginationItems(resOutput.size, response, res, 'size', resHeaders);
|
|
431
|
+
this.setParameterVal('page', res, operationInfo, variable, options);
|
|
432
|
+
this.setTotalElements(resOutput, options, res, variable, response, paginationInfo, resHeaders);
|
|
428
433
|
}
|
|
429
434
|
return res;
|
|
430
435
|
};
|
|
436
|
+
/**
|
|
437
|
+
* If totalElements has $minValue in it, set totalElements as $minValue
|
|
438
|
+
* If the rendered elements are greater than $minValue, set totalElements as Number of elements rendered + 1
|
|
439
|
+
|
|
440
|
+
* If totalElements is present in the pagination's output metadata deduce totalElements from api's response
|
|
441
|
+
|
|
442
|
+
* If Pagination type is offset, deduce totalElements from size and options[page] else deduce from size and res[page]
|
|
443
|
+
*/
|
|
444
|
+
PaginationUtils.setTotalElements = function (resOutput, options, res, variable, response, paginationInfo, resHeaders) {
|
|
445
|
+
if (startsWith(resOutput === null || resOutput === void 0 ? void 0 : resOutput.totalElements, '$minValue')) {
|
|
446
|
+
var totalEl = resOutput.totalElements.replace('$minValue=', '');
|
|
447
|
+
var pageParam = res['page'] ? res['page'] : options['page'];
|
|
448
|
+
var elRendered = res['size'] * pageParam;
|
|
449
|
+
if (!variable.pagination || variable.pagination['totalElements'] > elRendered) {
|
|
450
|
+
res['totalElements'] = parseInt(totalEl);
|
|
451
|
+
}
|
|
452
|
+
else {
|
|
453
|
+
res['totalElements'] = elRendered + 1;
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
else if (resOutput === null || resOutput === void 0 ? void 0 : resOutput.totalElements) {
|
|
457
|
+
this.setPaginationItems(resOutput.totalElements, response, res, 'totalElements', resHeaders);
|
|
458
|
+
}
|
|
459
|
+
else {
|
|
460
|
+
if (paginationInfo.type === 'offset' || paginationInfo.input.offset) {
|
|
461
|
+
res['totalElements'] = (res['size'] * (options['page'] ? options['page'] : 1)) + 1;
|
|
462
|
+
}
|
|
463
|
+
else {
|
|
464
|
+
res['totalElements'] = (res['size'] * res['page']) + 1;
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
};
|
|
431
468
|
return PaginationUtils;
|
|
432
469
|
}());
|
|
433
470
|
export { PaginationUtils };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.utils.js","sourceRoot":"./","sources":["src/util/variable/pagination.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { jmespath } from '@metrichor/jmespath';\n\nimport {startsWith, find, set, result, get} from 'lodash-es';\nimport { getValidJSON } from '../utils';\nimport { VARIABLE_CONSTANTS } from '../../constants/variables.constants';\n\nexport class PaginationUtils {\n /**\n * Modifies the query values with the pagination info which is retrieved from the previous API response.\n * @param variable withholds variable information \n * @param operationInfo has metadata of the variable \n * @param paginationInfo has metadata of the variable pagination data\n * @returns {void} This method does not return anything\n */\n static setPaginationQueryParams(variable, operationInfo, paginationInfo) {\n operationInfo.parameters.forEach(element => {\n // pagination input information varies based on the type\n let inputParam;\n if (paginationInfo.type === 'offset' || paginationInfo.input.offset) {\n inputParam = 'offset';\n } else {\n inputParam = 'page';\n }\n // modifies query values based on the pagination of variable\n // compare parameter name with the input parameter's starting naming key (ex: channelcontext in channelcontext.pagination)\n if (element.name === paginationInfo.input[inputParam].split('.')[0]) {\n element.sampleValue = variable.pagination['page'];\n } else if (element.name === paginationInfo.input.size.split('.')[0]) {\n element.sampleValue = variable.pagination['size'];\n }\n });\n }\n\n /**\n * Sets pagination on the variable based on the response of the triggered api call.\n * @param variable withholds variable information \n * @param response has data of the api call's response\n * @param options has info of the api's query params\n * @returns {void} This method does not return anything\n */\n static setVariablePagination(variable, response, options) {\n if (!variable.pagination) {\n variable.pagination = {\n empty: false\n };\n }\n variable.pagination['size'] = response.size;\n variable.pagination['page'] = response.page || 0;\n variable.pagination['totalElements'] = response.totalElements;\n variable.pagination['numberOfElements'] = variable.pagination['size'];\n variable.pagination['number'] = options['page'] ? options['page'] - 1 : 0;\n \n /**\n * Deduce totalPages from totalElements by size.\n * If the total elements are evenly split among the pages, assign the same to totalPages\n * Else assign totalPages + 1\n */\n variable.pagination['totalPages'] = variable.pagination['totalElements'] / variable.pagination['size'];\n if (variable.pagination['totalElements'] % variable.pagination['size'] === 0) {\n variable.pagination['totalPages'] = parseInt(variable.pagination['totalPages']);\n } else {\n variable.pagination['totalPages'] = parseInt(variable.pagination['totalPages']) + 1;\n }\n\n // If pagination type is cursor, fill next & prev\n if (response.next) {\n variable.pagination['next'] = response.next;\n variable.pagination['prev'] = response.prev;\n variable.pagination['last'] = response.next ? false : true;\n variable.pagination['first'] = response.prev ? false : true;\n } else {\n variable.pagination['first'] = variable.pagination['page'] <= 1 ? true : false;\n // calculate last based on current page index against total pages\n variable.pagination['last'] = response.hasMoreItems === '' ? !(variable.pagination['page'] < variable.pagination['totalPages']) : !response.hasMoreItems;\n }\n }\n\n /**\n * Resolves the expression given in pagination metadata's output\n * @param item has value of each key which is inside output pagination metadata\n * @param response has data of the api call's response\n * @param resHeaders has data of the api call's response headers\n * @param res holds the information of pagination which has to be stored on the variable\n * @param key has key name against which data has to be stored in pagination \n * @returns {void} This method does not return anything\n */\n static setPaginationItems(item, response, res, key, resHeaders) {\n // if the item has body, resolve the expression against the response\n if (startsWith(item, '$body')) {\n const bodyKey = item.replace('$body.', '');\n try {\n res[key] = jmespath.search(response, bodyKey);\n } catch {\n console.warn(`${item} expression needs to be corrected as per JMES guidelines`);\n }\n } else if (startsWith(item, '$header')) { // if the item has header, resolve the expression against the response headers \n const headerKey = item.replace('$header.', '');\n const headers = (<any>Object).fromEntries(resHeaders?.headers || resHeaders);\n const headerParams = headerKey.split('.');\n try {\n res[key] = jmespath.search(headers, headerParams[0].toLowerCase());\n } catch {\n console.warn(`${item} expression needs to be corrected as per JMES guidelines`);\n }\n if (res[key]?.length) { \n let headerVal = res[key].join();\n if (headerParams.length === 1) { \n /**\n * If the headerParams has only 1 key (which is not an object) name assing headerVal to the res[key]\n */\n res[key] = headerVal;\n } else { \n /**\n * If the headerParams has more than 1 key (an object), parse the stringified headerVal which is an object\n * Resolve the expression against headerVal object amd assign it to res[key]\n */\n let keyName = headerParams.slice(1).join('.');\n const headerResp = JSON.parse(headerVal);\n const specialChar = /[!@#$%^&*()+\\=\\[\\]{};':\"\\\\|,<>\\/?]+/;\n if (specialChar.test(keyName)) {\n // If key name has expression (ex: comparission expression) \n // add root key name to keyName for JMES to resolve the expression\n keyName = 'headerResp.' + keyName;\n }\n try {\n res[key] = jmespath.search(headerResp, keyName);\n } catch {\n console.warn(`${item} expression needs to be corrected as per JMES guidelines`);\n }\n }\n }\n }\n }\n\n /**\n * Return the pagination information of the service based on its existence on swagger or on the variable\n * @param variable withholds variable information \n * @param operationInfo has metadata of the variable \n * @returns {object} This method return pagination metadata\n */\n static getPaginationInfo(operationInfo, variable) {\n if (operationInfo?.paginationInfo) {\n return operationInfo.paginationInfo;\n } else {\n return variable._paginationConfig;\n }\n }\n\n /**\n * Set query params with the pagination info, if pagination metadata is present in query params\n * @param variable withholds variable information \n * @param operationInfo has metadata of the variable \n * @param options has info of the api's query params\n * @returns {void} This method does not return anything\n */\n static checkPaginationAtQuery(operationInfo, variable, options) { \n const paginationInfo = this.getPaginationInfo(operationInfo, variable);\n // If page is not first, pagination is present on the variable and paginationInfo's input meta has size set pagination in query params\n const hasPagination = options && options['page'] && paginationInfo?.input.size && variable.pagination; \n if (!hasPagination) {\n return;\n }\n\n let inputParam;\n // if pagination type is offset, asssign inputParam to offset else page\n if (paginationInfo.type === 'offset' || paginationInfo.input.offset) {\n inputParam = 'offset';\n } else {\n inputParam = 'page';\n }\n const paramName = paginationInfo.input[inputParam].split('.')[0]; \n const paramObj = find(operationInfo.parameters, function(obj) { return obj.name === paramName }); \n // check if the variable has query params and they are not empty\n if (paramObj && paramObj.parameterType === 'query') {\n /**\n * For pagination type other than offset, assign page which is recieved from options\n * For offset type, calculate page from size and options[page]\n */\n if (!paginationInfo.output?.page && paginationInfo.type !== 'offset') {\n variable.pagination['page'] = options['page'];\n } else {\n variable.pagination['page'] = this.getOffsetInfo(variable, options);\n }\n this.setPaginationQueryParams(variable, operationInfo, paginationInfo); \n }\n }\n\n /**\n * Deduces the offset information from the size and page params\n * @param variable withholds variable information \n * @param options has info of the api's query params\n * @returns {object} Returns the next offset number\n */\n static getOffsetInfo(variable, options) {\n return variable.pagination['size'] * (options['page'] ? (options['page'] - 1) : 0);\n }\n\n /**\n * Sets Pagination data on the request information\n * @param variable withholds variable information \n * @param operationInfo has metadata of the variable \n * @param options has info of the api's query params\n * @param paginationInfo has pagination information of the variable\n * @param headers has request headers\n * @param requestBody has request body\n * @param url has request url\n * @returns {object} Returns the request object which has pagination info\n */\n static setPaginationAtReq(paginationInfo, operationInfo, variable, headers, requestBody, url, options) {\n let reqObj = {};\n let inputParam;\n let resObj = {};\n // pagination input information varies based on the type\n if (paginationInfo.type === 'offset' || paginationInfo.input.offset) {\n inputParam = 'offset';\n } else {\n inputParam = 'page';\n }\n const paramName = paginationInfo.input[inputParam].split('.')[0]; \n // check if paramName is present in parameters of operation info \n const paramObj = find(operationInfo.parameters, function(obj) { \n if(obj.parameterType === 'body' && inputParam === 'page'){\n return obj.sampleValue.hasOwnProperty(paramName)\n }else{\n return obj.name === paramName\n }\n }); \n // set page/offset and size from pagination if matched parameter's type is header \n if (paramObj?.parameterType === 'header') {\n const inputBodyParam = VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.CLOAK_HEADER_KEY + paginationInfo.input[inputParam]; \n if (inputParam !== 'offset') { \n set(reqObj, inputBodyParam, variable.pagination['page']);\n } else {\n set(reqObj, inputBodyParam, this.getOffsetInfo(variable, options));\n }\n set(reqObj, VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.CLOAK_HEADER_KEY + paginationInfo.input.size, variable.pagination['size']);\n let headerKey = VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.CLOAK_HEADER_KEY + paramName;\n headers[headerKey] = typeof reqObj[headerKey] === 'object' ? JSON.stringify(reqObj[headerKey]) : reqObj[headerKey];\n resObj['headers'] = headers;\n } else if (paramObj?.parameterType === 'body') { \n // set page/offset and size from pagination if matched parameter's type is body \n // assign bodyVal to updated pagination info object\n let bodyVal: any;\n try {\n bodyVal = typeof paramObj.sampleValue === 'string' ? JSON.parse(paramObj.sampleValue) : paramObj.sampleValue;\n } catch (e) {\n bodyVal = paramObj.sampleValue;\n }\n const bodyParam = inputParam === 'page' ? paginationInfo.input[inputParam] : paginationInfo.input[inputParam].split('.')[1]\n if (bodyVal && bodyVal[bodyParam]) {\n let inputBodyParam = paginationInfo.input[inputParam].split('.').splice(1).join('.'); \n if (inputParam !== 'offset') { \n inputBodyParam = paginationInfo.input[inputParam]; \n set(reqObj, inputBodyParam, options.page ? options.page : 1);\n } else {\n set(reqObj, inputBodyParam, this.getOffsetInfo(variable, options));\n }\n set(reqObj, paginationInfo.input.size.split('.').splice(1).join('.'), variable.pagination['size']);\n bodyVal[bodyParam] = reqObj[bodyParam];\n requestBody = JSON.stringify(bodyVal);\n resObj['requestBody'] = requestBody;\n }\n } else if (variable.pagination.next && paramObj) {\n /**\n * For cursor type pagination, if pagination info is present in the path \n * Based on whether user clicks on the next or prev button modify the url \n */\n \n if (paramObj.parameterType === 'path') {\n const urlParams = operationInfo.relativePath.split('/'),\n paramConfig = '{' + paramObj.name + '}',\n paramIndex = urlParams.indexOf(paramConfig);\n let invokeUrl;\n if (variable.pagination.isNext) {\n invokeUrl = variable.pagination.next.split('/');\n } else {\n invokeUrl = variable.pagination.prev.split('/');\n }\n\n let urlPathParmas;\n let urlPath;\n if (operationInfo.directPath) { // For direct path, as url has hostname, derivate pathname using URL object\n urlPath = new URL(url);\n urlPathParmas = urlPath.pathname.split('/');\n urlPathParmas[paramIndex] = invokeUrl[paramIndex];\n urlPath.pathname = urlPathParmas.join('/');\n url = urlPath.href;\n resObj['url'] = url;\n } else { // Else modify the url with index as +1 (following proxy pattern)\n urlPathParmas = url.split('/');\n urlPathParmas[paramIndex + 1] = invokeUrl[paramIndex];\n url = urlPathParmas.join('/');\n resObj['url'] = url;\n }\n\n } else if (paramObj.parameterType === 'query') {\n /**\n * For cursor type pagination, if pagination info is present in the query \n * Based on whether user clicks on the next or prev button modify the url's query params\n */\n const urlParams = url.split('?');\n let invokeUrl;\n if (variable.pagination.isNext) {\n invokeUrl = variable.pagination.next.split('?');\n } else {\n invokeUrl = variable.pagination.prev.split('?');\n }\n urlParams[1] = invokeUrl[1];\n url = urlParams.join('?');\n resObj['url'] = url;\n }\n }\n return resObj; \n }\n\n /**\n * Sets the pagination info recieved from api's response in the res object\n * @param operationInfo has metadata of the variable\n * @param res holds the information of pagination which has to be stored on the variable\n * @param paramName has key name against which data has to be stored in pagination\n * @param variable withholds variable information \n * @returns {void} This method does not return anything\n */\n static setParameterVal(paramName, res, operationInfo, variable) {\n const paginationInfo = this.getPaginationInfo(operationInfo, variable);\n const paginationParams = paginationInfo.input[paramName].split('.');\n const param = paginationParams[0]; \n const sizeObj = find(operationInfo.parameters, function(obj) { return obj.name === param });\n res[paramName] = result(sizeObj, 'sampleValue');\n // if input value is configured from object, fetch the value from the specified path\n if (paginationParams.length > 1) {\n res[paramName] = get(getValidJSON(res[paramName]), paginationInfo.input[paramName].split('.').splice(1).join('.'));\n }\n }\n\n /**\n * Creates res object from the response recieved from the api triggered\n * @param variable withholds variable information \n * @param operationInfo has metadata of the variable\n * @param paginationInfo has metadata of the variable's pagination\n * @param response has data of the api call's response\n * @param options has info of the api's query params\n * @param resHeaders has data of the api call's response headers\n * @returns {object} An object which holds the information of pagination which has to be stored on the variable\n */\n static generatePaginationRes(operationInfo, paginationInfo, response, resHeaders, options, variable) {\n let res = {};\n const resOutput = paginationInfo.output;\n // If pagination type is not cursor, create the following metadata \n if (!resOutput?.next) {\n /**\n * If size is present in the pagination's output metadata deduce size from api's response\n * Else deduce size from the pagination's input metadata size key\n */\n if (resOutput?.size) {\n this.setPaginationItems(resOutput.size, response, res, 'size', resHeaders);\n } else if(paginationInfo.input?.size && paginationInfo.type === 'page'){\n res['size'] = Number(paginationInfo.input?.size) ? paginationInfo.input?.size : get(response, paginationInfo.input?.size) \n }else{ \n this.setParameterVal('size', res, operationInfo, variable);\n }\n /**\n * If page is present in the pagination's output metadata deduce page from api's response\n * Else deduce page from the pagination's input metadata page key\n */\n if (resOutput?.page) {\n this.setPaginationItems(resOutput.page, response, res, 'page', resHeaders);\n } else if (paginationInfo.type !== 'offset') {\n this.setParameterVal('page', res, operationInfo, variable);\n }\n /**\n * If totalElements has $minValue in it, set totalElements as $minValue\n * If the rendered elements are greater than $minValue, set totalElements as Number of elements rendered + 1\n \n * If totalElements is present in the pagination's output metadata deduce totalElements from api's response\n \n * If Pagination type is offset, deduce totalElements from size and options[page] else deduce from size and res[page]\n */\n if (startsWith(resOutput?.totalElements, '$minValue')) {\n const totalEl = resOutput.totalElements.replace('$minValue=', '');\n const pageParam = res['page'] ? res['page'] : options['page']\n const elRendered = res['size'] * pageParam;\n if (!variable.pagination || variable.pagination['totalElements'] > elRendered) {\n res['totalElements'] = parseInt(totalEl);\n } else {\n res['totalElements'] = elRendered + 1;\n }\n } else if (resOutput?.totalElements) {\n this.setPaginationItems(resOutput.totalElements, response, res, 'totalElements', resHeaders);\n } else {\n if (paginationInfo.type === 'offset' || paginationInfo.input.offset) {\n res['totalElements'] = (res['size'] * (options['page'] ? options['page'] : 1)) + 1;\n } else {\n res['totalElements'] = (res['size'] * res['page']) + 1;\n }\n }\n /**\n * If hasMoreItems is present in the pagination's output metadata deduce hasMoreItems from api's response\n * Else assign it as empty which will be calculated at pagination object generation\n */\n if (resOutput?.hasMoreItems) {\n this.setPaginationItems(resOutput.hasMoreItems, response, res, 'hasMoreItems', resHeaders);\n } else {\n res['hasMoreItems'] = '';\n }\n } else if (resOutput) { // For cursor type pagination set next and prev keys in res object\n this.setPaginationItems(resOutput.next, response, res, 'next', resHeaders);\n this.setPaginationItems(resOutput.prev, response, res, 'prev', resHeaders);\n }\n return res;\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"pagination.utils.js","sourceRoot":"./","sources":["src/util/variable/pagination.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { jmespath } from '@metrichor/jmespath';\n\nimport {startsWith, find, set, result, get} from 'lodash-es';\nimport { getValidJSON } from '../utils';\nimport { VARIABLE_CONSTANTS } from '../../constants/variables.constants';\n\nexport class PaginationUtils {\n /**\n * Modifies the query values with the pagination info which is retrieved from the previous API response.\n * @param variable withholds variable information \n * @param operationInfo has metadata of the variable \n * @param paginationInfo has metadata of the variable pagination data\n * @returns {void} This method does not return anything\n */\n static setPaginationQueryParams(variable, operationInfo, paginationInfo) {\n operationInfo.parameters.forEach(element => {\n // pagination input information varies based on the type\n let inputParam;\n if (paginationInfo.type === 'offset' || paginationInfo.input.offset) {\n inputParam = 'offset';\n } else {\n inputParam = 'page';\n }\n // modifies query values based on the pagination of variable\n // compare parameter name with the input parameter's starting naming key (ex: channelcontext in channelcontext.pagination)\n if (element.name === paginationInfo.input[inputParam].split('.')[0]) {\n element.sampleValue = variable.pagination['page'];\n } else if (element.name === paginationInfo.input.size.split('.')[0]) {\n element.sampleValue = variable.pagination['size'];\n }\n });\n }\n\n /**\n * Sets pagination on the variable based on the response of the triggered api call.\n * @param variable withholds variable information \n * @param response has data of the api call's response\n * @param options has info of the api's query params\n * @returns {void} This method does not return anything\n */\n static setVariablePagination(variable, response, options) {\n if (!variable.pagination) {\n variable.pagination = {\n empty: false\n };\n }\n variable.pagination['size'] = response.size;\n variable.pagination['page'] = response.page || 0;\n variable.pagination['totalElements'] = response.totalElements;\n variable.pagination['numberOfElements'] = variable.pagination['size'];\n variable.pagination['number'] = options['page'] ? options['page'] - 1 : 0;\n \n /**\n * Deduce totalPages from totalElements by size.\n * If the total elements are evenly split among the pages, assign the same to totalPages\n * Else assign totalPages + 1\n */\n variable.pagination['totalPages'] = variable.pagination['totalElements'] / variable.pagination['size'];\n if (variable.pagination['totalElements'] % variable.pagination['size'] === 0) {\n variable.pagination['totalPages'] = parseInt(variable.pagination['totalPages']);\n } else {\n variable.pagination['totalPages'] = parseInt(variable.pagination['totalPages']) + 1;\n }\n\n // If pagination type is cursor, fill next & prev\n if (response.next) {\n variable.pagination['next'] = response.next;\n variable.pagination['prev'] = response.prev;\n variable.pagination['last'] = response.next ? false : true;\n variable.pagination['first'] = response.prev ? false : true;\n } else {\n variable.pagination['first'] = variable.pagination['page'] <= 1 ? true : false;\n // calculate last based on current page index against total pages\n variable.pagination['last'] = response.hasMoreItems === '' ? !(variable.pagination['page'] < variable.pagination['totalPages']) : !response.hasMoreItems;\n }\n }\n\n /**\n * Resolves the expression given in pagination metadata's output\n * @param item has value of each key which is inside output pagination metadata\n * @param response has data of the api call's response\n * @param resHeaders has data of the api call's response headers\n * @param res holds the information of pagination which has to be stored on the variable\n * @param key has key name against which data has to be stored in pagination \n * @returns {void} This method does not return anything\n */\n static setPaginationItems(item, response, res, key, resHeaders) {\n // if the item has body, resolve the expression against the response\n if (startsWith(item, '$body')) {\n const bodyKey = item.replace('$body.', '');\n try {\n res[key] = jmespath.search(response, bodyKey);\n } catch {\n console.warn(`${item} expression needs to be corrected as per JMES guidelines`);\n }\n } else if (startsWith(item, '$header')) { // if the item has header, resolve the expression against the response headers \n const headerKey = item.replace('$header.', '');\n const headers = (<any>Object).fromEntries(resHeaders?.headers || resHeaders);\n const headerParams = headerKey.split('.');\n try {\n res[key] = jmespath.search(headers, headerParams[0].toLowerCase());\n } catch {\n console.warn(`${item} expression needs to be corrected as per JMES guidelines`);\n }\n if (res[key]?.length) { \n let headerVal = res[key].join();\n if (headerParams.length === 1) { \n /**\n * If the headerParams has only 1 key (which is not an object) name assing headerVal to the res[key]\n */\n res[key] = headerVal;\n } else { \n /**\n * If the headerParams has more than 1 key (an object), parse the stringified headerVal which is an object\n * Resolve the expression against headerVal object amd assign it to res[key]\n */\n let keyName = headerParams.slice(1).join('.');\n const headerResp = JSON.parse(headerVal);\n const specialChar = /[!@#$%^&*()+\\=\\[\\]{};':\"\\\\|,<>\\/?]+/;\n if (specialChar.test(keyName)) {\n // If key name has expression (ex: comparission expression) \n // add root key name to keyName for JMES to resolve the expression\n keyName = 'headerResp.' + keyName;\n }\n try {\n res[key] = jmespath.search(headerResp, keyName);\n } catch {\n console.warn(`${item} expression needs to be corrected as per JMES guidelines`);\n }\n }\n }\n }\n }\n\n /**\n * Return the pagination information of the service based on its existence on swagger or on the variable\n * @param variable withholds variable information \n * @param operationInfo has metadata of the variable \n * @returns {object} This method return pagination metadata\n */\n static getPaginationInfo(operationInfo, variable) {\n if (operationInfo?.paginationInfo) {\n return operationInfo.paginationInfo;\n } else {\n return variable._paginationConfig;\n }\n }\n\n /**\n * Set query params with the pagination info, if pagination metadata is present in query params\n * @param variable withholds variable information \n * @param operationInfo has metadata of the variable \n * @param options has info of the api's query params\n * @returns {void} This method does not return anything\n */\n static checkPaginationAtQuery(operationInfo, variable, options) { \n const paginationInfo = this.getPaginationInfo(operationInfo, variable);\n // If page is not first, pagination is present on the variable and paginationInfo's input meta has size set pagination in query params\n const hasPagination = options && options['page'] && paginationInfo?.input.size && variable.pagination; \n if (!hasPagination) {\n return;\n }\n\n let inputParam,sizeParam;\n // if pagination type is offset, asssign inputParam to offset else page\n if (paginationInfo.type === 'offset' || paginationInfo.input.offset) {\n inputParam = 'offset';\n } else {\n inputParam = 'page';\n }\n if([\"page\",\"offset\",\"cursor\"].includes(paginationInfo.type)) {\n sizeParam = 'size';\n }\n if(sizeParam) {\n const sizeParamName = paginationInfo.input[sizeParam].split('.')[0];\n const sizeParamObj = find(operationInfo.parameters, function (obj) { return obj.name === sizeParamName; });\n if (sizeParamObj && sizeParamObj.parameterType === 'query' && [\"page\",\"offset\",\"cursor\"].includes(paginationInfo.type)) {\n variable.pagination['size'] = options['size'] || variable.pagination['size'];\n }\n }\n const paramName = paginationInfo.input[inputParam].split('.')[0]; \n const paramObj = find(operationInfo.parameters, function(obj) { return obj.name === paramName }); \n // check if the variable has query params and they are not empty\n if (paramObj && paramObj.parameterType === 'query') {\n /**\n * For pagination type other than offset, assign page which is recieved from options\n * For offset type, calculate page from size and options[page]\n */\n if (!paginationInfo.output?.page && paginationInfo.type !== 'offset') {\n variable.pagination['page'] = options['page'];\n } else {\n variable.pagination['page'] = this.getOffsetInfo(variable, options);\n }\n this.setPaginationQueryParams(variable, operationInfo, paginationInfo); \n } else if(paginationInfo.type === 'cursor') {\n const sParam = (paginationInfo.input?.size && paginationInfo.input['size'].split('.')[0]) || \"\";\n if(sParam) {\n const sParamObj = find(operationInfo.parameters, function(obj) { return obj.name === sParam && obj.parameterType === 'path' });\n if(sParamObj) {\n sParamObj.sampleValue = options['size'] || variable.pagination['size'] || sParamObj.sampleValue;\n }\n }\n }\n }\n\n /**\n * Deduces the offset information from the size and page params\n * @param variable withholds variable information \n * @param options has info of the api's query params\n * @returns {object} Returns the next offset number\n */\n static getOffsetInfo(variable, options) {\n return variable.pagination['size'] * (options['page'] ? (options['page'] - 1) : 0);\n }\n\n /**\n * Sets Pagination data on the request information\n * @param variable withholds variable information \n * @param operationInfo has metadata of the variable \n * @param options has info of the api's query params\n * @param paginationInfo has pagination information of the variable\n * @param headers has request headers\n * @param requestBody has request body\n * @param url has request url\n * @returns {object} Returns the request object which has pagination info\n */\n static setPaginationAtReq(paginationInfo, operationInfo, variable, headers, requestBody, url, options) {\n let reqObj = {};\n let inputParam;\n let resObj = {};\n // pagination input information varies based on the type\n if (paginationInfo.type === 'offset' || paginationInfo.input.offset) {\n inputParam = 'offset';\n } else {\n inputParam = 'page';\n }\n const paramName = paginationInfo.input[inputParam].split('.')[0]; \n // check if paramName is present in parameters of operation info \n const paramObj = find(operationInfo.parameters, function(obj) { \n if(obj.parameterType === 'body' && inputParam === 'page'){\n return obj.sampleValue.hasOwnProperty(paramName)\n }else{\n return obj.name === paramName\n }\n }); \n // set page/offset and size from pagination if matched parameter's type is header \n if (paramObj?.parameterType === 'header') {\n const inputBodyParam = VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.CLOAK_HEADER_KEY + paginationInfo.input[inputParam]; \n if (inputParam !== 'offset') { \n set(reqObj, inputBodyParam, variable.pagination['page']);\n } else {\n set(reqObj, inputBodyParam, this.getOffsetInfo(variable, options));\n }\n set(reqObj, VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.CLOAK_HEADER_KEY + paginationInfo.input.size, variable.pagination['size']);\n let headerKey = VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.CLOAK_HEADER_KEY + paramName;\n headers[headerKey] = typeof reqObj[headerKey] === 'object' ? JSON.stringify(reqObj[headerKey]) : reqObj[headerKey];\n resObj['headers'] = headers;\n } else if (paramObj?.parameterType === 'body') { \n // set page/offset and size from pagination if matched parameter's type is body \n // assign bodyVal to updated pagination info object\n let bodyVal: any;\n try {\n bodyVal = typeof paramObj.sampleValue === 'string' ? JSON.parse(paramObj.sampleValue) : paramObj.sampleValue;\n } catch (e) {\n bodyVal = paramObj.sampleValue;\n }\n const bodyParam = inputParam === 'page' ? paginationInfo.input[inputParam] : paginationInfo.input[inputParam].split('.')[1]\n if (bodyVal && bodyVal[bodyParam]) {\n let inputBodyParam = paginationInfo.input[inputParam].split('.').splice(1).join('.'); \n if (inputParam !== 'offset') { \n inputBodyParam = paginationInfo.input[inputParam]; \n set(reqObj, inputBodyParam, options.page ? options.page : 1);\n } else {\n set(reqObj, inputBodyParam, this.getOffsetInfo(variable, options));\n }\n set(reqObj, paginationInfo.input.size.split('.').splice(1).join('.'), variable.pagination['size']);\n bodyVal[bodyParam] = reqObj[bodyParam];\n requestBody = JSON.stringify(bodyVal);\n resObj['requestBody'] = requestBody;\n }\n } else if (variable.pagination.next && paramObj) {\n /**\n * For cursor type pagination, if pagination info is present in the path \n * Based on whether user clicks on the next or prev button modify the url \n */\n \n if (paramObj.parameterType === 'path') {\n const urlParams = operationInfo.relativePath.split('/'),\n paramConfig = '{' + paramObj.name + '}',\n paramIndex = urlParams.indexOf(paramConfig);\n let invokeUrl;\n if (variable.pagination.isNext) {\n invokeUrl = variable.pagination.next.split('/');\n } else {\n invokeUrl = variable.pagination.prev.split('/');\n }\n\n let urlPathParmas;\n let urlPath;\n if (operationInfo.directPath) { // For direct path, as url has hostname, derivate pathname using URL object\n urlPath = new URL(url);\n urlPathParmas = urlPath.pathname.split('/');\n urlPathParmas[paramIndex] = invokeUrl[paramIndex];\n urlPath.pathname = urlPathParmas.join('/');\n url = urlPath.href;\n resObj['url'] = url;\n } else { // Else modify the url with index as +1 (following proxy pattern)\n urlPathParmas = url.split('/');\n urlPathParmas[paramIndex + 1] = invokeUrl[paramIndex];\n url = urlPathParmas.join('/');\n resObj['url'] = url;\n }\n\n } else if (paramObj.parameterType === 'query') {\n /**\n * For cursor type pagination, if pagination info is present in the query \n * Based on whether user clicks on the next or prev button modify the url's query params\n */\n const sizeParam = paginationInfo.input['size'].split('.')[0];\n const sizeObj = find(operationInfo.parameters, function(obj) { return obj.name === sizeParam });\n const urlParams = url.split('?');\n let invokeUrl;\n if (variable.pagination.isNext) {\n invokeUrl = variable.pagination.next.split('?');\n } else if(variable.pagination.isPrev) {\n invokeUrl = variable.pagination.prev.split('?');\n }\n if(invokeUrl) {\n const queryParams = new URLSearchParams(invokeUrl[1]);\n if (sizeObj && sizeObj.sampleValue) {\n queryParams.set(sizeObj.name, sizeObj.sampleValue);\n }\n invokeUrl[1] = queryParams.toString();\n urlParams[1] = invokeUrl[1]\n url = urlParams.join('?');\n resObj['url'] = url;\n }\n }\n }\n return resObj; \n }\n\n /**\n * Sets the pagination info recieved from api's response in the res object\n * @param operationInfo has metadata of the variable\n * @param res holds the information of pagination which has to be stored on the variable\n * @param paramName has key name against which data has to be stored in pagination\n * @param variable withholds variable information \n * @returns {void} This method does not return anything\n */\n static setParameterVal(paramName, res, operationInfo, variable, options?) {\n const paginationInfo = this.getPaginationInfo(operationInfo, variable);\n const paginationParams = paginationInfo.input[paramName].split('.');\n const param = paginationParams[0]; \n const sizeObj = find(operationInfo.parameters, function(obj) { return obj.name === param });\n if(paramName === 'size' && paginationInfo && (paginationInfo.type === 'offset' || paginationInfo.type === 'page') && options?.size && sizeObj?.sampleValue) {\n sizeObj.sampleValue = options['size'] || result(sizeObj, 'sampleValue');\n }\n res[paramName] = result(sizeObj, 'sampleValue');\n // if input value is configured from object, fetch the value from the specified path\n if (paginationParams.length > 1) {\n res[paramName] = get(getValidJSON(res[paramName]), paginationInfo.input[paramName].split('.').splice(1).join('.'));\n }\n }\n\n /**\n * Creates res object from the response recieved from the api triggered\n * @param variable withholds variable information \n * @param operationInfo has metadata of the variable\n * @param paginationInfo has metadata of the variable's pagination\n * @param response has data of the api call's response\n * @param options has info of the api's query params\n * @param resHeaders has data of the api call's response headers\n * @returns {object} An object which holds the information of pagination which has to be stored on the variable\n */\n static generatePaginationRes(operationInfo, paginationInfo, response, resHeaders, options, variable) {\n let res = {};\n const resOutput = paginationInfo.output;\n // If pagination type is not cursor, create the following metadata \n if (!resOutput?.next) {\n /**\n * If size is present in the pagination's output metadata deduce size from api's response\n * Else deduce size from the pagination's input metadata size key\n */\n if (resOutput?.size) {\n this.setPaginationItems(resOutput.size, response, res, 'size', resHeaders);\n }else{ \n this.setParameterVal('size', res, operationInfo, variable, options);\n }\n \n if(!resOutput?.size && paginationInfo.input?.size && paginationInfo.type === 'page'){\n res['size'] = (Number(paginationInfo.input?.size) ? paginationInfo.input?.size : get(response, paginationInfo.input?.size)) || res['size'];\n }\n /**\n * If page is present in the pagination's output metadata deduce page from api's response\n * Else deduce page from the pagination's input metadata page key\n */\n if (resOutput?.page) {\n this.setPaginationItems(resOutput.page, response, res, 'page', resHeaders);\n } else if (paginationInfo.type !== 'offset') {\n this.setParameterVal('page', res, operationInfo, variable, options);\n }\n this.setTotalElements(resOutput,options,res,variable,response,paginationInfo,resHeaders);\n /**\n * If hasMoreItems is present in the pagination's output metadata deduce hasMoreItems from api's response\n * Else assign it as empty which will be calculated at pagination object generation\n */\n if (resOutput?.hasMoreItems) {\n this.setPaginationItems(resOutput.hasMoreItems, response, res, 'hasMoreItems', resHeaders);\n } else {\n res['hasMoreItems'] = '';\n }\n } else if (resOutput) { // For cursor type pagination set next and prev keys in res object\n this.setPaginationItems(resOutput.next, response, res, 'next', resHeaders);\n this.setPaginationItems(resOutput.prev, response, res, 'prev', resHeaders);\n this.setPaginationItems(resOutput.size, response, res, 'size', resHeaders);\n this.setParameterVal('page', res, operationInfo, variable, options);\n this.setTotalElements(resOutput,options,res,variable,response,paginationInfo,resHeaders);\n }\n return res;\n }\n /**\n * If totalElements has $minValue in it, set totalElements as $minValue\n * If the rendered elements are greater than $minValue, set totalElements as Number of elements rendered + 1\n\n * If totalElements is present in the pagination's output metadata deduce totalElements from api's response\n\n * If Pagination type is offset, deduce totalElements from size and options[page] else deduce from size and res[page]\n */\n static setTotalElements(resOutput, options, res, variable, response, paginationInfo, resHeaders) {\n if (startsWith(resOutput?.totalElements, '$minValue')) {\n const totalEl = resOutput.totalElements.replace('$minValue=', '');\n const pageParam = res['page'] ? res['page'] : options['page']\n const elRendered = res['size'] * pageParam;\n if (!variable.pagination || variable.pagination['totalElements'] > elRendered) {\n res['totalElements'] = parseInt(totalEl);\n } else {\n res['totalElements'] = elRendered + 1;\n }\n } else if (resOutput?.totalElements) {\n this.setPaginationItems(resOutput.totalElements, response, res, 'totalElements', resHeaders);\n } else {\n if (paginationInfo.type === 'offset' || paginationInfo.input.offset) {\n res['totalElements'] = (res['size'] * (options['page'] ? options['page'] : 1)) + 1;\n } else {\n res['totalElements'] = (res['size'] * res['page']) + 1;\n }\n }\n }\n}"]}
|