diff --git a/README.md b/README.md
index 1d3018ea..8d23906b 100644
--- a/README.md
+++ b/README.md
@@ -21,13 +21,6 @@ Du må ha Node v18 og npm v9 installert.
- Kjør prettier og lint med `npm run prettier-lint`, de kan også kjøres hver for seg
- Appen finner du [her](http://localhost:8080/minoversikt)
-## Mocha tester i IntelliJ
-
-IDEA genererer run configs for å kjøre testene. Det er viktig å kjøre med samme oppsett som `npm run test` gjør, definert i `package.json`.
-Oppdater Mocha-template i run-configs, og legg til Extra Mocha options:
-
-- `--require dotenv/config --require ts-node/register --require ignore-styles --require jsdom-global/register`
-
## Logge på i Q1-miljø
Se denne siden for [testdata](https://confluence.adeo.no/pages/viewpage.action?pageId=228580060) (NAV-intern lenke).
diff --git a/mock/flexjar/mockFlexjar.ts b/mock/flexjar/mockFlexjar.ts
deleted file mode 100644
index 9c09df44..00000000
--- a/mock/flexjar/mockFlexjar.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { FLEXJAR_ROOT } from '../../src/apiConstants';
-import express from 'express';
-
-export const mockFlexjar = (server: any) => {
- server.post(
- `${FLEXJAR_ROOT}/feedback/azure`,
- (req: express.Request, res: express.Response) => {
- res.sendStatus(200);
- }
- );
-};
diff --git a/mock/mockEndepunkter.ts b/mock/mockEndepunkter.ts
deleted file mode 100644
index 3f93a8f5..00000000
--- a/mock/mockEndepunkter.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import express from 'express';
-import { mockModiacontextholder } from './modiacontextholder/mockModiacontextholder';
-import { mockSyfoperson } from './syfoperson/mockSyfoperson';
-import { mockSyfoveileder } from './syfoveileder/mockSyfoveileder';
-import { mockPersonoversikt } from './personoversikt/mockPersonoversikt';
-import { mockPersontildeling } from './persontildeling/mockPersontildeling';
-import { mockUnleash } from './mockUnleash';
-import { mockEreg } from './ereg/mockEreg';
-import { generatePersons } from './mockUtils';
-import { mockFlexjar } from './flexjar/mockFlexjar';
-
-const generatedPersons = generatePersons(50);
-
-const mockEndepunkter = (server: express.Application) => {
- server.use(express.json() as any);
- server.use(express.urlencoded() as any);
-
- [
- mockModiacontextholder,
- mockEreg,
- mockFlexjar,
- mockPersonoversikt,
- mockPersontildeling,
- mockSyfoperson,
- mockSyfoveileder,
- mockUnleash,
- ].forEach((func) => {
- func(server, generatedPersons);
- });
-};
-
-export default mockEndepunkter;
diff --git a/mock/mockUnleash.ts b/mock/mockUnleash.ts
deleted file mode 100644
index a93e398f..00000000
--- a/mock/mockUnleash.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { ToggleNames } from '../src/data/unleash/types/unleash_types';
-import express from 'express';
-import { UNLEASH_ROOT } from '../src/apiConstants';
-
-export const mockUnleash = (server: express.Application) => {
- server.get(
- `${UNLEASH_ROOT}/toggles`,
- (req: express.Request, res: express.Response) => {
- res.setHeader('Content-Type', 'application/json');
- res.send(JSON.stringify(unleashMock));
- }
- );
-};
-
-export const unleashMock = Object.values(ToggleNames).reduce(
- (accumulator, toggleName) => {
- return { ...accumulator, [toggleName]: true };
- },
- {}
-);
diff --git a/mock/modiacontextholder/mockModiacontextholder.ts b/mock/modiacontextholder/mockModiacontextholder.ts
deleted file mode 100644
index 25ace156..00000000
--- a/mock/modiacontextholder/mockModiacontextholder.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-import express from 'express';
-import { MODIACONTEXTHOLDER_ROOT } from '../../src/apiConstants';
-
-const saksbehandler = {
- ident: 'Z999999',
- navn: 'Vetle Veileder',
- fornavn: 'Vetle',
- etternavn: 'Veileder',
- enheter: [
- {
- enhetId: '0315',
- navn: 'NAV Grünerløkka',
- },
- {
- enhetId: '0316',
- navn: 'NAV Gamle Oslo',
- },
- ],
-};
-
-const aktivBruker = {
- aktivBruker: null,
- aktivEnhet: null,
-};
-
-const aktivEnhet = {
- aktivBruker: null,
- aktivEnhet: '0316',
-};
-
-export const mockModiacontextholder = (server: express.Application) => {
- server.get(
- `${MODIACONTEXTHOLDER_ROOT}/decorator`,
- (req: express.Request, res: express.Response) => {
- res.setHeader('Content-Type', 'application/json');
- res.send(JSON.stringify(saksbehandler));
- }
- );
-
- server.get(
- `${MODIACONTEXTHOLDER_ROOT}/context/aktivbruker`,
- (req: express.Request, res: express.Response) => {
- res.setHeader('Content-Type', 'application/json');
- res.send(JSON.stringify(aktivBruker));
- }
- );
-
- server.get(
- `${MODIACONTEXTHOLDER_ROOT}/context/aktivenhet`,
- (req: express.Request, res: express.Response) => {
- res.setHeader('Content-Type', 'application/json');
- res.send(JSON.stringify(aktivEnhet));
- }
- );
-
- server.post(
- `${MODIACONTEXTHOLDER_ROOT}/context`,
- (req: express.Request, res: express.Response) => {
- res.send().status(204);
- }
- );
-};
diff --git a/mock/personoversikt/mockPersonoversikt.ts b/mock/personoversikt/mockPersonoversikt.ts
deleted file mode 100644
index f694ca22..00000000
--- a/mock/personoversikt/mockPersonoversikt.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import express from 'express';
-import { PERSONOVERSIKT_ROOT } from '../../src/apiConstants';
-import { personoversiktEnhetMock } from '../data/personoversiktEnhetMock';
-import {
- generatePersonoversiktEnhetFromPersons,
- MockPerson,
-} from '../mockUtils';
-
-const personoversiktEnhet = (generatedPersons: MockPerson[]) => [
- ...personoversiktEnhetMock,
- ...generatePersonoversiktEnhetFromPersons(generatedPersons),
-];
-
-export const mockPersonoversikt = (
- server: express.Application,
- generatedPersons: MockPerson[]
-) => {
- server.get(
- `${PERSONOVERSIKT_ROOT}/enhet/:id`,
- (req: express.Request, res: express.Response) => {
- res.setHeader('Content-Type', 'application/json');
- res.send(JSON.stringify(personoversiktEnhet(generatedPersons)));
- }
- );
-};
diff --git a/mock/persontildeling/mockPersontildeling.ts b/mock/persontildeling/mockPersontildeling.ts
deleted file mode 100644
index 4435d7d7..00000000
--- a/mock/persontildeling/mockPersontildeling.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { PERSONTILDELING_ROOT } from '../../src/apiConstants';
-import express from 'express';
-
-export const mockPersontildeling = (server: express.Application) => {
- server.post(
- `${PERSONTILDELING_ROOT}/registrer`,
- (req: express.Request, res: express.Response) => {
- res.send();
- }
- );
-};
diff --git a/mock/syfoperson/mockSyfoperson.ts b/mock/syfoperson/mockSyfoperson.ts
deleted file mode 100644
index 4b81ec00..00000000
--- a/mock/syfoperson/mockSyfoperson.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { SYFOPERSON_ROOT } from '../../src/apiConstants';
-import express from 'express';
-import { personInfoMock } from '../data/personInfoMock';
-import { MockPerson } from '../mockUtils';
-
-const personInfo = (generatedPersons: MockPerson[]) => [
- ...personInfoMock,
- ...generatedPersons,
-];
-
-export const mockSyfoperson = (
- server: express.Application,
- generatedPersons: MockPerson[]
-) => {
- server.post(
- `${SYFOPERSON_ROOT}/person/info`,
- (req: express.Request, res: express.Response) => {
- res.setHeader('Content-Type', 'application/json');
- res.send(JSON.stringify(personInfo(generatedPersons)));
- }
- );
-};
diff --git a/mock/syfoveileder/mockSyfoveileder.ts b/mock/syfoveileder/mockSyfoveileder.ts
deleted file mode 100644
index 1692c018..00000000
--- a/mock/syfoveileder/mockSyfoveileder.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { SYFOVEILEDER_ROOT } from '../../src/apiConstants';
-import express from 'express';
-import { veiledereMock } from '../data/veiledereMock';
-import { veilederMock } from '../data/veilederMock';
-
-export const mockSyfoveileder = (server: express.Application) => {
- server.get(
- `${SYFOVEILEDER_ROOT}/veiledere/self`,
- (req: express.Request, res: express.Response) => {
- res.setHeader('Content-Type', 'application/json');
- res.send(JSON.stringify(veilederMock));
- }
- );
-
- server.get(
- `${SYFOVEILEDER_ROOT}/veiledere`,
- (req: express.Request, res: express.Response) => {
- res.setHeader('Content-Type', 'application/json');
- const paramName = req.query.paramName;
- res.send(JSON.stringify(veiledereMock));
- }
- );
-};
diff --git a/package-lock.json b/package-lock.json
index 87c6c479..65ef5fee 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -125,7 +125,7 @@
"less-loader": "11.1.0",
"lint-staged": "13.2.1",
"mini-css-extract-plugin": "2.9.0",
- "nock": "13.5.4",
+ "msw": "2.4.9",
"npm-run-all": "4.1.5",
"postcss-loader": "6.2.1",
"prettier": "2.2.1",
@@ -2230,6 +2230,57 @@
"node": ">=6.9.0"
}
},
+ "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,
+ "license": "ISC",
+ "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,
+ "license": "MIT",
+ "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,
+ "license": "ISC",
+ "dependencies": {
+ "statuses": "^2.0.1"
+ }
+ },
+ "node_modules/@bundled-es-modules/statuses/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/@bundled-es-modules/tough-cookie": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/@bundled-es-modules/tough-cookie/-/tough-cookie-0.1.6.tgz",
+ "integrity": "sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@types/tough-cookie": "^4.0.5",
+ "tough-cookie": "^4.1.4"
+ }
+ },
"node_modules/@cspotcode/source-map-support": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
@@ -3086,6 +3137,154 @@
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
"dev": true
},
+ "node_modules/@inquirer/confirm": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.2.0.tgz",
+ "integrity": "sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^9.1.0",
+ "@inquirer/type": "^1.5.3"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@inquirer/core": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz",
+ "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/figures": "^1.0.6",
+ "@inquirer/type": "^2.0.0",
+ "@types/mute-stream": "^0.0.4",
+ "@types/node": "^22.5.5",
+ "@types/wrap-ansi": "^3.0.0",
+ "ansi-escapes": "^4.3.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",
+ "yoctocolors-cjs": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@inquirer/core/node_modules/@inquirer/type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz",
+ "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mute-stream": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@inquirer/core/node_modules/@types/node": {
+ "version": "22.7.4",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.4.tgz",
+ "integrity": "sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~6.19.2"
+ }
+ },
+ "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,
+ "license": "MIT",
+ "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/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"
+ },
+ "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,
+ "license": "MIT"
+ },
+ "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,
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@inquirer/core/node_modules/wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@inquirer/figures": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.6.tgz",
+ "integrity": "sha512-yfZzps3Cso2UbM7WlxKwZQh2Hs6plrbjs1QnzQDZhK2DgyCo6D8AaHps9olkNcUFlcYERMqU3uJSp1gmy3s/qQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@inquirer/type": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.5.tgz",
+ "integrity": "sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mute-stream": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@isaacs/cliui": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
@@ -3230,6 +3429,24 @@
"integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==",
"dev": true
},
+ "node_modules/@mswjs/interceptors": {
+ "version": "0.35.9",
+ "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.35.9.tgz",
+ "integrity": "sha512-SSnyl/4ni/2ViHKkiZb8eajA/eN1DNFaHjhGiLUdZvDz6PKF4COSf/17xqSz64nOo2Ia29SA6B2KNCsyCbVmaQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@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.4.3",
+ "strict-event-emitter": "^0.5.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@navikt/aksel-icons": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@navikt/aksel-icons/-/aksel-icons-7.0.0.tgz",
@@ -3408,6 +3625,31 @@
"node": ">=10"
}
},
+ "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,
+ "license": "MIT"
+ },
+ "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,
+ "license": "MIT"
+ },
"node_modules/@opentelemetry/api": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz",
@@ -4331,6 +4573,13 @@
"@types/redis": "^2.8.0"
}
},
+ "node_modules/@types/cookie": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/dotenv-webpack": {
"version": "7.0.7",
"resolved": "https://registry.npmjs.org/@types/dotenv-webpack/-/dotenv-webpack-7.0.7.tgz",
@@ -4498,6 +4747,16 @@
"integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
"dev": true
},
+ "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": "17.0.31",
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz",
@@ -4659,6 +4918,13 @@
"@types/node": "*"
}
},
+ "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,
+ "license": "MIT"
+ },
"node_modules/@types/styled-components": {
"version": "5.1.26",
"resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.26.tgz",
@@ -4675,10 +4941,11 @@
"integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw=="
},
"node_modules/@types/tough-cookie": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.1.tgz",
- "integrity": "sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg==",
- "dev": true
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz",
+ "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/webpack": {
"version": "5.28.5",
@@ -4700,6 +4967,13 @@
"node": ">=6"
}
},
+ "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,
+ "license": "MIT"
+ },
"node_modules/@types/ws": {
"version": "8.5.3",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz",
@@ -6649,6 +6923,31 @@
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
+ "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,
+ "license": "ISC",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/clone-deep": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
@@ -9405,6 +9704,16 @@
"node": ">=6.9.0"
}
},
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
"node_modules/get-func-name": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
@@ -9630,6 +9939,16 @@
"integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
"dev": true
},
+ "node_modules/graphql": {
+ "version": "16.9.0",
+ "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz",
+ "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0"
+ }
+ },
"node_modules/gzip-size": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
@@ -9735,6 +10054,13 @@
"he": "bin/he"
}
},
+ "node_modules/headers-polyfill": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.3.tgz",
+ "integrity": "sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/helmet": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/helmet/-/helmet-4.6.0.tgz",
@@ -10421,6 +10747,13 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-node-process": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz",
+ "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
@@ -10887,12 +11220,6 @@
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
"dev": true
},
- "node_modules/json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
- "dev": true
- },
"node_modules/json5": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
@@ -11792,6 +12119,146 @@
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"license": "MIT"
},
+ "node_modules/msw": {
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/msw/-/msw-2.4.9.tgz",
+ "integrity": "sha512-1m8xccT6ipN4PTqLinPwmzhxQREuxaEJYdx4nIbggxP8aM7r1e71vE7RtOUSQoAm1LydjGfZKy7370XD/tsuYg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "dependencies": {
+ "@bundled-es-modules/cookie": "^2.0.0",
+ "@bundled-es-modules/statuses": "^1.0.1",
+ "@bundled-es-modules/tough-cookie": "^0.1.6",
+ "@inquirer/confirm": "^3.0.0",
+ "@mswjs/interceptors": "^0.35.8",
+ "@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",
+ "outvariant": "^1.4.2",
+ "path-to-regexp": "^6.3.0",
+ "strict-event-emitter": "^0.5.1",
+ "type-fest": "^4.9.0",
+ "yargs": "^17.7.2"
+ },
+ "bin": {
+ "msw": "cli/index.js"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mswjs"
+ },
+ "peerDependencies": {
+ "typescript": ">= 4.8.x"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "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"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/msw/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,
+ "license": "MIT",
+ "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/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"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/msw/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,
+ "license": "MIT"
+ },
+ "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"
+ }
+ },
+ "node_modules/msw/node_modules/path-to-regexp": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz",
+ "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "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"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/msw/node_modules/type-fest": {
+ "version": "4.26.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz",
+ "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/multicast-dns": {
"version": "7.2.4",
"resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.4.tgz",
@@ -11813,6 +12280,16 @@
"node": ">=0.10.0"
}
},
+ "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,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
"node_modules/mz": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
@@ -12104,20 +12581,6 @@
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
"dev": true
},
- "node_modules/nock": {
- "version": "13.5.4",
- "resolved": "https://registry.npmjs.org/nock/-/nock-13.5.4.tgz",
- "integrity": "sha512-yAyTfdeNJGGBFxWdzSKCBYxs5FxLbCg5X5Q4ets974hcQzG1+qCxvIyOo4j2Ry6MUlhWVMX4OoYDefAIIwupjw==",
- "dev": true,
- "dependencies": {
- "debug": "^4.1.0",
- "json-stringify-safe": "^5.0.1",
- "propagate": "^2.0.0"
- },
- "engines": {
- "node": ">= 10.13"
- }
- },
"node_modules/node-forge": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
@@ -12565,6 +13028,13 @@
"url": "https://github.com/sponsors/panva"
}
},
+ "node_modules/outvariant": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz",
+ "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/p-any": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-any/-/p-any-3.0.0.tgz",
@@ -13976,15 +14446,6 @@
"react-is": "^16.8.1"
}
},
- "node_modules/propagate": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz",
- "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
"node_modules/protobufjs": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz",
@@ -14933,6 +15394,16 @@
"strip-ansi": "^6.0.1"
}
},
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/require-from-string": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
@@ -15787,6 +16258,13 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/strict-event-emitter": {
+ "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,
+ "license": "MIT"
+ },
"node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -15806,13 +16284,14 @@
}
},
"node_modules/string-width": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
+ "strip-ansi": "^6.0.1"
},
"engines": {
"node": ">=8"
@@ -16913,6 +17392,13 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/undici-types": {
+ "version": "6.19.8",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/unicode-canonical-property-names-ecmascript": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
@@ -18013,6 +18499,16 @@
"integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
"dev": true
},
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
@@ -18026,6 +18522,35 @@
"node": ">= 6"
}
},
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/yn": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
@@ -18040,7 +18565,20 @@
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
"engines": {
- "node": ">=10"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/yoctocolors-cjs": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz",
+ "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -19526,6 +20064,50 @@
"to-fast-properties": "^2.0.0"
}
},
+ "@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,
+ "requires": {
+ "cookie": "^0.5.0"
+ },
+ "dependencies": {
+ "cookie": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+ "dev": true
+ }
+ }
+ },
+ "@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,
+ "requires": {
+ "statuses": "^2.0.1"
+ },
+ "dependencies": {
+ "statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "dev": true
+ }
+ }
+ },
+ "@bundled-es-modules/tough-cookie": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/@bundled-es-modules/tough-cookie/-/tough-cookie-0.1.6.tgz",
+ "integrity": "sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==",
+ "dev": true,
+ "requires": {
+ "@types/tough-cookie": "^4.0.5",
+ "tough-cookie": "^4.1.4"
+ }
+ },
"@cspotcode/source-map-support": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
@@ -20019,6 +20601,112 @@
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
"dev": true
},
+ "@inquirer/confirm": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.2.0.tgz",
+ "integrity": "sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==",
+ "dev": true,
+ "requires": {
+ "@inquirer/core": "^9.1.0",
+ "@inquirer/type": "^1.5.3"
+ }
+ },
+ "@inquirer/core": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz",
+ "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==",
+ "dev": true,
+ "requires": {
+ "@inquirer/figures": "^1.0.6",
+ "@inquirer/type": "^2.0.0",
+ "@types/mute-stream": "^0.0.4",
+ "@types/node": "^22.5.5",
+ "@types/wrap-ansi": "^3.0.0",
+ "ansi-escapes": "^4.3.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",
+ "yoctocolors-cjs": "^2.1.2"
+ },
+ "dependencies": {
+ "@inquirer/type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz",
+ "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==",
+ "dev": true,
+ "requires": {
+ "mute-stream": "^1.0.0"
+ }
+ },
+ "@types/node": {
+ "version": "22.7.4",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.4.tgz",
+ "integrity": "sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==",
+ "dev": true,
+ "requires": {
+ "undici-types": "~6.19.2"
+ }
+ },
+ "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,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "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,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "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
+ },
+ "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
+ },
+ "wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ }
+ }
+ },
+ "@inquirer/figures": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.6.tgz",
+ "integrity": "sha512-yfZzps3Cso2UbM7WlxKwZQh2Hs6plrbjs1QnzQDZhK2DgyCo6D8AaHps9olkNcUFlcYERMqU3uJSp1gmy3s/qQ==",
+ "dev": true
+ },
+ "@inquirer/type": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.5.tgz",
+ "integrity": "sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==",
+ "dev": true,
+ "requires": {
+ "mute-stream": "^1.0.0"
+ }
+ },
"@isaacs/cliui": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
@@ -20122,6 +20810,20 @@
"integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==",
"dev": true
},
+ "@mswjs/interceptors": {
+ "version": "0.35.9",
+ "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.35.9.tgz",
+ "integrity": "sha512-SSnyl/4ni/2ViHKkiZb8eajA/eN1DNFaHjhGiLUdZvDz6PKF4COSf/17xqSz64nOo2Ia29SA6B2KNCsyCbVmaQ==",
+ "dev": true,
+ "requires": {
+ "@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.4.3",
+ "strict-event-emitter": "^0.5.1"
+ }
+ },
"@navikt/aksel-icons": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@navikt/aksel-icons/-/aksel-icons-7.0.0.tgz",
@@ -20255,6 +20957,28 @@
}
}
},
+ "@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
+ },
+ "@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,
+ "requires": {
+ "is-node-process": "^1.2.0",
+ "outvariant": "^1.4.0"
+ }
+ },
+ "@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
+ },
"@opentelemetry/api": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz",
@@ -20836,6 +21560,12 @@
"@types/redis": "^2.8.0"
}
},
+ "@types/cookie": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==",
+ "dev": true
+ },
"@types/dotenv-webpack": {
"version": "7.0.7",
"resolved": "https://registry.npmjs.org/@types/dotenv-webpack/-/dotenv-webpack-7.0.7.tgz",
@@ -21002,6 +21732,15 @@
"integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
"dev": true
},
+ "@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,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
"@types/node": {
"version": "17.0.31",
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz",
@@ -21164,6 +21903,12 @@
"@types/node": "*"
}
},
+ "@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
+ },
"@types/styled-components": {
"version": "5.1.26",
"resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.26.tgz",
@@ -21182,9 +21927,9 @@
}
},
"@types/tough-cookie": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.1.tgz",
- "integrity": "sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg==",
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz",
+ "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==",
"dev": true
},
"@types/webpack": {
@@ -21206,6 +21951,12 @@
}
}
},
+ "@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
+ },
"@types/ws": {
"version": "8.5.3",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz",
@@ -22603,6 +23354,23 @@
}
}
},
+ "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
+ },
+ "cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
"clone-deep": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
@@ -24644,6 +25412,12 @@
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
"dev": true
},
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true
+ },
"get-func-name": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
@@ -24806,6 +25580,12 @@
"integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
"dev": true
},
+ "graphql": {
+ "version": "16.9.0",
+ "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz",
+ "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==",
+ "dev": true
+ },
"gzip-size": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
@@ -24872,6 +25652,12 @@
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true
},
+ "headers-polyfill": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.3.tgz",
+ "integrity": "sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==",
+ "dev": true
+ },
"helmet": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/helmet/-/helmet-4.6.0.tgz",
@@ -25346,6 +26132,12 @@
"integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
"dev": true
},
+ "is-node-process": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz",
+ "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==",
+ "dev": true
+ },
"is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
@@ -25684,12 +26476,6 @@
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
"dev": true
},
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
- "dev": true
- },
"json5": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
@@ -26355,6 +27141,94 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
+ "msw": {
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/msw/-/msw-2.4.9.tgz",
+ "integrity": "sha512-1m8xccT6ipN4PTqLinPwmzhxQREuxaEJYdx4nIbggxP8aM7r1e71vE7RtOUSQoAm1LydjGfZKy7370XD/tsuYg==",
+ "dev": true,
+ "requires": {
+ "@bundled-es-modules/cookie": "^2.0.0",
+ "@bundled-es-modules/statuses": "^1.0.1",
+ "@bundled-es-modules/tough-cookie": "^0.1.6",
+ "@inquirer/confirm": "^3.0.0",
+ "@mswjs/interceptors": "^0.35.8",
+ "@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",
+ "outvariant": "^1.4.2",
+ "path-to-regexp": "^6.3.0",
+ "strict-event-emitter": "^0.5.1",
+ "type-fest": "^4.9.0",
+ "yargs": "^17.7.2"
+ },
+ "dependencies": {
+ "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,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "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,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "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
+ },
+ "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
+ },
+ "path-to-regexp": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz",
+ "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==",
+ "dev": true
+ },
+ "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,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
+ "type-fest": {
+ "version": "4.26.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz",
+ "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==",
+ "dev": true
+ }
+ }
+ },
"multicast-dns": {
"version": "7.2.4",
"resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.4.tgz",
@@ -26370,6 +27244,12 @@
"resolved": "https://registry.npmjs.org/murmurhash3js/-/murmurhash3js-3.0.1.tgz",
"integrity": "sha1-Ppg+W0fCoG9DpxMXTn5DXKBEuZg="
},
+ "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
+ },
"mz": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
@@ -26563,17 +27443,6 @@
}
}
},
- "nock": {
- "version": "13.5.4",
- "resolved": "https://registry.npmjs.org/nock/-/nock-13.5.4.tgz",
- "integrity": "sha512-yAyTfdeNJGGBFxWdzSKCBYxs5FxLbCg5X5Q4ets974hcQzG1+qCxvIyOo4j2Ry6MUlhWVMX4OoYDefAIIwupjw==",
- "dev": true,
- "requires": {
- "debug": "^4.1.0",
- "json-stringify-safe": "^5.0.1",
- "propagate": "^2.0.0"
- }
- },
"node-forge": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
@@ -26898,6 +27767,12 @@
}
}
},
+ "outvariant": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz",
+ "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==",
+ "dev": true
+ },
"p-any": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-any/-/p-any-3.0.0.tgz",
@@ -27806,12 +28681,6 @@
"react-is": "^16.8.1"
}
},
- "propagate": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz",
- "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==",
- "dev": true
- },
"protobufjs": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz",
@@ -28500,6 +29369,12 @@
"strip-ansi": "^6.0.1"
}
},
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true
+ },
"require-from-string": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
@@ -29181,6 +30056,12 @@
"integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==",
"dev": true
},
+ "strict-event-emitter": {
+ "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
+ },
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -29197,13 +30078,13 @@
"dev": true
},
"string-width": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
+ "strip-ansi": "^6.0.1"
},
"dependencies": {
"emoji-regex": {
@@ -29966,6 +30847,12 @@
"which-boxed-primitive": "^1.0.2"
}
},
+ "undici-types": {
+ "version": "6.19.8",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
+ "dev": true
+ },
"unicode-canonical-property-names-ecmascript": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
@@ -30685,6 +31572,12 @@
"integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
"dev": true
},
+ "y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true
+ },
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
@@ -30695,6 +31588,27 @@
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
},
+ "yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "requires": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ }
+ },
+ "yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true
+ },
"yn": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
@@ -30706,6 +31620,12 @@
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
},
+ "yoctocolors-cjs": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz",
+ "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==",
+ "dev": true
+ },
"zone.js": {
"version": "0.14.10",
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.10.tgz",
diff --git a/package.json b/package.json
index 43cbd0b0..578aff29 100644
--- a/package.json
+++ b/package.json
@@ -138,7 +138,7 @@
"less-loader": "11.1.0",
"lint-staged": "13.2.1",
"mini-css-extract-plugin": "2.9.0",
- "nock": "13.5.4",
+ "msw": "2.4.9",
"npm-run-all": "4.1.5",
"postcss-loader": "6.2.1",
"prettier": "2.2.1",
@@ -159,5 +159,10 @@
"lint-staged": {
"*.{js,ts,tsx}": "npm run lint:fix",
"*.{js,ts,tsx,css,less,md}": "npm run prettier --write"
+ },
+ "msw": {
+ "workerDirectory": [
+ "public"
+ ]
}
}
diff --git a/public/mockServiceWorker.js b/public/mockServiceWorker.js
new file mode 100644
index 00000000..2ca1e5b9
--- /dev/null
+++ b/public/mockServiceWorker.js
@@ -0,0 +1,284 @@
+/* eslint-disable */
+/* tslint:disable */
+
+/**
+ * Mock Service Worker.
+ * @see https://github.com/mswjs/msw
+ * - Please do NOT modify this file.
+ * - Please do NOT serve this file on production.
+ */
+
+const PACKAGE_VERSION = '2.4.9';
+const INTEGRITY_CHECKSUM = '26357c79639bfa20d64c0efca2a87423';
+const IS_MOCKED_RESPONSE = Symbol('isMockedResponse');
+const activeClientIds = new Set();
+
+self.addEventListener('install', function () {
+ self.skipWaiting();
+});
+
+self.addEventListener('activate', function (event) {
+ event.waitUntil(self.clients.claim());
+});
+
+self.addEventListener('message', async function (event) {
+ const clientId = event.source.id;
+
+ if (!clientId || !self.clients) {
+ return;
+ }
+
+ const client = await self.clients.get(clientId);
+
+ if (!client) {
+ return;
+ }
+
+ const allClients = await self.clients.matchAll({
+ type: 'window',
+ });
+
+ switch (event.data) {
+ case 'KEEPALIVE_REQUEST': {
+ sendToClient(client, {
+ type: 'KEEPALIVE_RESPONSE',
+ });
+ break;
+ }
+
+ case 'INTEGRITY_CHECK_REQUEST': {
+ sendToClient(client, {
+ type: 'INTEGRITY_CHECK_RESPONSE',
+ payload: {
+ packageVersion: PACKAGE_VERSION,
+ checksum: INTEGRITY_CHECKSUM,
+ },
+ });
+ break;
+ }
+
+ case 'MOCK_ACTIVATE': {
+ activeClientIds.add(clientId);
+
+ sendToClient(client, {
+ type: 'MOCKING_ENABLED',
+ payload: true,
+ });
+ break;
+ }
+
+ case 'MOCK_DEACTIVATE': {
+ activeClientIds.delete(clientId);
+ break;
+ }
+
+ case 'CLIENT_CLOSED': {
+ activeClientIds.delete(clientId);
+
+ const remainingClients = allClients.filter((client) => {
+ return client.id !== clientId;
+ });
+
+ // Unregister itself when there are no more clients
+ if (remainingClients.length === 0) {
+ self.registration.unregister();
+ }
+
+ break;
+ }
+ }
+});
+
+self.addEventListener('fetch', function (event) {
+ const { request } = event;
+
+ // Bypass navigation requests.
+ if (request.mode === 'navigate') {
+ return;
+ }
+
+ // Opening the DevTools triggers the "only-if-cached" request
+ // that cannot be handled by the worker. Bypass such requests.
+ if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') {
+ return;
+ }
+
+ // Bypass all requests when there are no active clients.
+ // Prevents the self-unregistered worked from handling requests
+ // after it's been deleted (still remains active until the next reload).
+ if (activeClientIds.size === 0) {
+ return;
+ }
+
+ // Generate unique request ID.
+ const requestId = crypto.randomUUID();
+ event.respondWith(handleRequest(event, requestId));
+});
+
+async function handleRequest(event, requestId) {
+ const client = await resolveMainClient(event);
+ const response = await getResponse(event, client, requestId);
+
+ // Send back the response clone for the "response:*" life-cycle events.
+ // Ensure MSW is active and ready to handle the message, otherwise
+ // this message will pend indefinitely.
+ if (client && activeClientIds.has(client.id)) {
+ (async function () {
+ 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]
+ );
+ })();
+ }
+
+ return response;
+}
+
+// Resolve the main client for the given event.
+// Client that issues a request doesn't necessarily equal the client
+// that registered the worker. It's with the latter the worker should
+// communicate with during the response resolving phase.
+async function resolveMainClient(event) {
+ const client = await self.clients.get(event.clientId);
+
+ if (client?.frameType === 'top-level') {
+ return client;
+ }
+
+ const allClients = await self.clients.matchAll({
+ type: 'window',
+ });
+
+ return allClients
+ .filter((client) => {
+ // Get only those clients that are currently visible.
+ return client.visibilityState === 'visible';
+ })
+ .find((client) => {
+ // Find the client ID that's recorded in the
+ // set of clients that have registered the worker.
+ return activeClientIds.has(client.id);
+ });
+}
+
+async function getResponse(event, client, requestId) {
+ const { request } = event;
+
+ // 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() {
+ const headers = Object.fromEntries(requestClone.headers.entries());
+
+ // 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(requestClone, { headers });
+ }
+
+ // Bypass mocking when the client is not active.
+ if (!client) {
+ return passthrough();
+ }
+
+ // Bypass initial page load requests (i.e. static assets).
+ // The absence of the immediate/parent client in the map of the active clients
+ // means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet
+ // and is not ready to handle requests.
+ if (!activeClientIds.has(client.id)) {
+ return passthrough();
+ }
+
+ // Notify the client that a request has been intercepted.
+ 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 'PASSTHROUGH': {
+ return passthrough();
+ }
+ }
+
+ return passthrough();
+}
+
+function sendToClient(client, message, transferrables = []) {
+ return new Promise((resolve, reject) => {
+ const channel = new MessageChannel();
+
+ channel.port1.onmessage = (event) => {
+ if (event.data && event.data.error) {
+ return reject(event.data.error);
+ }
+
+ resolve(event.data);
+ };
+
+ client.postMessage(
+ message,
+ [channel.port2].concat(transferrables.filter(Boolean))
+ );
+ });
+}
+
+async function respondWithMock(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;
+}
diff --git a/src/decorator/decoratorConfig.ts b/src/decorator/decoratorConfig.ts
index b018caea..79f6754b 100644
--- a/src/decorator/decoratorConfig.ts
+++ b/src/decorator/decoratorConfig.ts
@@ -36,7 +36,7 @@ const getEnvironment = (): Environment => {
} else if (isDev()) {
return 'q2';
} else {
- return 'local';
+ return 'mock';
}
};
diff --git a/src/index.tsx b/src/index.tsx
index 39c3642b..681c9252 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -15,6 +15,7 @@ import { minutesToMillis } from '@/utils/timeUtils';
import { isClientError } from '@/api/errors';
import ErrorBoundary from '@/components/error/ErrorBoundary';
import { initFaro } from '@/faro';
+import { isLocal } from '@/utils/miljoUtil';
const queryClient = new QueryClient({
defaultOptions: {
@@ -62,4 +63,19 @@ const container =
document.getElementById('maincontent') || new DocumentFragment();
const root = createRoot(container);
-root.render();
+function renderApp() {
+ root.render();
+}
+
+async function setupMocking() {
+ const { worker } = await import('./mocks/browser');
+ return worker.start({
+ onUnhandledRequest: 'bypass',
+ });
+}
+
+if (isLocal()) {
+ setupMocking().then(() => renderApp());
+} else {
+ renderApp();
+}
diff --git a/src/mocks/browser.ts b/src/mocks/browser.ts
new file mode 100644
index 00000000..6fa49208
--- /dev/null
+++ b/src/mocks/browser.ts
@@ -0,0 +1,4 @@
+import { setupWorker } from 'msw/browser';
+import handlers from '@/mocks/handlers';
+
+export const worker = setupWorker(...handlers);
diff --git a/mock/data/aktivEnhetMock.ts b/src/mocks/data/aktivEnhetMock.ts
similarity index 100%
rename from mock/data/aktivEnhetMock.ts
rename to src/mocks/data/aktivEnhetMock.ts
diff --git a/mock/data/personInfoMock.ts b/src/mocks/data/personInfoMock.ts
similarity index 100%
rename from mock/data/personInfoMock.ts
rename to src/mocks/data/personInfoMock.ts
diff --git a/mock/data/personoversiktEnhetMock.ts b/src/mocks/data/personoversiktEnhetMock.ts
similarity index 99%
rename from mock/data/personoversiktEnhetMock.ts
rename to src/mocks/data/personoversiktEnhetMock.ts
index 95c95ec7..185d8e4c 100644
--- a/mock/data/personoversiktEnhetMock.ts
+++ b/src/mocks/data/personoversiktEnhetMock.ts
@@ -5,7 +5,7 @@ import {
OppfolgingsoppgaveDTO,
PersonOversiktStatusDTO,
PersonOversiktUbehandletStatusDTO,
-} from '../../src/api/types/personoversiktTypes';
+} from '../../api/types/personoversiktTypes';
import { veilederMock } from './veilederMock';
import dayjs from 'dayjs';
diff --git a/mock/data/veilederMock.ts b/src/mocks/data/veilederMock.ts
similarity index 100%
rename from mock/data/veilederMock.ts
rename to src/mocks/data/veilederMock.ts
diff --git a/mock/data/veiledereMock.ts b/src/mocks/data/veiledereMock.ts
similarity index 100%
rename from mock/data/veiledereMock.ts
rename to src/mocks/data/veiledereMock.ts
diff --git a/mock/ereg/mockEreg.ts b/src/mocks/ereg/mockEreg.ts
similarity index 63%
rename from mock/ereg/mockEreg.ts
rename to src/mocks/ereg/mockEreg.ts
index 0e988f75..507f56fa 100644
--- a/mock/ereg/mockEreg.ts
+++ b/src/mocks/ereg/mockEreg.ts
@@ -1,5 +1,5 @@
-import express from 'express';
import { EregOrganisasjonResponseDTO } from '@/data/virksomhet/EregVirksomhetsnavn';
+import { http, HttpResponse } from 'msw';
interface EregMockData {
[key: string]: EregOrganisasjonResponseDTO;
@@ -35,13 +35,10 @@ const eregResponses: EregMockData = {
},
};
-export const mockEreg = (server: express.Application) => {
- server.get(
- '/ereg/api/v1/organisasjon/:orgnr',
- (req: express.Request, res: express.Response) => {
- const eregResponse = eregResponses[req.params.orgnr as string];
- res.setHeader('Content-Type', 'application/json');
- res.send(JSON.stringify(eregResponse));
- }
- );
-};
+export const mockEreg = http.get<{ orgnr: string }>(
+ '/ereg/api/v1/organisasjon/:orgnr',
+ ({ params }) => {
+ const eregResponse = eregResponses[params.orgnr];
+ return HttpResponse.json(eregResponse);
+ }
+);
diff --git a/src/mocks/flexjar/mockFlexjar.ts b/src/mocks/flexjar/mockFlexjar.ts
new file mode 100644
index 00000000..97ec3081
--- /dev/null
+++ b/src/mocks/flexjar/mockFlexjar.ts
@@ -0,0 +1,7 @@
+import { http, HttpResponse } from 'msw';
+import { FLEXJAR_ROOT } from '@/apiConstants';
+
+export const mockFlexjar = http.post(
+ `${FLEXJAR_ROOT}/feedback/azure`,
+ () => new HttpResponse(null, { status: 200 })
+);
diff --git a/src/mocks/handlers.ts b/src/mocks/handlers.ts
new file mode 100644
index 00000000..d5cef4da
--- /dev/null
+++ b/src/mocks/handlers.ts
@@ -0,0 +1,28 @@
+import { http, HttpHandler, HttpResponse } from 'msw';
+import { generatePersons } from './mockUtils';
+import { mockUnleash } from '@/mocks/mockUnleash';
+import { mockSyfoveileder } from '@/mocks/syfoveileder/mockSyfoveileder';
+import { mockSyfoperson } from '@/mocks/syfoperson/mockSyfoperson';
+import { mockPersontildeling } from '@/mocks/persontildeling/mockPersontildeling';
+import { mockPersonoversikt } from '@/mocks/personoversikt/mockPersonoversikt';
+import { mockModiacontextholder } from '@/mocks/modiacontextholder/mockModiacontextholder';
+import { mockFlexjar } from '@/mocks/flexjar/mockFlexjar';
+import { mockEreg } from '@/mocks/ereg/mockEreg';
+
+const generatedPersons = generatePersons(50);
+
+const handlers: HttpHandler[] = [
+ http.post('https://amplitude.nav.no/collect', () =>
+ HttpResponse.text('mocked amplitude')
+ ),
+ mockFlexjar,
+ mockUnleash,
+ mockEreg,
+ ...mockSyfoveileder,
+ mockSyfoperson(generatedPersons),
+ mockPersontildeling,
+ mockPersonoversikt(generatedPersons),
+ ...mockModiacontextholder,
+];
+
+export default handlers;
diff --git a/src/mocks/mockUnleash.ts b/src/mocks/mockUnleash.ts
new file mode 100644
index 00000000..0b1f7716
--- /dev/null
+++ b/src/mocks/mockUnleash.ts
@@ -0,0 +1,14 @@
+import { ToggleNames } from '@/data/unleash/types/unleash_types';
+import { UNLEASH_ROOT } from '@/apiConstants';
+import { http, HttpResponse } from 'msw';
+
+export const mockUnleash = http.get(`${UNLEASH_ROOT}/toggles`, () =>
+ HttpResponse.json(unleashMock)
+);
+
+export const unleashMock = Object.values(ToggleNames).reduce(
+ (accumulator, toggleName) => {
+ return { ...accumulator, [toggleName]: true };
+ },
+ {}
+);
diff --git a/mock/mockUtils.ts b/src/mocks/mockUtils.ts
similarity index 100%
rename from mock/mockUtils.ts
rename to src/mocks/mockUtils.ts
diff --git a/src/mocks/modiacontextholder/mockModiacontextholder.ts b/src/mocks/modiacontextholder/mockModiacontextholder.ts
new file mode 100644
index 00000000..a3d34878
--- /dev/null
+++ b/src/mocks/modiacontextholder/mockModiacontextholder.ts
@@ -0,0 +1,52 @@
+import { MODIACONTEXTHOLDER_ROOT } from '@/apiConstants';
+import { http, HttpResponse } from 'msw';
+
+const saksbehandler = {
+ ident: 'Z999999',
+ navn: 'Vetle Veileder',
+ fornavn: 'Vetle',
+ etternavn: 'Veileder',
+ enheter: [
+ {
+ enhetId: '0315',
+ navn: 'NAV Grünerløkka',
+ },
+ {
+ enhetId: '0316',
+ navn: 'NAV Gamle Oslo',
+ },
+ ],
+};
+
+const aktivBruker = {
+ aktivBruker: null,
+ aktivEnhet: null,
+};
+
+const aktivEnhet = {
+ aktivBruker: null,
+ aktivEnhet: '0316',
+};
+
+export const mockModiacontextholder = [
+ http.get(`${MODIACONTEXTHOLDER_ROOT}/decorator`, () =>
+ HttpResponse.json(saksbehandler)
+ ),
+
+ http.get(`${MODIACONTEXTHOLDER_ROOT}/context/aktivbruker`, () =>
+ HttpResponse.json(aktivBruker)
+ ),
+
+ http.get(`${MODIACONTEXTHOLDER_ROOT}/context/aktivenhet`, () =>
+ HttpResponse.json(aktivEnhet)
+ ),
+
+ http.get(`${MODIACONTEXTHOLDER_ROOT}/context/v2/aktivenhet`, () =>
+ HttpResponse.json(aktivEnhet)
+ ),
+
+ http.post(
+ `${MODIACONTEXTHOLDER_ROOT}/context`,
+ () => new HttpResponse(null, { status: 204 })
+ ),
+];
diff --git a/src/mocks/personoversikt/mockPersonoversikt.ts b/src/mocks/personoversikt/mockPersonoversikt.ts
new file mode 100644
index 00000000..f47988b5
--- /dev/null
+++ b/src/mocks/personoversikt/mockPersonoversikt.ts
@@ -0,0 +1,17 @@
+import { PERSONOVERSIKT_ROOT } from '@/apiConstants';
+import { personoversiktEnhetMock } from '../data/personoversiktEnhetMock';
+import {
+ generatePersonoversiktEnhetFromPersons,
+ MockPerson,
+} from '../mockUtils';
+import { http, HttpResponse } from 'msw';
+
+const personoversiktEnhet = (generatedPersons: MockPerson[]) => [
+ ...personoversiktEnhetMock,
+ ...generatePersonoversiktEnhetFromPersons(generatedPersons),
+];
+
+export const mockPersonoversikt = (generatedPersons: MockPerson[]) =>
+ http.get(`${PERSONOVERSIKT_ROOT}/enhet/:id`, () =>
+ HttpResponse.json(personoversiktEnhet(generatedPersons))
+ );
diff --git a/src/mocks/persontildeling/mockPersontildeling.ts b/src/mocks/persontildeling/mockPersontildeling.ts
new file mode 100644
index 00000000..cb0ad06d
--- /dev/null
+++ b/src/mocks/persontildeling/mockPersontildeling.ts
@@ -0,0 +1,7 @@
+import { PERSONTILDELING_ROOT } from '@/apiConstants';
+import { http, HttpResponse } from 'msw';
+
+export const mockPersontildeling = http.post(
+ `${PERSONTILDELING_ROOT}/registrer`,
+ () => HttpResponse.text('OK')
+);
diff --git a/src/mocks/syfoperson/mockSyfoperson.ts b/src/mocks/syfoperson/mockSyfoperson.ts
new file mode 100644
index 00000000..b84daf3a
--- /dev/null
+++ b/src/mocks/syfoperson/mockSyfoperson.ts
@@ -0,0 +1,14 @@
+import { SYFOPERSON_ROOT } from '@/apiConstants';
+import { personInfoMock } from '../data/personInfoMock';
+import { MockPerson } from '../mockUtils';
+import { http, HttpResponse } from 'msw';
+
+const personInfo = (generatedPersons: MockPerson[]) => [
+ ...personInfoMock,
+ ...generatedPersons,
+];
+
+export const mockSyfoperson = (generatedPersons: MockPerson[]) =>
+ http.post(`${SYFOPERSON_ROOT}/person/info`, () =>
+ HttpResponse.json(personInfo(generatedPersons))
+ );
diff --git a/src/mocks/syfoveileder/mockSyfoveileder.ts b/src/mocks/syfoveileder/mockSyfoveileder.ts
new file mode 100644
index 00000000..432b1fc5
--- /dev/null
+++ b/src/mocks/syfoveileder/mockSyfoveileder.ts
@@ -0,0 +1,14 @@
+import { SYFOVEILEDER_ROOT } from '@/apiConstants';
+import { veiledereMock } from '../data/veiledereMock';
+import { veilederMock } from '../data/veilederMock';
+import { http, HttpResponse } from 'msw';
+
+export const mockSyfoveileder = [
+ http.get(`${SYFOVEILEDER_ROOT}/veiledere/self`, () =>
+ HttpResponse.json(veilederMock)
+ ),
+
+ http.get(`${SYFOVEILEDER_ROOT}/veiledere`, () =>
+ HttpResponse.json(veiledereMock)
+ ),
+];
diff --git a/mock/syfoveileder/veilederMock.ts b/src/mocks/syfoveileder/veilederMock.ts
similarity index 100%
rename from mock/syfoveileder/veilederMock.ts
rename to src/mocks/syfoveileder/veilederMock.ts
diff --git a/src/types.d.ts b/src/types.d.ts
deleted file mode 100644
index 6b5a80a5..00000000
--- a/src/types.d.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-declare let config: {
- config: {
- dataSources: {
- veileder: string;
- enheter: string;
- };
- initiellEnhet: string;
- toggles: {
- visEnhetVelger: boolean;
- visVeileder: boolean;
- visSokefelt: boolean;
- toggleSendEventVedEnEnhet: boolean;
- };
- applicationName: string;
- handlePersonsokSubmit(nyttFnr: string): void;
- handleChangeEnhet(data: string): void;
- };
-};
diff --git a/test/components/FristColumnTest.tsx b/test/components/FristColumnTest.tsx
index b316729d..bdc4e153 100644
--- a/test/components/FristColumnTest.tsx
+++ b/test/components/FristColumnTest.tsx
@@ -7,7 +7,7 @@ import { describe, expect, it } from 'vitest';
import { AktivitetskravStatus } from '@/api/types/personoversiktTypes';
import { toReadableDate } from '@/utils/dateUtils';
import { addWeeks } from 'date-fns';
-import { getOppfolgingsoppgave } from '../../mock/data/personoversiktEnhetMock';
+import { getOppfolgingsoppgave } from '@/mocks/data/personoversiktEnhetMock';
const defaultPersonData: PersonData = {
navn: testdata.navn1,
diff --git a/test/components/HendelseTypeFilter.test.tsx b/test/components/HendelseTypeFilter.test.tsx
index b7ae07de..3d7a1479 100644
--- a/test/components/HendelseTypeFilter.test.tsx
+++ b/test/components/HendelseTypeFilter.test.tsx
@@ -7,10 +7,10 @@ import { NotificationProvider } from '@/context/notification/NotificationContext
import { AktivEnhetContext } from '@/context/aktivEnhet/AktivEnhetContext';
import { veiledereQueryKeys } from '@/data/veiledereQueryHooks';
import { unleashQueryKeys } from '@/data/unleash/unleashQueryHooks';
-import { veilederMock } from '../../mock/syfoveileder/veilederMock';
+import { veilederMock } from '@/mocks/syfoveileder/veilederMock';
import { testQueryClient } from '../testQueryClient';
-import { aktivEnhetMock } from '../../mock/data/aktivEnhetMock';
-import { unleashMock } from '../../mock/mockUnleash';
+import { aktivEnhetMock } from '@/mocks/data/aktivEnhetMock';
+import { unleashMock } from '@/mocks/mockUnleash';
import { TabTypeContext } from '@/context/tab/TabTypeContext';
import { OverviewTabType } from '@/konstanter';
diff --git a/test/components/NewOversiktTableTest.tsx b/test/components/NewOversiktTableTest.tsx
index 10d770e0..00691ba2 100644
--- a/test/components/NewOversiktTableTest.tsx
+++ b/test/components/NewOversiktTableTest.tsx
@@ -20,7 +20,7 @@ import {
Oppfolgingsgrunn,
} from '@/api/types/personoversiktTypes';
import { toLastnameFirstnameFormat } from '@/utils/stringUtil';
-import { aktivEnhetMock } from '../../mock/data/aktivEnhetMock';
+import { aktivEnhetMock } from '@/mocks/data/aktivEnhetMock';
import dayjs from 'dayjs';
let queryClient = testQueryClient();
diff --git a/test/components/flexjar/FlexjarTest.tsx b/test/components/flexjar/FlexjarTest.tsx
index bf9bb725..e69287c3 100644
--- a/test/components/flexjar/FlexjarTest.tsx
+++ b/test/components/flexjar/FlexjarTest.tsx
@@ -1,5 +1,4 @@
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
-import nock from 'nock';
import { fireEvent, render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import React from 'react';
@@ -8,11 +7,11 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
import { defaultErrorTexts } from '@/api/errors';
import { FlexjarFeedbackDTO } from '@/data/flexjar/useFlexjarFeedback';
import { StoreKey } from '@/hooks/useLocalStorageState';
-import { aktivEnhetMock } from '../../../mock/data/aktivEnhetMock';
+import { aktivEnhetMock } from '@/mocks/data/aktivEnhetMock';
import { AktivEnhetContext } from '@/context/aktivEnhet/AktivEnhetContext';
import { testQueryClient } from '../../testQueryClient';
import { veiledereQueryKeys } from '@/data/veiledereQueryHooks';
-import { veilederMock } from '../../../mock/syfoveileder/veilederMock';
+import { veilederMock } from '@/mocks/syfoveileder/veilederMock';
import { stubFlexjarApiError, stubFlexjarApiOk } from '../../stubs/stubFlexjar';
let queryClient: QueryClient;
@@ -48,7 +47,6 @@ describe('Flexjar', () => {
);
});
afterEach(() => {
- nock.cleanAll();
localStorage.setItem(StoreKey.FLEXJAR_ARENABRUK_FEEDBACK_DATE, '');
});
diff --git a/test/containers/OversiktContainer.test.tsx b/test/containers/OversiktContainer.test.tsx
index c61eae4d..05284c53 100644
--- a/test/containers/OversiktContainer.test.tsx
+++ b/test/containers/OversiktContainer.test.tsx
@@ -10,7 +10,7 @@ import { stubPersonregister } from '../stubs/stubPersonregister';
import { stubAktivVeileder } from '../stubs/stubAktivVeileder';
import { stubModiaContext } from '../stubs/stubModiaContext';
import { stubVeiledere } from '../stubs/stubVeiledere';
-import { aktivEnhetMock } from '../../mock/data/aktivEnhetMock';
+import { aktivEnhetMock } from '@/mocks/data/aktivEnhetMock';
import {
FetchVeiledereFailed,
Notification,
@@ -20,10 +20,9 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
import { enhetOversiktRoutePath } from '@/routers/AppRouter';
import { getQueryClientWithMockdata } from '../testQueryClient';
import { unleashQueryKeys } from '@/data/unleash/unleashQueryHooks';
-import { unleashMock } from '../../mock/mockUnleash';
+import { unleashMock } from '@/mocks/mockUnleash';
import { StoreKey } from '@/hooks/useLocalStorageState';
import { addWeeks } from '@/utils/dateUtils';
-import nock from 'nock';
let queryClient: QueryClient;
@@ -67,7 +66,6 @@ describe('OversiktContainer', () => {
afterEach(() => {
localStorage.setItem(StoreKey.FLEXJAR_ARENABRUK_FEEDBACK_DATE, '');
- nock.cleanAll();
});
it('Skal vise notifikasjon ved feilende apikall', async () => {
diff --git a/test/query/personoversiktHooks.test.tsx b/test/query/personoversiktHooks.test.tsx
index a616c74d..e7332736 100644
--- a/test/query/personoversiktHooks.test.tsx
+++ b/test/query/personoversiktHooks.test.tsx
@@ -1,12 +1,12 @@
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import React, { ReactNode } from 'react';
import { stubModiaContext } from '../stubs/stubModiaContext';
-import { personoversiktEnhetMock } from '../../mock/data/personoversiktEnhetMock';
+import { personoversiktEnhetMock } from '@/mocks/data/personoversiktEnhetMock';
import { stubPersonoversikt } from '../stubs/stubPersonoversikt';
import { usePersonoversiktQuery } from '@/data/personoversiktHooks';
import { PersonOversiktStatusDTO } from '@/api/types/personoversiktTypes';
import { AktivEnhetContext } from '@/context/aktivEnhet/AktivEnhetContext';
-import { aktivEnhetMock } from '../../mock/data/aktivEnhetMock';
+import { aktivEnhetMock } from '@/mocks/data/aktivEnhetMock';
import { NotificationProvider } from '@/context/notification/NotificationContext';
import { describe, expect, it } from 'vitest';
import { renderHook, waitFor } from '@testing-library/react';
diff --git a/test/query/personregisterHooks.test.tsx b/test/query/personregisterHooks.test.tsx
index d0063525..8f49c796 100644
--- a/test/query/personregisterHooks.test.tsx
+++ b/test/query/personregisterHooks.test.tsx
@@ -1,13 +1,13 @@
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import React, { ReactNode } from 'react';
import { stubModiaContext } from '../stubs/stubModiaContext';
-import { personoversiktEnhetMock } from '../../mock/data/personoversiktEnhetMock';
+import { personoversiktEnhetMock } from '@/mocks/data/personoversiktEnhetMock';
import { stubPersonoversikt } from '../stubs/stubPersonoversikt';
import { stubPersonregister } from '../stubs/stubPersonregister';
import { usePersonregisterQuery } from '@/data/personregisterHooks';
import { PersonregisterData } from '@/api/types/personregisterTypes';
import { AktivEnhetContext } from '@/context/aktivEnhet/AktivEnhetContext';
-import { aktivEnhetMock } from '../../mock/data/aktivEnhetMock';
+import { aktivEnhetMock } from '@/mocks/data/aktivEnhetMock';
import { NotificationProvider } from '@/context/notification/NotificationContext';
import { describe, expect, it } from 'vitest';
import { renderHook, waitFor } from '@testing-library/react';
diff --git a/test/query/veiledereQueryHooks.test.tsx b/test/query/veiledereQueryHooks.test.tsx
index b950caf5..61272a5a 100644
--- a/test/query/veiledereQueryHooks.test.tsx
+++ b/test/query/veiledereQueryHooks.test.tsx
@@ -8,10 +8,10 @@ import {
} from '@/data/veiledereQueryHooks';
import { VeilederDTO } from '@/api/types/veiledereTypes';
import { stubAktivVeileder } from '../stubs/stubAktivVeileder';
-import { veiledereMock } from '../../mock/data/veiledereMock';
-import { veilederMock } from '../../mock/data/veilederMock';
+import { veiledereMock } from '@/mocks/data/veiledereMock';
+import { veilederMock } from '@/mocks/data/veilederMock';
import { AktivEnhetContext } from '@/context/aktivEnhet/AktivEnhetContext';
-import { aktivEnhetMock } from '../../mock/data/aktivEnhetMock';
+import { aktivEnhetMock } from '@/mocks/data/aktivEnhetMock';
import { NotificationProvider } from '@/context/notification/NotificationContext';
import { describe, expect, it } from 'vitest';
import { renderHook, waitFor } from '@testing-library/react';
diff --git a/test/setup.ts b/test/setup.ts
index a2012ce9..578776e6 100644
--- a/test/setup.ts
+++ b/test/setup.ts
@@ -1,8 +1,20 @@
-import { vi } from 'vitest';
-
-vi.stubGlobal('XMLHttpRequest', vi.fn());
+import { afterAll, afterEach, beforeAll, vi } from 'vitest';
+import { setupServer } from 'msw/node';
+import { mockUnleash } from '@/mocks/mockUnleash';
+import { mockSyfoveileder } from '@/mocks/syfoveileder/mockSyfoveileder';
vi.mock('@amplitude/analytics-browser', () => ({
track: vi.fn(),
init: vi.fn(),
}));
+
+export const mockServer = setupServer(mockUnleash, ...mockSyfoveileder);
+
+// Start server before all tests
+beforeAll(() => mockServer.listen({ onUnhandledRequest: 'warn' }));
+
+// Close server after all tests
+afterAll(() => mockServer.close());
+
+// Reset handlers after each test `important for test isolation`
+afterEach(() => mockServer.resetHandlers());
diff --git a/test/stubs/nockDefaults.ts b/test/stubs/nockDefaults.ts
deleted file mode 100644
index 389cc98c..00000000
--- a/test/stubs/nockDefaults.ts
+++ /dev/null
@@ -1 +0,0 @@
-export const nockBasePath = 'http://localhost:80';
diff --git a/test/stubs/stubAktivVeileder.ts b/test/stubs/stubAktivVeileder.ts
index 3f21acf8..e4e96174 100644
--- a/test/stubs/stubAktivVeileder.ts
+++ b/test/stubs/stubAktivVeileder.ts
@@ -1,15 +1,12 @@
-import nock from 'nock';
import { SYFOVEILEDER_ROOT } from '@/apiConstants';
-import { veilederMock } from '../../mock/data/veilederMock';
-import axios from 'axios';
-import { nockBasePath } from './nockDefaults';
+import { veilederMock } from '@/mocks/data/veilederMock';
+import { mockServer } from '../setup';
+import { http, HttpResponse } from 'msw';
export const stubAktivVeileder = () => {
- axios.defaults.adapter = 'http';
-
- nock(nockBasePath)
- .get(`${SYFOVEILEDER_ROOT}/veiledere/self`)
- .reply(200, {
- ...veilederMock,
- });
+ mockServer.use(
+ http.get(`*${SYFOVEILEDER_ROOT}/veiledere/self`, () =>
+ HttpResponse.json(veilederMock)
+ )
+ );
};
diff --git a/test/stubs/stubFlexjar.ts b/test/stubs/stubFlexjar.ts
index b99e04fc..890e0f41 100644
--- a/test/stubs/stubFlexjar.ts
+++ b/test/stubs/stubFlexjar.ts
@@ -1,16 +1,21 @@
-import nock from 'nock';
import { FLEXJAR_ROOT } from '@/apiConstants';
-import axios from 'axios';
-import { nockBasePath } from './nockDefaults';
+import { mockServer } from '../setup';
+import { http, HttpResponse } from 'msw';
export const stubFlexjarApiOk = () => {
- axios.defaults.adapter = 'http';
-
- nock(nockBasePath).post(`${FLEXJAR_ROOT}/feedback/azure`).reply(200);
+ mockServer.use(
+ http.post(
+ `*${FLEXJAR_ROOT}/feedback/azure`,
+ () => new HttpResponse(null, { status: 200 })
+ )
+ );
};
export const stubFlexjarApiError = () => {
- axios.defaults.adapter = 'http';
-
- nock(nockBasePath).post(`${FLEXJAR_ROOT}/feedback/azure`).reply(500);
+ mockServer.use(
+ http.post(
+ `*${FLEXJAR_ROOT}/feedback/azure`,
+ () => new HttpResponse(null, { status: 500 })
+ )
+ );
};
diff --git a/test/stubs/stubModiaContext.ts b/test/stubs/stubModiaContext.ts
index 82f0265a..cbaac63c 100644
--- a/test/stubs/stubModiaContext.ts
+++ b/test/stubs/stubModiaContext.ts
@@ -1,15 +1,12 @@
-import nock from 'nock';
import { MODIACONTEXTHOLDER_ROOT } from '@/apiConstants';
-import { aktivEnhetMock } from '../../mock/data/aktivEnhetMock';
-import axios from 'axios';
-import { nockBasePath } from './nockDefaults';
+import { aktivEnhetMock } from '@/mocks/data/aktivEnhetMock';
+import { mockServer } from '../setup';
+import { http, HttpResponse } from 'msw';
export const stubModiaContext = () => {
- axios.defaults.adapter = 'http';
-
- nock(nockBasePath)
- .get(`${MODIACONTEXTHOLDER_ROOT}/context/aktivenhet`)
- .reply(200, {
- ...aktivEnhetMock,
- });
+ mockServer.use(
+ http.get(`*${MODIACONTEXTHOLDER_ROOT}/context/aktivenhet`, () =>
+ HttpResponse.json(aktivEnhetMock)
+ )
+ );
};
diff --git a/test/stubs/stubPersonoversikt.ts b/test/stubs/stubPersonoversikt.ts
index 8556c192..2b8ab240 100644
--- a/test/stubs/stubPersonoversikt.ts
+++ b/test/stubs/stubPersonoversikt.ts
@@ -1,14 +1,13 @@
-import nock from 'nock';
import { PERSONOVERSIKT_ROOT } from '@/apiConstants';
-import { aktivEnhetMock } from '../../mock/data/aktivEnhetMock';
-import { personoversiktEnhetMock } from '../../mock/data/personoversiktEnhetMock';
-import axios from 'axios';
-import { nockBasePath } from './nockDefaults';
+import { aktivEnhetMock } from '@/mocks/data/aktivEnhetMock';
+import { personoversiktEnhetMock } from '@/mocks/data/personoversiktEnhetMock';
+import { mockServer } from '../setup';
+import { http, HttpResponse } from 'msw';
export const stubPersonoversikt = () => {
- axios.defaults.adapter = 'http';
-
- nock(nockBasePath)
- .get(`${PERSONOVERSIKT_ROOT}/enhet/${aktivEnhetMock.aktivEnhet}`)
- .reply(200, () => [...personoversiktEnhetMock]);
+ mockServer.use(
+ http.get(`*${PERSONOVERSIKT_ROOT}/enhet/${aktivEnhetMock.aktivEnhet}`, () =>
+ HttpResponse.json([...personoversiktEnhetMock])
+ )
+ );
};
diff --git a/test/stubs/stubPersonregister.ts b/test/stubs/stubPersonregister.ts
index 599b2f55..202e17b1 100644
--- a/test/stubs/stubPersonregister.ts
+++ b/test/stubs/stubPersonregister.ts
@@ -1,13 +1,12 @@
-import nock from 'nock';
import { SYFOPERSON_ROOT } from '@/apiConstants';
-import { personInfoMock } from '../../mock/data/personInfoMock';
-import axios from 'axios';
-import { nockBasePath } from './nockDefaults';
+import { personInfoMock } from '@/mocks/data/personInfoMock';
+import { mockServer } from '../setup';
+import { http, HttpResponse } from 'msw';
export const stubPersonregister = () => {
- axios.defaults.adapter = 'http';
-
- nock(nockBasePath)
- .post(`${SYFOPERSON_ROOT}/person/info`)
- .reply(200, () => [...personInfoMock]);
+ mockServer.use(
+ http.post(`*${SYFOPERSON_ROOT}/person/info`, () =>
+ HttpResponse.json([...personInfoMock])
+ )
+ );
};
diff --git a/test/stubs/stubVeiledere.ts b/test/stubs/stubVeiledere.ts
index 32814d9f..8662264b 100644
--- a/test/stubs/stubVeiledere.ts
+++ b/test/stubs/stubVeiledere.ts
@@ -1,14 +1,14 @@
-import nock from 'nock';
import { SYFOVEILEDER_ROOT } from '@/apiConstants';
-import { aktivEnhetMock } from '../../mock/data/aktivEnhetMock';
-import { veiledereMock } from '../../mock/data/veiledereMock';
-import axios from 'axios';
-import { nockBasePath } from './nockDefaults';
+import { aktivEnhetMock } from '@/mocks/data/aktivEnhetMock';
+import { veiledereMock } from '@/mocks/data/veiledereMock';
+import { mockServer } from '../setup';
+import { http, HttpResponse } from 'msw';
export const stubVeiledere = () => {
- axios.defaults.adapter = 'http';
-
- nock(nockBasePath)
- .get(`${SYFOVEILEDER_ROOT}/veiledere?enhetNr=${aktivEnhetMock.aktivEnhet}`)
- .reply(200, () => [...veiledereMock]);
+ mockServer.use(
+ http.get(
+ `*${SYFOVEILEDER_ROOT}/veiledere?enhetNr=${aktivEnhetMock.aktivEnhet}`,
+ () => HttpResponse.json([...veiledereMock])
+ )
+ );
};
diff --git a/test/testQueryClient.ts b/test/testQueryClient.ts
index cbddcfed..14a3df4e 100644
--- a/test/testQueryClient.ts
+++ b/test/testQueryClient.ts
@@ -1,9 +1,9 @@
import { QueryClient } from '@tanstack/react-query';
import { unleashQueryKeys } from '@/data/unleash/unleashQueryHooks';
-import { aktivEnhetMock } from '../mock/data/aktivEnhetMock';
-import { unleashMock } from '../mock/mockUnleash';
+import { aktivEnhetMock } from '@/mocks/data/aktivEnhetMock';
+import { unleashMock } from '@/mocks/mockUnleash';
import { personoversiktQueryKeys } from '@/data/personoversiktHooks';
-import { personoversiktEnhetMock } from '../mock/data/personoversiktEnhetMock';
+import { personoversiktEnhetMock } from '@/mocks/data/personoversiktEnhetMock';
export const testQueryClient = () =>
new QueryClient({
diff --git a/test/utils/hendelseFilteringUtilsTest.ts b/test/utils/hendelseFilteringUtilsTest.ts
index 9d6e30a8..2575f603 100644
--- a/test/utils/hendelseFilteringUtilsTest.ts
+++ b/test/utils/hendelseFilteringUtilsTest.ts
@@ -13,7 +13,7 @@ import {
import { testdata } from '../data/fellesTestdata';
import { HendelseTypeFilters } from '@/context/filters/filterContextState';
import { addWeeks, subWeeks } from 'date-fns';
-import { getOppfolgingsoppgave } from '../../mock/data/personoversiktEnhetMock';
+import { getOppfolgingsoppgave } from '@/mocks/data/personoversiktEnhetMock';
import { AktivitetskravStatus } from '@/api/types/personoversiktTypes';
export const createPersonDataWithName = (name: string): PersonData => {
diff --git a/webpack.dev.ts b/webpack.dev.ts
index 127f0a48..8fcf856c 100644
--- a/webpack.dev.ts
+++ b/webpack.dev.ts
@@ -5,16 +5,13 @@ import * as Webpack from 'webpack';
import * as WebpackDevServer from 'webpack-dev-server';
import common from './webpack.common';
-import mockEndepunkter from './mock/mockEndepunkter';
import * as Session from './server/session';
const devConfig: Webpack.Configuration = {
mode: 'development',
devtool: 'eval-source-map',
devServer: {
- static: {
- directory: path.join(__dirname, 'dist'),
- },
+ static: './public',
port: 8080,
setupMiddlewares: (
middlewares: WebpackDevServer.Middleware[],
@@ -35,9 +32,6 @@ const setupDev = async (devServer: WebpackDevServer) => {
await Session.setupSession(app);
- mockEndepunkter(app);
- app.use('/static', express.static(path.resolve(__dirname, 'dist')));
-
app.use('*', (req: express.Request, res: express.Response) => {
const filename = path.join(compiler.outputPath, 'index.html');
compiler.outputFileSystem?.readFile(filename, (err: any, result: any) => {