MSW: Bump msw from 1.2.3 to 2.3.1

This bumps Mock Service Worker and updates the handlers.
This commit is contained in:
regexowl 2024-06-26 09:13:07 +02:00 committed by Klara Simickova
parent a8c8942af6
commit 501323b476
6 changed files with 484 additions and 359 deletions

454
package-lock.json generated
View file

@ -74,7 +74,7 @@
"jest-environment-jsdom": "29.7.0",
"jest-fail-on-console": "3.3.0",
"moment": "2.30.1",
"msw": "1.2.3",
"msw": "2.3.1",
"npm-run-all": "4.1.5",
"postcss-scss": "4.0.9",
"react-chartjs-2": "5.2.0",
@ -2111,6 +2111,33 @@
"optional": true,
"peer": true
},
"node_modules/@bundled-es-modules/cookie": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@bundled-es-modules/cookie/-/cookie-2.0.0.tgz",
"integrity": "sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==",
"dev": true,
"dependencies": {
"cookie": "^0.5.0"
}
},
"node_modules/@bundled-es-modules/cookie/node_modules/cookie": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
"integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
"dev": true,
"engines": {
"node": ">= 0.6"
}
},
"node_modules/@bundled-es-modules/statuses": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@bundled-es-modules/statuses/-/statuses-1.0.1.tgz",
"integrity": "sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==",
"dev": true,
"dependencies": {
"statuses": "^2.0.1"
}
},
"node_modules/@cspotcode/source-map-support": {
"version": "0.8.1",
"dev": true,
@ -2755,6 +2782,161 @@
"integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==",
"dev": true
},
"node_modules/@inquirer/confirm": {
"version": "3.1.9",
"resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.1.9.tgz",
"integrity": "sha512-UF09aejxCi4Xqm6N/jJAiFXArXfi9al52AFaSD+2uIHnhZGtd1d6lIGTRMPouVSJxbGEi+HkOWSYaiEY/+szUw==",
"dev": true,
"dependencies": {
"@inquirer/core": "^8.2.2",
"@inquirer/type": "^1.3.3"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@inquirer/core": {
"version": "8.2.2",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-8.2.2.tgz",
"integrity": "sha512-K8SuNX45jEFlX3EBJpu9B+S2TISzMPGXZIuJ9ME924SqbdW6Pt6fIkKvXg7mOEOKJ4WxpQsxj0UTfcL/A434Ww==",
"dev": true,
"dependencies": {
"@inquirer/figures": "^1.0.3",
"@inquirer/type": "^1.3.3",
"@types/mute-stream": "^0.0.4",
"@types/node": "^20.12.13",
"@types/wrap-ansi": "^3.0.0",
"ansi-escapes": "^4.3.2",
"chalk": "^4.1.2",
"cli-spinners": "^2.9.2",
"cli-width": "^4.1.0",
"mute-stream": "^1.0.0",
"signal-exit": "^4.1.0",
"strip-ansi": "^6.0.1",
"wrap-ansi": "^6.2.0"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@inquirer/core/node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/@inquirer/core/node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/@inquirer/core/node_modules/cli-width": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz",
"integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==",
"dev": true,
"engines": {
"node": ">= 12"
}
},
"node_modules/@inquirer/core/node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/@inquirer/core/node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"node_modules/@inquirer/core/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"engines": {
"node": ">=8"
}
},
"node_modules/@inquirer/core/node_modules/mute-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz",
"integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==",
"dev": true,
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/@inquirer/core/node_modules/signal-exit": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
"dev": true,
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@inquirer/core/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/@inquirer/figures": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.3.tgz",
"integrity": "sha512-ErXXzENMH5pJt5/ssXV0DfWUZqly8nGzf0UcBV9xTnP+KyffE2mqyxIMBrZ8ijQck2nU0TQm40EQB53YreyWHw==",
"dev": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@inquirer/type": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.3.3.tgz",
"integrity": "sha512-xTUt0NulylX27/zMx04ZYar/kr1raaiFTVvQ5feljQsiAgdm0WPj4S73/ye0fbslh+15QrIuDvfCXTek7pMY5A==",
"dev": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@istanbuljs/load-nyc-config": {
"version": "1.1.0",
"dev": true,
@ -3674,41 +3856,29 @@
}
},
"node_modules/@mswjs/cookies": {
"version": "0.2.2",
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@mswjs/cookies/-/cookies-1.1.1.tgz",
"integrity": "sha512-W68qOHEjx1iD+4VjQudlx26CPIoxmIAtK4ZCexU0/UJBG6jYhcuyzKJx+Iw8uhBIGd9eba64XgWVgo20it1qwA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/set-cookie-parser": "^2.4.0",
"set-cookie-parser": "^2.4.6"
},
"engines": {
"node": ">=14"
"node": ">=18"
}
},
"node_modules/@mswjs/interceptors": {
"version": "0.17.10",
"version": "0.29.1",
"resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.29.1.tgz",
"integrity": "sha512-3rDakgJZ77+RiQUuSK69t1F0m8BQKA8Vh5DCS5V0DWvNY67zob2JhhQrhCO0AKLGINTRSFd1tBaHcJTkhefoSw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@open-draft/until": "^1.0.3",
"@types/debug": "^4.1.7",
"@xmldom/xmldom": "^0.8.3",
"debug": "^4.3.3",
"headers-polyfill": "3.2.5",
"@open-draft/deferred-promise": "^2.2.0",
"@open-draft/logger": "^0.3.0",
"@open-draft/until": "^2.0.0",
"is-node-process": "^1.2.0",
"outvariant": "^1.2.1",
"strict-event-emitter": "^0.2.4",
"web-encoding": "^1.1.5"
"strict-event-emitter": "^0.5.1"
},
"engines": {
"node": ">=14"
}
},
"node_modules/@mswjs/interceptors/node_modules/strict-event-emitter": {
"version": "0.2.8",
"dev": true,
"license": "MIT",
"dependencies": {
"events": "^3.3.0"
"node": ">=18"
}
},
"node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
@ -3751,10 +3921,27 @@
"node": ">= 8"
}
},
"node_modules/@open-draft/until": {
"version": "1.0.3",
"node_modules/@open-draft/deferred-promise": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz",
"integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==",
"dev": true
},
"node_modules/@open-draft/logger": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz",
"integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==",
"dev": true,
"license": "MIT"
"dependencies": {
"is-node-process": "^1.2.0",
"outvariant": "^1.4.0"
}
},
"node_modules/@open-draft/until": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz",
"integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==",
"dev": true
},
"node_modules/@openshift/dynamic-plugin-sdk": {
"version": "5.0.1",
@ -5161,22 +5348,15 @@
}
},
"node_modules/@types/cookie": {
"version": "0.4.1",
"dev": true,
"license": "MIT"
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz",
"integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==",
"dev": true
},
"node_modules/@types/debounce-promise": {
"version": "3.1.7",
"license": "MIT"
},
"node_modules/@types/debug": {
"version": "4.1.9",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/ms": "*"
}
},
"node_modules/@types/eslint": {
"version": "8.44.3",
"dev": true,
@ -5335,11 +5515,6 @@
"optional": true,
"peer": true
},
"node_modules/@types/js-levenshtein": {
"version": "1.1.1",
"dev": true,
"license": "MIT"
},
"node_modules/@types/jsdom": {
"version": "20.0.1",
"dev": true,
@ -5381,15 +5556,23 @@
"dev": true,
"license": "MIT"
},
"node_modules/@types/ms": {
"version": "0.7.32",
"node_modules/@types/mute-stream": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz",
"integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==",
"dev": true,
"license": "MIT"
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/node": {
"version": "20.7.1",
"version": "20.14.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.5.tgz",
"integrity": "sha512-aoRR+fJkZT2l0aGOJhuA8frnCSoNX6W7U2mpNq63+BxBIj5BQFt8rHy627kijCmm63ijdSdwvGgpUsU6MBsZZA==",
"dev": true,
"license": "MIT"
"dependencies": {
"undici-types": "~5.26.4"
}
},
"node_modules/@types/node-fetch": {
"version": "2.6.11",
@ -5504,14 +5687,6 @@
"@types/node": "*"
}
},
"node_modules/@types/set-cookie-parser": {
"version": "2.4.4",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/sockjs": {
"version": "0.3.34",
"dev": true,
@ -5530,6 +5705,12 @@
"dev": true,
"license": "MIT"
},
"node_modules/@types/statuses": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.5.tgz",
"integrity": "sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==",
"dev": true
},
"node_modules/@types/tapable": {
"version": "1.0.9",
"dev": true,
@ -5597,6 +5778,12 @@
"node": ">=0.10.0"
}
},
"node_modules/@types/wrap-ansi": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz",
"integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==",
"dev": true
},
"node_modules/@types/ws": {
"version": "8.5.6",
"dev": true,
@ -6218,14 +6405,6 @@
}
}
},
"node_modules/@xmldom/xmldom": {
"version": "0.8.10",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/@xtuc/ieee754": {
"version": "1.2.0",
"dev": true,
@ -6236,12 +6415,6 @@
"dev": true,
"license": "Apache-2.0"
},
"node_modules/@zxing/text-encoding": {
"version": "0.9.0",
"dev": true,
"license": "(Unlicense OR Apache-2.0)",
"optional": true
},
"node_modules/abab": {
"version": "2.0.6",
"dev": true,
@ -7639,9 +7812,10 @@
}
},
"node_modules/cli-spinners": {
"version": "2.9.1",
"version": "2.9.2",
"resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
"integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
},
@ -11303,9 +11477,10 @@
}
},
"node_modules/headers-polyfill": {
"version": "3.2.5",
"dev": true,
"license": "MIT"
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.3.tgz",
"integrity": "sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==",
"dev": true
},
"node_modules/history": {
"version": "5.3.0",
@ -14739,14 +14914,6 @@
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
"node_modules/js-levenshtein": {
"version": "1.1.6",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/js-tokens": {
"version": "4.0.0",
"license": "MIT"
@ -15866,43 +16033,41 @@
"license": "MIT"
},
"node_modules/msw": {
"version": "1.2.3",
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/msw/-/msw-2.3.1.tgz",
"integrity": "sha512-ocgvBCLn/5l3jpl1lssIb3cniuACJLoOfZu01e3n5dbJrpA5PeeWn28jCLgQDNt6d7QT8tF2fYRzm9JoEHtiig==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
"@mswjs/cookies": "^0.2.2",
"@mswjs/interceptors": "^0.17.5",
"@open-draft/until": "^1.0.3",
"@types/cookie": "^0.4.1",
"@types/js-levenshtein": "^1.1.1",
"chalk": "4.1.1",
"chokidar": "^3.4.2",
"cookie": "^0.4.2",
"graphql": "^15.0.0 || ^16.0.0",
"headers-polyfill": "^3.1.2",
"inquirer": "^8.2.0",
"@bundled-es-modules/cookie": "^2.0.0",
"@bundled-es-modules/statuses": "^1.0.1",
"@inquirer/confirm": "^3.0.0",
"@mswjs/cookies": "^1.1.0",
"@mswjs/interceptors": "^0.29.0",
"@open-draft/until": "^2.1.0",
"@types/cookie": "^0.6.0",
"@types/statuses": "^2.0.4",
"chalk": "^4.1.2",
"graphql": "^16.8.1",
"headers-polyfill": "^4.0.2",
"is-node-process": "^1.2.0",
"js-levenshtein": "^1.1.6",
"node-fetch": "^2.6.7",
"outvariant": "^1.4.0",
"outvariant": "^1.4.2",
"path-to-regexp": "^6.2.0",
"strict-event-emitter": "^0.4.3",
"type-fest": "^2.19.0",
"yargs": "^17.3.1"
"strict-event-emitter": "^0.5.1",
"type-fest": "^4.9.0",
"yargs": "^17.7.2"
},
"bin": {
"msw": "cli/index.js"
},
"engines": {
"node": ">=14"
"node": ">=18"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/mswjs"
"url": "https://github.com/sponsors/mswjs"
},
"peerDependencies": {
"typescript": ">= 4.4.x <= 5.1.x"
"typescript": ">= 4.7.x"
},
"peerDependenciesMeta": {
"typescript": {
@ -15912,8 +16077,9 @@
},
"node_modules/msw/node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@ -15925,9 +16091,10 @@
}
},
"node_modules/msw/node_modules/chalk": {
"version": "4.1.1",
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@ -15941,8 +16108,9 @@
},
"node_modules/msw/node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
@ -15952,21 +16120,15 @@
},
"node_modules/msw/node_modules/color-name": {
"version": "1.1.4",
"dev": true,
"license": "MIT"
},
"node_modules/msw/node_modules/cookie": {
"version": "0.4.2",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"node_modules/msw/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
}
@ -15978,8 +16140,9 @@
},
"node_modules/msw/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
@ -15988,11 +16151,12 @@
}
},
"node_modules/msw/node_modules/type-fest": {
"version": "2.19.0",
"version": "4.20.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.20.1.tgz",
"integrity": "sha512-R6wDsVsoS9xYOpy8vgeBlqpdOyzJ12HNfQhC/aAKWM3YoCV9TtunJzh/QpkMgeDhkoynDcw5f1y+qF9yc/HHyg==",
"dev": true,
"license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=12.20"
"node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@ -16694,9 +16858,10 @@
}
},
"node_modules/outvariant": {
"version": "1.4.0",
"dev": true,
"license": "MIT"
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.2.tgz",
"integrity": "sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==",
"dev": true
},
"node_modules/p-all": {
"version": "5.0.0",
@ -18593,11 +18758,6 @@
"node": ">= 0.8.0"
}
},
"node_modules/set-cookie-parser": {
"version": "2.6.0",
"dev": true,
"license": "MIT"
},
"node_modules/set-function-length": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz",
@ -19012,9 +19172,10 @@
}
},
"node_modules/strict-event-emitter": {
"version": "0.4.6",
"dev": true,
"license": "MIT"
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz",
"integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==",
"dev": true
},
"node_modules/string_decoder": {
"version": "1.3.0",
@ -20230,6 +20391,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/undici-types": {
"version": "5.26.5",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
"dev": true
},
"node_modules/unicode-canonical-property-names-ecmascript": {
"version": "2.0.0",
"dev": true,
@ -20695,17 +20862,6 @@
"defaults": "^1.0.3"
}
},
"node_modules/web-encoding": {
"version": "1.1.5",
"dev": true,
"license": "MIT",
"dependencies": {
"util": "^0.12.3"
},
"optionalDependencies": {
"@zxing/text-encoding": "0.9.0"
}
},
"node_modules/webidl-conversions": {
"version": "7.0.0",
"dev": true,

View file

@ -73,7 +73,7 @@
"jest-environment-jsdom": "29.7.0",
"jest-fail-on-console": "3.3.0",
"moment": "2.30.1",
"msw": "1.2.3",
"msw": "2.3.1",
"npm-run-all": "4.1.5",
"postcss-scss": "4.0.9",
"react-chartjs-2": "5.2.0",

View file

@ -2,13 +2,15 @@
/* tslint:disable */
/**
* Mock Service Worker (1.2.3).
* Mock Service Worker.
* @see https://github.com/mswjs/msw
* - Please do NOT modify this file.
* - Please do NOT serve this file on production.
*/
const INTEGRITY_CHECKSUM = '3d6b9f06410d179a7f7404d4bf4c3c70'
const PACKAGE_VERSION = '2.3.1'
const INTEGRITY_CHECKSUM = '26357c79639bfa20d64c0efca2a87423'
const IS_MOCKED_RESPONSE = Symbol('isMockedResponse')
const activeClientIds = new Set()
self.addEventListener('install', function () {
@ -47,7 +49,10 @@ self.addEventListener('message', async function (event) {
case 'INTEGRITY_CHECK_REQUEST': {
sendToClient(client, {
type: 'INTEGRITY_CHECK_RESPONSE',
payload: INTEGRITY_CHECKSUM,
payload: {
packageVersion: PACKAGE_VERSION,
checksum: INTEGRITY_CHECKSUM,
},
})
break
}
@ -86,12 +91,6 @@ self.addEventListener('message', async function (event) {
self.addEventListener('fetch', function (event) {
const { request } = event
const accept = request.headers.get('accept') || ''
// Bypass server-sent events.
if (accept.includes('text/event-stream')) {
return
}
// Bypass navigation requests.
if (request.mode === 'navigate') {
@ -112,29 +111,8 @@ self.addEventListener('fetch', function (event) {
}
// Generate unique request ID.
const requestId = Math.random().toString(16).slice(2)
event.respondWith(
handleRequest(event, requestId).catch((error) => {
if (error.name === 'NetworkError') {
console.warn(
'[MSW] Successfully emulated a network error for the "%s %s" request.',
request.method,
request.url,
)
return
}
// At this point, any exception indicates an issue with the original request/response.
console.error(
`\
[MSW] Caught an exception from the "%s %s" request (%s). This is probably not a problem with Mock Service Worker. There is likely an additional logging output above.`,
request.method,
request.url,
`${error.name}: ${error.message}`,
)
}),
)
const requestId = crypto.randomUUID()
event.respondWith(handleRequest(event, requestId))
})
async function handleRequest(event, requestId) {
@ -146,21 +124,24 @@ async function handleRequest(event, requestId) {
// this message will pend indefinitely.
if (client && activeClientIds.has(client.id)) {
;(async function () {
const clonedResponse = response.clone()
sendToClient(client, {
type: 'RESPONSE',
payload: {
requestId,
type: clonedResponse.type,
ok: clonedResponse.ok,
status: clonedResponse.status,
statusText: clonedResponse.statusText,
body:
clonedResponse.body === null ? null : await clonedResponse.text(),
headers: Object.fromEntries(clonedResponse.headers.entries()),
redirected: clonedResponse.redirected,
const responseClone = response.clone()
sendToClient(
client,
{
type: 'RESPONSE',
payload: {
requestId,
isMockedResponse: IS_MOCKED_RESPONSE in response,
type: responseClone.type,
status: responseClone.status,
statusText: responseClone.statusText,
body: responseClone.body,
headers: Object.fromEntries(responseClone.headers.entries()),
},
},
})
[responseClone.body],
)
})()
}
@ -196,20 +177,20 @@ async function resolveMainClient(event) {
async function getResponse(event, client, requestId) {
const { request } = event
const clonedRequest = request.clone()
// Clone the request because it might've been already used
// (i.e. its body has been read and sent to the client).
const requestClone = request.clone()
function passthrough() {
// Clone the request because it might've been already used
// (i.e. its body has been read and sent to the client).
const headers = Object.fromEntries(clonedRequest.headers.entries())
const headers = Object.fromEntries(requestClone.headers.entries())
// Remove MSW-specific request headers so the bypassed requests
// comply with the server's CORS preflight check.
// Operate with the headers as an object because request "Headers"
// are immutable.
delete headers['x-msw-bypass']
// Remove internal MSW request header so the passthrough request
// complies with any potential CORS preflight checks on the server.
// Some servers forbid unknown request headers.
delete headers['x-msw-intention']
return fetch(clonedRequest, { headers })
return fetch(requestClone, { headers })
}
// Bypass mocking when the client is not active.
@ -225,57 +206,46 @@ async function getResponse(event, client, requestId) {
return passthrough()
}
// Bypass requests with the explicit bypass header.
// Such requests can be issued by "ctx.fetch()".
if (request.headers.get('x-msw-bypass') === 'true') {
return passthrough()
}
// Notify the client that a request has been intercepted.
const clientMessage = await sendToClient(client, {
type: 'REQUEST',
payload: {
id: requestId,
url: request.url,
method: request.method,
headers: Object.fromEntries(request.headers.entries()),
cache: request.cache,
mode: request.mode,
credentials: request.credentials,
destination: request.destination,
integrity: request.integrity,
redirect: request.redirect,
referrer: request.referrer,
referrerPolicy: request.referrerPolicy,
body: await request.text(),
bodyUsed: request.bodyUsed,
keepalive: request.keepalive,
const requestBuffer = await request.arrayBuffer()
const clientMessage = await sendToClient(
client,
{
type: 'REQUEST',
payload: {
id: requestId,
url: request.url,
mode: request.mode,
method: request.method,
headers: Object.fromEntries(request.headers.entries()),
cache: request.cache,
credentials: request.credentials,
destination: request.destination,
integrity: request.integrity,
redirect: request.redirect,
referrer: request.referrer,
referrerPolicy: request.referrerPolicy,
body: requestBuffer,
keepalive: request.keepalive,
},
},
})
[requestBuffer],
)
switch (clientMessage.type) {
case 'MOCK_RESPONSE': {
return respondWithMock(clientMessage.data)
}
case 'MOCK_NOT_FOUND': {
case 'PASSTHROUGH': {
return passthrough()
}
case 'NETWORK_ERROR': {
const { name, message } = clientMessage.data
const networkError = new Error(message)
networkError.name = name
// Rejecting a "respondWith" promise emulates a network error.
throw networkError
}
}
return passthrough()
}
function sendToClient(client, message) {
function sendToClient(client, message, transferrables = []) {
return new Promise((resolve, reject) => {
const channel = new MessageChannel()
@ -287,17 +257,28 @@ function sendToClient(client, message) {
resolve(event.data)
}
client.postMessage(message, [channel.port2])
})
}
function sleep(timeMs) {
return new Promise((resolve) => {
setTimeout(resolve, timeMs)
client.postMessage(
message,
[channel.port2].concat(transferrables.filter(Boolean)),
)
})
}
async function respondWithMock(response) {
await sleep(response.delay)
return new Response(response.body, response)
// Setting response status code to 0 is a no-op.
// However, when responding with a "Response.error()", the produced Response
// instance will have status code set to 0. Since it's not possible to create
// a Response instance with status code 0, handle that use-case separately.
if (response.status === 0) {
return Response.error()
}
const mockedResponse = new Response(response.body, response)
Reflect.defineProperty(mockedResponse, IS_MOCKED_RESPONSE, {
value: true,
enumerable: true,
})
return mockedResponse
}

View file

@ -2,7 +2,6 @@ import React from 'react';
import { screen, waitFor } from '@testing-library/react';
import { userEvent } from '@testing-library/user-event';
import { MockedRequest } from 'msw';
import ImageWizard from '../../../Components/CreateImageWizard';
import { RHEL_9 } from '../../../constants';
@ -17,7 +16,8 @@ type RequestTypes = 'GET' | 'PUT' | 'POST' | 'DELETE';
export function spyOnRequest(pathname: string, method: RequestTypes) {
return new Promise((resolve) => {
const listener = async (req: MockedRequest) => {
// @ts-expect-error Parameter 'name' implicitly has an 'any' type.ts(7006)
const listener = async (req) => {
if (req.url.pathname === pathname && req.method === method) {
const requestData = await req.clone().json();
resolve(requestData);

View file

@ -1,5 +1,5 @@
// src/mocks/browser.js
import { setupWorker } from 'msw';
import { setupWorker } from 'msw/browser';
import { handlers } from './handlers';

View file

@ -1,4 +1,4 @@
import { rest } from 'msw';
import { http, HttpResponse } from 'msw';
import {
CONTENT_SOURCES_API,
@ -43,70 +43,62 @@ import {
import { mockSourcesByProvider, mockUploadInfo } from '../fixtures/sources';
export const handlers = [
rest.get(`${PROVISIONING_API}/sources`, (req, res, ctx) => {
const provider = req.url.searchParams.get('provider');
return res(ctx.status(200), ctx.json(mockSourcesByProvider(provider)));
http.get(`${PROVISIONING_API}/sources`, ({ request }) => {
const url = new URL(request.url);
const provider = url.searchParams.get('provider');
return HttpResponse.json(mockSourcesByProvider(provider));
}),
rest.get(
http.get(
`${PROVISIONING_API}/sources/:sourceId/upload_info`,
(req, res, ctx) => {
const { sourceId } = req.params;
({ params }) => {
const { sourceId } = params;
if (sourceId === '666' || sourceId === '667' || sourceId === '123') {
return res(ctx.status(200), ctx.json(mockUploadInfo(sourceId)));
return HttpResponse.json(mockUploadInfo(sourceId));
} else {
return res(ctx.status(404));
return new HttpResponse(null, { status: 404 });
}
}
),
rest.post(`${CONTENT_SOURCES_API}/rpms/names`, async (req, res, ctx) => {
const { search, urls } = await req.json();
return res(
ctx.status(200),
ctx.json(mockSourcesPackagesResults(search, urls))
);
http.post(`${CONTENT_SOURCES_API}/rpms/names`, async ({ request }) => {
const { search, urls } = await request.json();
return HttpResponse.json(mockSourcesPackagesResults(search, urls));
}),
rest.post(
http.post(
`${CONTENT_SOURCES_API}/package_groups/names`,
async (req, res, ctx) => {
const { search, urls } = await req.json();
return res(
ctx.status(200),
ctx.json(mockSourcesGroupsResults(search, urls))
);
async ({ request }) => {
const { search, urls } = await request.json();
return HttpResponse.json(mockSourcesGroupsResults(search, urls));
}
),
rest.get(`${CONTENT_SOURCES_API}/features/`, async (req, res, ctx) => {
return res(ctx.status(200), ctx.json(mockedFeatureResponse));
http.get(`${CONTENT_SOURCES_API}/features/`, async () => {
return HttpResponse.json(mockedFeatureResponse);
}),
rest.post(
`${CONTENT_SOURCES_API}/snapshots/for_date/`,
async (req, res, ctx) => {
return res(ctx.status(200), ctx.json(mockSourcesPackagesResults));
}
),
rest.get(`${IMAGE_BUILDER_API}/packages`, (req, res, ctx) => {
const search = req.url.searchParams.get('search');
return res(ctx.status(200), ctx.json(mockSourcesPackagesResults(search)));
http.post(`${CONTENT_SOURCES_API}/snapshots/for_date/`, async () => {
return HttpResponse.json(mockSourcesPackagesResults);
}),
rest.get(`${IMAGE_BUILDER_API}/architectures/:distro`, (req, res, ctx) => {
const { distro } = req.params;
return res(ctx.status(200), ctx.json(mockArchitecturesByDistro(distro)));
http.get(`${IMAGE_BUILDER_API}/packages`, ({ request }) => {
const url = new URL(request.url);
const search = url.searchParams.get('search');
return HttpResponse.json(mockSourcesPackagesResults(search));
}),
rest.get(`${RHSM_API}/activation_keys`, (req, res, ctx) => {
return res(ctx.status(200), ctx.json(mockActivationKeysResults()));
http.get(`${IMAGE_BUILDER_API}/architectures/:distro`, ({ params }) => {
const { distro } = params;
return HttpResponse.json(mockArchitecturesByDistro(distro));
}),
rest.get(`${RHSM_API}/activation_keys/:key`, (req, res, ctx) => {
const { key } = req.params;
return res(ctx.status(200), ctx.json(mockActivationKeyInformation(key)));
http.get(`${RHSM_API}/activation_keys`, () => {
return HttpResponse.json(mockActivationKeysResults());
}),
rest.get(`${CONTENT_SOURCES_API}/repositories/`, (req, res, ctx) => {
const available_for_arch = req.url.searchParams.get('available_for_arch');
const available_for_version = req.url.searchParams.get(
'available_for_version'
);
const limit = req.url.searchParams.get('limit');
const offset = req.url.searchParams.get('offset');
const search = req.url.searchParams.get('search');
http.get(`${RHSM_API}/activation_keys/:key`, ({ params }) => {
const { key } = params;
return HttpResponse.json(mockActivationKeyInformation(key));
}),
http.get(`${CONTENT_SOURCES_API}/repositories/`, ({ request }) => {
const url = new URL(request.url);
const available_for_arch = url.searchParams.get('available_for_arch');
const available_for_version = url.searchParams.get('available_for_version');
const limit = url.searchParams.get('limit');
const offset = url.searchParams.get('offset');
const search = url.searchParams.get('search');
const args = {
available_for_arch,
available_for_version,
@ -114,51 +106,49 @@ export const handlers = [
offset,
search,
};
return res(ctx.status(200), ctx.json(mockRepositoryResults(args)));
return HttpResponse.json(mockRepositoryResults(args));
}),
rest.get(`${CONTENT_SOURCES_API}/repositories/:repo_id`, (req, res, ctx) => {
const { repo_id } = req.params;
return res(ctx.status(200), ctx.json(mockPopularRepo(repo_id)));
http.get(`${CONTENT_SOURCES_API}/repositories/:repo_id`, ({ params }) => {
const { repo_id } = params;
return HttpResponse.json(mockPopularRepo(repo_id));
}),
rest.get(`${IMAGE_BUILDER_API}/composes`, (req, res, ctx) => {
return res(ctx.status(200), ctx.json(composesEndpoint(req)));
http.get(`${IMAGE_BUILDER_API}/composes`, ({ request }) => {
return HttpResponse.json(composesEndpoint(request));
}),
rest.get(`${IMAGE_BUILDER_API}/composes/:composeId`, (req, res, ctx) => {
const { composeId } = req.params;
return res(ctx.status(200), ctx.json(mockStatus(composeId)));
http.get(`${IMAGE_BUILDER_API}/composes/:composeId`, ({ params }) => {
const { composeId } = params;
return HttpResponse.json(mockStatus(composeId));
}),
rest.get(
`${IMAGE_BUILDER_API}/composes/:composeId/clones`,
(req, res, ctx) => {
const { composeId } = req.params;
return res(ctx.status(200), ctx.json(mockClones(composeId)));
}
),
rest.get(`${IMAGE_BUILDER_API}/clones/:cloneId`, (req, res, ctx) => {
const { cloneId } = req.params;
return res(ctx.status(200), ctx.json(mockCloneStatus[cloneId]));
http.get(`${IMAGE_BUILDER_API}/composes/:composeId/clones`, ({ params }) => {
const { composeId } = params;
return HttpResponse.json(mockClones(composeId));
}),
rest.post(`${IMAGE_BUILDER_API}/compose`, (req, res, ctx) => {
return res(ctx.status(200), ctx.json({}));
http.get(`${IMAGE_BUILDER_API}/clones/:cloneId`, ({ params }) => {
const { cloneId } = params;
return HttpResponse.json(mockCloneStatus[cloneId]);
}),
rest.get(
http.post(`${IMAGE_BUILDER_API}/compose`, () => {
return HttpResponse.json({});
}),
http.get(
`${IMAGE_BUILDER_API}/oscap/:distribution/profiles`,
(req, res, ctx) => {
return res(ctx.status(200), ctx.json(distributionOscapProfiles(req)));
({ request }) => {
return HttpResponse.json(distributionOscapProfiles(request));
}
),
rest.get(
http.get(
`${IMAGE_BUILDER_API}/oscap/:distribution/:profile/customizations`,
(req, res, ctx) => {
const { profile } = req.params;
return res(ctx.status(200), ctx.json(oscapCustomizations(profile)));
({ params }) => {
const { profile } = params;
return HttpResponse.json(oscapCustomizations(profile));
}
),
rest.get(`${IMAGE_BUILDER_API}/blueprints`, (req, res, ctx) => {
const nameParam = req.url.searchParams.get('name');
const search = req.url.searchParams.get('search');
const limit = req.url.searchParams.get('limit') || '10';
const offset = req.url.searchParams.get('offset') || '0';
http.get(`${IMAGE_BUILDER_API}/blueprints`, ({ request }) => {
const url = new URL(request.url);
const nameParam = url.searchParams.get('name');
const search = url.searchParams.get('search');
const limit = url.searchParams.get('limit') || '10';
const offset = url.searchParams.get('offset') || '0';
const resp = Object.assign({}, mockGetBlueprints);
if (nameParam) {
resp.data = resp.data.filter(({ name }) => {
@ -182,45 +172,43 @@ export const handlers = [
parseInt(offset) + parseInt(limit)
);
return res(ctx.status(200), ctx.json(resp));
return HttpResponse.json(resp);
}),
rest.post(`${IMAGE_BUILDER_API}/blueprint/:id/compose`, (req, res, ctx) => {
return res(ctx.status(200));
http.post(`${IMAGE_BUILDER_API}/blueprint/:id/compose`, () => {
return new HttpResponse(null, { status: 200 });
}),
rest.post(CREATE_BLUEPRINT, (req, res, ctx) => {
http.post(CREATE_BLUEPRINT, () => {
const response = {
id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
};
return res(ctx.status(201), ctx.json(response));
return HttpResponse.json(response);
}),
rest.get(`${IMAGE_BUILDER_API}/blueprints/:id/composes`, (req, res, ctx) => {
http.get(`${IMAGE_BUILDER_API}/blueprints/:id/composes`, ({ params }) => {
const { id } = params;
const emptyBlueprintId = mockGetBlueprints.data[1].id;
const outOfSyncBlueprintId = mockGetBlueprints.data[3].id;
const centosBlueprintId = mockGetBlueprints.data[4].id;
switch (req.params.id) {
switch (id) {
case emptyBlueprintId:
return res(ctx.status(200), ctx.json(mockEmptyBlueprintsComposes));
return HttpResponse.json(mockEmptyBlueprintsComposes);
case outOfSyncBlueprintId:
return res(ctx.status(200), ctx.json(mockBlueprintComposesOutOfSync));
return HttpResponse.json(mockBlueprintComposesOutOfSync);
case centosBlueprintId:
return res(ctx.status(200), ctx.json(mockCentosBlueprintComposes));
return HttpResponse.json(mockCentosBlueprintComposes);
default:
return res(ctx.status(200), ctx.json(mockBlueprintComposes));
return HttpResponse.json(mockBlueprintComposes);
}
}),
rest.get(`${IMAGE_BUILDER_API}/blueprints/:id`, (req, res, ctx) => {
const id = req.params['id'];
return res(ctx.status(200), ctx.json(getMockBlueprintResponse(id)));
http.get(`${IMAGE_BUILDER_API}/blueprints/:id`, ({ params }) => {
const id = params['id'];
return HttpResponse.json(getMockBlueprintResponse(id));
}),
rest.put(`${IMAGE_BUILDER_API}/blueprints/:id`, (req, res, ctx) => {
const id = req.params['id'];
return res(ctx.status(200), ctx.json({ id: id }));
http.put(`${IMAGE_BUILDER_API}/blueprints/:id`, ({ params }) => {
const id = params['id'];
return HttpResponse.json({ id: id });
}),
http.post(`${IMAGE_BUILDER_API}/experimental/recommendations`, () => {
return HttpResponse.json(mockPkgRecommendations);
}),
rest.post(
`${IMAGE_BUILDER_API}/experimental/recommendations`,
(req, res, ctx) => {
return res(ctx.status(200), ctx.json(mockPkgRecommendations));
}
),
];