@natlibfi/melinda-rest-api-commons 6.0.1 → 6.2.0-alpha.0

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.
Files changed (94) hide show
  1. package/.github/workflows/melinda-node-tests-and-publish.yml +4 -2
  2. package/README.md +82 -0
  3. package/dist/amqp.d.ts +41 -0
  4. package/dist/amqp.d.ts.map +1 -0
  5. package/dist/amqp.js +242 -218
  6. package/dist/amqp.js.map +1 -7
  7. package/dist/constants.d.ts +49 -0
  8. package/dist/constants.d.ts.map +1 -0
  9. package/dist/constants.js +38 -38
  10. package/dist/constants.js.map +1 -7
  11. package/dist/helpers/conversion.d.ts +8 -0
  12. package/dist/helpers/conversion.d.ts.map +1 -0
  13. package/dist/helpers/conversion.js +70 -65
  14. package/dist/helpers/conversion.js.map +1 -7
  15. package/dist/helpers/fix-constants.d.ts +76 -0
  16. package/dist/helpers/fix-constants.d.ts.map +1 -0
  17. package/dist/helpers/fix-constants.js +41 -41
  18. package/dist/helpers/fix-constants.js.map +1 -7
  19. package/dist/helpers/fix-handle-tempurns.d.ts +3 -0
  20. package/dist/helpers/fix-handle-tempurns.d.ts.map +1 -0
  21. package/dist/helpers/fix-handle-tempurns.js +73 -71
  22. package/dist/helpers/fix-handle-tempurns.js.map +1 -7
  23. package/dist/helpers/fix-strip-f884s.d.ts +10 -0
  24. package/dist/helpers/fix-strip-f884s.d.ts.map +1 -0
  25. package/dist/helpers/fix-strip-f884s.js +163 -151
  26. package/dist/helpers/fix-strip-f884s.js.map +1 -7
  27. package/dist/helpers/fix.d.ts +6 -0
  28. package/dist/helpers/fix.d.ts.map +1 -0
  29. package/dist/helpers/fix.js +133 -117
  30. package/dist/helpers/fix.js.map +1 -7
  31. package/dist/helpers/validation.d.ts +9 -0
  32. package/dist/helpers/validation.d.ts.map +1 -0
  33. package/dist/helpers/validation.js +14 -16
  34. package/dist/helpers/validation.js.map +1 -7
  35. package/dist/index.d.ts +13 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +1 -1
  38. package/dist/index.js.map +1 -7
  39. package/dist/mongo.d.ts +165 -0
  40. package/dist/mongo.d.ts.map +1 -0
  41. package/dist/mongo.js +603 -464
  42. package/dist/mongo.js.map +1 -7
  43. package/dist/mongoError.d.ts +2 -0
  44. package/dist/mongoError.d.ts.map +1 -0
  45. package/dist/mongoError.js +19 -0
  46. package/dist/mongoError.js.map +1 -0
  47. package/dist/mongoLog.d.ts +50 -0
  48. package/dist/mongoLog.d.ts.map +1 -0
  49. package/dist/mongoLog.js +282 -172
  50. package/dist/mongoLog.js.map +1 -7
  51. package/dist/utils.d.ts +36 -0
  52. package/dist/utils.d.ts.map +1 -0
  53. package/dist/utils.js +118 -87
  54. package/dist/utils.js.map +1 -7
  55. package/eslint.config.ts +66 -0
  56. package/package.json +23 -25
  57. package/test/amqp-error-branches.test.ts +551 -0
  58. package/{tests/amqp.healthtest.js → test/amqp.healthtest.ts} +19 -7
  59. package/{tests/amqp.tests.localtest.js → test/amqp.tests.localtest.ts} +66 -52
  60. package/{tests/helpers/conversion.test.js → test/helpers/conversion.test.ts} +39 -11
  61. package/test/helpers/fix-edge.test.ts +201 -0
  62. package/test/helpers/fix.test.ts +65 -0
  63. package/{tests/helpers/validation.test.js → test/helpers/validation.test.ts} +13 -8
  64. package/{tests/mongo-add-blob-size.test.js → test/mongo-add-blob-size.test.ts} +14 -15
  65. package/{tests/mongo-check-and-check-state.test.js → test/mongo-check-and-check-state.test.ts} +9 -9
  66. package/{tests/mongo-check-and-set-import-job-state.test.js → test/mongo-check-and-set-import-job-state.test.ts} +9 -10
  67. package/{tests/mongo-check-timeout.test.js → test/mongo-check-timeout.test.ts} +6 -9
  68. package/{tests/mongo-create-bulk.test.js → test/mongo-create-bulk.test.ts} +6 -7
  69. package/{tests/mongo-create-prio.test.js → test/mongo-create-prio.test.ts} +6 -6
  70. package/test/mongo-error-branches.test.ts +883 -0
  71. package/{tests/mongo-get-one.test.js → test/mongo-get-one.test.ts} +6 -6
  72. package/{tests/mongo-get-stream.test.js → test/mongo-get-stream.test.ts} +10 -9
  73. package/{tests/mongo-push-ids.test.js → test/mongo-push-ids.test.ts} +6 -6
  74. package/{tests/mongo-push-messages.test.js → test/mongo-push-messages.test.ts} +6 -6
  75. package/{tests/mongo-query-by-id.test.js → test/mongo-query-by-id.test.ts} +6 -9
  76. package/{tests/mongo-query.test.js → test/mongo-query.test.ts} +6 -7
  77. package/{tests/mongo-read-content.test.js → test/mongo-read-content.test.ts} +16 -9
  78. package/{tests/mongo-remove.test.js → test/mongo-remove.test.ts} +6 -8
  79. package/{tests/mongo-set-blob-size.test.js → test/mongo-set-blob-size.test.ts} +6 -6
  80. package/{tests/mongo-set-import-job-state.test.js → test/mongo-set-import-job-state.test.ts} +6 -6
  81. package/{tests/mongo-set-operation.test.js → test/mongo-set-operation.test.ts} +6 -6
  82. package/{tests/mongo-set-operations.test.js → test/mongo-set-operations.test.ts} +6 -6
  83. package/{tests/mongo-set-state.test.js → test/mongo-set-state.test.ts} +6 -6
  84. package/test/mongoLog-protect.test.ts +182 -0
  85. package/test/mongoLog.test.ts +191 -0
  86. package/{tests/testUtils.js → test/testUtils.ts} +49 -15
  87. package/test/utils.test.ts +360 -0
  88. package/tsconfig.json +62 -0
  89. package/tsconfig.test.json +17 -0
  90. package/dist/helpers/fix-utils.js +0 -39
  91. package/dist/helpers/fix-utils.js.map +0 -7
  92. package/eslint.config.js +0 -53
  93. package/tests/helpers/fix.test.js +0 -41
  94. package/tests/mongoLog.test.js +0 -84
package/dist/mongoLog.js CHANGED
@@ -1,184 +1,294 @@
1
- import { MongoClient } from "mongodb";
2
- import moment from "moment";
3
- import httpStatus from "http-status";
4
- import sanitize from "mongo-sanitize";
5
- import { createLogger } from "@natlibfi/melinda-backend-commons";
6
- import { Error as ApiError } from "@natlibfi/melinda-commons";
7
- import { logError } from "./utils.js";
1
+ import { MongoClient } from 'mongodb';
2
+ import httpStatus from 'http-status';
3
+ import { createLogger, Error as ApiError } from '@natlibfi/melinda-commons';
4
+ import { logError, assertString } from "./utils.js";
5
+ import { withMongoError } from "./mongoError.js";
8
6
  import { LOG_ITEM_TYPE } from "./constants.js";
9
- export default async function(MONGO_URI, dbName = "rest-api") {
10
- const logger = createLogger();
11
- const client = await MongoClient.connect(MONGO_URI);
12
- const db = client.db(dbName);
13
- const collection = "logs";
14
- return { addLogItem, query, queryById, getListOfLogs, getListOfCatalogers, getListOfCorrelationIds, getExpandedListOfLogs, protect, remove, removeBySequences };
15
- async function addLogItem(logItem) {
16
- const time = moment().toDate();
17
- const newLogItem = {
18
- ...logItem,
19
- creationTime: time,
20
- protected: false
7
+ export default async function (MONGO_URI, dbName = 'rest-api', deps = {}) {
8
+ const logger = createLogger();
9
+ const collection = 'logs';
10
+ function buildBlobSequenceFilter(correlationId, blobSequence) {
11
+ if (!blobSequence) {
12
+ return { correlationId };
13
+ }
14
+ if (typeof blobSequence === 'number') {
15
+ return { correlationId, blobSequence: parseInt(String(blobSequence), 10) };
16
+ }
17
+ if (typeof blobSequence === 'string') {
18
+ const parsed = parseInt(blobSequence, 10);
19
+ if (!Number.isNaN(parsed)) {
20
+ return { correlationId, blobSequence: parsed };
21
+ }
22
+ }
23
+ throw new ApiError(httpStatus.BAD_REQUEST, 'blobSequence must be a number or a numeric string');
24
+ }
25
+ let logCollection = deps.collection;
26
+ if (!deps.collection) {
27
+ const client = await MongoClient.connect(MONGO_URI);
28
+ logCollection = client.db(dbName).collection(collection);
29
+ }
30
+ return {
31
+ addLogItem,
32
+ query: (params) => withMongoError(() => query(params)),
33
+ queryById: (correlationId, logItemType, skip, limit) => withMongoError(() => queryById(correlationId, logItemType, skip, limit)),
34
+ getListOfLogs: (logItemType) => withMongoError(() => getListOfLogs(logItemType)),
35
+ getListOfCatalogers: () => withMongoError(() => getListOfCatalogers()),
36
+ getListOfCorrelationIds: () => withMongoError(() => getListOfCorrelationIds()),
37
+ getExpandedListOfLogs: (params) => withMongoError(() => getExpandedListOfLogs(params)),
38
+ protect,
39
+ unprotect,
40
+ remove,
41
+ removeBySequences
21
42
  };
22
- try {
23
- checkLogItemType(logItem.logItemType, false);
24
- const result = await db.collection(collection).insertOne(newLogItem);
25
- if (result.acknowledged) {
26
- const { blobSequence, blobSequenceStart, blobSequenceEnd } = logItem;
27
- const itemString = blobSequenceStart && blobSequenceEnd ? `${blobSequenceStart} - ${blobSequenceEnd}` : `${blobSequence}`;
28
- logger.info(`*** New ${logItem.logItemType} added for ${logItem.correlationId}, blobSequence(s): ${itemString}. ***`);
29
- return;
30
- }
31
- throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR);
32
- } catch (error) {
33
- const errorMessage = error.payload || error.message || "";
34
- logError(error);
35
- throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);
43
+ function isKnownLogItemType(value) {
44
+ const knownLogItemTypes = Object.values(LOG_ITEM_TYPE);
45
+ return knownLogItemTypes.includes(value);
46
+ }
47
+ async function addLogItem(logItem) {
48
+ const time = new Date();
49
+ const newLogItem = {
50
+ ...logItem,
51
+ creationTime: time,
52
+ protected: false
53
+ };
54
+ try {
55
+ checkLogItemType(logItem.logItemType, false);
56
+ const result = await logCollection.insertOne(newLogItem);
57
+ if (result.acknowledged) {
58
+ const { blobSequence, blobSequenceStart, blobSequenceEnd } = logItem;
59
+ const itemString = blobSequenceStart && blobSequenceEnd ? `${blobSequenceStart} - ${blobSequenceEnd}` : `${blobSequence}`;
60
+ logger.info(`*** New ${logItem.logItemType} added for ${logItem.correlationId}, blobSequence(s): ${itemString}. ***`);
61
+ return;
62
+ }
63
+ throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, undefined);
64
+ }
65
+ catch (error) {
66
+ const apiError = error;
67
+ const errorMessage = apiError.payload || apiError.message || '';
68
+ logError(error);
69
+ throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);
70
+ }
71
+ }
72
+ async function query({ limit = 5, skip = 0, ...rest }) {
73
+ logger.debug(`Query params: ${JSON.stringify(rest)}`);
74
+ logger.debug(`Limit and skip params: ${limit} | ${skip}`);
75
+ checkLogItemType(rest['logItemType'], false);
76
+ const result = await logCollection
77
+ .find(rest)
78
+ .sort({ creationTime: 1 })
79
+ .skip(parseInt(String(skip), 10))
80
+ .limit(parseInt(String(limit), 10))
81
+ .toArray();
82
+ logger.debug(`Query result: ${result.length > 0 ? `Found ${result.length} log items! (skip: ${skip} limit: ${limit})` : 'Not found!'}`);
83
+ return result;
84
+ }
85
+ async function queryById(correlationId, logItemType = LOG_ITEM_TYPE.MERGE_LOG, skip = 0, limit = 1) {
86
+ assertString(correlationId, 'correlationId');
87
+ logger.debug(`QueryById: ${correlationId}, logItemType: ${logItemType}, skip: ${skip}, limit: ${limit}`);
88
+ const result = await logCollection
89
+ .find({ correlationId, logItemType })
90
+ .sort({ blobSequence: 1 })
91
+ .skip(parseInt(String(skip), 10))
92
+ .limit(parseInt(String(limit), 10))
93
+ .toArray();
94
+ logger.debug(`Query result: ${result.length > 0 ? `Found ${result.length} log items!` : 'Not found!'}`);
95
+ return result;
36
96
  }
37
- }
38
- async function query({ limit = 5, skip = 0, ...rest }) {
39
- logger.debug(`Query params: ${JSON.stringify(rest)}`);
40
- logger.debug(`Limit and skip params: ${limit} | ${skip}`);
41
- checkLogItemType(rest.logItemType, false, false);
42
- const result = await db.collection(collection).find(rest).sort({ creationTime: 1 }).skip(parseInt(skip, 10)).limit(parseInt(limit, 10)).toArray();
43
- logger.debug(`Query result: ${result.length > 0 ? `Found ${result.length} log items! (skip: ${skip} limit: ${limit})` : "Not found!"}`);
44
- return result;
45
- }
46
- async function queryById(correlationId, logItemType = LOG_ITEM_TYPE.MERGE_LOG, skip = 0, limit = 1) {
47
- logger.debug(`QueryById: ${correlationId}, logItemType: ${logItemType}, skip: ${skip}, limit: ${limit}`);
48
- const result = await db.collection(collection).find({ correlationId, logItemType }).sort({ blobSequence: 1 }).skip(parseInt(skip, 10)).limit(parseInt(limit, 10)).toArray();
49
- logger.debug(`Query result: ${result.length > 0 ? `Found ${result.length} log items!` : "Not found!"}`);
50
- return result;
51
- }
52
- async function getListOfLogs(logItemType = LOG_ITEM_TYPE.MERGE_LOG) {
53
- checkLogItemType(logItemType, true, true);
54
- const result = await db.collection(collection).distinct("correlationId", { logItemType: `${logItemType}` });
55
- logger.debug(`Query result for getListOfLogs: ${result.length > 0 ? `Found ${result.length} correlationIds for ${logItemType}!` : "Not found!"}`);
56
- return result;
57
- }
58
- async function getListOfCatalogers() {
59
- logger.debug(`Getting list of Catalogers`);
60
- const result = await db.collection(collection).distinct("cataloger");
61
- return result;
62
- }
63
- async function getListOfCorrelationIds() {
64
- logger.debug(`Getting list of CorrelationIds`);
65
- const result = await db.collection(collection).distinct("correlationId");
66
- return result;
67
- }
68
- async function getExpandedListOfLogs({ logItemTypes = [LOG_ITEM_TYPE.MERGE_LOG, LOG_ITEM_TYPE.MATCH_LOG], catalogers = [], dateBefore = /* @__PURE__ */ new Date(), dateAfter = "2000-01-01", test = false }) {
69
- logger.debug(`commons/getExpandedListOfLogs: logItemTypes: ${JSON.stringify(logItemTypes)}, dateAfter: ${dateAfter}, dateBefore: ${dateBefore}}, catalogers: ${JSON.stringify(catalogers)}`);
70
- logger.silly(JSON.stringify(generateMatchObject({ logItemTypes, catalogers, dateBefore, dateAfter })));
71
- const pipeline = [
72
- // currently return only MERGE_LOG and MATCH_LOG
73
- generateMatchObject({ logItemTypes, catalogers, dateBefore, dateAfter, test }),
74
- {
75
- "$sort": { "correlationId": 1, "logItemType": 1, "creationTime": 1 }
76
- },
77
- {
78
- "$group": {
79
- "_id": { "correlationId": "$correlationId", "logItemType": "$logItemType" },
80
- "creationTime": { "$first": "$creationTime" },
81
- "cataloger": { "$first": "$cataloger" },
82
- "logCount": { "$sum": 1 }
83
- }
84
- },
85
- {
86
- "$sort": { "correlationId": 1, "logItemType": 1, "creationTime": 1 }
87
- }
88
- ];
89
- const result = await db.collection(collection).aggregate(pipeline).toArray();
90
- const fixedResult = result.map((logListing) => {
91
- const { correlationId, logItemType } = logListing._id;
92
- const { cataloger, creationTime, logCount } = logListing;
93
- return { correlationId, logItemType, cataloger, creationTime, logCount };
94
- });
95
- logger.silly(`Query result: ${JSON.stringify(result)}`);
96
- logger.silly(`Query result: ${JSON.stringify(fixedResult)}`);
97
- logger.debug(`Query result: ${fixedResult.length > 0 ? `Found ${fixedResult.length} log items!` : "Not found!"}`);
98
- return fixedResult;
99
- function generateMatchObject({ logItemTypes: logItemTypes2, catalogers: catalogers2, dateBefore: dateBefore2, dateAfter: dateAfter2, test: test2 = false }) {
100
- const matchOptions = {
101
- "$match": {
102
- "logItemType": logItemTypes2.length > 0 ? { "$in": logItemTypes2 } : /.*/ui,
103
- "cataloger": catalogers2.length > 0 ? { "$in": catalogers2 } : /.*/ui,
104
- "creationTime": {
105
- "$gte": test2 ? new Date(dateAfter2).toISOString() : new Date(dateAfter2),
106
- "$lte": test2 ? new Date(dateBefore2).toISOString() : new Date(dateBefore2)
107
- }
108
- }
109
- };
110
- return matchOptions;
97
+ async function getListOfLogs(logItemType = LOG_ITEM_TYPE.MERGE_LOG) {
98
+ checkLogItemType(logItemType, true);
99
+ const result = await logCollection
100
+ .distinct('correlationId', { logItemType: logItemType });
101
+ logger.debug(`Query result for getListOfLogs: ${result.length > 0 ? `Found ${result.length} correlationIds for ${logItemType}!` : 'Not found!'}`);
102
+ return result;
111
103
  }
112
- }
113
- async function protect(correlationId, blobSequence) {
114
- logger.info(`Protecting in Mongo (${collection}) correlationId: ${correlationId}, blobSequence: ${blobSequence}`);
115
- const cleanCorrelationId = sanitize(correlationId);
116
- const cleanBlobSequence = sanitize(blobSequence);
117
- const filter = blobSequence ? { correlationId: cleanCorrelationId, blobSequence: parseInt(cleanBlobSequence, 10) } : { correlationId: cleanCorrelationId };
118
- try {
119
- const result = await db.collection(collection).updateMany(
120
- filter,
121
- [
122
- {
123
- $set: {
124
- modificationTime: moment().toDate(),
125
- protected: { $not: "$protected" }
104
+ async function getListOfCatalogers() {
105
+ logger.debug(`Getting list of Catalogers`);
106
+ const result = await logCollection
107
+ .distinct('cataloger');
108
+ return result;
109
+ }
110
+ async function getListOfCorrelationIds() {
111
+ logger.debug(`Getting list of CorrelationIds`);
112
+ const result = await logCollection
113
+ .distinct('correlationId');
114
+ return result;
115
+ }
116
+ async function getExpandedListOfLogs({ logItemTypes, catalogers = [], dateBefore = new Date(), dateAfter = '1970-01-01', test: _test = false }) {
117
+ const wantedLogItemTypes = logItemTypes === undefined
118
+ ? [LOG_ITEM_TYPE.MERGE_LOG, LOG_ITEM_TYPE.MATCH_LOG]
119
+ : logItemTypes;
120
+ if (!Array.isArray(wantedLogItemTypes)) {
121
+ throw new ApiError(httpStatus.BAD_REQUEST, `logItemTypes must be an array: ${logItemTypes}`);
122
+ }
123
+ if (logItemTypes !== undefined) {
124
+ wantedLogItemTypes.forEach(logItemType => {
125
+ if (isKnownLogItemType(logItemType)) {
126
+ return;
127
+ }
128
+ throw new ApiError(httpStatus.BAD_REQUEST, `Unknown logItemType: ${logItemType}`);
129
+ });
130
+ }
131
+ logger.debug(`commons/getExpandedListOfLogs: logItemTypes: ${JSON.stringify(wantedLogItemTypes)}, dateAfter: ${dateAfter}, dateBefore: ${dateBefore}}, catalogers: ${JSON.stringify(catalogers)}`);
132
+ logger.silly(JSON.stringify(generateMatchObject({ logItemTypes: wantedLogItemTypes, catalogers, dateBefore, dateAfter })));
133
+ const pipeline = [
134
+ generateMatchObject({ logItemTypes: wantedLogItemTypes, catalogers, dateBefore, dateAfter }),
135
+ {
136
+ '$sort': { 'correlationId': 1, 'logItemType': 1, 'creationTime': 1 }
137
+ },
138
+ {
139
+ '$group': {
140
+ '_id': { 'correlationId': '$correlationId', 'logItemType': '$logItemType' },
141
+ 'creationTime': { '$first': '$creationTime' },
142
+ 'cataloger': { '$first': '$cataloger' },
143
+ 'logCount': { '$sum': 1 }
144
+ }
145
+ },
146
+ {
147
+ '$sort': { '_id.correlationId': 1, '_id.logItemType': 1, 'creationTime': 1 }
126
148
  }
127
- }
128
- ]
129
- );
130
- return result;
131
- } catch (error) {
132
- const errorMessage = error.payload || error.message || "";
133
- logError(error);
134
- throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);
149
+ ];
150
+ const result = await logCollection
151
+ .aggregate(pipeline)
152
+ .toArray();
153
+ const fixedResult = result.map(logListing => {
154
+ const { correlationId, logItemType } = logListing['_id'];
155
+ const { cataloger, creationTime, logCount } = logListing;
156
+ return { correlationId, logItemType, cataloger, creationTime, logCount };
157
+ });
158
+ logger.silly(`Query result: ${JSON.stringify(result)}`);
159
+ logger.silly(`Query result: ${JSON.stringify(fixedResult)}`);
160
+ logger.debug(`Query result: ${fixedResult.length > 0 ? `Found ${fixedResult.length} log items!` : 'Not found!'}`);
161
+ return fixedResult;
162
+ function generateMatchObject({ logItemTypes, catalogers, dateBefore, dateAfter }) {
163
+ const matchOptions = {
164
+ '$match': {
165
+ 'logItemType': logItemTypes.length > 0 ? { '$in': logItemTypes } : /.*/ui,
166
+ 'cataloger': catalogers.length > 0 ? { '$in': catalogers } : /.*/ui,
167
+ 'creationTime': {
168
+ '$gte': dateToUtcStartOfDay(dateAfter),
169
+ '$lt': dateToUtcExclusiveUpperBound(dateBefore)
170
+ }
171
+ }
172
+ };
173
+ return matchOptions;
174
+ function dateToUtcStartOfDay(value) {
175
+ if (value instanceof Date) {
176
+ return value;
177
+ }
178
+ const parts = String(value).slice(0, 10).split('-');
179
+ if (parts.length === 3) {
180
+ return new Date(Date.UTC(Number(parts[0]), Number(parts[1]) - 1, Number(parts[2])));
181
+ }
182
+ return new Date(value);
183
+ }
184
+ function dateToUtcExclusiveUpperBound(value) {
185
+ if (value instanceof Date) {
186
+ return value;
187
+ }
188
+ const parts = String(value).slice(0, 10).split('-');
189
+ if (parts.length === 3) {
190
+ return new Date(Date.UTC(Number(parts[0]), Number(parts[1]) - 1, Number(parts[2])) + 86400000);
191
+ }
192
+ return new Date(value);
193
+ }
194
+ }
135
195
  }
136
- }
137
- async function remove(correlationId, force = false) {
138
- logger.info(`Removing from Mongo (${collection}) correlationId: ${correlationId}`);
139
- const clean = sanitize(correlationId);
140
- const filter = force ? { correlationId: clean } : { correlationId: clean, protected: { $ne: true } };
141
- try {
142
- const result = await db.collection(collection).deleteMany(filter);
143
- return result;
144
- } catch (error) {
145
- const errorMessage = error.payload || error.message || "";
146
- logError(error);
147
- throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);
196
+ async function protect(correlationId, blobSequence) {
197
+ logger.info(`Protecting in Mongo (${collection}) correlationId: ${correlationId}, blobSequence: ${blobSequence}`);
198
+ assertString(correlationId, 'correlationId');
199
+ const filter = buildBlobSequenceFilter(correlationId, blobSequence);
200
+ try {
201
+ const result = await logCollection.updateMany(filter, [
202
+ {
203
+ $set: {
204
+ modificationTime: new Date(),
205
+ protected: true
206
+ }
207
+ }
208
+ ]);
209
+ return result;
210
+ }
211
+ catch (error) {
212
+ const apiError = error;
213
+ const errorMessage = apiError.payload || apiError.message || '';
214
+ logError(error);
215
+ throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);
216
+ }
148
217
  }
149
- }
150
- async function removeBySequences(correlationId, sequences = [], force = false) {
151
- logger.info(`Removing from Mongo (${collection}) correlationId: ${correlationId}, sequences: ${sequences.length}`);
152
- const clean = sanitize(correlationId);
153
- const cleanSequences = sequences.filter((sequence) => Number.isInteger(Number(sequence)) && sequence > 0);
154
- if (sequences.length !== cleanSequences.length) {
155
- throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Invalid sequences in removeBySequences. Sequences should be positive integers`);
218
+ async function unprotect(correlationId, blobSequence) {
219
+ logger.info(`Unprotecting in Mongo (${collection}) correlationId: ${correlationId}, blobSequence: ${blobSequence}`);
220
+ assertString(correlationId, 'correlationId');
221
+ const filter = buildBlobSequenceFilter(correlationId, blobSequence);
222
+ try {
223
+ const result = await logCollection.updateMany(filter, [
224
+ {
225
+ $set: {
226
+ modificationTime: new Date(),
227
+ protected: false
228
+ }
229
+ }
230
+ ]);
231
+ return result;
232
+ }
233
+ catch (error) {
234
+ const apiError = error;
235
+ const errorMessage = apiError.payload || apiError.message || '';
236
+ logError(error);
237
+ throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);
238
+ }
156
239
  }
157
- const filter = force ? { correlationId: clean, blobSequence: { $in: cleanSequences } } : { correlationId: clean, blobSequence: { $in: sequences }, protected: { $ne: true } };
158
- try {
159
- const result = await db.collection(collection).deleteMany(filter);
160
- return result;
161
- } catch (error) {
162
- const errorMessage = error.payload || error.message || "";
163
- logError(error);
164
- throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);
240
+ async function remove(correlationId, force = false) {
241
+ logger.info(`Removing from Mongo (${collection}) correlationId: ${correlationId}`);
242
+ assertString(correlationId, 'correlationId');
243
+ const filter = force ? { correlationId } : { correlationId, protected: { $ne: true } };
244
+ try {
245
+ const result = await logCollection.deleteMany(filter);
246
+ return result;
247
+ }
248
+ catch (error) {
249
+ const apiError = error;
250
+ const errorMessage = apiError.payload || apiError.message || '';
251
+ logError(error);
252
+ throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);
253
+ }
165
254
  }
166
- }
167
- function checkLogItemType(logItemType, errorUnknown = false, errorNotExisting = false) {
168
- if (logItemType) {
169
- const typeInLogItemTypes = Object.values(LOG_ITEM_TYPE).indexOf(logItemType) > -1;
170
- if (typeInLogItemTypes) {
171
- return logger.debug(`Valid logItemType: ${logItemType}`);
172
- }
173
- if (errorUnknown) {
174
- throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Unknown logItemType: ${logItemType}`);
175
- }
176
- return logger.debug(`WARN: We have unknown logType: ${logItemType}`);
255
+ async function removeBySequences(correlationId, sequences = [], force = false) {
256
+ logger.info(`Removing from Mongo (${collection}) correlationId: ${correlationId}, sequences: ${sequences.length}`);
257
+ assertString(correlationId, 'correlationId');
258
+ const cleanSequences = sequences
259
+ .map(sequence => Number(sequence))
260
+ .filter(sequence => Number.isInteger(sequence) && sequence > 0);
261
+ if (sequences.length !== cleanSequences.length) {
262
+ throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Invalid sequences in removeBySequences. Sequences should be positive integers`);
263
+ }
264
+ const filter = force
265
+ ? { correlationId, blobSequence: { $in: cleanSequences } }
266
+ : { correlationId, blobSequence: { $in: cleanSequences }, protected: { $ne: true } };
267
+ try {
268
+ const result = await logCollection.deleteMany(filter);
269
+ return result;
270
+ }
271
+ catch (error) {
272
+ const apiError = error;
273
+ const errorMessage = apiError.payload || apiError.message || '';
274
+ logError(error);
275
+ throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Mongo errored: ${errorMessage}`);
276
+ }
177
277
  }
178
- if (errorNotExisting) {
179
- throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `No logItemType: ${logItemType}`);
278
+ function checkLogItemType(logItemType, errorUnknown = false) {
279
+ if (logItemType) {
280
+ const typeInLogItemTypes = isKnownLogItemType(logItemType);
281
+ if (typeInLogItemTypes) {
282
+ logger.debug(`Valid logItemType: ${logItemType}`);
283
+ return;
284
+ }
285
+ if (errorUnknown) {
286
+ throw new ApiError(httpStatus.INTERNAL_SERVER_ERROR, `Unknown logItemType: ${logItemType}`);
287
+ }
288
+ logger.debug(`WARN: We have unknown logType: ${logItemType}`);
289
+ return;
290
+ }
291
+ logger.debug(`No logItemType: ${logItemType}`);
180
292
  }
181
- return logger.debug(`No logItemType: ${logItemType}`);
182
- }
183
293
  }
184
- //# sourceMappingURL=mongoLog.js.map
294
+ //# sourceMappingURL=mongoLog.js.map
@@ -1,7 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/mongoLog.js"],
4
- "sourcesContent": ["import {MongoClient} from 'mongodb';\nimport moment from 'moment';\nimport httpStatus from 'http-status';\nimport sanitize from 'mongo-sanitize';\nimport {createLogger} from '@natlibfi/melinda-backend-commons';\nimport {Error as ApiError} from '@natlibfi/melinda-commons';\nimport {logError} from './utils.js';\nimport {LOG_ITEM_TYPE} from './constants.js';\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);\n const db = client.db(dbName);\n const collection = 'logs';\n return {addLogItem, query, queryById, getListOfLogs, getListOfCatalogers, getListOfCorrelationIds, 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)\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}, logItemType: ${logItemType}, skip: ${skip}, limit: ${limit}`);\n const result = await db.collection(collection)\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 // 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 all available 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)\n .distinct('cataloger');\n\n return result;\n }\n\n /**\n * Get list of correlationIds from all available logs\n * @returns Array of query results\n */\n async function getListOfCorrelationIds() {\n logger.debug(`Getting list of CorrelationIds`);\n\n const result = await db.collection(collection)\n .distinct('correlationId');\n\n return result;\n }\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/getExpandedListOfLogs: logItemTypes: ${JSON.stringify(logItemTypes)}, dateAfter: ${dateAfter}, dateBefore: ${dateBefore}}, catalogers: ${JSON.stringify(catalogers)}`);\n logger.silly(JSON.stringify(generateMatchObject({logItemTypes, catalogers, dateBefore, dateAfter})));\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)\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"],
5
- "mappings": "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",
6
- "names": ["logItemTypes", "catalogers", "dateBefore", "dateAfter", "test"]
7
- }
1
+ {"version":3,"file":"mongoLog.js","sourceRoot":"","sources":["../src/mongoLog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ export declare function logError(err: unknown): void;
2
+ export declare function assertString(value: unknown, name: string): void;
3
+ export declare function assertNumber(value: unknown, name: string): void;
4
+ export declare function assertImportJobStateFilter(value: Record<string, unknown>, name: string): void;
5
+ export declare function createImportJobState(operation: string, state: string, queryImportJobState?: boolean): Record<string, string>;
6
+ export declare function createRecordResponseItem(params: {
7
+ responsePayload?: any;
8
+ responseStatus: number | string;
9
+ recordMetadata?: unknown;
10
+ id?: string;
11
+ }): {
12
+ recordStatus: any;
13
+ detailedRecordStatus: any;
14
+ message: any;
15
+ ids?: undefined;
16
+ databaseId: string;
17
+ recordMetadata: any;
18
+ } | {
19
+ recordStatus: string;
20
+ detailedRecordStatus: any;
21
+ message: any;
22
+ ids: any;
23
+ databaseId: string;
24
+ recordMetadata: any;
25
+ };
26
+ export declare function addRecordResponseItem({ recordResponseItem, correlationId, mongoOperator }: {
27
+ recordResponseItem: unknown;
28
+ correlationId: string;
29
+ mongoOperator: any;
30
+ }): Promise<boolean>;
31
+ export declare function addRecordResponseItems({ recordResponseItems, correlationId, mongoOperator }: {
32
+ recordResponseItems: unknown;
33
+ correlationId: string;
34
+ mongoOperator: any;
35
+ }): Promise<boolean>;
36
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAUA,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,QAapC;AAKD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,QAIxD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,QAIxD;AAMD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,QAatF;AAKD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,UAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiB1H;AAKD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAC/C,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;;;;;;;;;;;;;;EAiBA;AAkFD,wBAAsB,qBAAqB,CAAC,EAC1C,kBAAkB,EAClB,aAAa,EACb,aAAa,EACd,EAAE;IACD,kBAAkB,EAAE,OAAO,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,GAAG,CAAC;CACpB,GAAG,OAAO,CAAC,OAAO,CAAC,CAQnB;AAMD,wBAAsB,sBAAsB,CAAC,EAC3C,mBAAmB,EACnB,aAAa,EACb,aAAa,EACd,EAAE;IACD,mBAAmB,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,GAAG,CAAC;CACpB,GAAG,OAAO,CAAC,OAAO,CAAC,CAMnB"}