Optimize payments table (#387)

This commit is contained in:
Rinat Arsaev 2024-09-16 13:14:56 +05:00 committed by GitHub
parent 7fa32c653c
commit a42d5ff26c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 297 additions and 231 deletions

397
package-lock.json generated
View File

@ -8,17 +8,17 @@
"name": "control-center",
"version": "0.0.0",
"dependencies": {
"@angular/animations": "18.2.2",
"@angular/cdk": "18.2.2",
"@angular/common": "18.2.2",
"@angular/compiler": "18.2.2",
"@angular/core": "18.2.2",
"@angular/forms": "18.2.2",
"@angular/material": "18.2.2",
"@angular/platform-browser": "18.2.2",
"@angular/platform-browser-dynamic": "18.2.2",
"@angular/platform-server": "18.2.2",
"@angular/router": "18.2.2",
"@angular/animations": "18.2.4",
"@angular/cdk": "18.2.4",
"@angular/common": "18.2.4",
"@angular/compiler": "18.2.4",
"@angular/core": "18.2.4",
"@angular/forms": "18.2.4",
"@angular/material": "18.2.4",
"@angular/platform-browser": "18.2.4",
"@angular/platform-browser-dynamic": "18.2.4",
"@angular/platform-server": "18.2.4",
"@angular/router": "18.2.4",
"@ngneat/input-mask": "6.0.0",
"@vality/deanonimus-proto": "2.0.1-2a02d87.0",
"@vality/domain-proto": "2.0.1-e5d3c83.0",
@ -26,7 +26,7 @@
"@vality/fistful-proto": "2.0.1-88e69a5.0",
"@vality/machinegun-proto": "1.0.0",
"@vality/magista-proto": "2.0.2-ec1bdb9.0",
"@vality/ng-core": "18.3.1-pr-67-675080b.0",
"@vality/ng-core": "18.3.1-pr-68-2c4891d.0",
"@vality/ng-thrift": "18.0.1-pr-13-bdb6d51.0",
"@vality/payout-manager-proto": "2.0.1-eb4091a.0",
"@vality/repairer-proto": "2.0.2-07b73e9.0",
@ -49,11 +49,11 @@
"zone.js": "0.14.10"
},
"devDependencies": {
"@angular-devkit/build-angular": "18.2.2",
"@angular-devkit/build-angular": "18.2.4",
"@angular-eslint/builder": "18.0.1",
"@angular-eslint/schematics": "18.0.1",
"@angular/cli": "18.2.2",
"@angular/compiler-cli": "18.2.2",
"@angular/cli": "18.2.4",
"@angular/compiler-cli": "18.2.4",
"@types/inputmask": "5.0.3",
"@types/jasmine": "4.0.3",
"@types/jwt-decode": "2.2.1",
@ -101,12 +101,12 @@
}
},
"node_modules/@angular-devkit/architect": {
"version": "0.1802.2",
"resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1802.2.tgz",
"integrity": "sha512-LPRl9jhcf0NgshaL6RoUy1uL/cAyNt7oxctoZ9EHUu8eh5E9W/jZGhVowjOLpirwqYhmEzKJJIeS49Ssqs3RQg==",
"version": "0.1802.4",
"resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1802.4.tgz",
"integrity": "sha512-VH7AwGng1zuWPTJoH1IgHYeNhqZIgzlwDx39JPmArZAW/WZHDILWB7ipbTNw0R4U4VncrXJqDmMVex7NdHP6sg==",
"dev": true,
"dependencies": {
"@angular-devkit/core": "18.2.2",
"@angular-devkit/core": "18.2.4",
"rxjs": "7.8.1"
},
"engines": {
@ -116,16 +116,16 @@
}
},
"node_modules/@angular-devkit/build-angular": {
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-18.2.2.tgz",
"integrity": "sha512-7HEnTN2T1jnjuItXKcApOsoYGgfou4+POju3ZbwIQukDZ3B2COskvQkVTxqPNrQ0ZjT2mxZYoVlmGW9M+7N25g==",
"version": "18.2.4",
"resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-18.2.4.tgz",
"integrity": "sha512-zLDstS95Yb7iBA1ZCYe3LsOLpIhr0ZC3sZ03PhVvAGbVRGSbQNnhQRZLKMk+LDhYJiG+eNFQGLfU3RfZrGds7A==",
"dev": true,
"dependencies": {
"@ampproject/remapping": "2.3.0",
"@angular-devkit/architect": "0.1802.2",
"@angular-devkit/build-webpack": "0.1802.2",
"@angular-devkit/core": "18.2.2",
"@angular/build": "18.2.2",
"@angular-devkit/architect": "0.1802.4",
"@angular-devkit/build-webpack": "0.1802.4",
"@angular-devkit/core": "18.2.4",
"@angular/build": "18.2.4",
"@babel/core": "7.25.2",
"@babel/generator": "7.25.0",
"@babel/helper-annotate-as-pure": "7.24.7",
@ -136,7 +136,7 @@
"@babel/preset-env": "7.25.3",
"@babel/runtime": "7.25.0",
"@discoveryjs/json-ext": "0.6.1",
"@ngtools/webpack": "18.2.2",
"@ngtools/webpack": "18.2.4",
"@vitejs/plugin-basic-ssl": "1.1.0",
"ansi-colors": "4.1.3",
"autoprefixer": "10.4.20",
@ -179,7 +179,7 @@
"vite": "5.4.0",
"watchpack": "2.4.1",
"webpack": "5.94.0",
"webpack-dev-middleware": "7.3.0",
"webpack-dev-middleware": "7.4.2",
"webpack-dev-server": "5.0.4",
"webpack-merge": "6.0.1",
"webpack-subresource-integrity": "5.1.0"
@ -325,12 +325,12 @@
"dev": true
},
"node_modules/@angular-devkit/build-webpack": {
"version": "0.1802.2",
"resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1802.2.tgz",
"integrity": "sha512-Pj+YmKh0nJOKl6QAsqYh3SqfuVJrFqjyp5WrG9BgfsMD9GCMD+5teMHNYJlp+vG/C8e7VdZp4rqOon8K9Xn4Mw==",
"version": "0.1802.4",
"resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1802.4.tgz",
"integrity": "sha512-juaDoguYccObm2xnzRDRlOtiL7ZyZcSAyiyls6QuO8hoo/h6phdHALJkUhI9+SIhCRQ6eUQtolC7hN3J+FZKnA==",
"dev": true,
"dependencies": {
"@angular-devkit/architect": "0.1802.2",
"@angular-devkit/architect": "0.1802.4",
"rxjs": "7.8.1"
},
"engines": {
@ -344,9 +344,9 @@
}
},
"node_modules/@angular-devkit/core": {
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.2.2.tgz",
"integrity": "sha512-Zz0tGptI/QQnUBDdp+1G5wGwQWMjpfe2oO+UohkrDVgFS71yVj4VDnOy51kMTxBvzw+36evTgthPpmzqPIfxBw==",
"version": "18.2.4",
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.2.4.tgz",
"integrity": "sha512-svlgZ0vbLrfNJAQE5WePAutcYIyA7C0OfzKSTMsfV2X1I+1blYDaZIu/ocnHqofMHu6ZqdSaaU/p/rieqU8fcA==",
"dev": true,
"dependencies": {
"ajv": "8.17.1",
@ -406,12 +406,12 @@
}
},
"node_modules/@angular-devkit/schematics": {
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-18.2.2.tgz",
"integrity": "sha512-PU6+3nX+gQ3gofR7BGwXuvNUNeeV2raURaZjlPfGpBqjyTBxukMV71QsTTWptAZT4WibCWkTFp6X1gvsOGbjMg==",
"version": "18.2.4",
"resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-18.2.4.tgz",
"integrity": "sha512-s2WdUhyLlKj5kOjb6vrvJg9/31KvgyRJGjy7PnzS43tpwF9MLuM3AYhuJsXHPhx+i0nyWn/Jnd8ZLjMzXljSxg==",
"dev": true,
"dependencies": {
"@angular-devkit/core": "18.2.2",
"@angular-devkit/core": "18.2.4",
"jsonc-parser": "3.3.1",
"magic-string": "0.30.11",
"ora": "5.4.1",
@ -554,9 +554,9 @@
}
},
"node_modules/@angular/animations": {
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.2.tgz",
"integrity": "sha512-jh/dGrY77HGm54HdTiQsxmvoRfFeJgHeWAK2+nWCPoc4b7OHcWxy/04cYffs0/27ThmABmppP7ERAyZ0f60uow==",
"version": "18.2.4",
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.4.tgz",
"integrity": "sha512-ajjXpLD+SyxbHnmhj2ZvYpXneviOjcBgU9L2UX4OVS0jVWxCNHLhJrcMqtqFHA6U5fPnhPNR9cmnt6tmqri0rA==",
"dependencies": {
"tslib": "^2.3.0"
},
@ -564,17 +564,17 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/core": "18.2.2"
"@angular/core": "18.2.4"
}
},
"node_modules/@angular/build": {
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/build/-/build-18.2.2.tgz",
"integrity": "sha512-okaDdTMXnDhvnnnih6rPQnexL6htfEAPr19bB1Ci9d31gEjVuKZCjlcw2sPZ6BUyilwC9nZlCI5vbH1Ljf6mzA==",
"version": "18.2.4",
"resolved": "https://registry.npmjs.org/@angular/build/-/build-18.2.4.tgz",
"integrity": "sha512-GVs7O7wxNMJCkqh6Vv2u9GEArWg9jyEt8Fofd6CJGzxKBYQ4hR5gjzL/lU6kNFiMcioS1wm1f6qtJtgilUO+9A==",
"dev": true,
"dependencies": {
"@ampproject/remapping": "2.3.0",
"@angular-devkit/architect": "0.1802.2",
"@angular-devkit/architect": "0.1802.4",
"@babel/core": "7.25.2",
"@babel/helper-annotate-as-pure": "7.24.7",
"@babel/helper-split-export-declaration": "7.24.7",
@ -660,9 +660,9 @@
}
},
"node_modules/@angular/cdk": {
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.2.tgz",
"integrity": "sha512-+u7ZcMA24WO03vDzlBJJWq+okZLFDeW9JrtHzrdiT09FDt4sdUp+7PddXaZcRHIXjJL+CaCLQ6slaqPNEufqgg==",
"version": "18.2.4",
"resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.4.tgz",
"integrity": "sha512-o+TuxZDqStfkviEkCR05pVyP6R2RIruEs/45Cms76hlsIheMoxRaxir/yrHdh4tZESJJhcO/EVE+aymNIRWAfg==",
"dependencies": {
"tslib": "^2.3.0"
},
@ -676,17 +676,17 @@
}
},
"node_modules/@angular/cli": {
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-18.2.2.tgz",
"integrity": "sha512-HVVaMxnbID0q+V3KE+JqzGbPHcBUFo1RKhBZ/jxY7USZNzgtyYbRc0IYqPWNdr99UT5QefTJrjVazJo1nqQZvQ==",
"version": "18.2.4",
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-18.2.4.tgz",
"integrity": "sha512-n+Y2xlgcpTZ+MZmycf2b3ceVvANDJFkDEodobVtyG63WvGOhkZ3aGhT7sHguKpAQwJLicSf8zF2z+v1Yi0DvRw==",
"dev": true,
"dependencies": {
"@angular-devkit/architect": "0.1802.2",
"@angular-devkit/core": "18.2.2",
"@angular-devkit/schematics": "18.2.2",
"@angular-devkit/architect": "0.1802.4",
"@angular-devkit/core": "18.2.4",
"@angular-devkit/schematics": "18.2.4",
"@inquirer/prompts": "5.3.8",
"@listr2/prompt-adapter-inquirer": "2.0.15",
"@schematics/angular": "18.2.2",
"@schematics/angular": "18.2.4",
"@yarnpkg/lockfile": "1.1.0",
"ini": "4.1.3",
"jsonc-parser": "3.3.1",
@ -736,9 +736,9 @@
}
},
"node_modules/@angular/common": {
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.2.tgz",
"integrity": "sha512-AQe4xnnNNch/sXRnV82C8FmhijxPATKfPGojC2qbAG2o6VkWKgt5Lbj0O8WxvSIOS5Syedv+O2kLY/JMGWHNtw==",
"version": "18.2.4",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.4.tgz",
"integrity": "sha512-flUaKhdr8KvtjH0cLC6Rrjirt8GsiFlrmZLZplr784O3Gkei2VBBNFoopgmlEzbVGPiIG5QlFZH9yvah6JPQZw==",
"dependencies": {
"tslib": "^2.3.0"
},
@ -746,14 +746,14 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/core": "18.2.2",
"@angular/core": "18.2.4",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@angular/compiler": {
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-18.2.2.tgz",
"integrity": "sha512-gmVNCXZiv/CIk2eKRLnH19N9VsPuE2s3Oxm0MNi003zk1cLy7D4YEm4fSrjKXtPY8MMpRXiu5f63W94hLwWEVw==",
"version": "18.2.4",
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-18.2.4.tgz",
"integrity": "sha512-o3ngFr1Bjt7cKOu4DSZJGCUF9YPTxJee97wFon2eNFj6FFNTmnGwAvsnJjHBMmk90fmZLC2/HpPdhYz7WprMZQ==",
"dependencies": {
"tslib": "^2.3.0"
},
@ -761,7 +761,7 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/core": "18.2.2"
"@angular/core": "18.2.4"
},
"peerDependenciesMeta": {
"@angular/core": {
@ -770,9 +770,9 @@
}
},
"node_modules/@angular/compiler-cli": {
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.2.2.tgz",
"integrity": "sha512-fF7lDrTA12YGqVjF4LyMi4hm58cv9G6CWmzSlvun0nMYCwrbRNnakZsj19dOfiIqqu4MwHaF4w3PTmUSxkMuiw==",
"version": "18.2.4",
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.2.4.tgz",
"integrity": "sha512-BIp5zr+npqSs/4KWPxwKdn7+sjo008ieNOQDlXyQms9BKlxx/gDnj7W2TsxhrkDTYCIHF73fJZ7u2U8Qy4JWfw==",
"dev": true,
"dependencies": {
"@babel/core": "7.25.2",
@ -793,14 +793,14 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/compiler": "18.2.2",
"@angular/compiler": "18.2.4",
"typescript": ">=5.4 <5.6"
}
},
"node_modules/@angular/core": {
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.2.tgz",
"integrity": "sha512-Rx6XajL0Ydj9hXUSPDvL2Q/kMzWtbiE3VxZFJnkE+fLQiWvr0GncB+NTb/nQ6QlPQ0ly60DvuI3KLcGDuFtGVA==",
"version": "18.2.4",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.4.tgz",
"integrity": "sha512-ulYmYpI/ZVQ5BL38rBy4DS/9wgGWmVD9Uo6tcrLqCzt1G1G2nKwseZv009536pHfk6dj2HdPSkpcerhWh57DWw==",
"dependencies": {
"tslib": "^2.3.0"
},
@ -813,9 +813,9 @@
}
},
"node_modules/@angular/forms": {
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.2.tgz",
"integrity": "sha512-K8cv0w6o7+ocQfUrdSA3XaKrYfa1+2TlmtyxPHjEd2mCu2R+Yqo5RqJ3P8keFewJ1+bSLhz6xnn6mumwl0RnUQ==",
"version": "18.2.4",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.4.tgz",
"integrity": "sha512-rlLhReauUz6jhLCEkGabLqqF6xLaTfvxafuj2ojzcqoKGSZcXDIM/UOSoWX756B8NtrpsuglpGBZjZlsrAZGsg==",
"dependencies": {
"tslib": "^2.3.0"
},
@ -823,22 +823,22 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/common": "18.2.2",
"@angular/core": "18.2.2",
"@angular/platform-browser": "18.2.2",
"@angular/common": "18.2.4",
"@angular/core": "18.2.4",
"@angular/platform-browser": "18.2.4",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@angular/material": {
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/material/-/material-18.2.2.tgz",
"integrity": "sha512-c+EQo1GEvM2w3qasgV/BGxB0bpJeSGs2WcMVTXCYVMcqEk8nwpALwfZiCAYl8JoKoiC5k993zz19xP2Eu14qkQ==",
"version": "18.2.4",
"resolved": "https://registry.npmjs.org/@angular/material/-/material-18.2.4.tgz",
"integrity": "sha512-F09145mI/EAHY9ngdnQTo3pFRmUoU/50i6cmddtL4cse0WidatoodQr0gZCksxhmpJgRy5mTcjh/LU2hShOgcA==",
"dependencies": {
"tslib": "^2.3.0"
},
"peerDependencies": {
"@angular/animations": "^18.0.0 || ^19.0.0",
"@angular/cdk": "18.2.2",
"@angular/cdk": "18.2.4",
"@angular/common": "^18.0.0 || ^19.0.0",
"@angular/core": "^18.0.0 || ^19.0.0",
"@angular/forms": "^18.0.0 || ^19.0.0",
@ -847,22 +847,22 @@
}
},
"node_modules/@angular/material-date-fns-adapter": {
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/material-date-fns-adapter/-/material-date-fns-adapter-18.2.2.tgz",
"integrity": "sha512-zmd6fDNjTa6+dIfCXX43fT0qDJYz7N2kH29I56UQcwprDhrQq/uhrkqwly4UEZnO1jO1NLGMGbMq02JC20jzgQ==",
"version": "18.2.4",
"resolved": "https://registry.npmjs.org/@angular/material-date-fns-adapter/-/material-date-fns-adapter-18.2.4.tgz",
"integrity": "sha512-8WYx86Eh8BmI3LoiXZbdFwkCTAX2X3X1nqXvNgHpC1ucNROytu4Op4ns2QabS3Nru7xXiL5cKd8wMC1FEh3fFA==",
"dependencies": {
"tslib": "^2.3.0"
},
"peerDependencies": {
"@angular/core": "^18.0.0 || ^19.0.0",
"@angular/material": "18.2.2",
"@angular/material": "18.2.4",
"date-fns": ">2.20.0 <4.0"
}
},
"node_modules/@angular/platform-browser": {
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.2.tgz",
"integrity": "sha512-Bfvl8elCFxyJ9vlwamr4X5sVMcp/tSwBal2coyl0WR+/PH2PAAtf+/WMYxIN90yZmPiJx6RZWUSJRlHOFiFp3A==",
"version": "18.2.4",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.4.tgz",
"integrity": "sha512-ddzq5MyPvFyTv0kUe8U9fbhE1nZtLYBCFKDqICrzHXiVRAdqLv6qtE5PtbURrdspSy1u/YEGV4LdkNJK3UgnZQ==",
"dependencies": {
"tslib": "^2.3.0"
},
@ -870,9 +870,9 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/animations": "18.2.2",
"@angular/common": "18.2.2",
"@angular/core": "18.2.2"
"@angular/animations": "18.2.4",
"@angular/common": "18.2.4",
"@angular/core": "18.2.4"
},
"peerDependenciesMeta": {
"@angular/animations": {
@ -881,9 +881,9 @@
}
},
"node_modules/@angular/platform-browser-dynamic": {
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.2.2.tgz",
"integrity": "sha512-UM/+1nY4iIj1v4lxAmV3XRHPAh/4qfNKScCLq8tJGot64rPCbtCl0Rl8rFFGqxAFvTErVDaJycUgWNZSfVl/hw==",
"version": "18.2.4",
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.2.4.tgz",
"integrity": "sha512-0nA04zJueGzdnl37TJ7guDCrzxYS4fjqgvYKiOpFktpMHPuNrBlAQo5YA7u20HGFG3i47PQh7hEWhQaqcXXpQw==",
"dependencies": {
"tslib": "^2.3.0"
},
@ -891,16 +891,16 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/common": "18.2.2",
"@angular/compiler": "18.2.2",
"@angular/core": "18.2.2",
"@angular/platform-browser": "18.2.2"
"@angular/common": "18.2.4",
"@angular/compiler": "18.2.4",
"@angular/core": "18.2.4",
"@angular/platform-browser": "18.2.4"
}
},
"node_modules/@angular/platform-server": {
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-18.2.2.tgz",
"integrity": "sha512-35YXd+oyNDVOy84T3GugU1zRC0BTQwTglQXHtEjP+l9Jc0E7te1Z/GdCswrK3ZiQ5XSz1vYXtxgN4z4pFCsuDQ==",
"version": "18.2.4",
"resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-18.2.4.tgz",
"integrity": "sha512-ix4jyN+rzkeJ/aEiWcstRHy7C4j/Q+KrXGumRLwpCkNgFRaO8YKFGGivXuPQsViCJoUzPtHu0zptJa6zSVLxyw==",
"dependencies": {
"tslib": "^2.3.0",
"xhr2": "^0.2.0"
@ -909,17 +909,17 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/animations": "18.2.2",
"@angular/common": "18.2.2",
"@angular/compiler": "18.2.2",
"@angular/core": "18.2.2",
"@angular/platform-browser": "18.2.2"
"@angular/animations": "18.2.4",
"@angular/common": "18.2.4",
"@angular/compiler": "18.2.4",
"@angular/core": "18.2.4",
"@angular/platform-browser": "18.2.4"
}
},
"node_modules/@angular/router": {
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.2.tgz",
"integrity": "sha512-tBHwuNtZNjzYAoVdveTI1ke/ZnQjKhc7gqDk9HCH2JUpdQhGbTvCKwDM51ktJpPMPcZlA263lQyy7VIyvdtK0A==",
"version": "18.2.4",
"resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.4.tgz",
"integrity": "sha512-kYNHD3K1Xou2PRMqbG2tVahtMobgDlhwHdMB7G5oFHg6K13gQ2TmopF1U5A2wYtIMdsC+AkVGIJEOxQN8fmgcA==",
"dependencies": {
"tslib": "^2.3.0"
},
@ -927,9 +927,9 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/common": "18.2.2",
"@angular/core": "18.2.2",
"@angular/platform-browser": "18.2.2",
"@angular/common": "18.2.4",
"@angular/core": "18.2.4",
"@angular/platform-browser": "18.2.4",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
@ -4406,9 +4406,9 @@
]
},
"node_modules/@ng-matero/extensions": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/@ng-matero/extensions/-/extensions-18.2.0.tgz",
"integrity": "sha512-f7ZOOSCh7F+uzNR4wuoiLIDwnm9QsS+bhCZ8jXVqG2JRT+oyHtf/JjrRLM2Mc5LCFhyO7fGaOl56qHTWu7e12g==",
"version": "18.2.1",
"resolved": "https://registry.npmjs.org/@ng-matero/extensions/-/extensions-18.2.1.tgz",
"integrity": "sha512-UdxH5cmkN0S4OxubXIbTvBzwo9JQCm869MkA2oQrZx4MQ85P+pZy1VCdlmPoqIoHkY+rki/R1YVUbayvOIlzWA==",
"dependencies": {
"@ng-select/ng-select": "^13.7.0",
"ngx-color": "^9.0.0",
@ -4429,9 +4429,9 @@
"integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA=="
},
"node_modules/@ng-select/ng-select": {
"version": "13.7.0",
"resolved": "https://registry.npmjs.org/@ng-select/ng-select/-/ng-select-13.7.0.tgz",
"integrity": "sha512-GMNu3bLYxWAbgy9pXZ4RgnWp/cxRcrWRQdxLLyg8p9gMCLpim1p4TXR8laXJKK25MKG/LEaWgs+90yCVOoWgZA==",
"version": "13.7.1",
"resolved": "https://registry.npmjs.org/@ng-select/ng-select/-/ng-select-13.7.1.tgz",
"integrity": "sha512-v/GwSBpuHd31DyoYFQECh+rCwn7xmCBpwMQTcwWerKaDQSr1egpGPSnCq2SzvfHqiJ5e1ckx7ZNTuk+swBweag==",
"dependencies": {
"tslib": "^2.3.1"
},
@ -4458,9 +4458,9 @@
}
},
"node_modules/@ngtools/webpack": {
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-18.2.2.tgz",
"integrity": "sha512-YhADmc+lVjLt3kze07A+yLry2yzcghdclu+7D3EDfa6fG2Pk33HK3MY2I0Z0BO+Ivoq7cV7yxm+naR+Od0Y5ng==",
"version": "18.2.4",
"resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-18.2.4.tgz",
"integrity": "sha512-JVDRexu3q7lg2oqJG36RtX7cqTheoZRwg2HhMV8hYXUDL0fyOrv2galwTCgXrx7vAjlx45L2uR2kuWbgW0VVcQ==",
"dev": true,
"engines": {
"node": "^18.19.1 || ^20.11.1 || >=22.0.0",
@ -5273,13 +5273,13 @@
}
},
"node_modules/@schematics/angular": {
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-18.2.2.tgz",
"integrity": "sha512-0uPA1kQ38RnbNrzMlveX/QAqQIDu2INl5IYd3EUbJZRfYSp1VVyOSyuIBJ+1iUl5Y5VUa2uylaVZXhFdKWprXw==",
"version": "18.2.4",
"resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-18.2.4.tgz",
"integrity": "sha512-GxrPv4eOPrjMKoAVhch9eprW8H/DFhBy5Zgp7CgGui9NprYkkubxw/yyo11WfR5CFZ/q5AfsjV76dPCkhLwLmA==",
"dev": true,
"dependencies": {
"@angular-devkit/core": "18.2.2",
"@angular-devkit/schematics": "18.2.2",
"@angular-devkit/core": "18.2.4",
"@angular-devkit/schematics": "18.2.4",
"jsonc-parser": "3.3.1"
},
"engines": {
@ -5622,9 +5622,9 @@
}
},
"node_modules/@types/qs": {
"version": "6.9.15",
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz",
"integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==",
"version": "6.9.16",
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz",
"integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==",
"dev": true
},
"node_modules/@types/range-parser": {
@ -5970,9 +5970,9 @@
"integrity": "sha512-XWF7qM/CARRAey0scGVhfGU6jNq+UdlGE2mg3jn4eIFDuIWQJqsT+Bah300RBUrl+XgFsmj95C6HWRfeA5Q8kw=="
},
"node_modules/@vality/ng-core": {
"version": "18.3.1-pr-67-675080b.0",
"resolved": "https://registry.npmjs.org/@vality/ng-core/-/ng-core-18.3.1-pr-67-675080b.0.tgz",
"integrity": "sha512-NoVNoNLsghYwGcEpFu/+Ex2Rr0sbJPMf1pA8pYvskSKop6ryVSRXlrPAfapePSgk/Onbf5N+qthUdKL4BFmRkg==",
"version": "18.3.1-pr-68-2c4891d.0",
"resolved": "https://registry.npmjs.org/@vality/ng-core/-/ng-core-18.3.1-pr-68-2c4891d.0.tgz",
"integrity": "sha512-1oDGn1YooeI/2EeWLbPIG0YyhbtyxITAwDXRk52eWWAHdFyvMcDmALZg89/EM3ATn+WQbV7jN/iNZGBhgmaAKw==",
"dependencies": {
"@angular/material-date-fns-adapter": "^18.2.2",
"@ng-matero/extensions": "^18.2.0",
@ -7072,9 +7072,9 @@
}
},
"node_modules/body-parser": {
"version": "1.20.2",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
"integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
"version": "1.20.3",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
"integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
"dev": true,
"dependencies": {
"bytes": "3.1.2",
@ -7085,7 +7085,7 @@
"http-errors": "2.0.0",
"iconv-lite": "0.4.24",
"on-finished": "2.4.1",
"qs": "6.11.0",
"qs": "6.13.0",
"raw-body": "2.5.2",
"type-is": "~1.6.18",
"unpipe": "1.0.0"
@ -9963,37 +9963,37 @@
"dev": true
},
"node_modules/express": {
"version": "4.19.2",
"resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
"integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
"version": "4.21.0",
"resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz",
"integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==",
"dev": true,
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
"body-parser": "1.20.2",
"body-parser": "1.20.3",
"content-disposition": "0.5.4",
"content-type": "~1.0.4",
"cookie": "0.6.0",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "2.0.0",
"encodeurl": "~1.0.2",
"encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"finalhandler": "1.2.0",
"finalhandler": "1.3.1",
"fresh": "0.5.2",
"http-errors": "2.0.0",
"merge-descriptors": "1.0.1",
"merge-descriptors": "1.0.3",
"methods": "~1.1.2",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
"path-to-regexp": "0.1.7",
"path-to-regexp": "0.1.10",
"proxy-addr": "~2.0.7",
"qs": "6.11.0",
"qs": "6.13.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.2.1",
"send": "0.18.0",
"serve-static": "1.15.0",
"send": "0.19.0",
"serve-static": "1.16.2",
"setprototypeof": "1.2.0",
"statuses": "2.0.1",
"type-is": "~1.6.18",
@ -10022,14 +10022,23 @@
"ms": "2.0.0"
}
},
"node_modules/express/node_modules/encodeurl": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
"integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
"dev": true,
"engines": {
"node": ">= 0.8"
}
},
"node_modules/express/node_modules/finalhandler": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
"integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
"integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
"dev": true,
"dependencies": {
"debug": "2.6.9",
"encodeurl": "~1.0.2",
"encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
@ -12532,9 +12541,9 @@
}
},
"node_modules/launch-editor": {
"version": "2.8.2",
"resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.2.tgz",
"integrity": "sha512-eF5slEUZXmi6WvFzI3dYcv+hA24/iKnROf24HztcURJpSz9RBmBgz5cNCVOeguouf1llrwy6Yctl4C4HM+xI8g==",
"version": "2.9.1",
"resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.9.1.tgz",
"integrity": "sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==",
"dev": true,
"dependencies": {
"picocolors": "^1.0.0",
@ -13294,10 +13303,13 @@
}
},
"node_modules/merge-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
"integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
"dev": true
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
"integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/merge-stream": {
"version": "2.0.0",
@ -15035,9 +15047,9 @@
}
},
"node_modules/path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
"version": "0.1.10",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
"integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==",
"dev": true
},
"node_modules/path-type": {
@ -15050,9 +15062,9 @@
}
},
"node_modules/photoviewer": {
"version": "3.10.2",
"resolved": "https://registry.npmjs.org/photoviewer/-/photoviewer-3.10.2.tgz",
"integrity": "sha512-liikwlwe3jsqgQPeaNR4FkM/9siAmxA9+DQB3iwO56Idg+Rxu1/t8fJDsLSza6mXZuyA6eBl/jtaCOeGlQSupg==",
"version": "3.10.3",
"resolved": "https://registry.npmjs.org/photoviewer/-/photoviewer-3.10.3.tgz",
"integrity": "sha512-6RqhMOiPVMsgfMTP/j/lQLGGj2glzBWIDnrTpx2rcACOcO8ig+bnBAfofEPXBmLOgKxsu+HIiLQudVtloS9GEA==",
"dependencies": {
"domq.js": "^0.7.0"
}
@ -15492,12 +15504,12 @@
}
},
"node_modules/qs": {
"version": "6.11.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
"integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
"version": "6.13.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
"integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
"dev": true,
"dependencies": {
"side-channel": "^1.0.4"
"side-channel": "^1.0.6"
},
"engines": {
"node": ">=0.6"
@ -16101,9 +16113,9 @@
}
},
"node_modules/send": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
"integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
"integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
"dev": true,
"dependencies": {
"debug": "2.6.9",
@ -16245,20 +16257,29 @@
"dev": true
},
"node_modules/serve-static": {
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
"integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
"version": "1.16.2",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
"integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
"dev": true,
"dependencies": {
"encodeurl": "~1.0.2",
"encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
"send": "0.18.0"
"send": "0.19.0"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/serve-static/node_modules/encodeurl": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
"integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
"dev": true,
"engines": {
"node": ">= 0.8"
}
},
"node_modules/set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
@ -16357,14 +16378,18 @@
}
},
"node_modules/side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
"integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.0",
"get-intrinsic": "^1.0.2",
"object-inspect": "^1.9.0"
"call-bind": "^1.0.7",
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.4",
"object-inspect": "^1.13.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@ -18237,9 +18262,9 @@
}
},
"node_modules/webpack-dev-middleware": {
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.3.0.tgz",
"integrity": "sha512-xD2qnNew+F6KwOGZR7kWdbIou/ud7cVqLEXeK1q0nHcNsX/u7ul/fSdlOTX4ntSL5FNFy7ZJJXbf0piF591JYw==",
"version": "7.4.2",
"resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.2.tgz",
"integrity": "sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==",
"dev": true,
"dependencies": {
"colorette": "^2.0.10",

View File

@ -4,6 +4,7 @@
"private": true,
"scripts": {
"start": "ng serve --port 4200",
"prod": "cross-env NODE_ENV=stage ng serve --port 4200 --configuration=production",
"stage": "cross-env NODE_ENV=stage ng serve --port 4201 --configuration=stage",
"build": "ng build",
"test": "ng test",
@ -16,17 +17,17 @@
"fix": "npm run lint:fix && npm run format:fix && npm run spell:fix"
},
"dependencies": {
"@angular/animations": "18.2.2",
"@angular/cdk": "18.2.2",
"@angular/common": "18.2.2",
"@angular/compiler": "18.2.2",
"@angular/core": "18.2.2",
"@angular/forms": "18.2.2",
"@angular/material": "18.2.2",
"@angular/platform-browser": "18.2.2",
"@angular/platform-browser-dynamic": "18.2.2",
"@angular/platform-server": "18.2.2",
"@angular/router": "18.2.2",
"@angular/animations": "18.2.4",
"@angular/cdk": "18.2.4",
"@angular/common": "18.2.4",
"@angular/compiler": "18.2.4",
"@angular/core": "18.2.4",
"@angular/forms": "18.2.4",
"@angular/material": "18.2.4",
"@angular/platform-browser": "18.2.4",
"@angular/platform-browser-dynamic": "18.2.4",
"@angular/platform-server": "18.2.4",
"@angular/router": "18.2.4",
"@ngneat/input-mask": "6.0.0",
"@vality/deanonimus-proto": "2.0.1-2a02d87.0",
"@vality/domain-proto": "2.0.1-e5d3c83.0",
@ -34,7 +35,7 @@
"@vality/fistful-proto": "2.0.1-88e69a5.0",
"@vality/machinegun-proto": "1.0.0",
"@vality/magista-proto": "2.0.2-ec1bdb9.0",
"@vality/ng-core": "18.3.1-pr-67-675080b.0",
"@vality/ng-core": "18.3.1-pr-68-2c4891d.0",
"@vality/ng-thrift": "18.0.1-pr-13-bdb6d51.0",
"@vality/payout-manager-proto": "2.0.1-eb4091a.0",
"@vality/repairer-proto": "2.0.2-07b73e9.0",
@ -57,11 +58,11 @@
"zone.js": "0.14.10"
},
"devDependencies": {
"@angular-devkit/build-angular": "18.2.2",
"@angular-devkit/build-angular": "18.2.4",
"@angular-eslint/builder": "18.0.1",
"@angular-eslint/schematics": "18.0.1",
"@angular/cli": "18.2.2",
"@angular/compiler-cli": "18.2.2",
"@angular/cli": "18.2.4",
"@angular/compiler-cli": "18.2.4",
"@types/inputmask": "5.0.3",
"@types/jasmine": "4.0.3",
"@types/jwt-decode": "2.2.1",

View File

@ -1,23 +1,27 @@
import { Injectable, DestroyRef } from '@angular/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { Domain, DomainObject, Reference } from '@vality/domain-proto/domain';
import { DomainObject, Reference } from '@vality/domain-proto/domain';
import { Commit, Snapshot, Version } from '@vality/domain-proto/domain_config';
import { NotifyLogService, handleError, inProgressFrom, progressTo } from '@vality/ng-core';
import { getUnionKey } from '@vality/ng-thrift';
import isEqual from 'lodash-es/isEqual';
import { BehaviorSubject, defer, Observable, of, ReplaySubject, filter, combineLatest } from 'rxjs';
import { map, shareReplay, startWith, switchMap, take, tap } from 'rxjs/operators';
import { DomainSecretService } from '../../../shared/services';
import { RepositoryService } from '../repository.service';
import { createObjectHash } from '../utils/create-object-hash';
@Injectable({
providedIn: 'root',
})
export class DomainStoreService {
version$ = combineLatest([defer(() => this.snapshot$), defer(() => this.progress$)]).pipe(
filter(([, p]) => !p),
domain$ = defer(() => this.rawDomain$).pipe(
map((d) => this.domainSecretService.reduceDomain(d)),
shareReplay({ refCount: true, bufferSize: 1 }),
);
version$ = defer(() => this.loadedSnapshot$).pipe(
map(([s]) => s.version),
shareReplay({ refCount: true, bufferSize: 1 }),
);
isLoading$ = inProgressFrom(
() => this.progress$,
@ -34,8 +38,23 @@ export class DomainStoreService {
takeUntilDestroyed(this.destroyRef),
shareReplay(1),
);
private loadedSnapshot$ = combineLatest([
defer(() => this.snapshot$),
defer(() => this.progress$),
]).pipe(
filter(([, p]) => !p),
shareReplay({ refCount: true, bufferSize: 1 }),
);
private reload$ = new ReplaySubject<void>(1);
private progress$ = new BehaviorSubject(0);
private rawDomain$ = this.loadedSnapshot$.pipe(
map(([s]) => s?.domain),
shareReplay({ refCount: true, bufferSize: 1 }),
);
private objects$ = this.rawDomain$.pipe(
map((domain) => new Map(Array.from(domain).map(([r, d]) => [createObjectHash(r), d]))),
shareReplay({ refCount: true, bufferSize: 1 }),
);
constructor(
private repositoryService: RepositoryService,
@ -48,17 +67,12 @@ export class DomainStoreService {
this.reload$.next();
}
getDomain(raw = false): Observable<Domain> {
return combineLatest([defer(() => this.snapshot$), defer(() => this.progress$)]).pipe(
filter(([, p]) => !p),
map(([s]) => s?.domain),
map((d) => (raw ? d : this.domainSecretService.reduceDomain(d))),
);
}
getObject(ref: Reference, raw = false): Observable<DomainObject> {
return this.getDomain(raw).pipe(
map((domain) => Array.from(domain).find(([r]) => isEqual(ref, r))?.[1]),
return this.objects$.pipe(
map((objects) => {
const res = objects.get(createObjectHash(ref));
return raw || !this.domainSecretService.isExcludedObject(res) ? res : undefined;
}),
);
}
@ -69,7 +83,7 @@ export class DomainStoreService {
getObjectsRefs<T extends keyof DomainObject>(
objectType: T,
): Observable<[Reference, DomainObject][]> {
return this.getDomain().pipe(
return this.domain$.pipe(
map((d) => Array.from(d).filter(([, o]) => getUnionKey(o) === objectType)),
);
}

View File

@ -0,0 +1,5 @@
import { toJson } from '@vality/ng-thrift';
export function createObjectHash(obj: unknown): string {
return JSON.stringify(toJson(obj));
}

View File

@ -59,7 +59,7 @@ export class DomainObjectsTableComponent implements OnInit {
(this.qp.params.types as (keyof DomainObject)[]) || [],
);
objects$: Observable<DomainObjectData[]> = combineLatest([
this.domainStoreService.getDomain(),
this.domainStoreService.domain$,
this.typesControl.valueChanges.pipe(startWith(this.typesControl.value)),
]).pipe(
switchMap(([objects, types]) =>

View File

@ -34,11 +34,10 @@ export class PaymentsTableComponent {
{
field: 'id',
cell: (d) => ({
value: `${d.invoice_id}.${d.id}`,
click: () => this.toDetails(d),
}),
sticky: 'start',
},
{ field: 'invoice_id', sticky: 'start' },
{ field: 'external_id' },
createCurrencyColumn((d) => ({ amount: d.amount, code: d.currency_symbolic_code }), {
field: 'amount',

View File

@ -35,7 +35,7 @@ export class DomainObjectCardComponent implements OnChanges {
ref$ = new ReplaySubject<Reference>(1);
progress$ = this.domainStoreService.isLoading$;
domainObject$ = combineLatest([this.domainStoreService.getDomain(), this.ref$]).pipe(
domainObject$ = combineLatest([this.domainStoreService.domain$, this.ref$]).pipe(
map(([domain, ref]) =>
domain.get(Array.from(domain.keys()).find((k) => isEqualThrift(k, ref))),
),

View File

@ -1,6 +1,7 @@
import { DomainObject } from '@vality/domain-proto/domain';
import { inlineJson } from '@vality/ng-core';
import { getUnionKey, getUnionValue } from '@vality/ng-thrift';
import isNil from 'lodash-es/isNil';
import startCase from 'lodash-es/startCase';
import { PickByValue, ValuesType } from 'utility-types';
@ -81,7 +82,10 @@ export function getDomainObjectDetails(o: DomainObject): DomainObjectDetails {
const result = getDomainObjectValueDetailsFn(getUnionKey(o))(getUnionValue(o));
return {
id: result.id,
label: result.label || result.description || String(result.id) || startCase(getUnionKey(o)),
label:
result.label ||
result.description ||
`${startCase(getUnionKey(o))}${isNil(result.id) ? '' : ' ' + result.id}`,
description: result.label ? result.description : '',
type: startCase(getUnionKey(o)),
};

View File

@ -1,5 +1,6 @@
import { Injectable } from '@angular/core';
import { Domain, DomainObject } from '@vality/domain-proto/domain';
import { getUnionKey } from '@vality/ng-thrift';
import { KeycloakService } from 'keycloak-angular';
import cloneDeep from 'lodash-es/cloneDeep';
import isNil from 'lodash-es/isNil';
@ -21,6 +22,10 @@ export class DomainSecretService {
constructor(private keycloakService: KeycloakService) {}
isExcludedObject(obj: DomainObject) {
return !this.hasDominantSecretRole && EXCLUDE_OBJECTS.includes(getUnionKey(obj));
}
reduceDomain(domain: Domain): Domain {
if (this.hasDominantSecretRole) {
return domain;

View File

@ -1,7 +1,7 @@
import { inject } from '@angular/core';
import { createColumn } from '@vality/ng-core';
import isNil from 'lodash-es/isNil';
import { of } from 'rxjs';
import { of, concat, EMPTY } from 'rxjs';
import { map } from 'rxjs/operators';
import { AmountCurrencyService } from '../../services';
@ -9,13 +9,19 @@ import { AmountCurrencyService } from '../../services';
export const createCurrencyColumn = createColumn(
({ amount, code }: { amount: number; code: string }) => {
const amountCurrencyService = inject(AmountCurrencyService);
return (isNil(amount) ? of(undefined) : amountCurrencyService.toMajor(amount, code)).pipe(
map((value) => ({
value,
if (isNil(amount)) {
return of(undefined);
}
return concat(
amount === 0 ? of(0) : EMPTY,
amountCurrencyService.getCurrency(code).pipe(map((c) => c?.data?.exponent)),
).pipe(
map((exponent) => ({
value: amount,
type: 'currency',
params: {
code,
major: true,
exponent,
},
})),
);

View File

@ -1,7 +1,8 @@
import { inject } from '@angular/core';
import { Reference } from '@vality/domain-proto/internal/domain';
import { createColumn } from '@vality/ng-core';
import { map } from 'rxjs/operators';
import { getUnionKey, getUnionValue } from '@vality/ng-thrift';
import { map, startWith } from 'rxjs/operators';
import { DomainStoreService } from '../../../api/domain-config';
import { SidenavInfoService } from '../../components/sidenav-info';
@ -14,9 +15,12 @@ export const createDomainObjectColumn = createColumn(({ ref }: { ref: Reference
return inject(DomainStoreService)
.getObject(ref)
.pipe(
startWith({
[getUnionKey(ref)]: { ref: getUnionValue(ref), data: {} },
}),
map((obj) => ({
value: getDomainObjectDetails(obj).label,
description: getDomainObjectDetails(obj).id,
value: getDomainObjectDetails(obj).label || '',
description: getDomainObjectDetails(obj).id || '',
click: () => {
inject(SidenavInfoService).toggle(DomainObjectCardComponent, { ref });
},

View File

@ -2,7 +2,7 @@ import { inject } from '@angular/core';
import { Router } from '@angular/router';
import { createColumn } from '@vality/ng-core';
import { of } from 'rxjs';
import { map } from 'rxjs/operators';
import { map, startWith } from 'rxjs/operators';
import { PartiesStoreService } from '../../../api/payment-processing';
@ -13,7 +13,10 @@ export const createPartyColumn = createColumn(
? of(params.partyName)
: inject(PartiesStoreService)
.get(id)
.pipe(map((party) => party.contact_info.registration_email));
.pipe(
map((party) => party.contact_info.registration_email),
startWith(''),
);
return partyName$.pipe(
map((partyName) => ({
value: partyName,