@natlibfi/melinda-rest-api-commons 4.0.18-alpha.9 → 4.0.19-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/mongoLog.js CHANGED
@@ -19,7 +19,7 @@ var _constants = require("./constants");
19
19
  *
20
20
  * Shared modules for microservices of Melinda rest api batch import system
21
21
  *
22
- * Copyright (C) 2020-2022 University Of Helsinki (The National Library Of Finland)
22
+ * Copyright (C) 2020-2023 University Of Helsinki (The National Library Of Finland)
23
23
  *
24
24
  * This file is part of melinda-rest-api-commons
25
25
  *
@@ -44,7 +44,7 @@ var _constants = require("./constants");
44
44
  /**
45
45
  * Create log operator
46
46
  * @param {String} MONGO_URI connnection address to mongo
47
- * @param {String} dbName Mongo DB name, defaults 'rest-api
47
+ * @param {String} dbName Mongo DB name, defaults 'rest-api'
48
48
  * @returns {Object} containing all log handling functions
49
49
  */
50
50
  async function _default(MONGO_URI, dbName = 'rest-api') {
@@ -71,7 +71,7 @@ async function _default(MONGO_URI, dbName = 'rest-api') {
71
71
 
72
72
  /**
73
73
  * Add log item to collection
74
- * @param {Object}} logItem contains log item data
74
+ * @param {Object} logItem contains log item data
75
75
  * @returns void
76
76
  */
77
77
  async function addLogItem(logItem) {
@@ -105,7 +105,7 @@ async function _default(MONGO_URI, dbName = 'rest-api') {
105
105
  }
106
106
 
107
107
  /**
108
- * Querry log items
108
+ * Query log items
109
109
  * @param {Integer} limit defaults 5
110
110
  * @param {Integer} skip defaults 0
111
111
  * @param {Object} rest query params
@@ -132,7 +132,7 @@ async function _default(MONGO_URI, dbName = 'rest-api') {
132
132
  /**
133
133
  * Get single log item by correlationId
134
134
  * @param {String} correlationId
135
- * @param {String} logItemType contant LOG_ITEM_TYPE defaults LOG_ITEM_TYPE.MERGE_LOG
135
+ * @param {String} logItemType constant LOG_ITEM_TYPE defaults LOG_ITEM_TYPE.MERGE_LOG
136
136
  * @param {Integer} skip defaults 0
137
137
  * @param {Integer} limit defaults 1
138
138
  * @returns query result array
@@ -153,17 +153,19 @@ async function _default(MONGO_URI, dbName = 'rest-api') {
153
153
  // getListOfLogs returns list of correlationIds that have logs of given logItemType
154
154
  // if logItemType is not given, getListOfLogs returns list of correlationIds that have MERGE_LOG
155
155
  /**
156
- * Get list correlationId of logs filtered by logItemType
157
- * @param {String} logItemType contant LOG_ITEM_TYPE defaults LOG_ITEM_TYPE.MERGE_LOG
156
+ * Get list of correlationIds of logs filtered by logItemType
157
+ * @param {String} logItemType constant LOG_ITEM_TYPE defaults LOG_ITEM_TYPE.MERGE_LOG
158
158
  * @returns Array of query results
159
159
  */
160
160
  async function getListOfLogs(logItemType = _constants.LOG_ITEM_TYPE.MERGE_LOG) {
161
- // checkLogItemType(logItemType, false, false);
162
- const result = await db.collection(collection) // eslint-disable-line functional/immutable-data
163
- .distinct('correlationId', {
164
- logItemType
161
+ checkLogItemType(logItemType, true, true);
162
+ //logger.debug(logItemType);
163
+ // eslint-disable-next-line no-console
164
+ // console.log(`${JSON.stringify(logItemType)}`);
165
+ const result = await db.collection(collection).distinct('correlationId', {
166
+ logItemType: `${logItemType}`
165
167
  });
166
- logger.debug(`Query result: ${result.length > 0 ? `Found ${result.length} log items!` : 'Not found!'}`);
168
+ logger.debug(`Query result for getListOfLogs: ${result.length > 0 ? `Found ${result.length} correlationIds for ${logItemType}!` : 'Not found!'}`);
167
169
  return result;
168
170
  }
169
171
 
@@ -195,12 +197,23 @@ async function _default(MONGO_URI, dbName = 'rest-api') {
195
197
  test = false
196
198
  }) {
197
199
  logger.debug(`commons: logItemTypes: ${JSON.stringify(logItemTypes)}, dateAfter: ${dateAfter}, dateBefore: ${dateBefore}}, catalogers: ${JSON.stringify(catalogers)}`);
198
- logger.debug(JSON.stringify(generateMatchObject(logItemTypes, catalogers, dateBefore, dateAfter))); // eslint-disable-line
200
+ logger.debug(JSON.stringify(generateMatchObject({
201
+ logItemTypes,
202
+ catalogers,
203
+ dateBefore,
204
+ dateAfter
205
+ }))); // eslint-disable-line
199
206
  //checkLogItemType(logItemType, false, false);
200
207
  logger.debug(`Getting expanded list of logs`);
201
208
  const pipeline = [
202
209
  // currently return only MERGE_LOG and MATCH_LOG
203
- generateMatchObject(logItemTypes, catalogers, dateBefore, dateAfter, test), {
210
+ generateMatchObject({
211
+ logItemTypes,
212
+ catalogers,
213
+ dateBefore,
214
+ dateAfter,
215
+ test
216
+ }), {
204
217
  '$sort': {
205
218
  'correlationId': 1,
206
219
  'logItemType': 1,
@@ -253,7 +266,23 @@ async function _default(MONGO_URI, dbName = 'rest-api') {
253
266
  logger.silly(`Query result: ${JSON.stringify(fixedResult)}`);
254
267
  logger.debug(`Query result: ${fixedResult.length > 0 ? `Found ${fixedResult.length} log items!` : 'Not found!'}`);
255
268
  return fixedResult;
256
- function generateMatchObject(logItemTypes, catalogers, dateBefore, dateAfter, test = false) {
269
+
270
+ /**
271
+ * Generate match object for aggregation pipeline
272
+ * @param {[String]} logItemTypes: String array of logItemTypes.
273
+ * @param {[String]} catalogers: String array of wanted catalogers
274
+ * @param {String} dateBefore: String date schema 'YYYY-MM-DD'
275
+ * @param {String} dateAfter: String date schema 'YYYY-MM-DD'
276
+ * @param {Boolean} test: Boolean is this test run. Defaults false
277
+ * @returns Match Object
278
+ */
279
+ function generateMatchObject({
280
+ logItemTypes,
281
+ catalogers,
282
+ dateBefore,
283
+ dateAfter,
284
+ test = false
285
+ }) {
257
286
  const matchOptions = {
258
287
  '$match': {
259
288
  'logItemType': logItemTypes.length > 0 ? {
@@ -308,7 +337,7 @@ async function _default(MONGO_URI, dbName = 'rest-api') {
308
337
  /**
309
338
  * Remove logs
310
339
  * @param {String} correlationId
311
- * @param {Boolean} force
340
+ * @param {Boolean} force defaults false
312
341
  * @returns result
313
342
  */
314
343
  async function remove(correlationId, force = false) {
@@ -333,10 +362,10 @@ async function _default(MONGO_URI, dbName = 'rest-api') {
333
362
  }
334
363
 
335
364
  /**
336
- * REmove logs by sequences
365
+ * Remove logs by sequences
337
366
  * @param {String} correlationId
338
367
  * @param {[Integer]} sequences
339
- * @param {Boolean} force
368
+ * @param {Boolean} force defaults false
340
369
  * @returns result
341
370
  */
342
371
  async function removeBySequences(correlationId, sequences = [], force = false) {
@@ -373,10 +402,10 @@ async function _default(MONGO_URI, dbName = 'rest-api') {
373
402
  }
374
403
 
375
404
  /**
376
- * Checks validy of logItemType
377
- * @param {String} logItemType
378
- * @param {Boolean} errorUnknown
379
- * @param {Boolean} errorNotExisting
405
+ * Checks existence and validity of logItemType
406
+ * @param {String} logItemType constant LOG_ITEM_TYPE
407
+ * @param {Boolean} errorUnknown defaults false
408
+ * @param {Boolean} errorNotExisting defaults false
380
409
  * @returns void
381
410
  */
382
411
  function checkLogItemType(logItemType, errorUnknown = false, errorNotExisting = false) {
@@ -1 +1 @@
1
- {"version":3,"file":"mongoLog.js","names":["_mongodb","require","_melindaBackendCommons","_melindaCommons","_utils","_moment","_interopRequireDefault","_httpStatus","_mongoSanitize","_constants","_default","MONGO_URI","dbName","logger","createLogger","client","MongoClient","connect","useNewUrlParser","useUnifiedTopology","db","collection","addLogItem","query","queryById","getListOfLogs","getListOfCatalogers","getExpandedListOfLogs","protect","remove","removeBySequences","logItem","time","moment","toDate","newLogItem","creationTime","protected","checkLogItemType","logItemType","result","insertOne","acknowledged","blobSequence","blobSequenceStart","blobSequenceEnd","itemString","info","correlationId","ApiError","httpStatus","INTERNAL_SERVER_ERROR","error","errorMessage","payload","message","logError","limit","skip","rest","debug","JSON","stringify","find","sort","parseInt","toArray","length","LOG_ITEM_TYPE","MERGE_LOG","distinct","logItemTypes","MATCH_LOG","catalogers","dateBefore","Date","dateAfter","test","generateMatchObject","pipeline","aggregate","fixedResult","map","logListing","_id","cataloger","logCount","silly","matchOptions","toISOString","cleanCorrelationId","sanitize","cleanBlobSequence","filter","updateMany","$set","modificationTime","$not","force","clean","$ne","deleteMany","sequences","cleanSequences","sequence","Number","isInteger","$in","errorUnknown","errorNotExisting","typeInLogItemTypes","Object","values","indexOf"],"sources":["../src/mongoLog.js"],"sourcesContent":["/**\n*\n* @licstart The following is the entire license notice for the JavaScript code in this file.\n*\n* Shared modules for microservices of Melinda rest api batch import system\n*\n* Copyright (C) 2020-2022 University Of Helsinki (The National Library Of Finland)\n*\n* This file is part of melinda-rest-api-commons\n*\n* melinda-rest-api-commons program is free software: you can redistribute it and/or modify\n* it under the terms of the GNU Affero General Public License as\n* published by the Free Software Foundation, either version 3 of the\n* License, or (at your option) any later version.\n*\n* melinda-rest-api-commons is distributed in the hope that it will be useful,\n* but WITHOUT ANY WARRANTY; without even the implied warranty of\n* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n* GNU Affero General Public License for more details.\n*\n* You should have received a copy of the GNU Affero General Public License\n* along with this program. If not, see <http://www.gnu.org/licenses/>.\n*\n* @licend The above is the entire license notice\n* for the JavaScript code in this file.\n*\n*/\n\nimport {MongoClient} from 'mongodb';\nimport {createLogger} from '@natlibfi/melinda-backend-commons';\nimport {Error as ApiError} from '@natlibfi/melinda-commons';\nimport {logError} from './utils.js';\nimport moment from 'moment';\nimport httpStatus from 'http-status';\nimport sanitize from 'mongo-sanitize';\nimport {LOG_ITEM_TYPE} from './constants';\n\n/**\n * Create log operator\n * @param {String} MONGO_URI connnection address to mongo\n * @param {String} dbName Mongo DB name, defaults 'rest-api\n * @returns {Object} containing all log handling functions\n */\nexport default async function (MONGO_URI, dbName = 'rest-api') {\n const logger = createLogger();\n\n // Connect to mongo (MONGO)\n const client = await MongoClient.connect(MONGO_URI, {useNewUrlParser: true, useUnifiedTopology: true});\n const db = client.db(dbName);\n const collection = 'logs';\n return {addLogItem, query, queryById, getListOfLogs, getListOfCatalogers, getExpandedListOfLogs, protect, remove, removeBySequences};\n\n /**\n * Add log item to collection\n * @param {Object}} logItem contains log item data\n * @returns void\n */\n async function addLogItem(logItem) {\n const time = moment().toDate();\n const newLogItem = {\n ...logItem,\n creationTime: time,\n protected: false\n };\n try {\n // console.log(newLogItem); // eslint-disable-line\n checkLogItemType(logItem.logItemType, false);\n const result = await db.collection(collection).insertOne(newLogItem);\n if (result.acknowledged) {\n const {blobSequence, blobSequenceStart, blobSequenceEnd} = logItem;\n const itemString = blobSequenceStart && blobSequenceEnd ? `${blobSequenceStart} - ${blobSequenceEnd}` : `${blobSequence}`;\n logger.info(`*** New ${logItem.logItemType} added for ${logItem.correlationId}, blobSequence(s): ${itemString}. ***`);\n // console.log('addLogItem done', result); // eslint-disable-line\n return;\n }\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR);\n } catch (error) {\n const errorMessage = error.payload || error.message || '';\n logError(error);\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);\n }\n }\n\n /**\n * Querry log items\n * @param {Integer} limit defaults 5\n * @param {Integer} skip defaults 0\n * @param {Object} rest query params\n * @returns result array\n */\n async function query({limit = 5, skip = 0, ...rest}) {\n logger.debug(`Query params: ${JSON.stringify(rest)}`);\n logger.debug(`Limit and skip params: ${limit} | ${skip}`);\n checkLogItemType(rest.logItemType, false, false);\n const result = await db.collection(collection) // eslint-disable-line functional/immutable-data\n .find(rest)\n .sort({creationTime: 1})\n .skip(parseInt(skip, 10))\n .limit(parseInt(limit, 10))\n .toArray();\n //logger.debug(`Query result: ${result}`);\n logger.debug(`Query result: ${result.length > 0 ? `Found ${result.length} log items! (skip: ${skip} limit: ${limit})` : 'Not found!'}`);\n return result;\n }\n\n // DEVELOP: queryById returns jsut one (randomish) log! is this useful?\n /**\n * Get single log item by correlationId\n * @param {String} correlationId\n * @param {String} logItemType contant LOG_ITEM_TYPE defaults LOG_ITEM_TYPE.MERGE_LOG\n * @param {Integer} skip defaults 0\n * @param {Integer} limit defaults 1\n * @returns query result array\n */\n async function queryById(correlationId, logItemType = LOG_ITEM_TYPE.MERGE_LOG, skip = 0, limit = 1) {\n logger.debug(`QueryById: ${correlationId}`);\n const result = await db.collection(collection) // eslint-disable-line functional/immutable-data\n .find({correlationId, logItemType})\n .sort({blobSequence: 1})\n .skip(parseInt(skip, 10))\n .limit(parseInt(limit, 10))\n .toArray();\n logger.debug(`Query result: ${result.length > 0 ? `Found ${result.length} log items!` : 'Not found!'}`);\n return result;\n }\n\n // getListOfLogs returns list of correlationIds that have logs of given logItemType\n // if logItemType is not given, getListOfLogs returns list of correlationIds that have MERGE_LOG\n /**\n * Get list correlationId of logs filtered by logItemType\n * @param {String} logItemType contant LOG_ITEM_TYPE defaults LOG_ITEM_TYPE.MERGE_LOG\n * @returns Array of query results\n */\n async function getListOfLogs(logItemType = LOG_ITEM_TYPE.MERGE_LOG) {\n // checkLogItemType(logItemType, false, false);\n const result = await db.collection(collection) // eslint-disable-line functional/immutable-data\n .distinct('correlationId', {logItemType});\n logger.debug(`Query result: ${result.length > 0 ? `Found ${result.length} log items!` : 'Not found!'}`);\n return result;\n }\n\n /**\n * Get list of catalogers from logs\n * @returns Array of query results\n */\n async function getListOfCatalogers() {\n logger.debug(`Getting list of Catalogers`);\n\n const result = await db.collection(collection) // eslint-disable-line functional/immutable-data\n .distinct('cataloger');\n\n return result;\n }\n\n /**\n * Get filtered list of logs with extra info. Give params in Object\n * @param {[String]} logItemTypes: String array of logItemTypes. Defaults [LOG_ITEM_TYPE.MERGE_LOG, LOG_ITEM_TYPE.MATCH_LOG]\n * @param {[String]} catalogers: String array of wanted catalogers. Defaults []\n * @param {String} dateBefore: String date schema 'YYYY-MM-DD'. Defaults new Date()\n * @param {String} dateAfter: String date schema 'YYYY-MM-DD'. Defaults '2000-01-01'\n * @param {Boolean} test: Boolean is this test run. Defaults false\n * @returns Parsed Object {'correlationId', 'logItemType', 'creationTime', 'cataloger', 'logCount'}\n */\n async function getExpandedListOfLogs({logItemTypes = [LOG_ITEM_TYPE.MERGE_LOG, LOG_ITEM_TYPE.MATCH_LOG], catalogers = [], dateBefore = new Date(), dateAfter = '2000-01-01', test = false}) {\n logger.debug(`commons: logItemTypes: ${JSON.stringify(logItemTypes)}, dateAfter: ${dateAfter}, dateBefore: ${dateBefore}}, catalogers: ${JSON.stringify(catalogers)}`);\n logger.debug(JSON.stringify(generateMatchObject(logItemTypes, catalogers, dateBefore, dateAfter))); // eslint-disable-line\n //checkLogItemType(logItemType, false, false);\n logger.debug(`Getting expanded list of logs`);\n const pipeline = [\n // currently return only MERGE_LOG and MATCH_LOG\n generateMatchObject(logItemTypes, catalogers, dateBefore, dateAfter, test),\n {\n '$sort':\n {'correlationId': 1, 'logItemType': 1, 'creationTime': 1}\n },\n {\n '$group':\n {\n '_id': {'correlationId': '$correlationId', 'logItemType': '$logItemType'},\n 'creationTime': {'$first': '$creationTime'},\n 'cataloger': {'$first': '$cataloger'},\n 'logCount': {'$sum': 1}\n }\n },\n {\n '$sort':\n {'correlationId': 1, 'logItemType': 1, 'creationTime': 1}\n }\n ];\n\n const result = await db.collection(collection) // eslint-disable-line functional/immutable-data\n .aggregate(pipeline)\n .toArray();\n\n const fixedResult = result.map((logListing) => {\n const {correlationId, logItemType} = logListing._id;\n const {cataloger, creationTime, logCount} = logListing;\n return {correlationId, logItemType, cataloger, creationTime, logCount};\n });\n\n logger.silly(`Query result: ${JSON.stringify(result)}`);\n logger.silly(`Query result: ${JSON.stringify(fixedResult)}`);\n\n logger.debug(`Query result: ${fixedResult.length > 0 ? `Found ${fixedResult.length} log items!` : 'Not found!'}`);\n return fixedResult;\n\n function generateMatchObject(logItemTypes, catalogers, dateBefore, dateAfter, test = false) {\n const matchOptions = {\n '$match': {\n 'logItemType': logItemTypes.length > 0 ? {'$in': logItemTypes} : /.*/ui,\n 'cataloger': catalogers.length > 0 ? {'$in': catalogers} : /.*/ui,\n 'creationTime': {\n '$gte': test ? new Date(dateAfter).toISOString() : new Date(dateAfter),\n '$lte': test ? new Date(dateBefore).toISOString() : new Date(dateBefore)\n }\n }\n };\n\n return matchOptions;\n }\n }\n\n /**\n * Protect logs from cleaning. Forced cleaning defaults 30days\n * @param {String} correlationId\n * @param {Integer} blobSequence\n * @returns result\n */\n async function protect(correlationId, blobSequence) {\n logger.info(`Protecting in Mongo (${collection}) correlationId: ${correlationId}, blobSequence: ${blobSequence}`);\n const cleanCorrelationId = sanitize(correlationId);\n const cleanBlobSequence = sanitize(blobSequence);\n const filter = blobSequence ? {correlationId: cleanCorrelationId, blobSequence: parseInt(cleanBlobSequence, 10)} : {correlationId: cleanCorrelationId};\n\n try {\n const result = await db.collection(collection).updateMany(\n filter,\n [\n {\n $set: {\n modificationTime: moment().toDate(),\n protected: {$not: '$protected'}\n }\n }\n ]\n );\n return result;\n } catch (error) {\n const errorMessage = error.payload || error.message || '';\n logError(error);\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);\n }\n }\n\n /**\n * Remove logs\n * @param {String} correlationId\n * @param {Boolean} force\n * @returns result\n */\n async function remove(correlationId, force = false) {\n logger.info(`Removing from Mongo (${collection}) correlationId: ${correlationId}`);\n const clean = sanitize(correlationId);\n const filter = force ? {correlationId: clean} : {correlationId: clean, protected: {$ne: true}};\n\n try {\n const result = await db.collection(collection).deleteMany(filter);\n return result;\n } catch (error) {\n const errorMessage = error.payload || error.message || '';\n logError(error);\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);\n }\n }\n\n /**\n * REmove logs by sequences\n * @param {String} correlationId\n * @param {[Integer]} sequences\n * @param {Boolean} force\n * @returns result\n */\n async function removeBySequences(correlationId, sequences = [], force = false) {\n logger.info(`Removing from Mongo (${collection}) correlationId: ${correlationId}, sequences: ${sequences.length}`);\n const clean = sanitize(correlationId);\n // blobSequences are integers that start from 1\n // we accept also strings that are convertilble to integers greated than 0\n const cleanSequences = sequences.filter(sequence => Number.isInteger(Number(sequence)) && sequence > 0);\n\n if (sequences.length !== cleanSequences.length) {\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Invalid sequences in removeBySequences. Sequences should be positive integers`);\n }\n\n const filter = force ? {correlationId: clean, blobSequence: {$in: cleanSequences}} : {correlationId: clean, blobSequence: {$in: sequences}, protected: {$ne: true}};\n\n try {\n const result = await db.collection(collection).deleteMany(filter);\n return result;\n } catch (error) {\n const errorMessage = error.payload || error.message || '';\n logError(error);\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);\n }\n }\n\n /**\n * Checks validy of logItemType\n * @param {String} logItemType\n * @param {Boolean} errorUnknown\n * @param {Boolean} errorNotExisting\n * @returns void\n */\n function checkLogItemType(logItemType, errorUnknown = false, errorNotExisting = false) {\n if (logItemType) {\n const typeInLogItemTypes = Object.values(LOG_ITEM_TYPE).indexOf(logItemType) > -1;\n if (typeInLogItemTypes) {\n return logger.debug(`Valid logItemType: ${logItemType}`);\n }\n if (errorUnknown) {\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Unknown logItemType: ${logItemType}`);\n }\n return logger.debug(`WARN: We have unknown logType: ${logItemType}`);\n }\n\n if (errorNotExisting) {\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `No logItemType: ${logItemType}`);\n }\n return logger.debug(`No logItemType: ${logItemType}`);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"mongoLog.js","names":["_mongodb","require","_melindaBackendCommons","_melindaCommons","_utils","_moment","_interopRequireDefault","_httpStatus","_mongoSanitize","_constants","_default","MONGO_URI","dbName","logger","createLogger","client","MongoClient","connect","useNewUrlParser","useUnifiedTopology","db","collection","addLogItem","query","queryById","getListOfLogs","getListOfCatalogers","getExpandedListOfLogs","protect","remove","removeBySequences","logItem","time","moment","toDate","newLogItem","creationTime","protected","checkLogItemType","logItemType","result","insertOne","acknowledged","blobSequence","blobSequenceStart","blobSequenceEnd","itemString","info","correlationId","ApiError","httpStatus","INTERNAL_SERVER_ERROR","error","errorMessage","payload","message","logError","limit","skip","rest","debug","JSON","stringify","find","sort","parseInt","toArray","length","LOG_ITEM_TYPE","MERGE_LOG","distinct","logItemTypes","MATCH_LOG","catalogers","dateBefore","Date","dateAfter","test","generateMatchObject","pipeline","aggregate","fixedResult","map","logListing","_id","cataloger","logCount","silly","matchOptions","toISOString","cleanCorrelationId","sanitize","cleanBlobSequence","filter","updateMany","$set","modificationTime","$not","force","clean","$ne","deleteMany","sequences","cleanSequences","sequence","Number","isInteger","$in","errorUnknown","errorNotExisting","typeInLogItemTypes","Object","values","indexOf"],"sources":["../src/mongoLog.js"],"sourcesContent":["/**\n*\n* @licstart The following is the entire license notice for the JavaScript code in this file.\n*\n* Shared modules for microservices of Melinda rest api batch import system\n*\n* Copyright (C) 2020-2023 University Of Helsinki (The National Library Of Finland)\n*\n* This file is part of melinda-rest-api-commons\n*\n* melinda-rest-api-commons program is free software: you can redistribute it and/or modify\n* it under the terms of the GNU Affero General Public License as\n* published by the Free Software Foundation, either version 3 of the\n* License, or (at your option) any later version.\n*\n* melinda-rest-api-commons is distributed in the hope that it will be useful,\n* but WITHOUT ANY WARRANTY; without even the implied warranty of\n* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n* GNU Affero General Public License for more details.\n*\n* You should have received a copy of the GNU Affero General Public License\n* along with this program. If not, see <http://www.gnu.org/licenses/>.\n*\n* @licend The above is the entire license notice\n* for the JavaScript code in this file.\n*\n*/\n\nimport {MongoClient} from 'mongodb';\nimport {createLogger} from '@natlibfi/melinda-backend-commons';\nimport {Error as ApiError} from '@natlibfi/melinda-commons';\nimport {logError} from './utils.js';\nimport moment from 'moment';\nimport httpStatus from 'http-status';\nimport sanitize from 'mongo-sanitize';\nimport {LOG_ITEM_TYPE} from './constants';\n\n/**\n * Create log operator\n * @param {String} MONGO_URI connnection address to mongo\n * @param {String} dbName Mongo DB name, defaults 'rest-api'\n * @returns {Object} containing all log handling functions\n */\nexport default async function (MONGO_URI, dbName = 'rest-api') {\n const logger = createLogger();\n\n // Connect to mongo (MONGO)\n const client = await MongoClient.connect(MONGO_URI, {useNewUrlParser: true, useUnifiedTopology: true});\n const db = client.db(dbName);\n const collection = 'logs';\n return {addLogItem, query, queryById, getListOfLogs, getListOfCatalogers, getExpandedListOfLogs, protect, remove, removeBySequences};\n\n /**\n * Add log item to collection\n * @param {Object} logItem contains log item data\n * @returns void\n */\n async function addLogItem(logItem) {\n const time = moment().toDate();\n const newLogItem = {\n ...logItem,\n creationTime: time,\n protected: false\n };\n try {\n // console.log(newLogItem); // eslint-disable-line\n checkLogItemType(logItem.logItemType, false);\n const result = await db.collection(collection).insertOne(newLogItem);\n if (result.acknowledged) {\n const {blobSequence, blobSequenceStart, blobSequenceEnd} = logItem;\n const itemString = blobSequenceStart && blobSequenceEnd ? `${blobSequenceStart} - ${blobSequenceEnd}` : `${blobSequence}`;\n logger.info(`*** New ${logItem.logItemType} added for ${logItem.correlationId}, blobSequence(s): ${itemString}. ***`);\n // console.log('addLogItem done', result); // eslint-disable-line\n return;\n }\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR);\n } catch (error) {\n const errorMessage = error.payload || error.message || '';\n logError(error);\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);\n }\n }\n\n /**\n * Query log items\n * @param {Integer} limit defaults 5\n * @param {Integer} skip defaults 0\n * @param {Object} rest query params\n * @returns result array\n */\n async function query({limit = 5, skip = 0, ...rest}) {\n logger.debug(`Query params: ${JSON.stringify(rest)}`);\n logger.debug(`Limit and skip params: ${limit} | ${skip}`);\n checkLogItemType(rest.logItemType, false, false);\n const result = await db.collection(collection) // eslint-disable-line functional/immutable-data\n .find(rest)\n .sort({creationTime: 1})\n .skip(parseInt(skip, 10))\n .limit(parseInt(limit, 10))\n .toArray();\n //logger.debug(`Query result: ${result}`);\n logger.debug(`Query result: ${result.length > 0 ? `Found ${result.length} log items! (skip: ${skip} limit: ${limit})` : 'Not found!'}`);\n return result;\n }\n\n // DEVELOP: queryById returns jsut one (randomish) log! is this useful?\n /**\n * Get single log item by correlationId\n * @param {String} correlationId\n * @param {String} logItemType constant LOG_ITEM_TYPE defaults LOG_ITEM_TYPE.MERGE_LOG\n * @param {Integer} skip defaults 0\n * @param {Integer} limit defaults 1\n * @returns query result array\n */\n async function queryById(correlationId, logItemType = LOG_ITEM_TYPE.MERGE_LOG, skip = 0, limit = 1) {\n logger.debug(`QueryById: ${correlationId}`);\n const result = await db.collection(collection) // eslint-disable-line functional/immutable-data\n .find({correlationId, logItemType})\n .sort({blobSequence: 1})\n .skip(parseInt(skip, 10))\n .limit(parseInt(limit, 10))\n .toArray();\n logger.debug(`Query result: ${result.length > 0 ? `Found ${result.length} log items!` : 'Not found!'}`);\n return result;\n }\n\n // getListOfLogs returns list of correlationIds that have logs of given logItemType\n // if logItemType is not given, getListOfLogs returns list of correlationIds that have MERGE_LOG\n /**\n * Get list of correlationIds of logs filtered by logItemType\n * @param {String} logItemType constant LOG_ITEM_TYPE defaults LOG_ITEM_TYPE.MERGE_LOG\n * @returns Array of query results\n */\n async function getListOfLogs(logItemType = LOG_ITEM_TYPE.MERGE_LOG) {\n checkLogItemType(logItemType, true, true);\n //logger.debug(logItemType);\n // eslint-disable-next-line no-console\n // console.log(`${JSON.stringify(logItemType)}`);\n const result = await db.collection(collection)\n .distinct('correlationId', {logItemType: `${logItemType}`});\n logger.debug(`Query result for getListOfLogs: ${result.length > 0 ? `Found ${result.length} correlationIds for ${logItemType}!` : 'Not found!'}`);\n return result;\n }\n\n /**\n * Get list of catalogers from logs\n * @returns Array of query results\n */\n async function getListOfCatalogers() {\n logger.debug(`Getting list of Catalogers`);\n\n const result = await db.collection(collection) // eslint-disable-line functional/immutable-data\n .distinct('cataloger');\n\n return result;\n }\n\n /**\n * Get filtered list of logs with extra info. Give params in Object\n * @param {[String]} logItemTypes: String array of logItemTypes. Defaults [LOG_ITEM_TYPE.MERGE_LOG, LOG_ITEM_TYPE.MATCH_LOG]\n * @param {[String]} catalogers: String array of wanted catalogers. Defaults []\n * @param {String} dateBefore: String date schema 'YYYY-MM-DD'. Defaults new Date()\n * @param {String} dateAfter: String date schema 'YYYY-MM-DD'. Defaults '2000-01-01'\n * @param {Boolean} test: Boolean is this test run. Defaults false\n * @returns Parsed Object {'correlationId', 'logItemType', 'creationTime', 'cataloger', 'logCount'}\n */\n async function getExpandedListOfLogs({logItemTypes = [LOG_ITEM_TYPE.MERGE_LOG, LOG_ITEM_TYPE.MATCH_LOG], catalogers = [], dateBefore = new Date(), dateAfter = '2000-01-01', test = false}) {\n logger.debug(`commons: logItemTypes: ${JSON.stringify(logItemTypes)}, dateAfter: ${dateAfter}, dateBefore: ${dateBefore}}, catalogers: ${JSON.stringify(catalogers)}`);\n logger.debug(JSON.stringify(generateMatchObject({logItemTypes, catalogers, dateBefore, dateAfter}))); // eslint-disable-line\n //checkLogItemType(logItemType, false, false);\n logger.debug(`Getting expanded list of logs`);\n const pipeline = [\n // currently return only MERGE_LOG and MATCH_LOG\n generateMatchObject({logItemTypes, catalogers, dateBefore, dateAfter, test}),\n {\n '$sort':\n {'correlationId': 1, 'logItemType': 1, 'creationTime': 1}\n },\n {\n '$group':\n {\n '_id': {'correlationId': '$correlationId', 'logItemType': '$logItemType'},\n 'creationTime': {'$first': '$creationTime'},\n 'cataloger': {'$first': '$cataloger'},\n 'logCount': {'$sum': 1}\n }\n },\n {\n '$sort':\n {'correlationId': 1, 'logItemType': 1, 'creationTime': 1}\n }\n ];\n\n const result = await db.collection(collection) // eslint-disable-line functional/immutable-data\n .aggregate(pipeline)\n .toArray();\n\n const fixedResult = result.map((logListing) => {\n const {correlationId, logItemType} = logListing._id;\n const {cataloger, creationTime, logCount} = logListing;\n return {correlationId, logItemType, cataloger, creationTime, logCount};\n });\n\n logger.silly(`Query result: ${JSON.stringify(result)}`);\n logger.silly(`Query result: ${JSON.stringify(fixedResult)}`);\n\n logger.debug(`Query result: ${fixedResult.length > 0 ? `Found ${fixedResult.length} log items!` : 'Not found!'}`);\n return fixedResult;\n\n /**\n * Generate match object for aggregation pipeline\n * @param {[String]} logItemTypes: String array of logItemTypes.\n * @param {[String]} catalogers: String array of wanted catalogers\n * @param {String} dateBefore: String date schema 'YYYY-MM-DD'\n * @param {String} dateAfter: String date schema 'YYYY-MM-DD'\n * @param {Boolean} test: Boolean is this test run. Defaults false\n * @returns Match Object\n */\n function generateMatchObject({logItemTypes, catalogers, dateBefore, dateAfter, test = false}) {\n const matchOptions = {\n '$match': {\n 'logItemType': logItemTypes.length > 0 ? {'$in': logItemTypes} : /.*/ui,\n 'cataloger': catalogers.length > 0 ? {'$in': catalogers} : /.*/ui,\n 'creationTime': {\n '$gte': test ? new Date(dateAfter).toISOString() : new Date(dateAfter),\n '$lte': test ? new Date(dateBefore).toISOString() : new Date(dateBefore)\n }\n }\n };\n\n return matchOptions;\n }\n }\n\n /**\n * Protect logs from cleaning. Forced cleaning defaults 30days\n * @param {String} correlationId\n * @param {Integer} blobSequence\n * @returns result\n */\n async function protect(correlationId, blobSequence) {\n logger.info(`Protecting in Mongo (${collection}) correlationId: ${correlationId}, blobSequence: ${blobSequence}`);\n const cleanCorrelationId = sanitize(correlationId);\n const cleanBlobSequence = sanitize(blobSequence);\n const filter = blobSequence ? {correlationId: cleanCorrelationId, blobSequence: parseInt(cleanBlobSequence, 10)} : {correlationId: cleanCorrelationId};\n\n try {\n const result = await db.collection(collection).updateMany(\n filter,\n [\n {\n $set: {\n modificationTime: moment().toDate(),\n protected: {$not: '$protected'}\n }\n }\n ]\n );\n return result;\n } catch (error) {\n const errorMessage = error.payload || error.message || '';\n logError(error);\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);\n }\n }\n\n /**\n * Remove logs\n * @param {String} correlationId\n * @param {Boolean} force defaults false\n * @returns result\n */\n async function remove(correlationId, force = false) {\n logger.info(`Removing from Mongo (${collection}) correlationId: ${correlationId}`);\n const clean = sanitize(correlationId);\n const filter = force ? {correlationId: clean} : {correlationId: clean, protected: {$ne: true}};\n\n try {\n const result = await db.collection(collection).deleteMany(filter);\n return result;\n } catch (error) {\n const errorMessage = error.payload || error.message || '';\n logError(error);\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);\n }\n }\n\n /**\n * Remove logs by sequences\n * @param {String} correlationId\n * @param {[Integer]} sequences\n * @param {Boolean} force defaults false\n * @returns result\n */\n async function removeBySequences(correlationId, sequences = [], force = false) {\n logger.info(`Removing from Mongo (${collection}) correlationId: ${correlationId}, sequences: ${sequences.length}`);\n const clean = sanitize(correlationId);\n // blobSequences are integers that start from 1\n // we accept also strings that are convertilble to integers greated than 0\n const cleanSequences = sequences.filter(sequence => Number.isInteger(Number(sequence)) && sequence > 0);\n\n if (sequences.length !== cleanSequences.length) {\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Invalid sequences in removeBySequences. Sequences should be positive integers`);\n }\n\n const filter = force ? {correlationId: clean, blobSequence: {$in: cleanSequences}} : {correlationId: clean, blobSequence: {$in: sequences}, protected: {$ne: true}};\n\n try {\n const result = await db.collection(collection).deleteMany(filter);\n return result;\n } catch (error) {\n const errorMessage = error.payload || error.message || '';\n logError(error);\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);\n }\n }\n\n /**\n * Checks existence and validity of logItemType\n * @param {String} logItemType constant LOG_ITEM_TYPE\n * @param {Boolean} errorUnknown defaults false\n * @param {Boolean} errorNotExisting defaults false\n * @returns void\n */\n function checkLogItemType(logItemType, errorUnknown = false, errorNotExisting = false) {\n if (logItemType) {\n const typeInLogItemTypes = Object.values(LOG_ITEM_TYPE).indexOf(logItemType) > -1;\n if (typeInLogItemTypes) {\n return logger.debug(`Valid logItemType: ${logItemType}`);\n }\n if (errorUnknown) {\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Unknown logItemType: ${logItemType}`);\n }\n return logger.debug(`WARN: We have unknown logType: ${logItemType}`);\n }\n\n if (errorNotExisting) {\n throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `No logItemType: ${logItemType}`);\n }\n return logger.debug(`No logItemType: ${logItemType}`);\n }\n}\n"],"mappings":"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"}
@@ -63,8 +63,8 @@ async function callback({
63
63
  const dump = await mongoFixtures.dump();
64
64
  return (0, _chai.expect)(dump.logs[0]['0']).to.eql(expectedResult);
65
65
  }
66
- if (functionName === 'getCatalogersListOfLogs') {
67
- const result = await mongoLogOperator.getCatalogersListOfLogs();
66
+ if (functionName === 'getListOfCatalogers') {
67
+ const result = await mongoLogOperator.getListOfCatalogers();
68
68
  // console.log(result); // eslint-disable-line
69
69
 
70
70
  return (0, _chai.expect)(result).to.eql(expectedResult);
@@ -75,5 +75,11 @@ async function callback({
75
75
 
76
76
  return (0, _chai.expect)(result).to.eql(expectedResult);
77
77
  }
78
+ if (functionName === 'getListOfLogs') {
79
+ const result = await mongoLogOperator.getListOfLogs(params);
80
+ // console.log(result); // eslint-disable-line
81
+ return (0, _chai.expect)(result).to.eql(expectedResult);
82
+ }
83
+ throw new Error(`Unknown functionName: ${functionName}`);
78
84
  }
79
85
  //# sourceMappingURL=mongoLog.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mongoLog.spec.js","names":["_fixura","require","_fixugen","_interopRequireDefault","_fixuraMongo","_chai","_mongoLog","mongoFixtures","generateTests","callback","path","__dirname","recurse","useMetadataFile","fixura","failWhenNotFound","reader","READERS","JSON","mocha","before","initMongofixtures","beforeEach","clear","afterEach","after","close","mongoFixturesFactory","rootPath","gridFS","bucketName","useObjectId","format","creationTime","v","Date","modificationTime","getFixture","functionName","params","preFillDb","mongoUri","getUri","mongoLogOperator","createMongoLogOperator","expectedResult","populate","addLogItem","dump","expect","logs","to","eql","result","getCatalogersListOfLogs","getExpandedListOfLogs"],"sources":["../src/mongoLog.spec.js"],"sourcesContent":["// import {expect} from 'chai';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\nimport mongoFixturesFactory from '@natlibfi/fixura-mongo';\nimport {expect} from 'chai';\nimport createMongoLogOperator from './mongoLog';\n\nlet mongoFixtures; // eslint-disable-line functional/no-let\n\ngenerateTests({\n callback,\n path: [__dirname, '..', 'test-fixtures', 'mongoLog'],\n recurse: false,\n useMetadataFile: true,\n fixura: {\n failWhenNotFound: true,\n reader: READERS.JSON\n },\n mocha: {\n before: async () => {\n await initMongofixtures();\n },\n beforeEach: () => mongoFixtures.clear(),\n afterEach: () => mongoFixtures.clear(),\n after: async () => {\n await mongoFixtures.close();\n }\n }\n});\n\nasync function initMongofixtures() {\n mongoFixtures = await mongoFixturesFactory({\n rootPath: [__dirname, '..', 'test-fixtures', 'mongoLog'],\n gridFS: {bucketName: 'blobs'},\n useObjectId: true,\n format: {\n creationTime: v => new Date(v),\n modificationTime: v => new Date(v)\n }\n });\n}\n\nasync function callback({\n getFixture,\n functionName,\n params,\n preFillDb = false\n}) {\n const mongoUri = await mongoFixtures.getUri();\n const mongoLogOperator = await createMongoLogOperator(mongoUri, '');\n const expectedResult = await getFixture('expectedResult.json');\n // console.log(typeof mongoUri); // eslint-disable-line\n\n if (preFillDb) { // eslint-disable-line functional/no-conditional-statements\n await mongoFixtures.populate(getFixture('dbContents.json'));\n }\n\n if (functionName === 'addLogItem') {\n await mongoLogOperator.addLogItem(params);\n const dump = await mongoFixtures.dump();\n\n return expect(dump.logs[0]['0']).to.eql(expectedResult);\n }\n\n if (functionName === 'getCatalogersListOfLogs') {\n const result = await mongoLogOperator.getCatalogersListOfLogs();\n // console.log(result); // eslint-disable-line\n\n return expect(result).to.eql(expectedResult);\n }\n\n if (functionName === 'getExpandedListOfLogs') {\n const result = await mongoLogOperator.getExpandedListOfLogs(params);\n // console.log(result); // eslint-disable-line\n\n return expect(result).to.eql(expectedResult);\n }\n\n\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"mongoLog.spec.js","names":["_fixura","require","_fixugen","_interopRequireDefault","_fixuraMongo","_chai","_mongoLog","mongoFixtures","generateTests","callback","path","__dirname","recurse","useMetadataFile","fixura","failWhenNotFound","reader","READERS","JSON","mocha","before","initMongofixtures","beforeEach","clear","afterEach","after","close","mongoFixturesFactory","rootPath","gridFS","bucketName","useObjectId","format","creationTime","v","Date","modificationTime","getFixture","functionName","params","preFillDb","mongoUri","getUri","mongoLogOperator","createMongoLogOperator","expectedResult","populate","addLogItem","dump","expect","logs","to","eql","result","getListOfCatalogers","getExpandedListOfLogs","getListOfLogs","Error"],"sources":["../src/mongoLog.spec.js"],"sourcesContent":["// import {expect} from 'chai';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen';\nimport mongoFixturesFactory from '@natlibfi/fixura-mongo';\nimport {expect} from 'chai';\nimport createMongoLogOperator from './mongoLog';\n\nlet mongoFixtures; // eslint-disable-line functional/no-let\n\ngenerateTests({\n callback,\n path: [__dirname, '..', 'test-fixtures', 'mongoLog'],\n recurse: false,\n useMetadataFile: true,\n fixura: {\n failWhenNotFound: true,\n reader: READERS.JSON\n },\n mocha: {\n before: async () => {\n await initMongofixtures();\n },\n beforeEach: () => mongoFixtures.clear(),\n afterEach: () => mongoFixtures.clear(),\n after: async () => {\n await mongoFixtures.close();\n }\n }\n});\n\nasync function initMongofixtures() {\n mongoFixtures = await mongoFixturesFactory({\n rootPath: [__dirname, '..', 'test-fixtures', 'mongoLog'],\n gridFS: {bucketName: 'blobs'},\n useObjectId: true,\n format: {\n creationTime: v => new Date(v),\n modificationTime: v => new Date(v)\n }\n });\n}\n\nasync function callback({\n getFixture,\n functionName,\n params,\n preFillDb = false\n}) {\n const mongoUri = await mongoFixtures.getUri();\n const mongoLogOperator = await createMongoLogOperator(mongoUri, '');\n const expectedResult = await getFixture('expectedResult.json');\n // console.log(typeof mongoUri); // eslint-disable-line\n\n if (preFillDb) { // eslint-disable-line functional/no-conditional-statements\n await mongoFixtures.populate(getFixture('dbContents.json'));\n }\n\n if (functionName === 'addLogItem') {\n await mongoLogOperator.addLogItem(params);\n const dump = await mongoFixtures.dump();\n\n return expect(dump.logs[0]['0']).to.eql(expectedResult);\n }\n\n if (functionName === 'getListOfCatalogers') {\n const result = await mongoLogOperator.getListOfCatalogers();\n // console.log(result); // eslint-disable-line\n\n return expect(result).to.eql(expectedResult);\n }\n\n if (functionName === 'getExpandedListOfLogs') {\n const result = await mongoLogOperator.getExpandedListOfLogs(params);\n // console.log(result); // eslint-disable-line\n\n return expect(result).to.eql(expectedResult);\n }\n\n if (functionName === 'getListOfLogs') {\n const result = await mongoLogOperator.getListOfLogs(params);\n // console.log(result); // eslint-disable-line\n return expect(result).to.eql(expectedResult);\n }\n throw new Error(`Unknown functionName: ${functionName}`);\n}\n\n"],"mappings":"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"}
package/package.json CHANGED
@@ -14,7 +14,7 @@
14
14
  "url": "git@github.com:natlibfi/melinda-rest-api-commons.git"
15
15
  },
16
16
  "license": "AGPL-3.0+",
17
- "version": "4.0.18-alpha.9",
17
+ "version": "4.0.19-alpha.1",
18
18
  "main": "./dist/index.js",
19
19
  "engines": {
20
20
  "node": ">=18"
@@ -39,32 +39,32 @@
39
39
  },
40
40
  "dependencies": {
41
41
  "@natlibfi/marc-record": "^8.0.0",
42
- "@natlibfi/marc-record-serializers": "^10.1.1",
43
- "@natlibfi/marc-record-validate": "^8.0.1",
44
- "@natlibfi/marc-record-validators-melinda": "^10.13.0",
45
- "@natlibfi/melinda-backend-commons": "^2.2.1",
46
- "@natlibfi/melinda-commons": "^13.0.6",
42
+ "@natlibfi/marc-record-serializers": "^10.1.2-alpha.1",
43
+ "@natlibfi/marc-record-validate": "^8.0.3",
44
+ "@natlibfi/marc-record-validators-melinda": "^10.15.0",
45
+ "@natlibfi/melinda-backend-commons": "^2.2.2",
46
+ "@natlibfi/melinda-commons": "^13.0.7",
47
47
  "amqplib": "^0.10.3",
48
48
  "debug": "^4.3.4",
49
- "http-status": "^1.7.0",
49
+ "http-status": "^1.7.3",
50
50
  "moment": "^2.29.4",
51
51
  "mongo-sanitize": "^1.1.0",
52
52
  "mongodb": "^4.17.1"
53
53
  },
54
54
  "devDependencies": {
55
- "@babel/cli": "^7.22.15",
56
- "@babel/core": "^7.22.20",
57
- "@babel/plugin-transform-runtime": "^7.22.15",
58
- "@babel/preset-env": "^7.22.20",
55
+ "@babel/cli": "^7.23.0",
56
+ "@babel/core": "^7.23.2",
57
+ "@babel/plugin-transform-runtime": "^7.23.2",
58
+ "@babel/preset-env": "^7.23.2",
59
59
  "@natlibfi/eslint-config-melinda-backend": "^3.0.2",
60
- "@natlibfi/fixugen": "^2.0.1",
61
- "@natlibfi/fixura": "^3.0.1",
62
- "@natlibfi/fixura-mongo": "^2.0.10-alpha.1",
60
+ "@natlibfi/fixugen": "^2.0.2",
61
+ "@natlibfi/fixura": "^3.0.2",
62
+ "@natlibfi/fixura-mongo": "^2.0.10",
63
63
  "babel-plugin-istanbul": "^6.1.1",
64
64
  "babel-plugin-rewire": "^1.2.0",
65
- "chai": "^4.3.8",
65
+ "chai": "^4.3.10",
66
66
  "cross-env": "^7.0.3",
67
- "eslint": "^8.49.0",
67
+ "eslint": "^8.52.0",
68
68
  "mocha": "^10.2.0",
69
69
  "nodemon": "^3.0.1",
70
70
  "nyc": "^15.1.0"