From 7b772351f19fee7229d0476691781a8fcc95d78a Mon Sep 17 00:00:00 2001 From: tomlebl Date: Fri, 2 Aug 2024 11:45:50 +0100 Subject: [PATCH 1/2] accounts tests finished --- nomad-rest-api/tests/accounts.test.js | 328 ++++++++++++++++++ nomad-rest-api/tests/auth.test.js | 6 +- nomad-rest-api/tests/claim.test.js | 6 +- nomad-rest-api/tests/expSearch.test.js | 4 +- nomad-rest-api/tests/fixtures/data/claims.js | 22 +- .../tests/fixtures/data/experiments.js | 58 +++- nomad-rest-api/tests/fixtures/data/grants.js | 32 ++ .../tests/fixtures/data/instruments.js | 7 +- nomad-rest-api/tests/fixtures/db.js | 13 +- 9 files changed, 453 insertions(+), 23 deletions(-) create mode 100644 nomad-rest-api/tests/accounts.test.js create mode 100644 nomad-rest-api/tests/fixtures/data/grants.js diff --git a/nomad-rest-api/tests/accounts.test.js b/nomad-rest-api/tests/accounts.test.js new file mode 100644 index 0000000..bd1c59c --- /dev/null +++ b/nomad-rest-api/tests/accounts.test.js @@ -0,0 +1,328 @@ +import { it, expect, describe, beforeAll, beforeEach, afterAll, vi } from 'vitest' +import request from 'supertest' + +import app from '../app.js' +import { connectDB, dropDB, setupDB } from './fixtures/db' + +import { testUserAdmin, testUserOne, testUserThree } from './fixtures/data/users.js' +import { testGroupTwo } from './fixtures/data/groups.js' +import { testInstrOne, testInstrThree } from './fixtures/data/instruments.js' +import { testGrantOne, testGrantTwo } from './fixtures/data/grants.js' + +import Instrument from '../models/instrument.js' +import Grant from '../models/grant.js' + +beforeAll(connectDB) +afterAll(dropDB) +beforeEach(setupDB) + +describe('GET /accounts/data', () => { + it('should fail with status code 403 if user is not authorised', async () => { + await request(app).get('/admin/accounts/data').expect(403) + }) + + it('should fail with status code 403 if user is authorised by user without admin privileges', async () => { + await request(app) + .get('/admin/accounts/data') + .set('Authorization', `Bearer ${testUserOne.tokens[0].token}`) + .expect(403) + }) + + it('should return data array of length 2 with the first object corresponding to testGroupTwo', async () => { + const { body } = await request(app) + .get('/admin/accounts/data/?groupId=undefined') + .set('Authorization', `Bearer ${testUserAdmin.tokens[0].token}`) + .expect(200) + + expect(body.length).toBe(2) + expect(body[0].name).toBe(testGroupTwo.groupName) + expect(body[0].totalCost).toBe(18.17) + }) + + it('should return data array of length 2 the first object corresponding to testUserThree', async () => { + const { body } = await request(app) + .get('/admin/accounts/data/?groupId=' + testGroupTwo._id) + .set('Authorization', `Bearer ${testUserAdmin.tokens[0].token}`) + .expect(200) + + expect(body.length).toBe(2) + expect(body[0].name).toMatch(testUserThree.username + ' - ' + testUserThree.fullName) + + expect(body[0].totalCost).toBe(18.17) + }) +}) + +describe('GET /accounts/instruments-costing', () => { + it('should fail with status code 403 if user is not authorised', async () => { + await request(app).get('/admin/accounts/instruments-costing').expect(403) + }) + + it('should fail with status code 403 if user is authorised by user without admin privileges', async () => { + await request(app) + .get('/admin/accounts/instruments-costing') + .set('Authorization', `Bearer ${testUserOne.tokens[0].token}`) + .expect(403) + }) + + it('should data array of length 2 the first object corresponding to testInstrumentOne', async () => { + const { body } = await request(app) + .get('/admin/accounts/instruments-costing') + .set('Authorization', `Bearer ${testUserAdmin.tokens[0].token}`) + .expect(200) + + expect(body.length).toBe(2) + expect(body[0].name).toBe(testInstrOne.name) + expect(body[0].cost).toBe(testInstrOne.cost) + }) +}) + +describe('PUT /accounts/instruments-costing', () => { + it('should fail with status code 403 if user is not authorised', async () => { + await request(app).put('/admin/accounts/instruments-costing').expect(403) + }) + + it('should fail with status code 403 if user is authorised by user without admin privileges', async () => { + await request(app) + .put('/admin/accounts/instruments-costing') + .set('Authorization', `Bearer ${testUserOne.tokens[0].token}`) + .expect(403) + }) + + it('should update the cost of testInstrumentOne to 5', async () => { + const reqData = {} + reqData[testInstrOne.name] = 5 + reqData[testInstrThree.name] = testInstrThree.cost + + await request(app) + .put('/admin/accounts/instruments-costing') + .send(reqData) + .set('Authorization', `Bearer ${testUserAdmin.tokens[0].token}`) + .expect(200) + + //asserting change in DB + const instruments = await Instrument.find({ isActive: true }, 'name cost') + expect(instruments[0].name).toBe(testInstrOne.name) + expect(instruments[0].cost).toBe(5) + }) +}) + +describe('POST /accounts/grants', () => { + it('should fail with status code 403 if user is not authorised', async () => { + await request(app).post('/admin/accounts/grants').expect(403) + }) + + it('should fail with status code 403 if user is authorised by user without admin privileges', async () => { + await request(app) + .post('/admin/accounts/grants') + .set('Authorization', `Bearer ${testUserOne.tokens[0].token}`) + .expect(403) + }) + + it('should fail with status code 422 if grantCode of testGrantOne is provided', async () => { + const { body } = await request(app) + .post('/admin/accounts/grants') + .send({ grantCode: testGrantOne.grantCode }) + .set('Authorization', `Bearer ${testUserAdmin.tokens[0].token}`) + .expect(422) + + expect(body.errors[0].msg).toBe('Error: Grant code XX-TEST-1-YY already exists') + }) + + it('should add a new grant into DB', async () => { + const { body } = await request(app) + .post('/admin/accounts/grants') + .send({ grantCode: 'XX-test-3-YY', include: [] }) + .set('Authorization', `Bearer ${testUserAdmin.tokens[0].token}`) + .expect(200) + + expect(body.grantCode).toBe('XX-TEST-3-YY') + expect(body.multiplier).toBe(1) + }) + + it('should fail with status code 409 includes property contains testUserOne', async () => { + const { body } = await request(app) + .post('/admin/accounts/grants') + .send({ + grantCode: 'XX-test-3-YY', + include: [ + { + isGroup: false, + name: testUserOne.username, + id: testUserOne._id + } + ] + }) + .set('Authorization', `Bearer ${testUserAdmin.tokens[0].token}`) + .expect(409) + + expect(body.message).toBe( + 'Submitted grant includes user or group that has been added on a different grant' + ) + }) +}) + +describe('GET /accounts/grants', () => { + it('should fail with status code 403 if user is not authorised', async () => { + await request(app).get('/admin/accounts/grants').expect(403) + }) + + it('should fail with status code 403 if user is authorised by user without admin privileges', async () => { + await request(app) + .get('/admin/accounts/grants') + .set('Authorization', `Bearer ${testUserOne.tokens[0].token}`) + .expect(403) + }) + + it('should get array of 2 objects', async () => { + const { body } = await request(app) + .get('/admin/accounts/grants') + .set('Authorization', `Bearer ${testUserAdmin.tokens[0].token}`) + .expect(200) + + expect(body.length).toBe(2) + expect(body[0]).toHaveProperty('grantCode', 'XX-TEST-1-YY') + }) +}) + +describe('DELETE /accounts/grants/:grantId', () => { + it('should fail with status code 403 if user is not authorised', async () => { + await request(app) + .delete('/admin/accounts/grants/' + testGrantOne._id.toString()) + .expect(403) + }) + + it('should fail with status code 403 if user is authorised by user without admin privileges', async () => { + await request(app) + .delete('/admin/accounts/grants/' + testGrantOne._id.toString()) + .set('Authorization', `Bearer ${testUserOne.tokens[0].token}`) + .expect(403) + }) + + it('should testGrantOne if corresponding id is provided', async () => { + const { body } = await request(app) + .delete('/admin/accounts/grants/' + testGrantOne._id.toString()) + .set('Authorization', `Bearer ${testUserAdmin.tokens[0].token}`) + .expect(200) + + expect(body).toMatchObject({ grantId: testGrantOne._id.toString() }) + + //asserting change in DB + + const grants = await Grant.find({}) + expect(grants.length).toBe(1) + expect(grants[0].grantCode).toBe(testGrantTwo.grantCode) + }) +}) + +describe('PUT/ /accounts/grants/', () => { + it('should fail with status code 403 if user is not authorised', async () => { + await request(app).put('/admin/accounts/grants').expect(403) + }) + + it('should fail with status code 403 if user is authorised by user without admin privileges', async () => { + await request(app) + .put('/admin/accounts/grants') + .set('Authorization', `Bearer ${testUserOne.tokens[0].token}`) + .expect(403) + }) + + it('should fail with status code 409 if user is authorised by user without admin privileges', async () => { + const { body } = await request(app) + .put('/admin/accounts/grants') + .send({ + _id: testGrantTwo._id, + include: [ + { + isGroup: false, + name: testUserOne.username, + id: testUserOne._id + } + ] + }) + .set('Authorization', `Bearer ${testUserAdmin.tokens[0].token}`) + .expect(409) + + expect(body.message).toBe( + 'Submitted grant includes user or group that has been added on a different grant' + ) + }) + + it('should should update testGrantTwo', async () => { + const { body } = await request(app) + .put('/admin/accounts/grants') + .send({ + _id: testGrantTwo._id, + include: [ + { + isGroup: false, + name: testUserThree.username, + id: testUserThree._id + } + ], + multiplier: 4, + description: 'New grant' + }) + .set('Authorization', `Bearer ${testUserAdmin.tokens[0].token}`) + .expect(200) + + expect(body.key).toBe(testGrantTwo._id.toString()) + expect(body.multiplier).toBe(4) + expect(body.description).toBe('New grant') + expect(body.include[0].name).toBe(testUserThree.username) + + //asserting change in DB + const grant = await Grant.findById(testGrantTwo._id) + expect(grant.include[0].name).toBe(testUserThree.username) + expect(grant.description).toBe('New grant') + expect(grant.multiplier).toBe(4) + }) +}) + +describe('GET /accounts/grants-costs', () => { + it('should fail with status code 403 if user is not authorised', async () => { + await request(app).get('/admin/accounts/grants-costs').expect(403) + }) + + it('should fail with status code 403 if user is authorised by user without admin privileges', async () => { + await request(app) + .get('/admin/accounts/grants-costs') + .set('Authorization', `Bearer ${testUserOne.tokens[0].token}`) + .expect(403) + }) + + it('should return grants costs calculation data object', async () => { + const { body } = await request(app) + .get('/admin/accounts/grants-costs') + .set('Authorization', `Bearer ${testUserAdmin.tokens[0].token}`) + .expect(200) + + expect(body.grantsCosts.length).toBe(2) + expect(body.grantsCosts[0]).toMatchObject({ + _id: testGrantOne._id.toString(), + grantCode: 'XX-TEST-1-YY', + description: 'Test Grant One', + costExps: 3, + costClaims: 10, + usersArray: [ + { + _id: testUserOne._id.toString(), + username: testUserOne.username, + fullName: testUserOne.fullName + } + ], + totalCost: 13, + key: testGrantOne._id.toString() + }) + expect(body.noGrantsData).toMatchObject({ + expsCount: 1, + claimsCount: 1, + users: [ + { + _id: testUserThree._id.toString(), + username: testUserThree.username, + fullName: testUserThree.fullName + } + ] + }) + }) +}) diff --git a/nomad-rest-api/tests/auth.test.js b/nomad-rest-api/tests/auth.test.js index a37347a..e682fc6 100644 --- a/nomad-rest-api/tests/auth.test.js +++ b/nomad-rest-api/tests/auth.test.js @@ -64,7 +64,7 @@ describe('POST /auth/login', () => { expect(body.message).toBe('Wrong username or password') }) - it('should fail with status 400 if user with given username is inactiv', async () => { + it('should fail with status 400 if user with given username is inactive', async () => { const { body } = await request(app) .post('/auth/login') .send({ @@ -93,7 +93,7 @@ describe('POST /auth/logout', () => { }) describe('POST /auth/password-reset', () => { - it('should return object iwth username and e-mail and sent password reset e-mail', async () => { + it('should return object with username and e-mail and sent password reset e-mail', async () => { const { body } = await request(app) .post('/auth/password-reset') .send({ username: testUserOne.username }) @@ -102,7 +102,7 @@ describe('POST /auth/password-reset', () => { expect(body).toMatchObject({ username: testUserOne.username, email: testUserOne.email }) }) - it('should fail with status 400 if iser with provided username does not exist', async () => { + it('should fail with status 400 if user with provided username does not exist', async () => { await request(app).post('/auth/password-reset').send({ username: 'user-x' }).expect(400) }) }) diff --git a/nomad-rest-api/tests/claim.test.js b/nomad-rest-api/tests/claim.test.js index 21bd9b7..919962d 100644 --- a/nomad-rest-api/tests/claim.test.js +++ b/nomad-rest-api/tests/claim.test.js @@ -128,14 +128,14 @@ describe('POST /', () => { }) describe('GET /', () => { - it('should return object with 2 test claims if no search params are provided', async () => { + it('should return object with 3 test claims if no search params are provided', async () => { const { body } = await request(app) .get('/claims/') .set('Authorization', `Bearer ${testUserAdmin.tokens[0].token}`) .expect(200) - expect(body.total).toBe(2) - expect(body.claims.length).toBe(2) + expect(body.total).toBe(3) + expect(body.claims.length).toBe(3) }) it('should fail with status 403 if request is not authorised', async () => { diff --git a/nomad-rest-api/tests/expSearch.test.js b/nomad-rest-api/tests/expSearch.test.js index d307f96..e09cc52 100644 --- a/nomad-rest-api/tests/expSearch.test.js +++ b/nomad-rest-api/tests/expSearch.test.js @@ -28,8 +28,8 @@ describe('GET /search/experiments', () => { .set('Authorization', `Bearer ${testUserAdmin.tokens[0].token}`) .expect(200) - expect(body.data.length).toBe(3) - expect(body.total).toBe(4) + expect(body.data.length).toBe(4) + expect(body.total).toBe(5) }) it('should return array with one dataset with 2 experiments in total if title substring "exp 1" is provided', async () => { diff --git a/nomad-rest-api/tests/fixtures/data/claims.js b/nomad-rest-api/tests/fixtures/data/claims.js index 1cda9d3..1221e4b 100644 --- a/nomad-rest-api/tests/fixtures/data/claims.js +++ b/nomad-rest-api/tests/fixtures/data/claims.js @@ -1,7 +1,9 @@ import mongoose from 'mongoose' -import { testUserOne } from './users' +import { testUserOne, testUserThree } from './users' import { testInstrOne } from './instruments' -import { testGroupOne } from './groups' +import { testGroupOne, testGroupTwo } from './groups' +import { testGrantOne } from './grants' + import moment from 'moment' export const testClaimOne = { @@ -12,7 +14,11 @@ export const testClaimOne = { folders: ['test-exp-folder'], expTime: '2', status: 'Approved', - createdAt: moment().subtract(4, 'days') + createdAt: moment().subtract(4, 'days'), + grantCosting: { + grantId: testGrantOne._id, + cost: 10 + } } export const testClaimTwo = { _id: new mongoose.Types.ObjectId(), @@ -24,3 +30,13 @@ export const testClaimTwo = { status: 'Pending', createdAt: moment().subtract(2, 'days') } +export const testClaimThree = { + _id: new mongoose.Types.ObjectId(), + instrument: testInstrOne._id, + user: testUserThree._id, + group: testGroupTwo._id, + folders: ['test-exp-folder'], + expTime: '6', + status: 'Approved', + createdAt: moment().subtract(5, 'days') +} diff --git a/nomad-rest-api/tests/fixtures/data/experiments.js b/nomad-rest-api/tests/fixtures/data/experiments.js index 0c8cc2d..19b66a5 100644 --- a/nomad-rest-api/tests/fixtures/data/experiments.js +++ b/nomad-rest-api/tests/fixtures/data/experiments.js @@ -1,10 +1,10 @@ import mongoose from 'mongoose' -import moment from 'moment' import { testUserOne, testUserTwo, testUserThree } from './users' -import { testGroupOne } from './groups' +import { testGroupOne, testGroupTwo } from './groups' import { testParamSet1, testParamSet2 } from './parameterSets' -import { testInstrOne, testInstrTwo } from './instruments' +import { testInstrOne, testInstrTwo, testInstrThree } from './instruments' +import { testGrantOne, testGrantTwo } from './grants' export const testExpOne = { _id: new mongoose.Types.ObjectId(), @@ -28,7 +28,11 @@ export const testExpOne = { expNo: '10', holder: '2', dataPath: './test/path', - solvent: 'CDCl3' + solvent: 'CDCl3', + grantCosting: { + grantId: testGrantOne._id, + cost: 1 + } } export const testExpTwo = { @@ -53,7 +57,11 @@ export const testExpTwo = { expNo: '11', holder: '2', dataPath: './test/path', - solvent: 'CDCl3' + solvent: 'CDCl3', + grantCosting: { + grantId: testGrantOne._id, + cost: 2 + } } export const testExpThree = { @@ -78,12 +86,16 @@ export const testExpThree = { expNo: '10', holder: '3', dataPath: './test/path', - solvent: 'C6D6' + solvent: 'C6D6', + grantCosting: { + grantId: testGrantTwo._id, + cost: 3 + } } export const testExpFour = { _id: new mongoose.Types.ObjectId(), - expId: '2106231100-10-2-test2-10', + expId: '2106231100-10-2-test3-10', instrument: { name: testInstrTwo.name, id: testInstrTwo._id @@ -103,7 +115,11 @@ export const testExpFour = { expNo: '10', holder: '10', dataPath: './test/path', - solvent: 'C6D6' + solvent: 'C6D6', + grantCosting: { + grantId: testGrantTwo._id, + cost: 4 + } } export const testExpFive = { @@ -130,3 +146,29 @@ export const testExpFive = { dataPath: './test/path', solvent: 'C6D6' } + +export const testExpSix = { + _id: new mongoose.Types.ObjectId(), + expId: '2106241100-10-2-test3-10', + instrument: { + name: testInstrThree.name, + id: testInstrThree._id + }, + user: { + username: testUserThree.username, + id: testUserThree._id + }, + group: { + name: testGroupTwo.groupName, + id: testGroupTwo._id + }, + datasetName: '2106241100-10-2-test3', + status: 'Archived', + title: 'Test Exp 6', + parameterSet: testParamSet1.name, + expNo: '10', + holder: '10', + dataPath: './test/path', + solvent: 'CDCl3', + totalExpTime: '00:05:00' +} diff --git a/nomad-rest-api/tests/fixtures/data/grants.js b/nomad-rest-api/tests/fixtures/data/grants.js new file mode 100644 index 0000000..ee9ad9c --- /dev/null +++ b/nomad-rest-api/tests/fixtures/data/grants.js @@ -0,0 +1,32 @@ +import mongoose from 'mongoose' +import { testUserOne } from './users' +import { testGroupOne } from './groups' + +export const testGrantOne = { + _id: new mongoose.Types.ObjectId(), + grantCode: 'XX-TEST-1-YY', + description: 'Test Grant One', + include: [ + { + isGroup: false, + name: testUserOne.username, + id: testUserOne._id + } + ], + multiplier: 1 +} + +const testGrantTwoId = new mongoose.Types.ObjectId() +export const testGrantTwo = { + _id: testGrantTwoId, + grantCode: 'XX-TEST-2-YY', + description: 'Test Grant Two', + include: [ + { + isGroup: true, + name: testGroupOne.groupName, + id: testGroupOne._id + } + ], + multiplier: 2 +} diff --git a/nomad-rest-api/tests/fixtures/data/instruments.js b/nomad-rest-api/tests/fixtures/data/instruments.js index 5ff55ca..9e463fa 100644 --- a/nomad-rest-api/tests/fixtures/data/instruments.js +++ b/nomad-rest-api/tests/fixtures/data/instruments.js @@ -19,7 +19,8 @@ export const testInstrOne = { capacity: 60, dayAllowance: 20, nightAllowance: 195, - overheadTime: 255 + overheadTime: 255, + cost: 3 } export const testInstrTwo = { @@ -30,7 +31,8 @@ export const testInstrTwo = { name: 'instrument-2', isActive: false, available: false, - capacity: 60 + capacity: 60, + cost: 2 } export const testInstrThree = { @@ -43,6 +45,7 @@ export const testInstrThree = { summary: { dayExpt: '00:00', nightExpt: '00:00' }, statusTable: await getStatus('status1.json') }, + cost: 2, dayAllowance: 20, nightAllowance: 195, overheadTime: 255, diff --git a/nomad-rest-api/tests/fixtures/db.js b/nomad-rest-api/tests/fixtures/db.js index 873f0fe..26ac2b1 100644 --- a/nomad-rest-api/tests/fixtures/db.js +++ b/nomad-rest-api/tests/fixtures/db.js @@ -10,22 +10,25 @@ import Experiment from '../../models/experiment.js' import Dataset from '../../models/dataset.js' import Rack from '../../models/rack.js' import Collection from '../../models/collection.js' +import Grant from '../../models/grant.js' import { testUserOne, testUserTwo, testUserAdmin, testUserThree } from './data/users' import { testGroupOne, testGroupTwo } from './data/groups' import { testInstrOne, testInstrTwo, testInstrThree } from './data/instruments' import { testParamSet1, testParamSet2, testParamsHidden } from './data/parameterSets' -import { testClaimOne, testClaimTwo } from './data/claims.js' +import { testClaimOne, testClaimTwo, testClaimThree } from './data/claims.js' import { testExpOne, testExpTwo, testExpThree, testExpFour, - testExpFive + testExpFive, + testExpSix } from './data/experiments.js' import { testDatasetOne, testDatasetTwo, testDatasetThree } from './data/datasets.js' import { testRackOne, testRackTwo } from './data/racks.js' import { testCollectionOne } from './data/collections.js' +import { testGrantOne, testGrantTwo } from './data/grants.js' let mongo = null @@ -55,6 +58,7 @@ export const setupDB = async () => { await Dataset.deleteMany() await Rack.deleteMany() await Collection.deleteMany() + await Grant.deleteMany() await new User(testUserOne).save() await new User(testUserTwo).save() @@ -76,12 +80,14 @@ export const setupDB = async () => { await new Claim(testClaimOne).save() await new Claim(testClaimTwo).save() + await new Claim(testClaimThree).save() await new Experiment(testExpOne).save() await new Experiment(testExpTwo).save() await new Experiment(testExpThree).save() await new Experiment(testExpFour).save() await new Experiment(testExpFive).save() + await new Experiment(testExpSix).save() await new Dataset(testDatasetOne).save() await new Dataset(testDatasetTwo).save() @@ -91,4 +97,7 @@ export const setupDB = async () => { await new Rack(testRackTwo).save() await new Collection(testCollectionOne).save() + + await new Grant(testGrantOne).save() + await new Grant(testGrantTwo).save() } From 67c579f8a321a072bf4557aa283e5115d86d9d6e Mon Sep 17 00:00:00 2001 From: tomlebl Date: Fri, 2 Aug 2024 12:07:26 +0100 Subject: [PATCH 2/2] dependencies update --- nomad-rest-api/package-lock.json | 515 +++++++++++++------------------ nomad-rest-api/package.json | 2 +- 2 files changed, 220 insertions(+), 297 deletions(-) diff --git a/nomad-rest-api/package-lock.json b/nomad-rest-api/package-lock.json index d2306b9..19453a1 100644 --- a/nomad-rest-api/package-lock.json +++ b/nomad-rest-api/package-lock.json @@ -31,7 +31,7 @@ "devDependencies": { "@vitest/coverage-v8": "^1.3.1", "env-cmd": "^10.1.0", - "mongodb-memory-server": "^9.1.7", + "mongodb-memory-server": "^10.0.0", "nodemon": "^3.0.1", "supertest": "^7.0.0", "vitest": "^1.3.1" @@ -69,10 +69,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz", - "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==", + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", + "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", "dev": true, + "dependencies": { + "@babel/types": "^7.25.2" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -81,9 +84,9 @@ } }, "node_modules/@babel/types": { - "version": "7.24.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.9.tgz", - "integrity": "sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", + "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.24.8", @@ -584,9 +587,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.19.0.tgz", - "integrity": "sha512-JlPfZ/C7yn5S5p0yKk7uhHTTnFlvTgLetl2VxqE518QgyM7C9bSfFTYvB/Q/ftkq0RIPY4ySxTz+/wKJ/dXC0w==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.19.2.tgz", + "integrity": "sha512-OHflWINKtoCFSpm/WmuQaWW4jeX+3Qt3XQDepkkiFTsoxFc5BpF3Z5aDxFZgBqRjO6ATP5+b1iilp4kGIZVWlA==", "cpu": [ "arm" ], @@ -597,9 +600,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.19.0.tgz", - "integrity": "sha512-RDxUSY8D1tWYfn00DDi5myxKgOk6RvWPxhmWexcICt/MEC6yEMr4HNCu1sXXYLw8iAsg0D44NuU+qNq7zVWCrw==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.19.2.tgz", + "integrity": "sha512-k0OC/b14rNzMLDOE6QMBCjDRm3fQOHAL8Ldc9bxEWvMo4Ty9RY6rWmGetNTWhPo+/+FNd1lsQYRd0/1OSix36A==", "cpu": [ "arm64" ], @@ -610,9 +613,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.19.0.tgz", - "integrity": "sha512-emvKHL4B15x6nlNTBMtIaC9tLPRpeA5jMvRLXVbl/W9Ie7HhkrE7KQjvgS9uxgatL1HmHWDXk5TTS4IaNJxbAA==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.19.2.tgz", + "integrity": "sha512-IIARRgWCNWMTeQH+kr/gFTHJccKzwEaI0YSvtqkEBPj7AshElFq89TyreKNFAGh5frLfDCbodnq+Ye3dqGKPBw==", "cpu": [ "arm64" ], @@ -623,9 +626,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.19.0.tgz", - "integrity": "sha512-fO28cWA1dC57qCd+D0rfLC4VPbh6EOJXrreBmFLWPGI9dpMlER2YwSPZzSGfq11XgcEpPukPTfEVFtw2q2nYJg==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.19.2.tgz", + "integrity": "sha512-52udDMFDv54BTAdnw+KXNF45QCvcJOcYGl3vQkp4vARyrcdI/cXH8VXTEv/8QWfd6Fru8QQuw1b2uNersXOL0g==", "cpu": [ "x64" ], @@ -636,9 +639,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.19.0.tgz", - "integrity": "sha512-2Rn36Ubxdv32NUcfm0wB1tgKqkQuft00PtM23VqLuCUR4N5jcNWDoV5iBC9jeGdgS38WK66ElncprqgMUOyomw==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.19.2.tgz", + "integrity": "sha512-r+SI2t8srMPYZeoa1w0o/AfoVt9akI1ihgazGYPQGRilVAkuzMGiTtexNZkrPkQsyFrvqq/ni8f3zOnHw4hUbA==", "cpu": [ "arm" ], @@ -649,9 +652,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.19.0.tgz", - "integrity": "sha512-gJuzIVdq/X1ZA2bHeCGCISe0VWqCoNT8BvkQ+BfsixXwTOndhtLUpOg0A1Fcx/+eA6ei6rMBzlOz4JzmiDw7JQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.19.2.tgz", + "integrity": "sha512-+tYiL4QVjtI3KliKBGtUU7yhw0GMcJJuB9mLTCEauHEsqfk49gtUBXGtGP3h1LW8MbaTY6rSFIQV1XOBps1gBA==", "cpu": [ "arm" ], @@ -662,9 +665,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.19.0.tgz", - "integrity": "sha512-0EkX2HYPkSADo9cfeGFoQ7R0/wTKb7q6DdwI4Yn/ULFE1wuRRCHybxpl2goQrx4c/yzK3I8OlgtBu4xvted0ug==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.19.2.tgz", + "integrity": "sha512-OR5DcvZiYN75mXDNQQxlQPTv4D+uNCUsmSCSY2FolLf9W5I4DSoJyg7z9Ea3TjKfhPSGgMJiey1aWvlWuBzMtg==", "cpu": [ "arm64" ], @@ -675,9 +678,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.19.0.tgz", - "integrity": "sha512-GlIQRj9px52ISomIOEUq/IojLZqzkvRpdP3cLgIE1wUWaiU5Takwlzpz002q0Nxxr1y2ZgxC2obWxjr13lvxNQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.19.2.tgz", + "integrity": "sha512-Hw3jSfWdUSauEYFBSFIte6I8m6jOj+3vifLg8EU3lreWulAUpch4JBjDMtlKosrBzkr0kwKgL9iCfjA8L3geoA==", "cpu": [ "arm64" ], @@ -688,9 +691,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.19.0.tgz", - "integrity": "sha512-N6cFJzssruDLUOKfEKeovCKiHcdwVYOT1Hs6dovDQ61+Y9n3Ek4zXvtghPPelt6U0AH4aDGnDLb83uiJMkWYzQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.19.2.tgz", + "integrity": "sha512-rhjvoPBhBwVnJRq/+hi2Q3EMiVF538/o9dBuj9TVLclo9DuONqt5xfWSaE6MYiFKpo/lFPJ/iSI72rYWw5Hc7w==", "cpu": [ "ppc64" ], @@ -701,9 +704,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.19.0.tgz", - "integrity": "sha512-2DnD3mkS2uuam/alF+I7M84koGwvn3ZVD7uG+LEWpyzo/bq8+kKnus2EVCkcvh6PlNB8QPNFOz6fWd5N8o1CYg==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.19.2.tgz", + "integrity": "sha512-EAz6vjPwHHs2qOCnpQkw4xs14XJq84I81sDRGPEjKPFVPBw7fwvtwhVjcZR6SLydCv8zNK8YGFblKWd/vRmP8g==", "cpu": [ "riscv64" ], @@ -714,9 +717,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.19.0.tgz", - "integrity": "sha512-D6pkaF7OpE7lzlTOFCB2m3Ngzu2ykw40Nka9WmKGUOTS3xcIieHe82slQlNq69sVB04ch73thKYIWz/Ian8DUA==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.19.2.tgz", + "integrity": "sha512-IJSUX1xb8k/zN9j2I7B5Re6B0NNJDJ1+soezjNojhT8DEVeDNptq2jgycCOpRhyGj0+xBn7Cq+PK7Q+nd2hxLA==", "cpu": [ "s390x" ], @@ -727,9 +730,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.19.0.tgz", - "integrity": "sha512-HBndjQLP8OsdJNSxpNIN0einbDmRFg9+UQeZV1eiYupIRuZsDEoeGU43NQsS34Pp166DtwQOnpcbV/zQxM+rWA==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.19.2.tgz", + "integrity": "sha512-OgaToJ8jSxTpgGkZSkwKE+JQGihdcaqnyHEFOSAU45utQ+yLruE1dkonB2SDI8t375wOKgNn8pQvaWY9kPzxDQ==", "cpu": [ "x64" ], @@ -740,9 +743,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.19.0.tgz", - "integrity": "sha512-HxfbvfCKJe/RMYJJn0a12eiOI9OOtAUF4G6ozrFUK95BNyoJaSiBjIOHjZskTUffUrB84IPKkFG9H9nEvJGW6A==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.19.2.tgz", + "integrity": "sha512-5V3mPpWkB066XZZBgSd1lwozBk7tmOkKtquyCJ6T4LN3mzKENXyBwWNQn8d0Ci81hvlBw5RoFgleVpL6aScLYg==", "cpu": [ "x64" ], @@ -753,9 +756,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.19.0.tgz", - "integrity": "sha512-HxDMKIhmcguGTiP5TsLNolwBUK3nGGUEoV/BO9ldUBoMLBssvh4J0X8pf11i1fTV7WShWItB1bKAKjX4RQeYmg==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.19.2.tgz", + "integrity": "sha512-ayVstadfLeeXI9zUPiKRVT8qF55hm7hKa+0N1V6Vj+OTNFfKSoUxyZvzVvgtBxqSb5URQ8sK6fhwxr9/MLmxdA==", "cpu": [ "arm64" ], @@ -766,9 +769,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.19.0.tgz", - "integrity": "sha512-xItlIAZZaiG/u0wooGzRsx11rokP4qyc/79LkAOdznGRAbOFc+SfEdfUOszG1odsHNgwippUJavag/+W/Etc6Q==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.19.2.tgz", + "integrity": "sha512-Mda7iG4fOLHNsPqjWSjANvNZYoW034yxgrndof0DwCy0D3FvTjeNo+HGE6oGWgvcLZNLlcp0hLEFcRs+UGsMLg==", "cpu": [ "ia32" ], @@ -779,9 +782,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.19.0.tgz", - "integrity": "sha512-xNo5fV5ycvCCKqiZcpB65VMR11NJB+StnxHz20jdqRAktfdfzhgjTiJ2doTDQE/7dqGaV5I7ZGqKpgph6lCIag==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.19.2.tgz", + "integrity": "sha512-DPi0ubYhSow/00YqmG1jWm3qt1F8aXziHc/UNy8bo9cpCacqhuWu+iSq/fp2SyEQK7iYTZ60fBU9cat3MXTjIQ==", "cpu": [ "x64" ], @@ -848,11 +851,11 @@ } }, "node_modules/@types/node": { - "version": "20.14.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.11.tgz", - "integrity": "sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==", + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.0.3.tgz", + "integrity": "sha512-/e0NZtK2gs6Vk2DoyrXSZZ4AlamqTkx0CcKx1Aq8/P4ITlRgU9OtVf5fl+LXkWWJce1M89pkSlH6lJJEnK7bQA==", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.11.1" } }, "node_modules/@types/webidl-conversions": { @@ -861,12 +864,10 @@ "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" }, "node_modules/@types/whatwg-url": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", - "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", - "dev": true, + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", + "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", "dependencies": { - "@types/node": "*", "@types/webidl-conversions": "*" } }, @@ -1123,9 +1124,9 @@ } }, "node_modules/async-mutex": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.1.tgz", - "integrity": "sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz", + "integrity": "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==", "dev": true, "dependencies": { "tslib": "^2.4.0" @@ -1138,9 +1139,9 @@ "dev": true }, "node_modules/atom-sorter": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atom-sorter/-/atom-sorter-2.1.1.tgz", - "integrity": "sha512-mcLINxovTScJ+mFl9BICiQ49x9km36uhBU/sLIn+vBGNCn0dQtlMHhhMCIjb1qspmZ/A+3toS2bdssTWFO27SA==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atom-sorter/-/atom-sorter-2.1.2.tgz", + "integrity": "sha512-JVE3VTZ0Wdx8Qh1lEmkZWsstPekf9OqJi7CTUbBEHNAxq4z0xDEa55w7Cjpqsd3f59gXLG2vON4pn3m35xIPww==" }, "node_modules/b4a": { "version": "1.6.6", @@ -1298,12 +1299,11 @@ } }, "node_modules/bson": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/bson/-/bson-5.5.1.tgz", - "integrity": "sha512-ix0EwukN2EpC0SRWIj/7B5+A6uQMQy6KMREI9qQqvgpkV2frH63T0UDVd1SYedL6dNCmDBYB3QtXi4ISk9YT+g==", - "dev": true, + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.8.0.tgz", + "integrity": "sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ==", "engines": { - "node": ">=14.20.1" + "node": ">=16.20.1" } }, "node_modules/buffer-crc32": { @@ -1384,9 +1384,9 @@ } }, "node_modules/chai": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", - "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", @@ -1395,7 +1395,7 @@ "get-func-name": "^2.0.2", "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.8" + "type-detect": "^4.1.0" }, "engines": { "node": ">=4" @@ -1630,9 +1630,9 @@ } }, "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dependencies": { "ms": "2.1.2" }, @@ -2505,19 +2505,6 @@ "resolved": "https://registry.npmjs.org/iobuffer/-/iobuffer-5.3.2.tgz", "integrity": "sha512-kO3CjNfLZ9t+tHxAMd+Xk4v3D/31E91rMs1dHrm7ikEQrlZ8mLDbQ4z3tZfDM48zOkReas2jx8MWSAmN9+c8Fw==" }, - "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", - "devOptional": true, - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, - "engines": { - "node": ">= 12" - } - }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -2711,12 +2698,6 @@ "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", "dev": true }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "devOptional": true - }, "node_modules/jsonwebtoken": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", @@ -2888,12 +2869,12 @@ } }, "node_modules/magic-string": { - "version": "0.30.10", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", - "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", "dev": true, "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, "node_modules/magicast": { @@ -3336,15 +3317,15 @@ } }, "node_modules/ml-spectra-processing": { - "version": "14.5.1", - "resolved": "https://registry.npmjs.org/ml-spectra-processing/-/ml-spectra-processing-14.5.1.tgz", - "integrity": "sha512-x/aVxJsusIw9Di3SbVc9Xs6By1ASDqsjxsnK2GRECz8DTIpjkuq6yuWvoQr7HPmk87h2cGygqz7jsXAYX75/bA==", + "version": "14.5.3", + "resolved": "https://registry.npmjs.org/ml-spectra-processing/-/ml-spectra-processing-14.5.3.tgz", + "integrity": "sha512-WYOnAOrCI5XKwonOtlR9oieFe/+ARBLocA+mZO89WLRCV7J/U/lFjxjOQv5/RXsoOF1udUUfxCZCjUMGfkhe5A==", "dependencies": { "binary-search": "^1.3.6", "cheminfo-types": "^1.7.3", "fft.js": "^4.0.4", "is-any-array": "^2.0.1", - "ml-matrix": "^6.11.0", + "ml-matrix": "^6.11.1", "ml-xsadd": "^2.0.0", "spline-interpolator": "^1.0.0" } @@ -3385,27 +3366,26 @@ "integrity": "sha512-cBMXjSW+fjOb4tyaVHuaVE/A5TqkukDWiOfxxAjY+PEqmmBQlLwn+8OzwPiG3brouXKY5Un4pBjAeB6UToXHaQ==" }, "node_modules/mongodb": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.9.2.tgz", - "integrity": "sha512-H60HecKO4Bc+7dhOv4sJlgvenK4fQNqqUIlXxZYQNbfEWSALGAwGoyJd/0Qwk4TttFXUOHJ2ZJQe/52ScaUwtQ==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.8.0.tgz", + "integrity": "sha512-HGQ9NWDle5WvwMnrvUxsFYPd3JEbqD3RgABHBQRuoCEND0qzhsd0iH5ypHsf1eJ+sXmvmyKpP+FLOKY8Il7jMw==", "dev": true, "dependencies": { - "bson": "^5.5.0", - "mongodb-connection-string-url": "^2.6.0", - "socks": "^2.7.1" + "@mongodb-js/saslprep": "^1.1.5", + "bson": "^6.7.0", + "mongodb-connection-string-url": "^3.0.0" }, "engines": { - "node": ">=14.20.1" - }, - "optionalDependencies": { - "@mongodb-js/saslprep": "^1.1.0" + "node": ">=16.20.1" }, "peerDependencies": { "@aws-sdk/credential-providers": "^3.188.0", - "@mongodb-js/zstd": "^1.0.0", - "kerberos": "^1.0.0 || ^2.0.0", - "mongodb-client-encryption": ">=2.3.0 <3", - "snappy": "^7.2.2" + "@mongodb-js/zstd": "^1.1.0", + "gcp-metadata": "^5.2.0", + "kerberos": "^2.0.1", + "mongodb-client-encryption": ">=6.0.0 <7", + "snappy": "^7.2.2", + "socks": "^2.7.1" }, "peerDependenciesMeta": { "@aws-sdk/credential-providers": { @@ -3414,6 +3394,9 @@ "@mongodb-js/zstd": { "optional": true }, + "gcp-metadata": { + "optional": true + }, "kerberos": { "optional": true }, @@ -3422,54 +3405,56 @@ }, "snappy": { "optional": true + }, + "socks": { + "optional": true } } }, "node_modules/mongodb-connection-string-url": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", - "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", - "dev": true, + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz", + "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==", "dependencies": { - "@types/whatwg-url": "^8.2.1", - "whatwg-url": "^11.0.0" + "@types/whatwg-url": "^11.0.2", + "whatwg-url": "^13.0.0" } }, "node_modules/mongodb-memory-server": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/mongodb-memory-server/-/mongodb-memory-server-9.4.1.tgz", - "integrity": "sha512-qONlW4sKPbtk9pqFnlPn7R73G3Q4TuebJJ5pHfoiKTqVJquojQ8xWmkCyz+/YnpA2vYBo/jib+nXvjfKwh7cjg==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/mongodb-memory-server/-/mongodb-memory-server-10.0.0.tgz", + "integrity": "sha512-7Geo/s4lst/QHw+N8/stdnyb08xn68O0zbSee62jgoPfWOXfSPhX9a8OvyOY/o23oYk9ra2EpA2Oejenb3JKfw==", "dev": true, "hasInstallScript": true, "dependencies": { - "mongodb-memory-server-core": "9.4.1", + "mongodb-memory-server-core": "10.0.0", "tslib": "^2.6.3" }, "engines": { - "node": ">=14.20.1" + "node": ">=16.20.1" } }, "node_modules/mongodb-memory-server-core": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/mongodb-memory-server-core/-/mongodb-memory-server-core-9.4.1.tgz", - "integrity": "sha512-lobapXaysH64zrn521NTkmqHc3krSPUFkuuZ8A/BmQV8ON7p2SzAEvpoJPDXIeJkxIzYw06dYL6Gn5OcZdEElA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/mongodb-memory-server-core/-/mongodb-memory-server-core-10.0.0.tgz", + "integrity": "sha512-AdYi4nVqe3Pk95fRJ+DegbDdEfAG9wujNsVvJWbwh8+ZJd+d3JJK1PHxRyJ9rMvoczvlli5M30eMig7zBuF5pQ==", "dev": true, "dependencies": { - "async-mutex": "^0.4.1", + "async-mutex": "^0.5.0", "camelcase": "^6.3.0", "debug": "^4.3.5", "find-cache-dir": "^3.3.2", "follow-redirects": "^1.15.6", - "https-proxy-agent": "^7.0.4", - "mongodb": "^5.9.2", + "https-proxy-agent": "^7.0.5", + "mongodb": "^6.7.0", "new-find-package-json": "^2.0.0", - "semver": "^7.6.2", + "semver": "^7.6.3", "tar-stream": "^3.1.7", "tslib": "^2.6.3", "yauzl": "^3.1.3" }, "engines": { - "node": ">=14.20.1" + "node": ">=16.20.1" } }, "node_modules/mongodb-memory-server-core/node_modules/agent-base": { @@ -3498,9 +3483,9 @@ } }, "node_modules/mongoose": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.5.1.tgz", - "integrity": "sha512-OhVcwVl91A1G6+XpjDcpkGP7l7ikZkxa0DylX7NT/lcEqAjggzSdqDxb48A+xsDxqNAr0ntSJ1yiE3+KJTOd5Q==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.5.2.tgz", + "integrity": "sha512-GZB4rHMdYfGatV+23IpCrqFbyCOjCNOHXgWbirr92KRwTEncBrtW3kgU9vmpKjsGf7nMmnAy06SwWUv1vhDkSg==", "dependencies": { "bson": "^6.7.0", "kareem": "2.6.3", @@ -3518,22 +3503,6 @@ "url": "https://opencollective.com/mongoose" } }, - "node_modules/mongoose/node_modules/@types/whatwg-url": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", - "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", - "dependencies": { - "@types/webidl-conversions": "*" - } - }, - "node_modules/mongoose/node_modules/bson": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.8.0.tgz", - "integrity": "sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ==", - "engines": { - "node": ">=16.20.1" - } - }, "node_modules/mongoose/node_modules/mongodb": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.7.0.tgz", @@ -3579,43 +3548,11 @@ } } }, - "node_modules/mongoose/node_modules/mongodb-connection-string-url": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz", - "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==", - "dependencies": { - "@types/whatwg-url": "^11.0.2", - "whatwg-url": "^13.0.0" - } - }, "node_modules/mongoose/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, - "node_modules/mongoose/node_modules/tr46": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", - "dependencies": { - "punycode": "^2.3.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/mongoose/node_modules/whatwg-url": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", - "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", - "dependencies": { - "tr46": "^4.1.1", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=16" - } - }, "node_modules/mpath": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", @@ -3732,28 +3669,10 @@ "varian-converter": "^1.0.0" } }, - "node_modules/nmr-load-save/node_modules/openchemlib-utils": { - "version": "5.21.1", - "resolved": "https://registry.npmjs.org/openchemlib-utils/-/openchemlib-utils-5.21.1.tgz", - "integrity": "sha512-4Y1O0aITXN9T2V6VsszV26K9WZnlg8OY0CmQ2hdLBQIEwueuroEziKSa0OShkFQNkUIk3qPBGZk2876jR6UqIQ==", - "dependencies": { - "@lukeed/uuid": "^2.0.1", - "atom-sorter": "^2.0.1", - "ensure-string": "^1.2.0", - "get-value": "^3.0.1", - "ml-floyd-warshall": "^3.0.1", - "ml-matrix": "^6.11.0", - "papaparse": "^5.4.1", - "sdf-parser": "^6.0.1" - }, - "peerDependencies": { - "openchemlib": ">=8.6.2" - } - }, "node_modules/nmr-processing": { - "version": "12.8.0", - "resolved": "https://registry.npmjs.org/nmr-processing/-/nmr-processing-12.8.0.tgz", - "integrity": "sha512-Y8FKIdqCKfl5e1fOZ9dWikk30uU49H/Edjv/SV1+epJcp/IHkUmHBOjbW2iQm7T5bUWzrH+JYxbXsXvq214XCA==", + "version": "12.8.3", + "resolved": "https://registry.npmjs.org/nmr-processing/-/nmr-processing-12.8.3.tgz", + "integrity": "sha512-XVXIHRNzWelhvtaBnzRdrqFkqwj9A5wl5b5qCmT0ByPR3wbSF5vNH8bnyhd3UP6ghmEjXQE6rCCTPDMtlfMaow==", "dependencies": { "@lukeed/uuid": "^2.0.1", "@types/d3-color": "^3.1.3", @@ -3789,6 +3708,24 @@ "spectrum-generator": "^8.0.11" } }, + "node_modules/nmr-processing/node_modules/openchemlib-utils": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/openchemlib-utils/-/openchemlib-utils-6.4.1.tgz", + "integrity": "sha512-06MimP21cvX3rME/ZFqCaA0nPDuQoiWyfgRBbSHDmJSJJYMmrbTWPxrIXy/dQSZktcDdrh8L3VQF11HWRBwsOw==", + "dependencies": { + "@lukeed/uuid": "^2.0.1", + "atom-sorter": "^2.1.1", + "ensure-string": "^1.2.0", + "get-value": "^3.0.1", + "ml-floyd-warshall": "^3.0.1", + "ml-matrix": "^6.11.1", + "papaparse": "^5.4.1", + "sdf-parser": "^6.0.1" + }, + "peerDependencies": { + "openchemlib": ">=8.14.0" + } + }, "node_modules/nmredata": { "version": "0.9.11", "resolved": "https://registry.npmjs.org/nmredata/-/nmredata-0.9.11.tgz", @@ -3800,6 +3737,24 @@ "openchemlib-utils": "^6.1.0" } }, + "node_modules/nmredata/node_modules/openchemlib-utils": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/openchemlib-utils/-/openchemlib-utils-6.4.1.tgz", + "integrity": "sha512-06MimP21cvX3rME/ZFqCaA0nPDuQoiWyfgRBbSHDmJSJJYMmrbTWPxrIXy/dQSZktcDdrh8L3VQF11HWRBwsOw==", + "dependencies": { + "@lukeed/uuid": "^2.0.1", + "atom-sorter": "^2.1.1", + "ensure-string": "^1.2.0", + "get-value": "^3.0.1", + "ml-floyd-warshall": "^3.0.1", + "ml-matrix": "^6.11.1", + "papaparse": "^5.4.1", + "sdf-parser": "^6.0.1" + }, + "peerDependencies": { + "openchemlib": ">=8.14.0" + } + }, "node_modules/node-addon-api": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", @@ -4035,26 +3990,26 @@ } }, "node_modules/openchemlib": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/openchemlib/-/openchemlib-8.14.0.tgz", - "integrity": "sha512-CMiwWWbpHsljGgst13wnLwNf+LzWfExePxsqGHC5dCvWvm/2m6DhepeIn61KlxItcTTB+v8ELNT8xcQpxq6xeg==" + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/openchemlib/-/openchemlib-8.15.0.tgz", + "integrity": "sha512-8Kd7zrZ/VGWeLsMZDjYzfkoR7zQIdYyNS1xwhKD4BvFCbZXFyLpNKEC+zOiDmeEI8R6bhaRQwTkwYxIqASxIZg==" }, "node_modules/openchemlib-utils": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/openchemlib-utils/-/openchemlib-utils-6.3.0.tgz", - "integrity": "sha512-wGJ6usyP+Bq8bfW0RJ8nx4rzDswECr+kLnFMiJFCTMfcqmLeJtybuQNwIq73nBOgGHIb8DQ3+4Ooi3qei9I0YQ==", + "version": "5.21.1", + "resolved": "https://registry.npmjs.org/openchemlib-utils/-/openchemlib-utils-5.21.1.tgz", + "integrity": "sha512-4Y1O0aITXN9T2V6VsszV26K9WZnlg8OY0CmQ2hdLBQIEwueuroEziKSa0OShkFQNkUIk3qPBGZk2876jR6UqIQ==", "dependencies": { "@lukeed/uuid": "^2.0.1", - "atom-sorter": "^2.1.0", + "atom-sorter": "^2.0.1", "ensure-string": "^1.2.0", "get-value": "^3.0.1", "ml-floyd-warshall": "^3.0.1", - "ml-matrix": "^6.11.1", + "ml-matrix": "^6.11.0", "papaparse": "^5.4.1", "sdf-parser": "^6.0.1" }, "peerDependencies": { - "openchemlib": ">=8.14.0" + "openchemlib": ">=8.6.2" } }, "node_modules/p-limit": { @@ -4210,9 +4165,9 @@ } }, "node_modules/postcss": { - "version": "8.4.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", - "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", + "version": "8.4.40", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.40.tgz", + "integrity": "sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==", "dev": true, "funding": [ { @@ -4377,9 +4332,9 @@ } }, "node_modules/rollup": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.19.0.tgz", - "integrity": "sha512-5r7EYSQIowHsK4eTZ0Y81qpZuJz+MUuYeqmmYmRMl1nwhdmbiYqt5jwzf6u7wyOzJgYqtCRMtVRKOtHANBz7rA==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.19.2.tgz", + "integrity": "sha512-6/jgnN1svF9PjNYJ4ya3l+cqutg49vOZ4rVgsDKxdl+5gpGPnByFXWGyfH9YGx9i3nfBwSu1Iyu6vGwFFA0BdQ==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -4392,22 +4347,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.19.0", - "@rollup/rollup-android-arm64": "4.19.0", - "@rollup/rollup-darwin-arm64": "4.19.0", - "@rollup/rollup-darwin-x64": "4.19.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.19.0", - "@rollup/rollup-linux-arm-musleabihf": "4.19.0", - "@rollup/rollup-linux-arm64-gnu": "4.19.0", - "@rollup/rollup-linux-arm64-musl": "4.19.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.19.0", - "@rollup/rollup-linux-riscv64-gnu": "4.19.0", - "@rollup/rollup-linux-s390x-gnu": "4.19.0", - "@rollup/rollup-linux-x64-gnu": "4.19.0", - "@rollup/rollup-linux-x64-musl": "4.19.0", - "@rollup/rollup-win32-arm64-msvc": "4.19.0", - "@rollup/rollup-win32-ia32-msvc": "4.19.0", - "@rollup/rollup-win32-x64-msvc": "4.19.0", + "@rollup/rollup-android-arm-eabi": "4.19.2", + "@rollup/rollup-android-arm64": "4.19.2", + "@rollup/rollup-darwin-arm64": "4.19.2", + "@rollup/rollup-darwin-x64": "4.19.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.19.2", + "@rollup/rollup-linux-arm-musleabihf": "4.19.2", + "@rollup/rollup-linux-arm64-gnu": "4.19.2", + "@rollup/rollup-linux-arm64-musl": "4.19.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.19.2", + "@rollup/rollup-linux-riscv64-gnu": "4.19.2", + "@rollup/rollup-linux-s390x-gnu": "4.19.2", + "@rollup/rollup-linux-x64-gnu": "4.19.2", + "@rollup/rollup-linux-x64-musl": "4.19.2", + "@rollup/rollup-win32-arm64-msvc": "4.19.2", + "@rollup/rollup-win32-ia32-msvc": "4.19.2", + "@rollup/rollup-win32-x64-msvc": "4.19.2", "fsevents": "~2.3.2" } }, @@ -4607,16 +4562,6 @@ "node": ">=10" } }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "devOptional": true, - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, "node_modules/socket.io": { "version": "4.7.5", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", @@ -4655,20 +4600,6 @@ "node": ">=10.0.0" } }, - "node_modules/socks": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", - "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", - "devOptional": true, - "dependencies": { - "ip-address": "^9.0.5", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.0.0", - "npm": ">= 3.0.0" - } - }, "node_modules/source-map-js": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", @@ -4703,12 +4634,6 @@ "d3-array": "^0.7.1" } }, - "node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "devOptional": true - }, "node_modules/stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", @@ -4993,15 +4918,14 @@ } }, "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", "dependencies": { - "punycode": "^2.1.1" + "punycode": "^2.3.0" }, "engines": { - "node": ">=12" + "node": ">=14" } }, "node_modules/tslib": { @@ -5011,9 +4935,9 @@ "dev": true }, "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "dev": true, "engines": { "node": ">=4" @@ -5049,9 +4973,9 @@ "dev": true }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.11.1.tgz", + "integrity": "sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==" }, "node_modules/unpipe": { "version": "1.0.0", @@ -5113,9 +5037,9 @@ } }, "node_modules/vite": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.4.tgz", - "integrity": "sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==", + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.5.tgz", + "integrity": "sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==", "dev": true, "dependencies": { "esbuild": "^0.21.3", @@ -5263,16 +5187,15 @@ } }, "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", + "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", "dependencies": { - "tr46": "^3.0.0", + "tr46": "^4.1.1", "webidl-conversions": "^7.0.0" }, "engines": { - "node": ">=12" + "node": ">=16" } }, "node_modules/which": { diff --git a/nomad-rest-api/package.json b/nomad-rest-api/package.json index 592b37a..d424f50 100644 --- a/nomad-rest-api/package.json +++ b/nomad-rest-api/package.json @@ -39,7 +39,7 @@ "devDependencies": { "@vitest/coverage-v8": "^1.3.1", "env-cmd": "^10.1.0", - "mongodb-memory-server": "^9.1.7", + "mongodb-memory-server": "^10.0.0", "nodemon": "^3.0.1", "supertest": "^7.0.0", "vitest": "^1.3.1"