diff --git a/package.json b/package.json index a972b670b..d23229a03 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "csv": "5.5.3", "grenache-nodejs-ws": "git+https://github.com:bitfinexcom/grenache-nodejs-ws.git", "inversify": "6.0.1", + "lib-js-util-base": "git+https://github.com/bitfinexcom/lib-js-util-base.git", "lodash": "4.17.21", "moment": "2.29.4", "uuid": "9.0.0", diff --git a/test/1-api-sync-mode-sqlite.spec.js b/test/1-api-sync-mode-sqlite.spec.js index 3a3a76aca..be22e20b1 100644 --- a/test/1-api-sync-mode-sqlite.spec.js +++ b/test/1-api-sync-mode-sqlite.spec.js @@ -1,7 +1,7 @@ 'use strict' const path = require('path') -const { omit } = require('lodash') +const { omit } = require('lib-js-util-base') const request = require('supertest') const { diff --git a/test/2-additional-api-sync-mode-sqlite.spec.js b/test/2-additional-api-sync-mode-sqlite.spec.js index 18ce35894..210ee1b65 100644 --- a/test/2-additional-api-sync-mode-sqlite.spec.js +++ b/test/2-additional-api-sync-mode-sqlite.spec.js @@ -1,7 +1,7 @@ 'use strict' const path = require('path') -const { omit } = require('lodash') +const { omit } = require('lib-js-util-base') const request = require('supertest') const { diff --git a/workers/loc.api/generate-csv/csv.job.data.js b/workers/loc.api/generate-csv/csv.job.data.js index 02304f14e..2981d0876 100644 --- a/workers/loc.api/generate-csv/csv.job.data.js +++ b/workers/loc.api/generate-csv/csv.job.data.js @@ -1,6 +1,6 @@ 'use strict' -const { omit } = require('lodash') +const { omit } = require('lib-js-util-base') const BaseCsvJobData = require( 'bfx-report/workers/loc.api/generate-csv/csv.job.data' diff --git a/workers/loc.api/helpers/schema.js b/workers/loc.api/helpers/schema.js index 6fbb2d89e..71e78ad0a 100644 --- a/workers/loc.api/helpers/schema.js +++ b/workers/loc.api/helpers/schema.js @@ -1,6 +1,6 @@ 'use strict' -const { cloneDeep } = require('lodash') +const { cloneDeep } = require('lib-js-util-base') const { paramsSchemaForCsv, diff --git a/workers/loc.api/helpers/utils.js b/workers/loc.api/helpers/utils.js index a5181a683..541bb2591 100644 --- a/workers/loc.api/helpers/utils.js +++ b/workers/loc.api/helpers/utils.js @@ -1,6 +1,6 @@ 'use strict' -const { pick } = require('lodash') +const { pick } = require('lib-js-util-base') const { AuthError diff --git a/workers/loc.api/service.report.framework.js b/workers/loc.api/service.report.framework.js index 6ab37caa4..1960010e5 100644 --- a/workers/loc.api/service.report.framework.js +++ b/workers/loc.api/service.report.framework.js @@ -3,7 +3,7 @@ const { omit, isEmpty -} = require('lodash') +} = require('lib-js-util-base') const { AuthError, BadRequestError diff --git a/workers/loc.api/sync/authenticator/helpers/pick-props.js b/workers/loc.api/sync/authenticator/helpers/pick-props.js index d78a0be5b..23c3856c0 100644 --- a/workers/loc.api/sync/authenticator/helpers/pick-props.js +++ b/workers/loc.api/sync/authenticator/helpers/pick-props.js @@ -1,6 +1,6 @@ 'use strict' -const { pick } = require('lodash') +const { pick } = require('lib-js-util-base') module.exports = ( data, diff --git a/workers/loc.api/sync/authenticator/index.js b/workers/loc.api/sync/authenticator/index.js index cc97e75f0..3b6ee5790 100644 --- a/workers/loc.api/sync/authenticator/index.js +++ b/workers/loc.api/sync/authenticator/index.js @@ -1,7 +1,7 @@ 'use strict' const { v4: uuidv4 } = require('uuid') -const { pick, isNil } = require('lodash') +const { pick, isNil } = require('lib-js-util-base') const { AuthError, ArgsParamsError diff --git a/workers/loc.api/sync/balance.history/index.js b/workers/loc.api/sync/balance.history/index.js index 89b35af79..70f6474aa 100644 --- a/workers/loc.api/sync/balance.history/index.js +++ b/workers/loc.api/sync/balance.history/index.js @@ -1,6 +1,6 @@ 'use strict' -const { isEmpty } = require('lodash') +const { isEmpty } = require('lib-js-util-base') const moment = require('moment') const { diff --git a/workers/loc.api/sync/colls.accessors/public.colls.conf.accessors.js b/workers/loc.api/sync/colls.accessors/public.colls.conf.accessors.js index 71f4535d1..64a2143c2 100644 --- a/workers/loc.api/sync/colls.accessors/public.colls.conf.accessors.js +++ b/workers/loc.api/sync/colls.accessors/public.colls.conf.accessors.js @@ -1,11 +1,13 @@ 'use strict' const { - pick, - omit, - isEmpty, orderBy } = require('lodash') +const { + omit, + pick, + isEmpty +} = require('lib-js-util-base') const { prepareResponse } = require('bfx-report/workers/loc.api/helpers') diff --git a/workers/loc.api/sync/dao/db.backup.manager/index.js b/workers/loc.api/sync/dao/db.backup.manager/index.js index 5d35f87a8..470cc7a8b 100644 --- a/workers/loc.api/sync/dao/db.backup.manager/index.js +++ b/workers/loc.api/sync/dao/db.backup.manager/index.js @@ -4,7 +4,7 @@ const { mkdirSync } = require('fs') const { readdir, rm, copyFile } = require('fs/promises') const path = require('path') const moment = require('moment') -const { orderBy, uniqBy } = require('lodash') +const { orderBy } = require('lodash') const { decorateInjectable } = require('../../../di/utils') @@ -163,7 +163,7 @@ class DBBackupManager { if ( i === 0 || ( - uniqBy(excludedFiles, 'version').filter((m) => ( + this._getFirstUniqFilesByVer(excludedFiles).filter((m) => ( m.version !== version )).length < 2 && excludedFiles.filter((m) => ( @@ -196,6 +196,17 @@ class DBBackupManager { } } + _getFirstUniqFilesByVer (metadata) { + return metadata.reduce((accum, curr) => { + if (!accum.uKeys.has(curr?.version)) { + accum.res.push(curr) + accum.uKeys.add(curr?.version) + } + + return accum + }, { res: [], uKeys: new Set() }).res + } + _makeBackupsFolder () { mkdirSync(this._backupFolder, { recursive: true }) } diff --git a/workers/loc.api/sync/dao/helpers/filter-model-name-map.js b/workers/loc.api/sync/dao/helpers/filter-model-name-map.js index 4ef3c8db8..b9163fead 100644 --- a/workers/loc.api/sync/dao/helpers/filter-model-name-map.js +++ b/workers/loc.api/sync/dao/helpers/filter-model-name-map.js @@ -1,13 +1,13 @@ 'use strict' -const { upperFirst } = require('lodash') const { FILTER_MODELS_NAMES } = require('bfx-report/workers/loc.api/helpers') module.exports = Object.values(FILTER_MODELS_NAMES) .reduce((map, name) => { - const key = `_get${upperFirst(name)}` + const baseName = `${name[0].toUpperCase()}${name.slice(1)}` + const key = `_get${baseName}` map.set(key, name) diff --git a/workers/loc.api/sync/dao/helpers/get-order-query.js b/workers/loc.api/sync/dao/helpers/get-order-query.js index 83fb16be7..15cfa258b 100644 --- a/workers/loc.api/sync/dao/helpers/get-order-query.js +++ b/workers/loc.api/sync/dao/helpers/get-order-query.js @@ -1,6 +1,6 @@ 'use strict' -const { isEmpty } = require('lodash') +const { isEmpty } = require('lib-js-util-base') module.exports = (sort = []) => { if ( diff --git a/workers/loc.api/sync/dao/helpers/get-where-query.js b/workers/loc.api/sync/dao/helpers/get-where-query.js index bf98caa06..8bb992cd9 100644 --- a/workers/loc.api/sync/dao/helpers/get-where-query.js +++ b/workers/loc.api/sync/dao/helpers/get-where-query.js @@ -1,6 +1,6 @@ 'use strict' -const { omit } = require('lodash') +const { omit } = require('lib-js-util-base') const FILTER_CONDITIONS = require( 'bfx-report/workers/loc.api/helpers/filter.conditions' ) diff --git a/workers/loc.api/sync/data.inserter/data.checker/index.js b/workers/loc.api/sync/data.inserter/data.checker/index.js index 4d94acc4c..2ccc31136 100644 --- a/workers/loc.api/sync/data.inserter/data.checker/index.js +++ b/workers/loc.api/sync/data.inserter/data.checker/index.js @@ -1,9 +1,9 @@ 'use strict' const { - isEmpty, min } = require('lodash') +const { isEmpty } = require('lib-js-util-base') const moment = require('moment') const SyncTempTablesManager = require('../sync.temp.tables.manager') diff --git a/workers/loc.api/sync/data.inserter/helpers/get-sync-coll-name.js b/workers/loc.api/sync/data.inserter/helpers/get-sync-coll-name.js index 620534c24..2e0d29556 100644 --- a/workers/loc.api/sync/data.inserter/helpers/get-sync-coll-name.js +++ b/workers/loc.api/sync/data.inserter/helpers/get-sync-coll-name.js @@ -1,11 +1,13 @@ 'use strict' -const { snakeCase } = require('lodash') - +/* + * Converts 'getFundingOfferHistory' name to 'FUNDING_OFFER_HISTORY' + */ module.exports = (method) => { - const name = method.replace(/^[^A-Z]+/, '') - const snakeCaseName = snakeCase(name) - const upperCaseName = snakeCaseName.toUpperCase() - - return upperCaseName + return method + .replace(/^[^A-Z]+/, '') + .replace(/[A-Z]/g, (match, offset) => ( + `${offset > 0 ? '_' : ''}${match.toLowerCase()}` + )) + .toUpperCase() } diff --git a/workers/loc.api/sync/data.inserter/helpers/search-close-price-and-sum-amount.js b/workers/loc.api/sync/data.inserter/helpers/search-close-price-and-sum-amount.js index 05d09341d..93180cf05 100644 --- a/workers/loc.api/sync/data.inserter/helpers/search-close-price-and-sum-amount.js +++ b/workers/loc.api/sync/data.inserter/helpers/search-close-price-and-sum-amount.js @@ -1,6 +1,6 @@ 'use strict' -const { omit } = require('lodash') +const { omit } = require('lib-js-util-base') const _isContainedPosStatus = (positions, status) => { return positions.every(pos => ( diff --git a/workers/loc.api/sync/data.inserter/helpers/utils.js b/workers/loc.api/sync/data.inserter/helpers/utils.js index 44b54645d..79ba34414 100644 --- a/workers/loc.api/sync/data.inserter/helpers/utils.js +++ b/workers/loc.api/sync/data.inserter/helpers/utils.js @@ -2,7 +2,7 @@ const { pick -} = require('lodash') +} = require('lib-js-util-base') const normalizeApiData = ( data = [], diff --git a/workers/loc.api/sync/data.inserter/hooks/recalc.sub.account.ledgers.balances.hook.js b/workers/loc.api/sync/data.inserter/hooks/recalc.sub.account.ledgers.balances.hook.js index 2cfab8c1a..67a8d667c 100644 --- a/workers/loc.api/sync/data.inserter/hooks/recalc.sub.account.ledgers.balances.hook.js +++ b/workers/loc.api/sync/data.inserter/hooks/recalc.sub.account.ledgers.balances.hook.js @@ -4,9 +4,9 @@ const { promisify } = require('util') const setImmediatePromise = promisify(setImmediate) const { - orderBy, - merge + orderBy } = require('lodash') +const { merge } = require('lib-js-util-base') const SyncTempTablesManager = require('../sync.temp.tables.manager') const DataInserterHook = require('./data.inserter.hook') diff --git a/workers/loc.api/sync/data.inserter/index.js b/workers/loc.api/sync/data.inserter/index.js index 8b1e22ec7..48d4c711d 100644 --- a/workers/loc.api/sync/data.inserter/index.js +++ b/workers/loc.api/sync/data.inserter/index.js @@ -6,7 +6,7 @@ const setImmediatePromise = promisify(setImmediate) const EventEmitter = require('events') const { cloneDeep -} = require('lodash') +} = require('lib-js-util-base') const { FindMethodError } = require('bfx-report/workers/loc.api/errors') diff --git a/workers/loc.api/sync/data.inserter/sync.user.step.manager/index.js b/workers/loc.api/sync/data.inserter/sync.user.step.manager/index.js index b343cd22b..2e060e6bb 100644 --- a/workers/loc.api/sync/data.inserter/sync.user.step.manager/index.js +++ b/workers/loc.api/sync/data.inserter/sync.user.step.manager/index.js @@ -1,12 +1,14 @@ 'use strict' const { - isEmpty, - merge, - omit, min, max } = require('lodash') +const { + omit, + isEmpty, + merge +} = require('lib-js-util-base') const { MIN_START_MTS diff --git a/workers/loc.api/sync/helpers/calc-grouped-data.js b/workers/loc.api/sync/helpers/calc-grouped-data.js index fc7fb6290..765f091c9 100644 --- a/workers/loc.api/sync/helpers/calc-grouped-data.js +++ b/workers/loc.api/sync/helpers/calc-grouped-data.js @@ -2,7 +2,7 @@ const { promisify } = require('util') const setImmediatePromise = promisify(setImmediate) -const { pick, omit } = require('lodash') +const { omit, pick } = require('lib-js-util-base') const getBackIterable = require('../helpers/get-back-iterable') diff --git a/workers/loc.api/sync/movements/index.js b/workers/loc.api/sync/movements/index.js index a9d659e32..1576d5b11 100644 --- a/workers/loc.api/sync/movements/index.js +++ b/workers/loc.api/sync/movements/index.js @@ -1,6 +1,7 @@ 'use strict' -const { orderBy, merge } = require('lodash') +const { orderBy } = require('lodash') +const { merge } = require('lib-js-util-base') const { decorateInjectable } = require('../../di/utils') diff --git a/workers/loc.api/sync/schema/helpers/index.js b/workers/loc.api/sync/schema/helpers/index.js index 6f7aa9703..b3d4744e8 100644 --- a/workers/loc.api/sync/schema/helpers/index.js +++ b/workers/loc.api/sync/schema/helpers/index.js @@ -1,6 +1,6 @@ 'use strict' -const { cloneDeep, omit } = require('lodash') +const { omit, cloneDeep } = require('lib-js-util-base') const { CONSTR_FIELD_NAME, @@ -14,6 +14,14 @@ const cloneSchema = (map, omittedFields = []) => { const normalizedSchema = omit(schema, omittedFields) const clonedSchema = cloneDeep(normalizedSchema) + for (const [propName, value] of Object.entries(schema)) { + if (typeof value !== 'function') { + continue + } + + clonedSchema[propName] = value + } + return [key, clonedSchema] }) diff --git a/workers/loc.api/sync/sub.account.api.data/index.js b/workers/loc.api/sync/sub.account.api.data/index.js index c5bb9d166..1570ac7a7 100644 --- a/workers/loc.api/sync/sub.account.api.data/index.js +++ b/workers/loc.api/sync/sub.account.api.data/index.js @@ -1,9 +1,11 @@ 'use strict' const { - orderBy, - isEmpty + orderBy } = require('lodash') +const { + isEmpty +} = require('lib-js-util-base') const { prepareResponse } = require('bfx-report/workers/loc.api/helpers') diff --git a/workers/loc.api/sync/sync.queue/index.js b/workers/loc.api/sync/sync.queue/index.js index 247188374..be4c8d209 100644 --- a/workers/loc.api/sync/sync.queue/index.js +++ b/workers/loc.api/sync/sync.queue/index.js @@ -1,7 +1,7 @@ 'use strict' const EventEmitter = require('events') -const { isEmpty } = require('lodash') +const { isEmpty } = require('lib-js-util-base') const COLLS_TYPES = require('../schema/colls.types') diff --git a/workers/loc.api/sync/total.fees.report/index.js b/workers/loc.api/sync/total.fees.report/index.js index 4ce7fde96..f580d44cf 100644 --- a/workers/loc.api/sync/total.fees.report/index.js +++ b/workers/loc.api/sync/total.fees.report/index.js @@ -1,6 +1,6 @@ 'use strict' -const { merge } = require('lodash') +const { merge } = require('lib-js-util-base') const { TotalFeesParamsFlagError diff --git a/workers/loc.api/ws-transport/index.js b/workers/loc.api/ws-transport/index.js index 7e771b0a3..ed9334f0e 100644 --- a/workers/loc.api/ws-transport/index.js +++ b/workers/loc.api/ws-transport/index.js @@ -1,7 +1,7 @@ 'use strict' const uuid = require('uuid') -const { omit } = require('lodash') +const { omit } = require('lib-js-util-base') const { PeerRPCServer } = require('grenache-nodejs-ws') const {