From 8c6a46280fb041691bddac9c01c0e4b102041dab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dafydd=20Ll=C5=B7r=20Pearson?= Date: Tue, 19 Sep 2023 16:30:20 +0100 Subject: [PATCH 01/10] feat: Improve /me endpoint - Add tests - Move to module, use YAML docs - Return role details --- api.planx.uk/modules/auth/middleware.ts | 14 ++- api.planx.uk/modules/auth/service.ts | 1 + api.planx.uk/modules/misc/controller.ts | 20 +++++ api.planx.uk/modules/misc/docs.yaml | 54 ++++++++++++ api.planx.uk/modules/misc/routes.test.ts | 103 +++++++++++++++++++++++ api.planx.uk/modules/misc/routes.ts | 9 ++ api.planx.uk/server.ts | 69 +-------------- api.planx.uk/tests/mockJWT.ts | 1 + 8 files changed, 204 insertions(+), 67 deletions(-) create mode 100644 api.planx.uk/modules/misc/controller.ts create mode 100644 api.planx.uk/modules/misc/docs.yaml create mode 100644 api.planx.uk/modules/misc/routes.test.ts create mode 100644 api.planx.uk/modules/misc/routes.ts diff --git a/api.planx.uk/modules/auth/middleware.ts b/api.planx.uk/modules/auth/middleware.ts index cb313ae57d..041ee5ea29 100644 --- a/api.planx.uk/modules/auth/middleware.ts +++ b/api.planx.uk/modules/auth/middleware.ts @@ -171,7 +171,7 @@ export const useRoleAuth: UseRoleAuth = }); }; -// Convenience methods +// Convenience methods for role-based access export const useTeamViewerAuth = useRoleAuth([ "teamViewer", "teamEditor", @@ -179,3 +179,15 @@ export const useTeamViewerAuth = useRoleAuth([ ]); export const useTeamEditorAuth = useRoleAuth(["teamEditor", "platformAdmin"]); export const usePlatformAdminAuth = useRoleAuth(["platformAdmin"]); + +/** + * Allow any logged in user to access route, without checking roles + */ +export const useLoginAuth: RequestHandler = (req, res, next) => useJWT(req, res, () => ( + req?.user?.sub + ? next() + : next({ + status: 401, + message: "No authorization token was found", + }) +)); \ No newline at end of file diff --git a/api.planx.uk/modules/auth/service.ts b/api.planx.uk/modules/auth/service.ts index e6201b1170..db8dd538f1 100644 --- a/api.planx.uk/modules/auth/service.ts +++ b/api.planx.uk/modules/auth/service.ts @@ -8,6 +8,7 @@ export const buildJWT = async (email: string): Promise => { const data = { sub: user.id.toString(), + email, "https://hasura.io/jwt/claims": generateHasuraClaimsForUser(user), }; diff --git a/api.planx.uk/modules/misc/controller.ts b/api.planx.uk/modules/misc/controller.ts new file mode 100644 index 0000000000..8090efb5d3 --- /dev/null +++ b/api.planx.uk/modules/misc/controller.ts @@ -0,0 +1,20 @@ +import { RequestHandler } from "express"; +import { getClient } from "../../client"; +import { userContext } from "../auth/middleware"; +import { ServerError } from "../../errors"; + +export const getLoggedInUserDetails: RequestHandler = async (_req, res, next) => { + try { + const $client = getClient(); + + const email = userContext.getStore()?.user.email + if (!email) throw new ServerError({ message: "User email missing from request", status: 400 }) + + const user = await $client.user.getByEmail(email); + if (!user) throw new ServerError({ message: `Unable to locate user with email ${email}`, status: 400 }) + + res.json(user); + } catch (error) { + next(error) + } +}; \ No newline at end of file diff --git a/api.planx.uk/modules/misc/docs.yaml b/api.planx.uk/modules/misc/docs.yaml new file mode 100644 index 0000000000..452955b95c --- /dev/null +++ b/api.planx.uk/modules/misc/docs.yaml @@ -0,0 +1,54 @@ +openapi: 3.1.0 +info: + title: Planâś• API + version: 0.1.0 +tags: + - name: misc + description: Miscellaneous +paths: + /me: + get: + summary: Get information about currently logged in user + tags: + - misc + security: + - userJWT: [] + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: integer + format: int32 + example: 123 + firstName: + type: string + example: Albert + lastName: + type: string + example: Einstein + email: + type: string + example: albert@princeton.edu + isPlatformAdmin: + type: boolean + example: true + teams: + type: array + items: + type: object + properties: + teamId: + type: integer + format: int32 + example: 123 + role: + type: string + enum: ["teamEditor", "teamViewer"] + example: "teamEditor" + '401': + $ref: '#/components/responses/Unauthorised' diff --git a/api.planx.uk/modules/misc/routes.test.ts b/api.planx.uk/modules/misc/routes.test.ts new file mode 100644 index 0000000000..0fa5be05f7 --- /dev/null +++ b/api.planx.uk/modules/misc/routes.test.ts @@ -0,0 +1,103 @@ +import supertest from "supertest"; +import app from "../../server"; +import { authHeader, getJWT } from "../../tests/mockJWT"; +import { userContext } from "../auth/middleware"; + +const getStoreMock = jest.spyOn(userContext, "getStore"); + +const mockGetByEmail = jest.fn().mockResolvedValue({ + id: 36, + firstName: "Albert", + lastName: "Einstein", + email: "albert@princeton.edu", + isPlatformAdmin: true, + teams: [ + { + teamId: 1, + role: "teamEditor" + }, + { + teamId: 24, + role: "teamEditor" + } + ] +}); + +jest.mock("@opensystemslab/planx-core", () => { + return { + CoreDomainClient: jest.fn().mockImplementation(() => ({ + user: { + getByEmail: () => mockGetByEmail(), + } + })) + } +}); + +describe("/me endpoint", () => { + beforeEach(() => { + getStoreMock.mockReturnValue({ + user: { + sub: "123", + email: "test@opensystemslab.io", + jwt: getJWT({ role: "teamEditor" }) + } + }); + }); + + it("returns an error if authorization headers are not set", async () => { + await supertest(app) + .get("/me") + .expect(401) + .then((res) => { + expect(res.body).toEqual({ + error: "No authorization token was found", + }); + }); + }); + + it("returns an error for invalid user context", async () => { + getStoreMock.mockReturnValue({ + user: { + sub: "123", + email: undefined, + jwt: getJWT({ role: "teamEditor" }) + } + }); + + await supertest(app) + .get("/me") + .set(authHeader({ role: "teamEditor" })) + .expect(400) + .then((res) => { + expect(res.body).toEqual({ + error: "User email missing from request", + }); + }); + }); + + it("returns an error for an invalid email address", async () => { + mockGetByEmail.mockResolvedValueOnce(null) + + await supertest(app) + .get("/me") + .set(authHeader({ role: "teamEditor" })) + .expect(400) + .then((res) => { + expect(res.body).toEqual({ + error: "Unable to locate user with email test@opensystemslab.io", + }); + }); + }); + + + it("returns user details for a logged in user", async () => { + await supertest(app) + .get("/me") + .set(authHeader({ role: "teamEditor" })) + .expect(200) + .then((res) => { + expect(res.body).toHaveProperty("email", "albert@princeton.edu"); + expect(res.body.teams).toHaveLength(2); + }); + }); +}); diff --git a/api.planx.uk/modules/misc/routes.ts b/api.planx.uk/modules/misc/routes.ts new file mode 100644 index 0000000000..89962da319 --- /dev/null +++ b/api.planx.uk/modules/misc/routes.ts @@ -0,0 +1,9 @@ +import { Router } from "express"; +import { useLoginAuth } from "../auth/middleware"; +import { getLoggedInUserDetails } from "./controller"; + +const router = Router(); + +router.get("/me", useLoginAuth, getLoggedInUserDetails); + +export default router; \ No newline at end of file diff --git a/api.planx.uk/server.ts b/api.planx.uk/server.ts index 8b7b574e72..e548140a98 100644 --- a/api.planx.uk/server.ts +++ b/api.planx.uk/server.ts @@ -79,6 +79,7 @@ import { getSessionSummary } from "./admin/session/summary"; import { googleStrategy } from "./modules/auth/strategy/google"; import authRoutes from "./modules/auth/routes"; import teamRoutes from "./modules/team/routes"; +import miscRoutes from "./modules/misc/routes"; import { useSwaggerDocs } from "./docs"; import { Role } from "@opensystemslab/planx-core/types"; @@ -192,6 +193,7 @@ app.use(passport.session()); app.use(urlencoded({ extended: true })); app.use(authRoutes); +app.use(miscRoutes); app.use("/team", teamRoutes); app.use("/gis", router); @@ -211,72 +213,6 @@ app.get("/hasura", async function (_req, res, next) { } }); -/** - * @swagger - * /me: - * get: - * summary: Get information about currently logged in user - * tags: - * - misc - * security: - * - userJWT: [] - * responses: - * '401': - * $ref: '#/components/responses/Unauthorised' - * '200': - * description: OK - * content: - * application/json: - * schema: - * type: object - * properties: - * id: - * type: integer - * format: int32 - * example: 123 - * first_name: - * type: string - * example: Albert - * last_name: - * type: string - * example: Einstein - * email: - * type: string - * example: albert@princeton.edu - * created_at: - * type: string - * example: 2020-08-11T11:28:38.237493+00:00 - * updated_at: - * type: string - * example: 2023-08-11T11:28:38.237493+00:00 - */ -app.get("/me", usePlatformAdminAuth, async function (req, res, next) { - try { - const user = await adminClient.request( - gql` - query ($id: Int!) { - users_by_pk(id: $id) { - id - first_name - last_name - email - created_at - updated_at - } - } - `, - { id: req.user?.sub }, - ); - - if (!user.users_by_pk) - next({ status: 404, message: `User (${req.user?.sub}) not found` }); - - res.json(user.users_by_pk); - } catch (err) { - next(err); - } -}); - app.get("/gis", (_req, _res, next) => { next({ status: 400, @@ -616,6 +552,7 @@ declare global { interface User { jwt: string; sub?: string; + email?: string; "https://hasura.io/jwt/claims"?: { "x-hasura-allowed-roles": Role[]; }; diff --git a/api.planx.uk/tests/mockJWT.ts b/api.planx.uk/tests/mockJWT.ts index 706c834b12..5e90671e6f 100644 --- a/api.planx.uk/tests/mockJWT.ts +++ b/api.planx.uk/tests/mockJWT.ts @@ -4,6 +4,7 @@ import { sign } from "jsonwebtoken"; function getJWT({ role }: { role: Role }) { const data = { sub: "123", + email: "test@opensystemslab.io", "https://hasura.io/jwt/claims": { "x-hasura-allowed-roles": [role], "x-hasura-default-role": role, From a2beb37078bd68c1281b818d583cd7e1ad3c002c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dafydd=20Ll=C5=B7r=20Pearson?= Date: Tue, 19 Sep 2023 16:59:11 +0100 Subject: [PATCH 02/10] feat: Move healthcheck to misc module --- api.planx.uk/modules/misc/controller.ts | 4 +++- api.planx.uk/modules/misc/docs.yaml | 18 +++++++++++++++++ api.planx.uk/modules/misc/routes.test.ts | 9 +++++++++ api.planx.uk/modules/misc/routes.ts | 3 ++- api.planx.uk/server.test.js | 9 --------- api.planx.uk/server.ts | 25 ------------------------ 6 files changed, 32 insertions(+), 36 deletions(-) diff --git a/api.planx.uk/modules/misc/controller.ts b/api.planx.uk/modules/misc/controller.ts index 8090efb5d3..ae3ac6094c 100644 --- a/api.planx.uk/modules/misc/controller.ts +++ b/api.planx.uk/modules/misc/controller.ts @@ -17,4 +17,6 @@ export const getLoggedInUserDetails: RequestHandler = async (_req, res, next) => } catch (error) { next(error) } -}; \ No newline at end of file +}; + +export const healthCheck: RequestHandler = (_req, res) => res.json({ hello: "world" }); \ No newline at end of file diff --git a/api.planx.uk/modules/misc/docs.yaml b/api.planx.uk/modules/misc/docs.yaml index 452955b95c..7422e8fef3 100644 --- a/api.planx.uk/modules/misc/docs.yaml +++ b/api.planx.uk/modules/misc/docs.yaml @@ -6,6 +6,24 @@ tags: - name: misc description: Miscellaneous paths: + /: + get: + summary: Health check + description: Confirms the API is healthy + tags: + - misc + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + hello: + type: string + example: + hello: world /me: get: summary: Get information about currently logged in user diff --git a/api.planx.uk/modules/misc/routes.test.ts b/api.planx.uk/modules/misc/routes.test.ts index 0fa5be05f7..3fb675d0e5 100644 --- a/api.planx.uk/modules/misc/routes.test.ts +++ b/api.planx.uk/modules/misc/routes.test.ts @@ -101,3 +101,12 @@ describe("/me endpoint", () => { }); }); }); + +describe("healthcheck endpoint", () => { + it("always returns a 200", async () => { + await supertest(app) + .get("/") + .expect(200) + .then(res => expect(res.body).toHaveProperty("hello", "world")) + }); +}); \ No newline at end of file diff --git a/api.planx.uk/modules/misc/routes.ts b/api.planx.uk/modules/misc/routes.ts index 89962da319..0b0d9cb6f4 100644 --- a/api.planx.uk/modules/misc/routes.ts +++ b/api.planx.uk/modules/misc/routes.ts @@ -1,9 +1,10 @@ import { Router } from "express"; import { useLoginAuth } from "../auth/middleware"; -import { getLoggedInUserDetails } from "./controller"; +import { getLoggedInUserDetails, healthCheck } from "./controller"; const router = Router(); +router.get("/", healthCheck); router.get("/me", useLoginAuth, getLoggedInUserDetails); export default router; \ No newline at end of file diff --git a/api.planx.uk/server.test.js b/api.planx.uk/server.test.js index 125375c05e..7428f7baef 100644 --- a/api.planx.uk/server.test.js +++ b/api.planx.uk/server.test.js @@ -3,15 +3,6 @@ import supertest from "supertest"; import { queryMock } from "./tests/graphqlQueryMock"; import app from "./server"; -it("works", async () => { - await supertest(app) - .get("/") - .expect(200) - .then((response) => { - expect(response.body).toEqual({ hello: "world" }); - }); -}); - it("mocks hasura", async () => { queryMock.mockQuery({ name: "GetTeams", diff --git a/api.planx.uk/server.ts b/api.planx.uk/server.ts index e548140a98..8b1a3bb5fb 100644 --- a/api.planx.uk/server.ts +++ b/api.planx.uk/server.ts @@ -224,31 +224,6 @@ app.get("/gis/:localAuthority", locationSearch); app.get("/roads", classifiedRoadsSearch); -/** - * @swagger - * /: - * get: - * summary: Health check - * description: Confirms the API is healthy - * tags: - * - misc - * responses: - * '200': - * description: OK - * content: - * application/json: - * schema: - * type: object - * properties: - * hello: - * type: string - * example: - * hello: world - */ -app.get("/", (_req, res) => { - res.json({ hello: "world" }); -}); - app.use("/admin", usePlatformAdminAuth); app.get("/admin/feedback", downloadFeedbackCSV); app.get("/admin/session/:sessionId/xml", getOneAppXML); From 50f435ee959c39a9c0413e644ae5978db27c980f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dafydd=20Ll=C5=B7r=20Pearson?= Date: Tue, 19 Sep 2023 17:00:45 +0100 Subject: [PATCH 03/10] fix: Update userJWT -> bearerAuth --- api.planx.uk/admin/feedback/downloadFeedbackCSV.ts | 2 +- api.planx.uk/admin/session/bops.ts | 2 +- api.planx.uk/admin/session/csv.ts | 4 ++-- api.planx.uk/admin/session/html.ts | 4 ++-- api.planx.uk/admin/session/oneAppXML.ts | 2 +- api.planx.uk/admin/session/summary.ts | 2 +- api.planx.uk/admin/session/zip.ts | 2 +- api.planx.uk/modules/misc/docs.yaml | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/api.planx.uk/admin/feedback/downloadFeedbackCSV.ts b/api.planx.uk/admin/feedback/downloadFeedbackCSV.ts index 316af72c61..6836fb37a8 100644 --- a/api.planx.uk/admin/feedback/downloadFeedbackCSV.ts +++ b/api.planx.uk/admin/feedback/downloadFeedbackCSV.ts @@ -62,7 +62,7 @@ type ParsedFeedback = Feedback & { * tags: * - admin * security: - * - userJWT: [] + * - bearerAuth: [] */ export const downloadFeedbackCSV = async ( req: Request, diff --git a/api.planx.uk/admin/session/bops.ts b/api.planx.uk/admin/session/bops.ts index 020cf980ec..74aa8feb0a 100644 --- a/api.planx.uk/admin/session/bops.ts +++ b/api.planx.uk/admin/session/bops.ts @@ -12,7 +12,7 @@ import { getClient } from "../../client"; * parameters: * - $ref: '#/components/parameters/sessionId' * security: - * - userJWT: [] + * - bearerAuth: [] */ export const getBOPSPayload = async ( req: Request, diff --git a/api.planx.uk/admin/session/csv.ts b/api.planx.uk/admin/session/csv.ts index 57d485482c..06d0bb00be 100644 --- a/api.planx.uk/admin/session/csv.ts +++ b/api.planx.uk/admin/session/csv.ts @@ -18,7 +18,7 @@ import { getClient } from "../../client"; * required: false * description: If a CSV file should be downloaded, or its raw data returned * security: - * - userJWT: [] + * - bearerAuth: [] */ export async function getCSVData( req: Request, @@ -62,7 +62,7 @@ export async function getCSVData( * required: false * description: If a CSV file should be downloaded, or its raw data returned * security: - * - userJWT: [] + * - bearerAuth: [] */ export async function getRedactedCSVData( req: Request, diff --git a/api.planx.uk/admin/session/html.ts b/api.planx.uk/admin/session/html.ts index c4e4a3d990..52560d79da 100644 --- a/api.planx.uk/admin/session/html.ts +++ b/api.planx.uk/admin/session/html.ts @@ -16,7 +16,7 @@ type HTMLExportHandler = RequestHandler<{ sessionId: string }, string>; * parameters: * - $ref: '#/components/parameters/sessionId' * security: - * - userJWT: [] + * - bearerAuth: [] */ export const getHTMLExport: HTMLExportHandler = async (req, res, next) => { try { @@ -53,7 +53,7 @@ export const getHTMLExport: HTMLExportHandler = async (req, res, next) => { * parameters: * - $ref: '#/components/parameters/sessionId' * security: - * - userJWT: [] + * - bearerAuth: [] */ export const getRedactedHTMLExport: HTMLExportHandler = async ( req, diff --git a/api.planx.uk/admin/session/oneAppXML.ts b/api.planx.uk/admin/session/oneAppXML.ts index d91e1897e7..2f95b144cc 100644 --- a/api.planx.uk/admin/session/oneAppXML.ts +++ b/api.planx.uk/admin/session/oneAppXML.ts @@ -13,7 +13,7 @@ import { adminGraphQLClient as client } from "../../hasura"; * parameters: * - $ref: '#/components/parameters/sessionId' * security: - * - userJWT: [] + * - bearerAuth: [] */ export const getOneAppXML = async ( req: Request, diff --git a/api.planx.uk/admin/session/summary.ts b/api.planx.uk/admin/session/summary.ts index 5e7949cd6e..d0975c9e0a 100644 --- a/api.planx.uk/admin/session/summary.ts +++ b/api.planx.uk/admin/session/summary.ts @@ -20,7 +20,7 @@ import { Breadcrumb, Flow, LowCalSession, Passport, Team } from "../../types"; * parameters: * - $ref: '#/components/parameters/sessionId' * security: - * - userJWT: [] + * - bearerAuth: [] */ export async function getSessionSummary( req: Request, diff --git a/api.planx.uk/admin/session/zip.ts b/api.planx.uk/admin/session/zip.ts index 25b9c9c1ed..e57179807f 100644 --- a/api.planx.uk/admin/session/zip.ts +++ b/api.planx.uk/admin/session/zip.ts @@ -17,7 +17,7 @@ import { buildSubmissionExportZip } from "../../send/exportZip"; * required: false * description: If the OneApp XML file should be included in the zip * security: - * - userJWT: [] + * - bearerAuth: [] */ export async function generateZip( req: Request, diff --git a/api.planx.uk/modules/misc/docs.yaml b/api.planx.uk/modules/misc/docs.yaml index 7422e8fef3..ae3dd4af01 100644 --- a/api.planx.uk/modules/misc/docs.yaml +++ b/api.planx.uk/modules/misc/docs.yaml @@ -30,7 +30,7 @@ paths: tags: - misc security: - - userJWT: [] + - bearerAuth: [] responses: '200': description: OK From dbf90a52e10a26dcdf14c348a7525da0abeb7a9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dafydd=20Ll=C5=B7r=20Pearson?= Date: Tue, 19 Sep 2023 17:09:00 +0100 Subject: [PATCH 04/10] fix: Linting --- api.planx.uk/modules/auth/middleware.ts | 17 +++++++------ api.planx.uk/modules/misc/controller.ts | 31 +++++++++++++++++------- api.planx.uk/modules/misc/docs.yaml | 8 +++--- api.planx.uk/modules/misc/routes.test.ts | 29 +++++++++++----------- api.planx.uk/modules/misc/routes.ts | 2 +- 5 files changed, 50 insertions(+), 37 deletions(-) diff --git a/api.planx.uk/modules/auth/middleware.ts b/api.planx.uk/modules/auth/middleware.ts index 041ee5ea29..5533caca17 100644 --- a/api.planx.uk/modules/auth/middleware.ts +++ b/api.planx.uk/modules/auth/middleware.ts @@ -183,11 +183,12 @@ export const usePlatformAdminAuth = useRoleAuth(["platformAdmin"]); /** * Allow any logged in user to access route, without checking roles */ -export const useLoginAuth: RequestHandler = (req, res, next) => useJWT(req, res, () => ( - req?.user?.sub - ? next() - : next({ - status: 401, - message: "No authorization token was found", - }) -)); \ No newline at end of file +export const useLoginAuth: RequestHandler = (req, res, next) => + useJWT(req, res, () => + req?.user?.sub + ? next() + : next({ + status: 401, + message: "No authorization token was found", + }), + ); diff --git a/api.planx.uk/modules/misc/controller.ts b/api.planx.uk/modules/misc/controller.ts index ae3ac6094c..7f283599ab 100644 --- a/api.planx.uk/modules/misc/controller.ts +++ b/api.planx.uk/modules/misc/controller.ts @@ -3,20 +3,33 @@ import { getClient } from "../../client"; import { userContext } from "../auth/middleware"; import { ServerError } from "../../errors"; -export const getLoggedInUserDetails: RequestHandler = async (_req, res, next) => { +export const getLoggedInUserDetails: RequestHandler = async ( + _req, + res, + next, +) => { try { const $client = getClient(); - - const email = userContext.getStore()?.user.email - if (!email) throw new ServerError({ message: "User email missing from request", status: 400 }) - + + const email = userContext.getStore()?.user.email; + if (!email) + throw new ServerError({ + message: "User email missing from request", + status: 400, + }); + const user = await $client.user.getByEmail(email); - if (!user) throw new ServerError({ message: `Unable to locate user with email ${email}`, status: 400 }) - + if (!user) + throw new ServerError({ + message: `Unable to locate user with email ${email}`, + status: 400, + }); + res.json(user); } catch (error) { - next(error) + next(error); } }; -export const healthCheck: RequestHandler = (_req, res) => res.json({ hello: "world" }); \ No newline at end of file +export const healthCheck: RequestHandler = (_req, res) => + res.json({ hello: "world" }); diff --git a/api.planx.uk/modules/misc/docs.yaml b/api.planx.uk/modules/misc/docs.yaml index ae3dd4af01..8c1100be38 100644 --- a/api.planx.uk/modules/misc/docs.yaml +++ b/api.planx.uk/modules/misc/docs.yaml @@ -13,7 +13,7 @@ paths: tags: - misc responses: - '200': + "200": description: OK content: application/json: @@ -32,7 +32,7 @@ paths: security: - bearerAuth: [] responses: - '200': + "200": description: OK content: application/json: @@ -68,5 +68,5 @@ paths: type: string enum: ["teamEditor", "teamViewer"] example: "teamEditor" - '401': - $ref: '#/components/responses/Unauthorised' + "401": + $ref: "#/components/responses/Unauthorised" diff --git a/api.planx.uk/modules/misc/routes.test.ts b/api.planx.uk/modules/misc/routes.test.ts index 3fb675d0e5..e80e97c015 100644 --- a/api.planx.uk/modules/misc/routes.test.ts +++ b/api.planx.uk/modules/misc/routes.test.ts @@ -14,13 +14,13 @@ const mockGetByEmail = jest.fn().mockResolvedValue({ teams: [ { teamId: 1, - role: "teamEditor" + role: "teamEditor", }, { teamId: 24, - role: "teamEditor" - } - ] + role: "teamEditor", + }, + ], }); jest.mock("@opensystemslab/planx-core", () => { @@ -28,9 +28,9 @@ jest.mock("@opensystemslab/planx-core", () => { CoreDomainClient: jest.fn().mockImplementation(() => ({ user: { getByEmail: () => mockGetByEmail(), - } - })) - } + }, + })), + }; }); describe("/me endpoint", () => { @@ -39,8 +39,8 @@ describe("/me endpoint", () => { user: { sub: "123", email: "test@opensystemslab.io", - jwt: getJWT({ role: "teamEditor" }) - } + jwt: getJWT({ role: "teamEditor" }), + }, }); }); @@ -60,8 +60,8 @@ describe("/me endpoint", () => { user: { sub: "123", email: undefined, - jwt: getJWT({ role: "teamEditor" }) - } + jwt: getJWT({ role: "teamEditor" }), + }, }); await supertest(app) @@ -76,7 +76,7 @@ describe("/me endpoint", () => { }); it("returns an error for an invalid email address", async () => { - mockGetByEmail.mockResolvedValueOnce(null) + mockGetByEmail.mockResolvedValueOnce(null); await supertest(app) .get("/me") @@ -89,7 +89,6 @@ describe("/me endpoint", () => { }); }); - it("returns user details for a logged in user", async () => { await supertest(app) .get("/me") @@ -107,6 +106,6 @@ describe("healthcheck endpoint", () => { await supertest(app) .get("/") .expect(200) - .then(res => expect(res.body).toHaveProperty("hello", "world")) + .then((res) => expect(res.body).toHaveProperty("hello", "world")); }); -}); \ No newline at end of file +}); diff --git a/api.planx.uk/modules/misc/routes.ts b/api.planx.uk/modules/misc/routes.ts index 0b0d9cb6f4..75d202e32e 100644 --- a/api.planx.uk/modules/misc/routes.ts +++ b/api.planx.uk/modules/misc/routes.ts @@ -7,4 +7,4 @@ const router = Router(); router.get("/", healthCheck); router.get("/me", useLoginAuth, getLoggedInUserDetails); -export default router; \ No newline at end of file +export default router; From 4efc1bc4b3e0e5875efc6af97d9248963b0b04fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dafydd=20Ll=C5=B7r=20Pearson?= Date: Tue, 19 Sep 2023 19:42:04 +0100 Subject: [PATCH 05/10] chore: Update planx-core --- api.planx.uk/package.json | 2 +- api.planx.uk/pnpm-lock.yaml | 146 ++++++++++++--------- e2e/tests/api-driven/package.json | 2 +- e2e/tests/api-driven/pnpm-lock.yaml | 135 ++++++++++---------- e2e/tests/ui-driven/package.json | 2 +- e2e/tests/ui-driven/pnpm-lock.yaml | 142 ++++++++++++--------- editor.planx.uk/package.json | 2 +- editor.planx.uk/pnpm-lock.yaml | 188 ++++++++++++++++++++-------- 8 files changed, 374 insertions(+), 245 deletions(-) diff --git a/api.planx.uk/package.json b/api.planx.uk/package.json index eb3447520b..c1918dc90b 100644 --- a/api.planx.uk/package.json +++ b/api.planx.uk/package.json @@ -4,7 +4,7 @@ "private": true, "dependencies": { "@airbrake/node": "^2.1.8", - "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#17f3bf5", + "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#5090b78", "@types/isomorphic-fetch": "^0.0.36", "adm-zip": "^0.5.10", "aws-sdk": "^2.1441.0", diff --git a/api.planx.uk/pnpm-lock.yaml b/api.planx.uk/pnpm-lock.yaml index 1d70b98fd8..9783b43b7e 100644 --- a/api.planx.uk/pnpm-lock.yaml +++ b/api.planx.uk/pnpm-lock.yaml @@ -9,8 +9,8 @@ dependencies: specifier: ^2.1.8 version: 2.1.8 '@opensystemslab/planx-core': - specifier: git+https://github.com/theopensystemslab/planx-core#17f3bf5 - version: github.com/theopensystemslab/planx-core/17f3bf5 + specifier: git+https://github.com/theopensystemslab/planx-core#5090b78 + version: github.com/theopensystemslab/planx-core/5090b78 '@types/isomorphic-fetch': specifier: ^0.0.36 version: 0.0.36 @@ -760,6 +760,13 @@ packages: regenerator-runtime: 0.14.0 dev: false + /@babel/runtime@7.22.15: + resolution: {integrity: sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.0 + dev: false + /@babel/runtime@7.22.6: resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==} engines: {node: '>=6.9.0'} @@ -1179,13 +1186,13 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.49.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.48.0 + eslint: 8.49.0 eslint-visitor-keys: 3.4.3 dev: false @@ -1219,8 +1226,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@eslint/js@8.48.0: - resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} + /@eslint/js@8.49.0: + resolution: {integrity: sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false @@ -1274,6 +1281,18 @@ packages: minimatch: 3.1.2 transitivePeerDependencies: - supports-color + dev: true + + /@humanwhocodes/config-array@0.11.11: + resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: false /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} @@ -1621,8 +1640,8 @@ packages: resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} dev: false - /@mui/base@5.0.0-beta.13(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-uC0l97pBspfDAp+iz2cJq8YZ8Sd9i73V77+WzUiOAckIVEyCm5dyVDZCCO2/phmzckVEeZCGcytybkjMQuhPQw==} + /@mui/base@5.0.0-beta.16(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-OYxhC81c9bO0wobGcM8rrY5bRwpCXAI21BL0P2wz/2vTv4ek7ALz9+U5M8wgdmtRNUhmCmAB4L2WRwFRf5Cd8Q==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -1636,25 +1655,23 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.22.11 - '@emotion/is-prop-valid': 1.2.1 + '@babel/runtime': 7.22.15 '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0)(react@18.2.0) '@mui/types': 7.2.4 - '@mui/utils': 5.14.7(react@18.2.0) + '@mui/utils': 5.14.10(react@18.2.0) '@popperjs/core': 2.11.8 clsx: 2.0.0 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-is: 18.2.0 dev: false - /@mui/core-downloads-tracker@5.14.7: - resolution: {integrity: sha512-sCWTUNElBPgB30iLvWe3PU7SIlTKZNf6/E/sko85iHVeHCM6WPkDw+y89CrZYjhFNmPqt2fIQM/pZu+rP2lFLA==} + /@mui/core-downloads-tracker@5.14.10: + resolution: {integrity: sha512-kPHu/NhZq1k+vSZR5wq3AyUfD4bnfWAeuKpps0+8PS7ZHQ2Lyv1cXJh+PlFdCIOa0PK98rk3JPwMzS8BMhdHwQ==} dev: false - /@mui/material@5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-jIZj9F7zMv6IlyaYDVv5M2Kp20jIX8c0kzuwteySHS/A0IvPVyomQEPtWc51MCbpDNCqzwoZUp3rQtA2lI8k7A==} + /@mui/material@5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ejFMppnO+lzBXpzju+N4SSz0Mhmi5sihXUGcr5FxpgB6bfUP0Lpe32O0Sw/3s8xlmLEvG1fqVT0rRyAVMlCA+A==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -1674,14 +1691,14 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 '@emotion/react': 11.11.1(react@18.2.0) '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(react@18.2.0) - '@mui/base': 5.0.0-beta.13(react-dom@18.2.0)(react@18.2.0) - '@mui/core-downloads-tracker': 5.14.7 - '@mui/system': 5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@mui/base': 5.0.0-beta.16(react-dom@18.2.0)(react@18.2.0) + '@mui/core-downloads-tracker': 5.14.10 + '@mui/system': 5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) '@mui/types': 7.2.4 - '@mui/utils': 5.14.7(react@18.2.0) + '@mui/utils': 5.14.10(react@18.2.0) '@types/react-transition-group': 4.4.6 clsx: 2.0.0 csstype: 3.1.2 @@ -1692,8 +1709,8 @@ packages: react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) dev: false - /@mui/private-theming@5.14.7(react@18.2.0): - resolution: {integrity: sha512-Y86+hmDnJab2Ka42PgxKpK3oL7EiacbeeX3X/lG9LGO0wSc45wZjHeTfIlVSkkUCkexiMKEJp5NlSjZhr27NRQ==} + /@mui/private-theming@5.14.10(react@18.2.0): + resolution: {integrity: sha512-f67xOj3H06wWDT9xBg7hVL/HSKNF+HG1Kx0Pm23skkbEqD2Ef2Lif64e5nPdmWVv+7cISCYtSuE2aeuzrZe78w==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -1704,14 +1721,14 @@ packages: react: optional: true dependencies: - '@babel/runtime': 7.22.11 - '@mui/utils': 5.14.7(react@18.2.0) + '@babel/runtime': 7.22.15 + '@mui/utils': 5.14.10(react@18.2.0) prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styled-engine@5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): - resolution: {integrity: sha512-hKBETEDsIAkL8/mBwPiQj/vw28OeIhMXC3Tvj4J2bb9snxAKpiZioR1PwqP+6P41twsC/GKBd0Vr9oaWYaHuMg==} + /@mui/styled-engine@5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): + resolution: {integrity: sha512-EJckxmQHrsBvDbFu1trJkvjNw/1R7jfNarnqPSnL+jEQawCkQIqVELWLrlOa611TFtxSJGkdUfCFXeJC203HVg==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -1725,7 +1742,7 @@ packages: react: optional: true dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 '@emotion/cache': 11.11.0 '@emotion/react': 11.11.1(react@18.2.0) '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(react@18.2.0) @@ -1734,8 +1751,8 @@ packages: react: 18.2.0 dev: false - /@mui/system@5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): - resolution: {integrity: sha512-jeZtHglc+Pi6qjGoopT6O4RqYXVBMqHVOsjMGP0hxGSSPm1T4gsAu7jU8eqGx9YwwjvvJ0eotTjFqw7iJ6qE2Q==} + /@mui/system@5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): + resolution: {integrity: sha512-QQmtTG/R4gjmLiL5ECQ7kRxLKDm8aKKD7seGZfbINtRVJDyFhKChA1a+K2bfqIAaBo1EMDv+6FWNT1Q5cRKjFA==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -1752,13 +1769,13 @@ packages: react: optional: true dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 '@emotion/react': 11.11.1(react@18.2.0) '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(react@18.2.0) - '@mui/private-theming': 5.14.7(react@18.2.0) - '@mui/styled-engine': 5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@mui/private-theming': 5.14.10(react@18.2.0) + '@mui/styled-engine': 5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) '@mui/types': 7.2.4 - '@mui/utils': 5.14.7(react@18.2.0) + '@mui/utils': 5.14.10(react@18.2.0) clsx: 2.0.0 csstype: 3.1.2 prop-types: 15.8.1 @@ -1774,18 +1791,20 @@ packages: optional: true dev: false - /@mui/utils@5.14.7(react@18.2.0): - resolution: {integrity: sha512-RtheP/aBoPogVdi8vj8Vo2IFnRa4mZVmnD0RGlVZ49yF60rZs+xP4/KbpIrTr83xVs34QmHQ2aQ+IX7I0a0dDw==} + /@mui/utils@5.14.10(react@18.2.0): + resolution: {integrity: sha512-Rn+vYQX7FxkcW0riDX/clNUwKuOJFH45HiULxwmpgnzQoQr3A0lb+QYwaZ+FAkZrR7qLoHKmLQlcItu6LT0y/Q==} engines: {node: '>=12.0.0'} peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 peerDependenciesMeta: + '@types/react': + optional: true react: optional: true dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 '@types/prop-types': 15.7.5 - '@types/react-is': 18.2.1 prop-types: 15.8.1 react: 18.2.0 react-is: 18.2.0 @@ -2125,12 +2144,6 @@ packages: /@types/range-parser@1.2.4: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} - /@types/react-is@18.2.1: - resolution: {integrity: sha512-wyUkmaaSZEzFZivD8F2ftSyAfk6L+DfFliVj/mYdOXbVjRcS87fQJLTnhk6dRZPuJjI+9g6RZJO4PNCngUrmyw==} - dependencies: - '@types/react': 18.2.14 - dev: false - /@types/react-transition-group@4.4.6: resolution: {integrity: sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==} dependencies: @@ -3468,7 +3481,7 @@ packages: /dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 csstype: 3.1.2 dev: false @@ -3737,16 +3750,16 @@ packages: - supports-color dev: true - /eslint@8.48.0: - resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} + /eslint@8.49.0: + resolution: {integrity: sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) '@eslint-community/regexpp': 4.6.2 '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.48.0 - '@humanwhocodes/config-array': 0.11.10 + '@eslint/js': 8.49.0 + '@humanwhocodes/config-array': 0.11.11 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -5537,8 +5550,8 @@ packages: /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - /json-schema-to-typescript@13.0.2: - resolution: {integrity: sha512-TCaEVW4aI2FmMQe7f98mvr3/oiVmXEC1xZjkTZ9L/BSoTXFlC7p64mD5AD2d8XWycNBQZUnHwXL5iVXt1HWwNQ==} + /json-schema-to-typescript@13.1.1: + resolution: {integrity: sha512-F3CYhtA7F3yPbb8vF7sFchk/2dnr1/yTKf8RcvoNpjnh67ZS/ZMH1ElLt5KHAtf2/bymiejLQQszszPWEeTdSw==} engines: {node: '>=12.0.0'} hasBin: true dependencies: @@ -6552,6 +6565,13 @@ packages: resolution: {integrity: sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==} engines: {node: '>=14'} hasBin: true + dev: true + + /prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} + engines: {node: '>=14'} + hasBin: true + dev: false /pretty-format@23.6.0: resolution: {integrity: sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==} @@ -6735,7 +6755,7 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -7827,6 +7847,12 @@ packages: /uuid@9.0.0: resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} hasBin: true + dev: true + + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -8050,8 +8076,8 @@ packages: resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==} dev: false - github.com/theopensystemslab/planx-core/17f3bf5: - resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/17f3bf5} + github.com/theopensystemslab/planx-core/5090b78: + resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/5090b78} name: '@opensystemslab/planx-core' version: 1.0.0 prepare: true @@ -8059,16 +8085,16 @@ packages: dependencies: '@emotion/react': 11.11.1(react@18.2.0) '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(react@18.2.0) - '@mui/material': 5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': 5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react-dom@18.2.0)(react@18.2.0) '@types/geojson': 7946.0.10 ajv: 8.12.0 ajv-formats: 2.1.1(ajv@8.12.0) docx: 8.2.2 - eslint: 8.48.0 + eslint: 8.49.0 fast-xml-parser: 4.2.7 graphql: 16.8.0 graphql-request: 6.1.0(graphql@16.8.0) - json-schema-to-typescript: 13.0.2 + json-schema-to-typescript: 13.1.1 lodash.capitalize: 4.2.1 lodash.get: 4.4.2 lodash.groupby: 4.6.0 @@ -8080,11 +8106,11 @@ packages: lodash.property: 4.4.2 lodash.set: 4.3.2 lodash.startcase: 4.4.0 - prettier: 3.0.2 + prettier: 3.0.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) type-fest: 4.3.1 - uuid: 9.0.0 + uuid: 9.0.1 zod: 3.22.2 transitivePeerDependencies: - '@types/react' diff --git a/e2e/tests/api-driven/package.json b/e2e/tests/api-driven/package.json index de91478a3e..b2c3dafa12 100644 --- a/e2e/tests/api-driven/package.json +++ b/e2e/tests/api-driven/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@cucumber/cucumber": "^9.3.0", - "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#4e3d09f", + "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#5090b78", "axios": "^1.4.0", "dotenv": "^16.3.1", "dotenv-expand": "^10.0.0", diff --git a/e2e/tests/api-driven/pnpm-lock.yaml b/e2e/tests/api-driven/pnpm-lock.yaml index 199b1e8691..9598f3419d 100644 --- a/e2e/tests/api-driven/pnpm-lock.yaml +++ b/e2e/tests/api-driven/pnpm-lock.yaml @@ -9,8 +9,8 @@ dependencies: specifier: ^9.3.0 version: 9.3.0 '@opensystemslab/planx-core': - specifier: git+https://github.com/theopensystemslab/planx-core#4e3d09f - version: github.com/theopensystemslab/planx-core/4e3d09f + specifier: git+https://github.com/theopensystemslab/planx-core#5090b78 + version: github.com/theopensystemslab/planx-core/5090b78 axios: specifier: ^1.4.0 version: 1.4.0 @@ -82,6 +82,13 @@ packages: regenerator-runtime: 0.14.0 dev: false + /@babel/runtime@7.22.15: + resolution: {integrity: sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.0 + dev: false + /@babel/runtime@7.22.6: resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==} engines: {node: '>=6.9.0'} @@ -369,13 +376,13 @@ packages: resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} dev: false - /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.49.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.48.0 + eslint: 8.49.0 eslint-visitor-keys: 3.4.3 dev: false @@ -401,8 +408,8 @@ packages: - supports-color dev: false - /@eslint/js@8.48.0: - resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} + /@eslint/js@8.49.0: + resolution: {integrity: sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false @@ -442,8 +449,8 @@ packages: graphql: 16.8.0 dev: false - /@humanwhocodes/config-array@0.11.10: - resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} + /@humanwhocodes/config-array@0.11.11: + resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -482,8 +489,8 @@ packages: resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} dev: false - /@mui/base@5.0.0-beta.13(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-uC0l97pBspfDAp+iz2cJq8YZ8Sd9i73V77+WzUiOAckIVEyCm5dyVDZCCO2/phmzckVEeZCGcytybkjMQuhPQw==} + /@mui/base@5.0.0-beta.16(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-OYxhC81c9bO0wobGcM8rrY5bRwpCXAI21BL0P2wz/2vTv4ek7ALz9+U5M8wgdmtRNUhmCmAB4L2WRwFRf5Cd8Q==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -493,25 +500,23 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.22.11 - '@emotion/is-prop-valid': 1.2.1 + '@babel/runtime': 7.22.15 '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0)(react@18.2.0) '@mui/types': 7.2.4 - '@mui/utils': 5.14.7(react@18.2.0) + '@mui/utils': 5.14.10(react@18.2.0) '@popperjs/core': 2.11.8 clsx: 2.0.0 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-is: 18.2.0 dev: false - /@mui/core-downloads-tracker@5.14.7: - resolution: {integrity: sha512-sCWTUNElBPgB30iLvWe3PU7SIlTKZNf6/E/sko85iHVeHCM6WPkDw+y89CrZYjhFNmPqt2fIQM/pZu+rP2lFLA==} + /@mui/core-downloads-tracker@5.14.10: + resolution: {integrity: sha512-kPHu/NhZq1k+vSZR5wq3AyUfD4bnfWAeuKpps0+8PS7ZHQ2Lyv1cXJh+PlFdCIOa0PK98rk3JPwMzS8BMhdHwQ==} dev: false - /@mui/material@5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-jIZj9F7zMv6IlyaYDVv5M2Kp20jIX8c0kzuwteySHS/A0IvPVyomQEPtWc51MCbpDNCqzwoZUp3rQtA2lI8k7A==} + /@mui/material@5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ejFMppnO+lzBXpzju+N4SSz0Mhmi5sihXUGcr5FxpgB6bfUP0Lpe32O0Sw/3s8xlmLEvG1fqVT0rRyAVMlCA+A==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -527,14 +532,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 '@emotion/react': 11.11.1(react@18.2.0) '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(react@18.2.0) - '@mui/base': 5.0.0-beta.13(react-dom@18.2.0)(react@18.2.0) - '@mui/core-downloads-tracker': 5.14.7 - '@mui/system': 5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@mui/base': 5.0.0-beta.16(react-dom@18.2.0)(react@18.2.0) + '@mui/core-downloads-tracker': 5.14.10 + '@mui/system': 5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) '@mui/types': 7.2.4 - '@mui/utils': 5.14.7(react@18.2.0) + '@mui/utils': 5.14.10(react@18.2.0) '@types/react-transition-group': 4.4.6 clsx: 2.0.0 csstype: 3.1.2 @@ -545,8 +550,8 @@ packages: react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) dev: false - /@mui/private-theming@5.14.7(react@18.2.0): - resolution: {integrity: sha512-Y86+hmDnJab2Ka42PgxKpK3oL7EiacbeeX3X/lG9LGO0wSc45wZjHeTfIlVSkkUCkexiMKEJp5NlSjZhr27NRQ==} + /@mui/private-theming@5.14.10(react@18.2.0): + resolution: {integrity: sha512-f67xOj3H06wWDT9xBg7hVL/HSKNF+HG1Kx0Pm23skkbEqD2Ef2Lif64e5nPdmWVv+7cISCYtSuE2aeuzrZe78w==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -555,14 +560,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.22.11 - '@mui/utils': 5.14.7(react@18.2.0) + '@babel/runtime': 7.22.15 + '@mui/utils': 5.14.10(react@18.2.0) prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styled-engine@5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): - resolution: {integrity: sha512-hKBETEDsIAkL8/mBwPiQj/vw28OeIhMXC3Tvj4J2bb9snxAKpiZioR1PwqP+6P41twsC/GKBd0Vr9oaWYaHuMg==} + /@mui/styled-engine@5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): + resolution: {integrity: sha512-EJckxmQHrsBvDbFu1trJkvjNw/1R7jfNarnqPSnL+jEQawCkQIqVELWLrlOa611TFtxSJGkdUfCFXeJC203HVg==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -574,7 +579,7 @@ packages: '@emotion/styled': optional: true dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 '@emotion/cache': 11.11.0 '@emotion/react': 11.11.1(react@18.2.0) '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(react@18.2.0) @@ -583,8 +588,8 @@ packages: react: 18.2.0 dev: false - /@mui/system@5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): - resolution: {integrity: sha512-jeZtHglc+Pi6qjGoopT6O4RqYXVBMqHVOsjMGP0hxGSSPm1T4gsAu7jU8eqGx9YwwjvvJ0eotTjFqw7iJ6qE2Q==} + /@mui/system@5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): + resolution: {integrity: sha512-QQmtTG/R4gjmLiL5ECQ7kRxLKDm8aKKD7seGZfbINtRVJDyFhKChA1a+K2bfqIAaBo1EMDv+6FWNT1Q5cRKjFA==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -599,13 +604,13 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 '@emotion/react': 11.11.1(react@18.2.0) '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(react@18.2.0) - '@mui/private-theming': 5.14.7(react@18.2.0) - '@mui/styled-engine': 5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@mui/private-theming': 5.14.10(react@18.2.0) + '@mui/styled-engine': 5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) '@mui/types': 7.2.4 - '@mui/utils': 5.14.7(react@18.2.0) + '@mui/utils': 5.14.10(react@18.2.0) clsx: 2.0.0 csstype: 3.1.2 prop-types: 15.8.1 @@ -621,15 +626,18 @@ packages: optional: true dev: false - /@mui/utils@5.14.7(react@18.2.0): - resolution: {integrity: sha512-RtheP/aBoPogVdi8vj8Vo2IFnRa4mZVmnD0RGlVZ49yF60rZs+xP4/KbpIrTr83xVs34QmHQ2aQ+IX7I0a0dDw==} + /@mui/utils@5.14.10(react@18.2.0): + resolution: {integrity: sha512-Rn+vYQX7FxkcW0riDX/clNUwKuOJFH45HiULxwmpgnzQoQr3A0lb+QYwaZ+FAkZrR7qLoHKmLQlcItu6LT0y/Q==} engines: {node: '>=12.0.0'} peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 '@types/prop-types': 15.7.5 - '@types/react-is': 18.2.1 prop-types: 15.8.1 react: 18.2.0 react-is: 18.2.0 @@ -723,12 +731,6 @@ packages: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: false - /@types/react-is@18.2.1: - resolution: {integrity: sha512-wyUkmaaSZEzFZivD8F2ftSyAfk6L+DfFliVj/mYdOXbVjRcS87fQJLTnhk6dRZPuJjI+9g6RZJO4PNCngUrmyw==} - dependencies: - '@types/react': 18.2.18 - dev: false - /@types/react-transition-group@4.4.6: resolution: {integrity: sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==} dependencies: @@ -1101,7 +1103,7 @@ packages: /dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 csstype: 3.1.2 dev: false @@ -1188,16 +1190,16 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /eslint@8.48.0: - resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} + /eslint@8.49.0: + resolution: {integrity: sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) '@eslint-community/regexpp': 4.6.2 '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.48.0 - '@humanwhocodes/config-array': 0.11.10 + '@eslint/js': 8.49.0 + '@humanwhocodes/config-array': 0.11.11 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -1588,8 +1590,8 @@ packages: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: false - /json-schema-to-typescript@13.0.2: - resolution: {integrity: sha512-TCaEVW4aI2FmMQe7f98mvr3/oiVmXEC1xZjkTZ9L/BSoTXFlC7p64mD5AD2d8XWycNBQZUnHwXL5iVXt1HWwNQ==} + /json-schema-to-typescript@13.1.1: + resolution: {integrity: sha512-F3CYhtA7F3yPbb8vF7sFchk/2dnr1/yTKf8RcvoNpjnh67ZS/ZMH1ElLt5KHAtf2/bymiejLQQszszPWEeTdSw==} engines: {node: '>=12.0.0'} hasBin: true dependencies: @@ -1968,8 +1970,8 @@ packages: hasBin: true dev: false - /prettier@3.0.2: - resolution: {integrity: sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==} + /prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} engines: {node: '>=14'} hasBin: true dev: false @@ -2037,7 +2039,7 @@ packages: react: '>=16.6.0' react-dom: '>=16.6.0' dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -2405,6 +2407,11 @@ packages: hasBin: true dev: false + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false + /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true @@ -2498,8 +2505,8 @@ packages: resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==} dev: false - github.com/theopensystemslab/planx-core/4e3d09f: - resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/4e3d09f} + github.com/theopensystemslab/planx-core/5090b78: + resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/5090b78} name: '@opensystemslab/planx-core' version: 1.0.0 prepare: true @@ -2507,16 +2514,16 @@ packages: dependencies: '@emotion/react': 11.11.1(react@18.2.0) '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(react@18.2.0) - '@mui/material': 5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': 5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react-dom@18.2.0)(react@18.2.0) '@types/geojson': 7946.0.10 ajv: 8.12.0 ajv-formats: 2.1.1(ajv@8.12.0) docx: 8.2.2 - eslint: 8.48.0 + eslint: 8.49.0 fast-xml-parser: 4.2.7 graphql: 16.8.0 graphql-request: 6.1.0(graphql@16.8.0) - json-schema-to-typescript: 13.0.2 + json-schema-to-typescript: 13.1.1 lodash.capitalize: 4.2.1 lodash.get: 4.4.2 lodash.groupby: 4.6.0 @@ -2528,11 +2535,11 @@ packages: lodash.property: 4.4.2 lodash.set: 4.3.2 lodash.startcase: 4.4.0 - prettier: 3.0.2 + prettier: 3.0.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) type-fest: 4.3.1 - uuid: 9.0.0 + uuid: 9.0.1 zod: 3.22.2 transitivePeerDependencies: - '@types/react' diff --git a/e2e/tests/ui-driven/package.json b/e2e/tests/ui-driven/package.json index eead6768e2..827f66d196 100644 --- a/e2e/tests/ui-driven/package.json +++ b/e2e/tests/ui-driven/package.json @@ -8,7 +8,7 @@ "postinstall": "./install-dependencies.sh" }, "dependencies": { - "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#4e3d09f", + "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#5090b78", "axios": "^1.4.0", "dotenv": "^16.3.1", "eslint": "^8.44.0", diff --git a/e2e/tests/ui-driven/pnpm-lock.yaml b/e2e/tests/ui-driven/pnpm-lock.yaml index 7a9edbc70f..0d387e3e16 100644 --- a/e2e/tests/ui-driven/pnpm-lock.yaml +++ b/e2e/tests/ui-driven/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@opensystemslab/planx-core': - specifier: git+https://github.com/theopensystemslab/planx-core#4e3d09f - version: github.com/theopensystemslab/planx-core/4e3d09f + specifier: git+https://github.com/theopensystemslab/planx-core#5090b78 + version: github.com/theopensystemslab/planx-core/5090b78 axios: specifier: ^1.4.0 version: 1.4.0 @@ -94,6 +94,13 @@ packages: regenerator-runtime: 0.14.0 dev: false + /@babel/runtime@7.22.15: + resolution: {integrity: sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.0 + dev: false + /@babel/types@7.22.10: resolution: {integrity: sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg==} engines: {node: '>=6.9.0'} @@ -236,13 +243,13 @@ packages: eslint: 8.47.0 eslint-visitor-keys: 3.4.3 - /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.49.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.48.0 + eslint: 8.49.0 eslint-visitor-keys: 3.4.3 dev: false @@ -270,8 +277,8 @@ packages: resolution: {integrity: sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /@eslint/js@8.48.0: - resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} + /@eslint/js@8.49.0: + resolution: {integrity: sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false @@ -321,6 +328,17 @@ packages: transitivePeerDependencies: - supports-color + /@humanwhocodes/config-array@0.11.11: + resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: false + /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} @@ -332,8 +350,8 @@ packages: resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} dev: false - /@mui/base@5.0.0-beta.13(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-uC0l97pBspfDAp+iz2cJq8YZ8Sd9i73V77+WzUiOAckIVEyCm5dyVDZCCO2/phmzckVEeZCGcytybkjMQuhPQw==} + /@mui/base@5.0.0-beta.16(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-OYxhC81c9bO0wobGcM8rrY5bRwpCXAI21BL0P2wz/2vTv4ek7ALz9+U5M8wgdmtRNUhmCmAB4L2WRwFRf5Cd8Q==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -343,25 +361,23 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.22.10 - '@emotion/is-prop-valid': 1.2.1 + '@babel/runtime': 7.22.15 '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0)(react@18.2.0) '@mui/types': 7.2.4 - '@mui/utils': 5.14.7(react@18.2.0) + '@mui/utils': 5.14.10(react@18.2.0) '@popperjs/core': 2.11.8 clsx: 2.0.0 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-is: 18.2.0 dev: false - /@mui/core-downloads-tracker@5.14.7: - resolution: {integrity: sha512-sCWTUNElBPgB30iLvWe3PU7SIlTKZNf6/E/sko85iHVeHCM6WPkDw+y89CrZYjhFNmPqt2fIQM/pZu+rP2lFLA==} + /@mui/core-downloads-tracker@5.14.10: + resolution: {integrity: sha512-kPHu/NhZq1k+vSZR5wq3AyUfD4bnfWAeuKpps0+8PS7ZHQ2Lyv1cXJh+PlFdCIOa0PK98rk3JPwMzS8BMhdHwQ==} dev: false - /@mui/material@5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-jIZj9F7zMv6IlyaYDVv5M2Kp20jIX8c0kzuwteySHS/A0IvPVyomQEPtWc51MCbpDNCqzwoZUp3rQtA2lI8k7A==} + /@mui/material@5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ejFMppnO+lzBXpzju+N4SSz0Mhmi5sihXUGcr5FxpgB6bfUP0Lpe32O0Sw/3s8xlmLEvG1fqVT0rRyAVMlCA+A==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -377,14 +393,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.22.10 + '@babel/runtime': 7.22.15 '@emotion/react': 11.11.1(react@18.2.0) '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(react@18.2.0) - '@mui/base': 5.0.0-beta.13(react-dom@18.2.0)(react@18.2.0) - '@mui/core-downloads-tracker': 5.14.7 - '@mui/system': 5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@mui/base': 5.0.0-beta.16(react-dom@18.2.0)(react@18.2.0) + '@mui/core-downloads-tracker': 5.14.10 + '@mui/system': 5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) '@mui/types': 7.2.4 - '@mui/utils': 5.14.7(react@18.2.0) + '@mui/utils': 5.14.10(react@18.2.0) '@types/react-transition-group': 4.4.6 clsx: 2.0.0 csstype: 3.1.2 @@ -395,8 +411,8 @@ packages: react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) dev: false - /@mui/private-theming@5.14.7(react@18.2.0): - resolution: {integrity: sha512-Y86+hmDnJab2Ka42PgxKpK3oL7EiacbeeX3X/lG9LGO0wSc45wZjHeTfIlVSkkUCkexiMKEJp5NlSjZhr27NRQ==} + /@mui/private-theming@5.14.10(react@18.2.0): + resolution: {integrity: sha512-f67xOj3H06wWDT9xBg7hVL/HSKNF+HG1Kx0Pm23skkbEqD2Ef2Lif64e5nPdmWVv+7cISCYtSuE2aeuzrZe78w==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -405,14 +421,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.22.10 - '@mui/utils': 5.14.7(react@18.2.0) + '@babel/runtime': 7.22.15 + '@mui/utils': 5.14.10(react@18.2.0) prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styled-engine@5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): - resolution: {integrity: sha512-hKBETEDsIAkL8/mBwPiQj/vw28OeIhMXC3Tvj4J2bb9snxAKpiZioR1PwqP+6P41twsC/GKBd0Vr9oaWYaHuMg==} + /@mui/styled-engine@5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): + resolution: {integrity: sha512-EJckxmQHrsBvDbFu1trJkvjNw/1R7jfNarnqPSnL+jEQawCkQIqVELWLrlOa611TFtxSJGkdUfCFXeJC203HVg==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -424,7 +440,7 @@ packages: '@emotion/styled': optional: true dependencies: - '@babel/runtime': 7.22.10 + '@babel/runtime': 7.22.15 '@emotion/cache': 11.11.0 '@emotion/react': 11.11.1(react@18.2.0) '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(react@18.2.0) @@ -433,8 +449,8 @@ packages: react: 18.2.0 dev: false - /@mui/system@5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): - resolution: {integrity: sha512-jeZtHglc+Pi6qjGoopT6O4RqYXVBMqHVOsjMGP0hxGSSPm1T4gsAu7jU8eqGx9YwwjvvJ0eotTjFqw7iJ6qE2Q==} + /@mui/system@5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): + resolution: {integrity: sha512-QQmtTG/R4gjmLiL5ECQ7kRxLKDm8aKKD7seGZfbINtRVJDyFhKChA1a+K2bfqIAaBo1EMDv+6FWNT1Q5cRKjFA==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -449,13 +465,13 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.22.10 + '@babel/runtime': 7.22.15 '@emotion/react': 11.11.1(react@18.2.0) '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(react@18.2.0) - '@mui/private-theming': 5.14.7(react@18.2.0) - '@mui/styled-engine': 5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@mui/private-theming': 5.14.10(react@18.2.0) + '@mui/styled-engine': 5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) '@mui/types': 7.2.4 - '@mui/utils': 5.14.7(react@18.2.0) + '@mui/utils': 5.14.10(react@18.2.0) clsx: 2.0.0 csstype: 3.1.2 prop-types: 15.8.1 @@ -471,15 +487,18 @@ packages: optional: true dev: false - /@mui/utils@5.14.7(react@18.2.0): - resolution: {integrity: sha512-RtheP/aBoPogVdi8vj8Vo2IFnRa4mZVmnD0RGlVZ49yF60rZs+xP4/KbpIrTr83xVs34QmHQ2aQ+IX7I0a0dDw==} + /@mui/utils@5.14.10(react@18.2.0): + resolution: {integrity: sha512-Rn+vYQX7FxkcW0riDX/clNUwKuOJFH45HiULxwmpgnzQoQr3A0lb+QYwaZ+FAkZrR7qLoHKmLQlcItu6LT0y/Q==} engines: {node: '>=12.0.0'} peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - '@babel/runtime': 7.22.10 + '@babel/runtime': 7.22.15 '@types/prop-types': 15.7.5 - '@types/react-is': 18.2.1 prop-types: 15.8.1 react: 18.2.0 react-is: 18.2.0 @@ -560,12 +579,6 @@ packages: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: false - /@types/react-is@18.2.1: - resolution: {integrity: sha512-wyUkmaaSZEzFZivD8F2ftSyAfk6L+DfFliVj/mYdOXbVjRcS87fQJLTnhk6dRZPuJjI+9g6RZJO4PNCngUrmyw==} - dependencies: - '@types/react': 18.2.20 - dev: false - /@types/react-transition-group@4.4.6: resolution: {integrity: sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==} dependencies: @@ -976,7 +989,7 @@ packages: /dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: - '@babel/runtime': 7.22.10 + '@babel/runtime': 7.22.15 csstype: 3.1.2 dev: false @@ -1120,16 +1133,16 @@ packages: transitivePeerDependencies: - supports-color - /eslint@8.48.0: - resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} + /eslint@8.49.0: + resolution: {integrity: sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) '@eslint-community/regexpp': 4.6.2 '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.48.0 - '@humanwhocodes/config-array': 0.11.10 + '@eslint/js': 8.49.0 + '@humanwhocodes/config-array': 0.11.11 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -1517,8 +1530,8 @@ packages: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: false - /json-schema-to-typescript@13.0.2: - resolution: {integrity: sha512-TCaEVW4aI2FmMQe7f98mvr3/oiVmXEC1xZjkTZ9L/BSoTXFlC7p64mD5AD2d8XWycNBQZUnHwXL5iVXt1HWwNQ==} + /json-schema-to-typescript@13.1.1: + resolution: {integrity: sha512-F3CYhtA7F3yPbb8vF7sFchk/2dnr1/yTKf8RcvoNpjnh67ZS/ZMH1ElLt5KHAtf2/bymiejLQQszszPWEeTdSw==} engines: {node: '>=12.0.0'} hasBin: true dependencies: @@ -1903,8 +1916,8 @@ packages: hasBin: true dev: false - /prettier@3.0.2: - resolution: {integrity: sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==} + /prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} engines: {node: '>=14'} hasBin: true dev: false @@ -1975,7 +1988,7 @@ packages: react: '>=16.6.0' react-dom: '>=16.6.0' dependencies: - '@babel/runtime': 7.22.10 + '@babel/runtime': 7.22.15 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -2293,6 +2306,11 @@ packages: hasBin: true dev: false + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false + /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -2367,8 +2385,8 @@ packages: resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==} dev: false - github.com/theopensystemslab/planx-core/4e3d09f: - resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/4e3d09f} + github.com/theopensystemslab/planx-core/5090b78: + resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/5090b78} name: '@opensystemslab/planx-core' version: 1.0.0 prepare: true @@ -2376,16 +2394,16 @@ packages: dependencies: '@emotion/react': 11.11.1(react@18.2.0) '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(react@18.2.0) - '@mui/material': 5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': 5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react-dom@18.2.0)(react@18.2.0) '@types/geojson': 7946.0.10 ajv: 8.12.0 ajv-formats: 2.1.1(ajv@8.12.0) docx: 8.2.2 - eslint: 8.48.0 + eslint: 8.49.0 fast-xml-parser: 4.2.7 graphql: 16.8.0 graphql-request: 6.1.0(graphql@16.8.0) - json-schema-to-typescript: 13.0.2 + json-schema-to-typescript: 13.1.1 lodash.capitalize: 4.2.1 lodash.get: 4.4.2 lodash.groupby: 4.6.0 @@ -2397,11 +2415,11 @@ packages: lodash.property: 4.4.2 lodash.set: 4.3.2 lodash.startcase: 4.4.0 - prettier: 3.0.2 + prettier: 3.0.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) type-fest: 4.3.1 - uuid: 9.0.0 + uuid: 9.0.1 zod: 3.22.2 transitivePeerDependencies: - '@types/react' diff --git a/editor.planx.uk/package.json b/editor.planx.uk/package.json index 8f82ea9b81..0eb1cba4fc 100644 --- a/editor.planx.uk/package.json +++ b/editor.planx.uk/package.json @@ -14,7 +14,7 @@ "@mui/styles": "^5.14.5", "@mui/utils": "^5.14.5", "@opensystemslab/map": "^0.7.5", - "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#4e3d09f", + "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#5090b78", "@tiptap/core": "^2.0.3", "@tiptap/extension-bold": "^2.0.3", "@tiptap/extension-bubble-menu": "^2.1.6", diff --git a/editor.planx.uk/pnpm-lock.yaml b/editor.planx.uk/pnpm-lock.yaml index 1bbee1fe10..f987175df6 100644 --- a/editor.planx.uk/pnpm-lock.yaml +++ b/editor.planx.uk/pnpm-lock.yaml @@ -46,8 +46,8 @@ dependencies: specifier: ^0.7.5 version: 0.7.5 '@opensystemslab/planx-core': - specifier: git+https://github.com/theopensystemslab/planx-core#4e3d09f - version: github.com/theopensystemslab/planx-core/4e3d09f(@types/react@18.2.20) + specifier: git+https://github.com/theopensystemslab/planx-core#5090b78 + version: github.com/theopensystemslab/planx-core/5090b78(@types/react@18.2.20) '@tiptap/core': specifier: ^2.0.3 version: 2.0.3(@tiptap/pm@2.0.3) @@ -3194,6 +3194,13 @@ packages: dependencies: regenerator-runtime: 0.14.0 + /@babel/runtime@7.22.15: + resolution: {integrity: sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.0 + dev: false + /@babel/runtime@7.22.6: resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==} engines: {node: '>=6.9.0'} @@ -4311,13 +4318,13 @@ packages: eslint: 8.44.0 eslint-visitor-keys: 3.4.3 - /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.49.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.48.0 + eslint: 8.49.0 eslint-visitor-keys: 3.4.3 dev: false @@ -4367,8 +4374,8 @@ packages: resolution: {integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /@eslint/js@8.48.0: - resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} + /@eslint/js@8.49.0: + resolution: {integrity: sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false @@ -4458,6 +4465,17 @@ packages: transitivePeerDependencies: - supports-color + /@humanwhocodes/config-array@0.11.11: + resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: false + /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} @@ -5090,8 +5108,8 @@ packages: react-is: 18.2.0 dev: false - /@mui/base@5.0.0-beta.13(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-uC0l97pBspfDAp+iz2cJq8YZ8Sd9i73V77+WzUiOAckIVEyCm5dyVDZCCO2/phmzckVEeZCGcytybkjMQuhPQw==} + /@mui/base@5.0.0-beta.16(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-OYxhC81c9bO0wobGcM8rrY5bRwpCXAI21BL0P2wz/2vTv4ek7ALz9+U5M8wgdmtRNUhmCmAB4L2WRwFRf5Cd8Q==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -5101,26 +5119,24 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.22.11 - '@emotion/is-prop-valid': 1.2.1 + '@babel/runtime': 7.22.15 '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0)(react@18.2.0) '@mui/types': 7.2.4(@types/react@18.2.20) - '@mui/utils': 5.14.7(react@18.2.0) + '@mui/utils': 5.14.10(@types/react@18.2.20)(react@18.2.0) '@popperjs/core': 2.11.8 '@types/react': 18.2.20 clsx: 2.0.0 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-is: 18.2.0 dev: false - /@mui/core-downloads-tracker@5.14.5: - resolution: {integrity: sha512-+wpGH1USwPcKMFPMvXqYPC6fEvhxM3FzxC8lyDiNK/imLyyJ6y2DPb1Oue7OGIKJWBmYBqrWWtfovrxd1aJHTA==} + /@mui/core-downloads-tracker@5.14.10: + resolution: {integrity: sha512-kPHu/NhZq1k+vSZR5wq3AyUfD4bnfWAeuKpps0+8PS7ZHQ2Lyv1cXJh+PlFdCIOa0PK98rk3JPwMzS8BMhdHwQ==} dev: false - /@mui/core-downloads-tracker@5.14.7: - resolution: {integrity: sha512-sCWTUNElBPgB30iLvWe3PU7SIlTKZNf6/E/sko85iHVeHCM6WPkDw+y89CrZYjhFNmPqt2fIQM/pZu+rP2lFLA==} + /@mui/core-downloads-tracker@5.14.5: + resolution: {integrity: sha512-+wpGH1USwPcKMFPMvXqYPC6fEvhxM3FzxC8lyDiNK/imLyyJ6y2DPb1Oue7OGIKJWBmYBqrWWtfovrxd1aJHTA==} dev: false /@mui/icons-material@5.14.3(@mui/material@5.14.5)(@types/react@18.2.20)(react@18.2.0): @@ -5140,8 +5156,8 @@ packages: react: 18.2.0 dev: false - /@mui/material@5.14.5(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-4qa4GMfuZH0Ai3mttk5ccXP8a3sf7aPlAJwyMrUSz6h9hPri6BPou94zeu3rENhhmKLby9S/W1y+pmficy8JKA==} + /@mui/material@5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ejFMppnO+lzBXpzju+N4SSz0Mhmi5sihXUGcr5FxpgB6bfUP0Lpe32O0Sw/3s8xlmLEvG1fqVT0rRyAVMlCA+A==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -5157,14 +5173,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.22.15 '@emotion/react': 11.11.1(@types/react@18.2.20)(react@18.2.0) '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.20)(react@18.2.0) - '@mui/base': 5.0.0-beta.11(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@mui/core-downloads-tracker': 5.14.5 - '@mui/system': 5.14.5(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.20)(react@18.2.0) + '@mui/base': 5.0.0-beta.16(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + '@mui/core-downloads-tracker': 5.14.10 + '@mui/system': 5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.20)(react@18.2.0) '@mui/types': 7.2.4(@types/react@18.2.20) - '@mui/utils': 5.14.5(react@18.2.0) + '@mui/utils': 5.14.10(@types/react@18.2.20)(react@18.2.0) '@types/react': 18.2.20 '@types/react-transition-group': 4.4.6 clsx: 2.0.0 @@ -5176,8 +5192,8 @@ packages: react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) dev: false - /@mui/material@5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-jIZj9F7zMv6IlyaYDVv5M2Kp20jIX8c0kzuwteySHS/A0IvPVyomQEPtWc51MCbpDNCqzwoZUp3rQtA2lI8k7A==} + /@mui/material@5.14.5(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-4qa4GMfuZH0Ai3mttk5ccXP8a3sf7aPlAJwyMrUSz6h9hPri6BPou94zeu3rENhhmKLby9S/W1y+pmficy8JKA==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -5193,14 +5209,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.6 '@emotion/react': 11.11.1(@types/react@18.2.20)(react@18.2.0) '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.20)(react@18.2.0) - '@mui/base': 5.0.0-beta.13(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@mui/core-downloads-tracker': 5.14.7 - '@mui/system': 5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.20)(react@18.2.0) + '@mui/base': 5.0.0-beta.11(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + '@mui/core-downloads-tracker': 5.14.5 + '@mui/system': 5.14.5(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.20)(react@18.2.0) '@mui/types': 7.2.4(@types/react@18.2.20) - '@mui/utils': 5.14.7(react@18.2.0) + '@mui/utils': 5.14.5(react@18.2.0) '@types/react': 18.2.20 '@types/react-transition-group': 4.4.6 clsx: 2.0.0 @@ -5212,6 +5228,23 @@ packages: react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) dev: false + /@mui/private-theming@5.14.10(@types/react@18.2.20)(react@18.2.0): + resolution: {integrity: sha512-f67xOj3H06wWDT9xBg7hVL/HSKNF+HG1Kx0Pm23skkbEqD2Ef2Lif64e5nPdmWVv+7cISCYtSuE2aeuzrZe78w==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.22.15 + '@mui/utils': 5.14.10(@types/react@18.2.20)(react@18.2.0) + '@types/react': 18.2.20 + prop-types: 15.8.1 + react: 18.2.0 + dev: false + /@mui/private-theming@5.14.5(@types/react@18.2.20)(react@18.2.0): resolution: {integrity: sha512-cC4C5RrpXpDaaZyH9QwmPhRLgz+f2SYbOty3cPkk4qPSOSfif2ZEcDD9HTENKDDd9deB+xkPKzzZhi8cxIx8Ig==} engines: {node: '>=12.0.0'} @@ -5246,6 +5279,28 @@ packages: react: 18.2.0 dev: false + /@mui/styled-engine@5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): + resolution: {integrity: sha512-EJckxmQHrsBvDbFu1trJkvjNw/1R7jfNarnqPSnL+jEQawCkQIqVELWLrlOa611TFtxSJGkdUfCFXeJC203HVg==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.4.1 + '@emotion/styled': ^11.3.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + dependencies: + '@babel/runtime': 7.22.15 + '@emotion/cache': 11.11.0 + '@emotion/react': 11.11.1(@types/react@18.2.20)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.20)(react@18.2.0) + csstype: 3.1.2 + prop-types: 15.8.1 + react: 18.2.0 + dev: false + /@mui/styled-engine@5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): resolution: {integrity: sha512-hKBETEDsIAkL8/mBwPiQj/vw28OeIhMXC3Tvj4J2bb9snxAKpiZioR1PwqP+6P41twsC/GKBd0Vr9oaWYaHuMg==} engines: {node: '>=12.0.0'} @@ -5299,8 +5354,8 @@ packages: react: 18.2.0 dev: false - /@mui/system@5.14.5(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.20)(react@18.2.0): - resolution: {integrity: sha512-mextXZHDeGcR7E1kx43TRARrVXy+gI4wzpUgNv7MqZs1dvTVXQGVeAT6ydj9d6FUqHBPMNLGV/21vJOrpqsL+w==} + /@mui/system@5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.20)(react@18.2.0): + resolution: {integrity: sha512-QQmtTG/R4gjmLiL5ECQ7kRxLKDm8aKKD7seGZfbINtRVJDyFhKChA1a+K2bfqIAaBo1EMDv+6FWNT1Q5cRKjFA==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -5315,13 +5370,13 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 '@emotion/react': 11.11.1(@types/react@18.2.20)(react@18.2.0) '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.20)(react@18.2.0) - '@mui/private-theming': 5.14.7(@types/react@18.2.20)(react@18.2.0) - '@mui/styled-engine': 5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@mui/private-theming': 5.14.10(@types/react@18.2.20)(react@18.2.0) + '@mui/styled-engine': 5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) '@mui/types': 7.2.4(@types/react@18.2.20) - '@mui/utils': 5.14.7(react@18.2.0) + '@mui/utils': 5.14.10(@types/react@18.2.20)(react@18.2.0) '@types/react': 18.2.20 clsx: 2.0.0 csstype: 3.1.2 @@ -5329,8 +5384,8 @@ packages: react: 18.2.0 dev: false - /@mui/system@5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.20)(react@18.2.0): - resolution: {integrity: sha512-jeZtHglc+Pi6qjGoopT6O4RqYXVBMqHVOsjMGP0hxGSSPm1T4gsAu7jU8eqGx9YwwjvvJ0eotTjFqw7iJ6qE2Q==} + /@mui/system@5.14.5(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.20)(react@18.2.0): + resolution: {integrity: sha512-mextXZHDeGcR7E1kx43TRARrVXy+gI4wzpUgNv7MqZs1dvTVXQGVeAT6ydj9d6FUqHBPMNLGV/21vJOrpqsL+w==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -5370,6 +5425,24 @@ packages: '@types/react': 18.2.20 dev: false + /@mui/utils@5.14.10(@types/react@18.2.20)(react@18.2.0): + resolution: {integrity: sha512-Rn+vYQX7FxkcW0riDX/clNUwKuOJFH45HiULxwmpgnzQoQr3A0lb+QYwaZ+FAkZrR7qLoHKmLQlcItu6LT0y/Q==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.22.15 + '@types/prop-types': 15.7.5 + '@types/react': 18.2.20 + prop-types: 15.8.1 + react: 18.2.0 + react-is: 18.2.0 + dev: false + /@mui/utils@5.14.5(react@18.2.0): resolution: {integrity: sha512-6Hzw63VR9C5xYv+CbjndoRLU6Gntal8rJ5W+GUzkyHrGWIyYPWZPa6AevnyGioySNETATe1H9oXS8f/7qgIHJA==} engines: {node: '>=12.0.0'} @@ -11597,16 +11670,16 @@ packages: transitivePeerDependencies: - supports-color - /eslint@8.48.0: - resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} + /eslint@8.49.0: + resolution: {integrity: sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) '@eslint-community/regexpp': 4.6.2 '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.48.0 - '@humanwhocodes/config-array': 0.11.10 + '@eslint/js': 8.49.0 + '@humanwhocodes/config-array': 0.11.11 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -14283,8 +14356,8 @@ packages: /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - /json-schema-to-typescript@13.0.2: - resolution: {integrity: sha512-TCaEVW4aI2FmMQe7f98mvr3/oiVmXEC1xZjkTZ9L/BSoTXFlC7p64mD5AD2d8XWycNBQZUnHwXL5iVXt1HWwNQ==} + /json-schema-to-typescript@13.1.1: + resolution: {integrity: sha512-F3CYhtA7F3yPbb8vF7sFchk/2dnr1/yTKf8RcvoNpjnh67ZS/ZMH1ElLt5KHAtf2/bymiejLQQszszPWEeTdSw==} engines: {node: '>=12.0.0'} hasBin: true dependencies: @@ -16750,8 +16823,8 @@ packages: hasBin: true dev: true - /prettier@3.0.2: - resolution: {integrity: sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==} + /prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} engines: {node: '>=14'} hasBin: true dev: false @@ -19943,6 +20016,11 @@ packages: resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} hasBin: true + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false + /uvu@0.5.6: resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} engines: {node: '>=8'} @@ -20697,9 +20775,9 @@ packages: use-sync-external-store: 1.2.0(react@18.2.0) dev: false - github.com/theopensystemslab/planx-core/4e3d09f(@types/react@18.2.20): - resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/4e3d09f} - id: github.com/theopensystemslab/planx-core/4e3d09f + github.com/theopensystemslab/planx-core/5090b78(@types/react@18.2.20): + resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/5090b78} + id: github.com/theopensystemslab/planx-core/5090b78 name: '@opensystemslab/planx-core' version: 1.0.0 prepare: true @@ -20707,16 +20785,16 @@ packages: dependencies: '@emotion/react': 11.11.1(@types/react@18.2.20)(react@18.2.0) '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.20)(react@18.2.0) - '@mui/material': 5.14.7(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': 5.14.10(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) '@types/geojson': 7946.0.10 ajv: 8.12.0 ajv-formats: 2.1.1(ajv@8.12.0) docx: 8.2.2 - eslint: 8.48.0 + eslint: 8.49.0 fast-xml-parser: 4.2.7 graphql: 16.8.0 graphql-request: 6.1.0(graphql@16.8.0) - json-schema-to-typescript: 13.0.2 + json-schema-to-typescript: 13.1.1 lodash.capitalize: 4.2.1 lodash.get: 4.4.2 lodash.groupby: 4.6.0 @@ -20728,11 +20806,11 @@ packages: lodash.property: 4.4.2 lodash.set: 4.3.2 lodash.startcase: 4.4.0 - prettier: 3.0.2 + prettier: 3.0.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) type-fest: 4.3.1 - uuid: 9.0.0 + uuid: 9.0.1 zod: 3.22.2 transitivePeerDependencies: - '@types/react' From 51b0fd3ca6f330a49c480ada3a91b4d94d468287 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dafydd=20Ll=C5=B7r=20Pearson?= Date: Tue, 19 Sep 2023 19:46:07 +0100 Subject: [PATCH 06/10] docs: Update Swagger docs for /me endpoint --- api.planx.uk/modules/misc/docs.yaml | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/api.planx.uk/modules/misc/docs.yaml b/api.planx.uk/modules/misc/docs.yaml index 8c1100be38..3d28bd523d 100644 --- a/api.planx.uk/modules/misc/docs.yaml +++ b/api.planx.uk/modules/misc/docs.yaml @@ -60,10 +60,19 @@ paths: items: type: object properties: - teamId: - type: integer - format: int32 - example: 123 + team: + type: object + properties: + id: + type: integer + format: int32 + example: 123 + slug: + type: string + example: opensystemslab + name: + type: string + example: Open Systems Lab role: type: string enum: ["teamEditor", "teamViewer"] From fd9870a989dc90da039cf88285e1fa0af648b781 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dafydd=20Ll=C5=B7r=20Pearson?= Date: Wed, 20 Sep 2023 08:34:51 +0100 Subject: [PATCH 07/10] fix: Setup context for useLoginAuth --- api.planx.uk/modules/auth/middleware.ts | 28 +++++++++++++++++-------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/api.planx.uk/modules/auth/middleware.ts b/api.planx.uk/modules/auth/middleware.ts index 5533caca17..0539fe0541 100644 --- a/api.planx.uk/modules/auth/middleware.ts +++ b/api.planx.uk/modules/auth/middleware.ts @@ -183,12 +183,22 @@ export const usePlatformAdminAuth = useRoleAuth(["platformAdmin"]); /** * Allow any logged in user to access route, without checking roles */ -export const useLoginAuth: RequestHandler = (req, res, next) => - useJWT(req, res, () => - req?.user?.sub - ? next() - : next({ - status: 401, - message: "No authorization token was found", - }), - ); +export const useLoginAuth: RequestHandler = (req, res, next) => + useJWT(req, res, () => { + if (req?.user?.sub) { + userContext.run( + { + user: { + ...req.user, + jwt: req.cookies.jwt, + }, + }, + () => next(), + ); + } else { + return next({ + status: 401, + message: "No authorization token was found", + }) + } + }) From a2601228cd822afb01801787debd6c7cb2e38370 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dafydd=20Ll=C5=B7r=20Pearson?= Date: Wed, 20 Sep 2023 12:23:28 +0100 Subject: [PATCH 08/10] fix: Linting --- api.planx.uk/modules/auth/middleware.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/api.planx.uk/modules/auth/middleware.ts b/api.planx.uk/modules/auth/middleware.ts index 0539fe0541..a751ea0a23 100644 --- a/api.planx.uk/modules/auth/middleware.ts +++ b/api.planx.uk/modules/auth/middleware.ts @@ -183,7 +183,7 @@ export const usePlatformAdminAuth = useRoleAuth(["platformAdmin"]); /** * Allow any logged in user to access route, without checking roles */ -export const useLoginAuth: RequestHandler = (req, res, next) => +export const useLoginAuth: RequestHandler = (req, res, next) => useJWT(req, res, () => { if (req?.user?.sub) { userContext.run( @@ -199,6 +199,6 @@ export const useLoginAuth: RequestHandler = (req, res, next) => return next({ status: 401, message: "No authorization token was found", - }) + }); } - }) + }); From 988ad28cf392e24da81b888f395dd59207be8324 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dafydd=20Ll=C5=B7r=20Pearson?= Date: Wed, 20 Sep 2023 12:35:59 +0100 Subject: [PATCH 09/10] chore: Update planx-core --- api.planx.uk/package.json | 2 +- api.planx.uk/pnpm-lock.yaml | 28 +++++++++++++--------------- e2e/tests/api-driven/package.json | 2 +- e2e/tests/api-driven/pnpm-lock.yaml | 23 ++++++++--------------- e2e/tests/ui-driven/package.json | 2 +- e2e/tests/ui-driven/pnpm-lock.yaml | 28 +++++++++++++--------------- editor.planx.uk/package.json | 2 +- editor.planx.uk/pnpm-lock.yaml | 20 ++++++++++---------- 8 files changed, 48 insertions(+), 59 deletions(-) diff --git a/api.planx.uk/package.json b/api.planx.uk/package.json index c1918dc90b..71cb212780 100644 --- a/api.planx.uk/package.json +++ b/api.planx.uk/package.json @@ -4,7 +4,7 @@ "private": true, "dependencies": { "@airbrake/node": "^2.1.8", - "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#5090b78", + "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#7e31b2e", "@types/isomorphic-fetch": "^0.0.36", "adm-zip": "^0.5.10", "aws-sdk": "^2.1441.0", diff --git a/api.planx.uk/pnpm-lock.yaml b/api.planx.uk/pnpm-lock.yaml index 9783b43b7e..73d01ed96c 100644 --- a/api.planx.uk/pnpm-lock.yaml +++ b/api.planx.uk/pnpm-lock.yaml @@ -9,8 +9,8 @@ dependencies: specifier: ^2.1.8 version: 2.1.8 '@opensystemslab/planx-core': - specifier: git+https://github.com/theopensystemslab/planx-core#5090b78 - version: github.com/theopensystemslab/planx-core/5090b78 + specifier: git+https://github.com/theopensystemslab/planx-core#7e31b2e + version: github.com/theopensystemslab/planx-core/7e31b2e '@types/isomorphic-fetch': specifier: ^0.0.36 version: 0.0.36 @@ -753,13 +753,6 @@ packages: - supports-color dev: true - /@babel/runtime@7.22.11: - resolution: {integrity: sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.0 - dev: false - /@babel/runtime@7.22.15: resolution: {integrity: sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==} engines: {node: '>=6.9.0'} @@ -861,7 +854,7 @@ packages: resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} dependencies: '@babel/helper-module-imports': 7.22.5 - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 '@emotion/hash': 0.9.1 '@emotion/memoize': 0.8.1 '@emotion/serialize': 1.1.2 @@ -908,7 +901,7 @@ packages: react: optional: true dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 '@emotion/babel-plugin': 11.11.0 '@emotion/cache': 11.11.0 '@emotion/serialize': 1.1.2 @@ -945,7 +938,7 @@ packages: react: optional: true dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 '@emotion/babel-plugin': 11.11.0 '@emotion/is-prop-valid': 1.2.1 '@emotion/react': 11.11.1(react@18.2.0) @@ -2695,7 +2688,7 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 cosmiconfig: 7.1.0 resolve: 1.22.2 dev: false @@ -7366,6 +7359,10 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + /striptags@3.2.0: + resolution: {integrity: sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==} + dev: false + /strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: false @@ -8076,8 +8073,8 @@ packages: resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==} dev: false - github.com/theopensystemslab/planx-core/5090b78: - resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/5090b78} + github.com/theopensystemslab/planx-core/7e31b2e: + resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/7e31b2e} name: '@opensystemslab/planx-core' version: 1.0.0 prepare: true @@ -8109,6 +8106,7 @@ packages: prettier: 3.0.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + striptags: 3.2.0 type-fest: 4.3.1 uuid: 9.0.1 zod: 3.22.2 diff --git a/e2e/tests/api-driven/package.json b/e2e/tests/api-driven/package.json index b2c3dafa12..de91478a3e 100644 --- a/e2e/tests/api-driven/package.json +++ b/e2e/tests/api-driven/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@cucumber/cucumber": "^9.3.0", - "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#5090b78", + "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#4e3d09f", "axios": "^1.4.0", "dotenv": "^16.3.1", "dotenv-expand": "^10.0.0", diff --git a/e2e/tests/api-driven/pnpm-lock.yaml b/e2e/tests/api-driven/pnpm-lock.yaml index 9598f3419d..c0b30e9e7b 100644 --- a/e2e/tests/api-driven/pnpm-lock.yaml +++ b/e2e/tests/api-driven/pnpm-lock.yaml @@ -9,8 +9,8 @@ dependencies: specifier: ^9.3.0 version: 9.3.0 '@opensystemslab/planx-core': - specifier: git+https://github.com/theopensystemslab/planx-core#5090b78 - version: github.com/theopensystemslab/planx-core/5090b78 + specifier: git+https://github.com/theopensystemslab/planx-core#4e3d09f + version: github.com/theopensystemslab/planx-core/4e3d09f axios: specifier: ^1.4.0 version: 1.4.0 @@ -75,13 +75,6 @@ packages: js-tokens: 4.0.0 dev: false - /@babel/runtime@7.22.11: - resolution: {integrity: sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.0 - dev: false - /@babel/runtime@7.22.15: resolution: {integrity: sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==} engines: {node: '>=6.9.0'} @@ -266,7 +259,7 @@ packages: resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} dependencies: '@babel/helper-module-imports': 7.22.5 - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 '@emotion/hash': 0.9.1 '@emotion/memoize': 0.8.1 '@emotion/serialize': 1.1.2 @@ -311,7 +304,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 '@emotion/babel-plugin': 11.11.0 '@emotion/cache': 11.11.0 '@emotion/serialize': 1.1.2 @@ -346,7 +339,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 '@emotion/babel-plugin': 11.11.0 '@emotion/is-prop-valid': 1.2.1 '@emotion/react': 11.11.1(react@18.2.0) @@ -871,7 +864,7 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 cosmiconfig: 7.1.0 resolve: 1.22.2 dev: false @@ -2505,8 +2498,8 @@ packages: resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==} dev: false - github.com/theopensystemslab/planx-core/5090b78: - resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/5090b78} + github.com/theopensystemslab/planx-core/4e3d09f: + resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/4e3d09f} name: '@opensystemslab/planx-core' version: 1.0.0 prepare: true diff --git a/e2e/tests/ui-driven/package.json b/e2e/tests/ui-driven/package.json index 827f66d196..78a6ea735d 100644 --- a/e2e/tests/ui-driven/package.json +++ b/e2e/tests/ui-driven/package.json @@ -8,7 +8,7 @@ "postinstall": "./install-dependencies.sh" }, "dependencies": { - "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#5090b78", + "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#7e31b2e", "axios": "^1.4.0", "dotenv": "^16.3.1", "eslint": "^8.44.0", diff --git a/e2e/tests/ui-driven/pnpm-lock.yaml b/e2e/tests/ui-driven/pnpm-lock.yaml index 0d387e3e16..7285f8d50e 100644 --- a/e2e/tests/ui-driven/pnpm-lock.yaml +++ b/e2e/tests/ui-driven/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@opensystemslab/planx-core': - specifier: git+https://github.com/theopensystemslab/planx-core#5090b78 - version: github.com/theopensystemslab/planx-core/5090b78 + specifier: git+https://github.com/theopensystemslab/planx-core#7e31b2e + version: github.com/theopensystemslab/planx-core/7e31b2e axios: specifier: ^1.4.0 version: 1.4.0 @@ -87,13 +87,6 @@ packages: js-tokens: 4.0.0 dev: false - /@babel/runtime@7.22.10: - resolution: {integrity: sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.0 - dev: false - /@babel/runtime@7.22.15: resolution: {integrity: sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==} engines: {node: '>=6.9.0'} @@ -124,7 +117,7 @@ packages: resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} dependencies: '@babel/helper-module-imports': 7.22.5 - '@babel/runtime': 7.22.10 + '@babel/runtime': 7.22.15 '@emotion/hash': 0.9.1 '@emotion/memoize': 0.8.1 '@emotion/serialize': 1.1.2 @@ -169,7 +162,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.22.10 + '@babel/runtime': 7.22.15 '@emotion/babel-plugin': 11.11.0 '@emotion/cache': 11.11.0 '@emotion/serialize': 1.1.2 @@ -204,7 +197,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.22.10 + '@babel/runtime': 7.22.15 '@emotion/babel-plugin': 11.11.0 '@emotion/is-prop-valid': 1.2.1 '@emotion/react': 11.11.1(react@18.2.0) @@ -724,7 +717,7 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.22.10 + '@babel/runtime': 7.22.15 cosmiconfig: 7.1.0 resolve: 1.22.4 dev: false @@ -2199,6 +2192,10 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + /striptags@3.2.0: + resolution: {integrity: sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==} + dev: false + /strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: false @@ -2385,8 +2382,8 @@ packages: resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==} dev: false - github.com/theopensystemslab/planx-core/5090b78: - resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/5090b78} + github.com/theopensystemslab/planx-core/7e31b2e: + resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/7e31b2e} name: '@opensystemslab/planx-core' version: 1.0.0 prepare: true @@ -2418,6 +2415,7 @@ packages: prettier: 3.0.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + striptags: 3.2.0 type-fest: 4.3.1 uuid: 9.0.1 zod: 3.22.2 diff --git a/editor.planx.uk/package.json b/editor.planx.uk/package.json index 0eb1cba4fc..3fad9944b0 100644 --- a/editor.planx.uk/package.json +++ b/editor.planx.uk/package.json @@ -14,7 +14,7 @@ "@mui/styles": "^5.14.5", "@mui/utils": "^5.14.5", "@opensystemslab/map": "^0.7.5", - "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#5090b78", + "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#7e31b2e", "@tiptap/core": "^2.0.3", "@tiptap/extension-bold": "^2.0.3", "@tiptap/extension-bubble-menu": "^2.1.6", diff --git a/editor.planx.uk/pnpm-lock.yaml b/editor.planx.uk/pnpm-lock.yaml index f987175df6..dedae47e26 100644 --- a/editor.planx.uk/pnpm-lock.yaml +++ b/editor.planx.uk/pnpm-lock.yaml @@ -46,8 +46,8 @@ dependencies: specifier: ^0.7.5 version: 0.7.5 '@opensystemslab/planx-core': - specifier: git+https://github.com/theopensystemslab/planx-core#5090b78 - version: github.com/theopensystemslab/planx-core/5090b78(@types/react@18.2.20) + specifier: git+https://github.com/theopensystemslab/planx-core#7e31b2e + version: github.com/theopensystemslab/planx-core/7e31b2e(@types/react@18.2.20) '@tiptap/core': specifier: ^2.0.3 version: 2.0.3(@tiptap/pm@2.0.3) @@ -3199,7 +3199,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.0 - dev: false /@babel/runtime@7.22.6: resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==} @@ -4979,7 +4978,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 '@material-ui/styles': 4.11.5(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) '@material-ui/system': 4.12.2(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) '@material-ui/types': 5.1.0(@types/react@18.2.20) @@ -5008,7 +5007,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 '@emotion/hash': 0.8.0 '@material-ui/types': 5.1.0(@types/react@18.2.20) '@material-ui/utils': 4.11.3(react-dom@18.2.0)(react@18.2.0) @@ -5040,7 +5039,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 '@material-ui/utils': 4.11.3(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.20 csstype: 2.6.21 @@ -5067,7 +5066,7 @@ packages: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: - '@babel/runtime': 7.22.11 + '@babel/runtime': 7.22.15 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -20775,9 +20774,9 @@ packages: use-sync-external-store: 1.2.0(react@18.2.0) dev: false - github.com/theopensystemslab/planx-core/5090b78(@types/react@18.2.20): - resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/5090b78} - id: github.com/theopensystemslab/planx-core/5090b78 + github.com/theopensystemslab/planx-core/7e31b2e(@types/react@18.2.20): + resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/7e31b2e} + id: github.com/theopensystemslab/planx-core/7e31b2e name: '@opensystemslab/planx-core' version: 1.0.0 prepare: true @@ -20809,6 +20808,7 @@ packages: prettier: 3.0.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + striptags: 3.2.0 type-fest: 4.3.1 uuid: 9.0.1 zod: 3.22.2 From dfb57e79ea0139316a4ff7823fafe2ad182ac336 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dafydd=20Ll=C5=B7r=20Pearson?= Date: Wed, 20 Sep 2023 20:17:32 +0100 Subject: [PATCH 10/10] fix(e2e): Update planx-core --- e2e/tests/ui-driven/package.json | 2 +- e2e/tests/ui-driven/pnpm-lock.yaml | 13 ++++--------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/e2e/tests/ui-driven/package.json b/e2e/tests/ui-driven/package.json index 78a6ea735d..eead6768e2 100644 --- a/e2e/tests/ui-driven/package.json +++ b/e2e/tests/ui-driven/package.json @@ -8,7 +8,7 @@ "postinstall": "./install-dependencies.sh" }, "dependencies": { - "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#7e31b2e", + "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#4e3d09f", "axios": "^1.4.0", "dotenv": "^16.3.1", "eslint": "^8.44.0", diff --git a/e2e/tests/ui-driven/pnpm-lock.yaml b/e2e/tests/ui-driven/pnpm-lock.yaml index 7285f8d50e..07687e408f 100644 --- a/e2e/tests/ui-driven/pnpm-lock.yaml +++ b/e2e/tests/ui-driven/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@opensystemslab/planx-core': - specifier: git+https://github.com/theopensystemslab/planx-core#7e31b2e - version: github.com/theopensystemslab/planx-core/7e31b2e + specifier: git+https://github.com/theopensystemslab/planx-core#4e3d09f + version: github.com/theopensystemslab/planx-core/4e3d09f axios: specifier: ^1.4.0 version: 1.4.0 @@ -2192,10 +2192,6 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - /striptags@3.2.0: - resolution: {integrity: sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==} - dev: false - /strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: false @@ -2382,8 +2378,8 @@ packages: resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==} dev: false - github.com/theopensystemslab/planx-core/7e31b2e: - resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/7e31b2e} + github.com/theopensystemslab/planx-core/4e3d09f: + resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/4e3d09f} name: '@opensystemslab/planx-core' version: 1.0.0 prepare: true @@ -2415,7 +2411,6 @@ packages: prettier: 3.0.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - striptags: 3.2.0 type-fest: 4.3.1 uuid: 9.0.1 zod: 3.22.2