@zajno/common 2.0.2 → 2.0.4
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/{lib/abstractions → abstractions}/controllers/IPluggableController.d.ts +0 -0
- package/{lib/abstractions → abstractions}/controllers/IPluggableController.d.ts.map +0 -0
- package/{lib/abstractions → abstractions}/controllers/IPluggableController.js +0 -0
- package/{lib/abstractions → abstractions}/controllers/IPluggableController.js.map +0 -0
- package/{lib/async → async}/arrays.d.ts +0 -0
- package/{lib/async → async}/arrays.d.ts.map +0 -0
- package/{lib/async → async}/arrays.extend.d.ts +0 -0
- package/{lib/async → async}/arrays.extend.d.ts.map +0 -0
- package/{lib/async → async}/arrays.extend.js +0 -0
- package/{lib/async → async}/arrays.extend.js.map +0 -0
- package/{lib/async → async}/arrays.js +0 -0
- package/{lib/async → async}/arrays.js.map +0 -0
- package/async/misc.d.ts +8 -0
- package/{lib/async → async}/misc.d.ts.map +1 -1
- package/async/misc.js +27 -0
- package/async/misc.js.map +1 -0
- package/{lib/async → async}/timeout.d.ts +0 -0
- package/{lib/async → async}/timeout.d.ts.map +0 -0
- package/{lib/async → async}/timeout.js +0 -0
- package/{lib/async → async}/timeout.js.map +0 -0
- package/{lib/controllers → controllers}/PluggableController.d.ts +0 -0
- package/{lib/controllers → controllers}/PluggableController.d.ts.map +0 -0
- package/{lib/controllers → controllers}/PluggableController.js +0 -0
- package/{lib/controllers → controllers}/PluggableController.js.map +0 -0
- package/{lib/dates → dates}/calc.d.ts +0 -0
- package/{lib/dates → dates}/calc.d.ts.map +0 -0
- package/{lib/dates → dates}/calc.js +0 -0
- package/{lib/dates → dates}/calc.js.map +0 -0
- package/{lib/dates → dates}/convert.d.ts +0 -0
- package/{lib/dates → dates}/convert.d.ts.map +0 -0
- package/{lib/dates → dates}/convert.js +0 -0
- package/{lib/dates → dates}/convert.js.map +0 -0
- package/{lib/dates → dates}/datex.d.ts +0 -0
- package/{lib/dates → dates}/datex.d.ts.map +0 -0
- package/{lib/dates → dates}/datex.js +0 -0
- package/{lib/dates → dates}/datex.js.map +0 -0
- package/{lib/dates → dates}/format.d.ts +0 -0
- package/{lib/dates → dates}/format.d.ts.map +0 -0
- package/{lib/dates → dates}/format.js +0 -0
- package/{lib/dates → dates}/format.js.map +0 -0
- package/{lib/dates → dates}/index.d.ts +0 -0
- package/{lib/dates → dates}/index.d.ts.map +0 -0
- package/{lib/dates → dates}/index.js +0 -0
- package/{lib/dates → dates}/index.js.map +0 -0
- package/{lib/dates → dates}/parse.d.ts +0 -0
- package/{lib/dates → dates}/parse.d.ts.map +0 -0
- package/{lib/dates → dates}/parse.js +0 -0
- package/{lib/dates → dates}/parse.js.map +0 -0
- package/{lib/dates → dates}/period.d.ts +0 -0
- package/{lib/dates → dates}/period.d.ts.map +0 -0
- package/{lib/dates → dates}/period.js +0 -0
- package/{lib/dates → dates}/period.js.map +0 -0
- package/{lib/dates → dates}/shift.d.ts +0 -0
- package/{lib/dates → dates}/shift.d.ts.map +0 -0
- package/{lib/dates → dates}/shift.js +0 -0
- package/{lib/dates → dates}/shift.js.map +0 -0
- package/{lib/dates → dates}/types.d.ts +0 -0
- package/{lib/dates → dates}/types.d.ts.map +0 -0
- package/{lib/dates → dates}/types.js +0 -0
- package/{lib/dates → dates}/types.js.map +0 -0
- package/{lib/dates → dates}/yearDate.d.ts +0 -0
- package/{lib/dates → dates}/yearDate.d.ts.map +0 -0
- package/{lib/dates → dates}/yearDate.js +0 -0
- package/{lib/dates → dates}/yearDate.js.map +0 -0
- package/{lib/fields → fields}/filter.d.ts +0 -0
- package/{lib/fields → fields}/filter.d.ts.map +0 -0
- package/{lib/fields → fields}/filter.js +0 -0
- package/{lib/fields → fields}/filter.js.map +0 -0
- package/{lib/fields → fields}/index.d.ts +0 -0
- package/{lib/fields → fields}/index.d.ts.map +0 -0
- package/{lib/fields → fields}/index.js +0 -0
- package/{lib/fields → fields}/index.js.map +0 -0
- package/{lib/fields → fields}/transfer.d.ts +0 -0
- package/{lib/fields → fields}/transfer.d.ts.map +0 -0
- package/{lib/fields → fields}/transfer.js +0 -0
- package/{lib/fields → fields}/transfer.js.map +0 -0
- package/{lib/fields → fields}/update.d.ts +0 -0
- package/{lib/fields → fields}/update.d.ts.map +0 -0
- package/{lib/fields → fields}/update.js +0 -0
- package/{lib/fields → fields}/update.js.map +0 -0
- package/{lib/functions → functions}/assert.d.ts +0 -0
- package/{lib/functions → functions}/assert.d.ts.map +0 -0
- package/{lib/functions → functions}/assert.js +0 -0
- package/{lib/functions → functions}/assert.js.map +0 -0
- package/{lib/functions → functions}/disposer.d.ts +0 -0
- package/{lib/functions → functions}/disposer.d.ts.map +0 -0
- package/{lib/functions → functions}/disposer.js +0 -0
- package/{lib/functions → functions}/disposer.js.map +0 -0
- package/{lib/functions → functions}/safeCall.d.ts +0 -0
- package/{lib/functions → functions}/safeCall.d.ts.map +0 -0
- package/{lib/functions → functions}/safeCall.js +0 -0
- package/{lib/functions → functions}/safeCall.js.map +0 -0
- package/{lib/functions → functions}/throttle.d.ts +0 -0
- package/{lib/functions → functions}/throttle.d.ts.map +0 -0
- package/{lib/functions → functions}/throttle.js +0 -0
- package/{lib/functions → functions}/throttle.js.map +0 -0
- package/{lib/lazy → lazy}/light.d.ts +0 -0
- package/{lib/lazy → lazy}/light.d.ts.map +0 -0
- package/{lib/lazy → lazy}/light.js +0 -0
- package/{lib/lazy → lazy}/light.js.map +0 -0
- package/{lib/lazy → lazy}/promise.d.ts +0 -0
- package/{lib/lazy → lazy}/promise.d.ts.map +0 -0
- package/{lib/lazy → lazy}/promise.js +0 -0
- package/{lib/lazy → lazy}/promise.js.map +0 -0
- package/{lib/lazy → lazy}/singleton.d.ts +0 -0
- package/{lib/lazy → lazy}/singleton.d.ts.map +0 -0
- package/{lib/lazy → lazy}/singleton.js +0 -0
- package/{lib/lazy → lazy}/singleton.js.map +0 -0
- package/{lib/logger → logger}/abstractions.d.ts +0 -0
- package/{lib/logger → logger}/abstractions.d.ts.map +0 -0
- package/{lib/logger → logger}/abstractions.js +0 -0
- package/{lib/logger → logger}/abstractions.js.map +0 -0
- package/{lib/logger → logger}/batch.d.ts +0 -0
- package/{lib/logger → logger}/batch.d.ts.map +0 -0
- package/{lib/logger → logger}/batch.js +0 -0
- package/{lib/logger → logger}/batch.js.map +0 -0
- package/{lib/logger → logger}/console.d.ts +0 -0
- package/{lib/logger → logger}/console.d.ts.map +0 -0
- package/{lib/logger → logger}/console.js +0 -0
- package/{lib/logger → logger}/console.js.map +0 -0
- package/{lib/logger → logger}/file.d.ts +0 -0
- package/{lib/logger → logger}/file.d.ts.map +0 -0
- package/{lib/logger → logger}/file.js +0 -0
- package/{lib/logger → logger}/file.js.map +0 -0
- package/{lib/logger → logger}/index.d.ts +0 -0
- package/{lib/logger → logger}/index.d.ts.map +1 -1
- package/{lib/logger → logger}/index.js +1 -1
- package/logger/index.js.map +1 -0
- package/{lib/logger → logger}/named.d.ts +0 -0
- package/{lib/logger → logger}/named.d.ts.map +0 -0
- package/{lib/logger → logger}/named.js +0 -0
- package/{lib/logger → logger}/named.js.map +0 -0
- package/{lib/logger → logger}/proxy.d.ts +0 -0
- package/{lib/logger → logger}/proxy.d.ts.map +0 -0
- package/{lib/logger → logger}/proxy.js +0 -0
- package/{lib/logger → logger}/proxy.js.map +0 -0
- package/{lib/math → math}/arrays.d.ts +0 -0
- package/{lib/math → math}/arrays.d.ts.map +0 -0
- package/{lib/math → math}/arrays.js +0 -0
- package/{lib/math → math}/arrays.js.map +0 -0
- package/{lib/math → math}/calc.d.ts +0 -0
- package/{lib/math → math}/calc.d.ts.map +0 -0
- package/{lib/math → math}/calc.js +0 -0
- package/{lib/math → math}/calc.js.map +0 -0
- package/{lib/math → math}/distribution.d.ts +0 -0
- package/{lib/math → math}/distribution.d.ts.map +0 -0
- package/{lib/math → math}/distribution.js +0 -0
- package/{lib/math → math}/distribution.js.map +0 -0
- package/{lib/math → math}/index.d.ts +0 -0
- package/{lib/math → math}/index.d.ts.map +0 -0
- package/{lib/math → math}/index.js +0 -0
- package/{lib/math → math}/index.js.map +0 -0
- package/{lib/models → models}/EntityWithStatus.d.ts +0 -0
- package/{lib/models → models}/EntityWithStatus.d.ts.map +0 -0
- package/{lib/models → models}/EntityWithStatus.js +0 -0
- package/{lib/models → models}/EntityWithStatus.js.map +0 -0
- package/{lib/models → models}/File.d.ts +0 -0
- package/{lib/models → models}/File.d.ts.map +0 -0
- package/{lib/models → models}/File.js +0 -0
- package/{lib/models → models}/File.js.map +0 -0
- package/models/Model.d.ts +12 -0
- package/models/Model.d.ts.map +1 -0
- package/models/Model.js +23 -0
- package/models/Model.js.map +1 -0
- package/{lib/observing → observing}/event.d.ts +0 -0
- package/{lib/observing → observing}/event.d.ts.map +0 -0
- package/{lib/observing → observing}/event.js +0 -0
- package/{lib/observing → observing}/event.js.map +0 -0
- package/{lib/observing → observing}/progressTracker.d.ts +0 -0
- package/{lib/observing → observing}/progressTracker.d.ts.map +0 -0
- package/{lib/observing → observing}/progressTracker.js +0 -0
- package/{lib/observing → observing}/progressTracker.js.map +0 -0
- package/{lib/observing → observing}/throttledEvent.d.ts +0 -0
- package/{lib/observing → observing}/throttledEvent.d.ts.map +0 -0
- package/{lib/observing → observing}/throttledEvent.js +0 -0
- package/{lib/observing → observing}/throttledEvent.js.map +0 -0
- package/{lib/observing → observing}/timer.d.ts +0 -0
- package/{lib/observing → observing}/timer.d.ts.map +0 -0
- package/{lib/observing → observing}/timer.js +0 -0
- package/{lib/observing → observing}/timer.js.map +0 -0
- package/package.json +8 -9
- package/{lib/storage → storage}/abstractions.d.ts +0 -0
- package/{lib/storage → storage}/abstractions.d.ts.map +0 -0
- package/{lib/storage → storage}/abstractions.js +0 -0
- package/{lib/storage → storage}/abstractions.js.map +0 -0
- package/{lib/storage → storage}/asyncWrapper.d.ts +0 -0
- package/{lib/storage → storage}/asyncWrapper.d.ts.map +0 -0
- package/{lib/storage → storage}/asyncWrapper.js +0 -0
- package/{lib/storage → storage}/asyncWrapper.js.map +0 -0
- package/{lib/storage → storage}/index.d.ts +0 -0
- package/{lib/storage → storage}/index.d.ts.map +0 -0
- package/{lib/storage → storage}/index.js +0 -0
- package/{lib/storage → storage}/index.js.map +0 -0
- package/{lib/storage → storage}/keyStorage.d.ts +0 -0
- package/{lib/storage → storage}/keyStorage.d.ts.map +0 -0
- package/{lib/storage → storage}/keyStorage.js +0 -0
- package/{lib/storage → storage}/keyStorage.js.map +0 -0
- package/{lib/structures → structures}/helpers/enum.d.ts +0 -0
- package/{lib/structures → structures}/helpers/enum.d.ts.map +0 -0
- package/{lib/structures → structures}/helpers/enum.js +0 -0
- package/{lib/structures → structures}/helpers/enum.js.map +0 -0
- package/{lib/structures → structures}/helpers/name.d.ts +0 -0
- package/{lib/structures → structures}/helpers/name.d.ts.map +0 -0
- package/{lib/structures → structures}/helpers/name.js +0 -0
- package/{lib/structures → structures}/helpers/name.js.map +0 -0
- package/{lib/structures → structures}/linkedList.d.ts +0 -0
- package/{lib/structures → structures}/linkedList.d.ts.map +0 -0
- package/{lib/structures → structures}/linkedList.js +0 -0
- package/{lib/structures → structures}/linkedList.js.map +0 -0
- package/{lib/structures → structures}/pool.d.ts +0 -0
- package/{lib/structures → structures}/pool.d.ts.map +0 -0
- package/{lib/structures → structures}/pool.js +0 -0
- package/{lib/structures → structures}/pool.js.map +0 -0
- package/{lib/structures → structures}/queue/parallel.d.ts +0 -0
- package/{lib/structures → structures}/queue/parallel.d.ts.map +0 -0
- package/{lib/structures → structures}/queue/parallel.js +0 -0
- package/{lib/structures → structures}/queue/parallel.js.map +0 -0
- package/{lib/structures → structures}/queue/tasks.d.ts +0 -0
- package/{lib/structures → structures}/queue/tasks.d.ts.map +0 -0
- package/{lib/structures → structures}/queue/tasks.js +0 -0
- package/{lib/structures → structures}/queue/tasks.js.map +0 -0
- package/{lib/structures → structures}/tempoCache.d.ts +0 -0
- package/{lib/structures → structures}/tempoCache.d.ts.map +0 -0
- package/{lib/structures → structures}/tempoCache.js +0 -0
- package/{lib/structures → structures}/tempoCache.js.map +0 -0
- package/{lib/types → types}/comparator.d.ts +0 -0
- package/{lib/types → types}/comparator.d.ts.map +0 -0
- package/{lib/types → types}/comparator.js +0 -0
- package/{lib/types → types}/comparator.js.map +0 -0
- package/{lib/types → types}/deep.d.ts +0 -0
- package/{lib/types → types}/deep.d.ts.map +0 -0
- package/{lib/types → types}/deep.js +0 -0
- package/{lib/types → types}/deep.js.map +0 -0
- package/{lib/types → types}/functions.d.ts +0 -0
- package/{lib/types → types}/functions.d.ts.map +0 -0
- package/{lib/types → types}/functions.js +0 -0
- package/{lib/types → types}/functions.js.map +0 -0
- package/{lib/types → types}/getter.d.ts +0 -0
- package/{lib/types → types}/getter.d.ts.map +0 -0
- package/{lib/types → types}/getter.js +0 -0
- package/{lib/types → types}/getter.js.map +0 -0
- package/{lib/types → types}/ident.d.ts +0 -0
- package/{lib/types → types}/ident.d.ts.map +0 -0
- package/{lib/types → types}/ident.js +0 -0
- package/{lib/types → types}/ident.js.map +0 -0
- package/{lib/types → types}/index.d.ts +3 -0
- package/{lib/types → types}/index.d.ts.map +1 -1
- package/{lib/types → types}/index.js +0 -0
- package/{lib/types → types}/index.js.map +0 -0
- package/types/models.d.ts +19 -0
- package/types/models.d.ts.map +1 -0
- package/types/models.js +3 -0
- package/types/models.js.map +1 -0
- package/{lib/validation → validation}/ValidationErrors.d.ts +0 -0
- package/{lib/validation → validation}/ValidationErrors.d.ts.map +0 -0
- package/{lib/validation → validation}/ValidationErrors.js +0 -0
- package/{lib/validation → validation}/ValidationErrors.js.map +0 -0
- package/{lib/validation → validation}/creditCard.d.ts +0 -0
- package/{lib/validation → validation}/creditCard.d.ts.map +0 -0
- package/{lib/validation → validation}/creditCard.js +0 -0
- package/{lib/validation → validation}/creditCard.js.map +0 -0
- package/{lib/validation → validation}/emails.d.ts +0 -0
- package/{lib/validation → validation}/emails.d.ts.map +0 -0
- package/{lib/validation → validation}/emails.js +0 -0
- package/{lib/validation → validation}/emails.js.map +0 -0
- package/{lib/validation → validation}/helpers.d.ts +0 -0
- package/{lib/validation → validation}/helpers.d.ts.map +0 -0
- package/{lib/validation → validation}/helpers.js +0 -0
- package/{lib/validation → validation}/helpers.js.map +0 -0
- package/{lib/validation → validation}/index.d.ts +0 -0
- package/{lib/validation → validation}/index.d.ts.map +0 -0
- package/{lib/validation → validation}/index.js +0 -0
- package/{lib/validation → validation}/index.js.map +0 -0
- package/{lib/validation → validation}/types.d.ts +0 -0
- package/{lib/validation → validation}/types.d.ts.map +0 -0
- package/{lib/validation → validation}/types.js +0 -0
- package/{lib/validation → validation}/types.js.map +0 -0
- package/{lib/validation → validation}/validators.d.ts +0 -0
- package/{lib/validation → validation}/validators.d.ts.map +0 -0
- package/{lib/validation → validation}/validators.js +0 -0
- package/{lib/validation → validation}/validators.js.map +0 -0
- package/{lib/validation → validation}/wrappers.d.ts +0 -0
- package/{lib/validation → validation}/wrappers.d.ts.map +0 -0
- package/{lib/validation → validation}/wrappers.js +0 -0
- package/{lib/validation → validation}/wrappers.js.map +0 -0
- package/.eslintignore +0 -5
- package/.eslintrc.js +0 -9
- package/.github/workflows/CI.yml +0 -48
- package/.gitignore +0 -13
- package/.nvmrc +0 -1
- package/coverage/clover.xml +0 -1280
- package/coverage/coverage-final.json +0 -43
- package/coverage/lcov-report/CommonModel.ts.html +0 -215
- package/coverage/lcov-report/FlagModel.ts.html +0 -290
- package/coverage/lcov-report/MultiSelectModel.ts.html +0 -614
- package/coverage/lcov-report/NumberModel.ts.html +0 -230
- package/coverage/lcov-report/SelectModel.ts.html +0 -503
- package/coverage/lcov-report/Validatable.ts.html +0 -386
- package/coverage/lcov-report/__tests__/helpers/expect.ts.html +0 -94
- package/coverage/lcov-report/__tests__/helpers/index.html +0 -131
- package/coverage/lcov-report/__tests__/helpers/main.ts.html +0 -121
- package/coverage/lcov-report/async/arrays.ts.html +0 -199
- package/coverage/lcov-report/async/index.html +0 -131
- package/coverage/lcov-report/async/timeout.ts.html +0 -337
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/dates/calc.ts.html +0 -301
- package/coverage/lcov-report/dates/convert.ts.html +0 -658
- package/coverage/lcov-report/dates/datex.ts.html +0 -211
- package/coverage/lcov-report/dates/format.ts.html +0 -403
- package/coverage/lcov-report/dates/index.html +0 -251
- package/coverage/lcov-report/dates/index.ts.html +0 -112
- package/coverage/lcov-report/dates/parse.ts.html +0 -157
- package/coverage/lcov-report/dates/period.ts.html +0 -154
- package/coverage/lcov-report/dates/shift.ts.html +0 -355
- package/coverage/lcov-report/dates/types.ts.html +0 -181
- package/coverage/lcov-report/dates/yearDate.ts.html +0 -193
- package/coverage/lcov-report/disposer.ts.html +0 -376
- package/coverage/lcov-report/enumHelper.ts.html +0 -454
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/fields/index.html +0 -116
- package/coverage/lcov-report/fields/update.ts.html +0 -457
- package/coverage/lcov-report/functions/disposer.ts.html +0 -376
- package/coverage/lcov-report/functions/index.html +0 -116
- package/coverage/lcov-report/functions/safeCall.ts.html +0 -103
- package/coverage/lcov-report/index.html +0 -311
- package/coverage/lcov-report/lazy/index.html +0 -131
- package/coverage/lcov-report/lazy/light.ts.html +0 -172
- package/coverage/lcov-report/lazy/promise.ts.html +0 -241
- package/coverage/lcov-report/lazy/singleton.ts.html +0 -181
- package/coverage/lcov-report/logger/batch.ts.html +0 -112
- package/coverage/lcov-report/logger/console.ts.html +0 -241
- package/coverage/lcov-report/logger/index.html +0 -176
- package/coverage/lcov-report/logger/index.ts.html +0 -298
- package/coverage/lcov-report/logger/named.ts.html +0 -226
- package/coverage/lcov-report/logger/proxy.ts.html +0 -172
- package/coverage/lcov-report/math/arrays.ts.html +0 -907
- package/coverage/lcov-report/math/calc.ts.html +0 -292
- package/coverage/lcov-report/math/distribution.ts.html +0 -145
- package/coverage/lcov-report/math/index.html +0 -161
- package/coverage/lcov-report/math/index.ts.html +0 -166
- package/coverage/lcov-report/observing/event.ts.html +0 -358
- package/coverage/lcov-report/observing/index.html +0 -116
- package/coverage/lcov-report/observing/transition.ts.html +0 -634
- package/coverage/lcov-report/parallel.ts.html +0 -550
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/queue/index.html +0 -116
- package/coverage/lcov-report/queue/parallel.ts.html +0 -499
- package/coverage/lcov-report/queue/tasks.ts.html +0 -358
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov-report/src/__tests__/helpers/expect.ts.html +0 -94
- package/coverage/lcov-report/src/__tests__/helpers/index.html +0 -131
- package/coverage/lcov-report/src/__tests__/helpers/main.ts.html +0 -121
- package/coverage/lcov-report/src/async/arrays.ts.html +0 -199
- package/coverage/lcov-report/src/async/index.html +0 -131
- package/coverage/lcov-report/src/async/timeout.ts.html +0 -337
- package/coverage/lcov-report/src/cache.ts.html +0 -628
- package/coverage/lcov-report/src/dates/calc.ts.html +0 -301
- package/coverage/lcov-report/src/dates/convert.ts.html +0 -658
- package/coverage/lcov-report/src/dates/datex.ts.html +0 -211
- package/coverage/lcov-report/src/dates/format.ts.html +0 -403
- package/coverage/lcov-report/src/dates/index.html +0 -251
- package/coverage/lcov-report/src/dates/index.ts.html +0 -112
- package/coverage/lcov-report/src/dates/parse.ts.html +0 -157
- package/coverage/lcov-report/src/dates/period.ts.html +0 -154
- package/coverage/lcov-report/src/dates/shift.ts.html +0 -355
- package/coverage/lcov-report/src/dates/types.ts.html +0 -181
- package/coverage/lcov-report/src/dates/yearDate.ts.html +0 -193
- package/coverage/lcov-report/src/disposer.ts.html +0 -376
- package/coverage/lcov-report/src/enumHelper.ts.html +0 -454
- package/coverage/lcov-report/src/event.ts.html +0 -361
- package/coverage/lcov-report/src/fields/index.html +0 -116
- package/coverage/lcov-report/src/fields/update.ts.html +0 -457
- package/coverage/lcov-report/src/functions.ts.html +0 -127
- package/coverage/lcov-report/src/index.html +0 -251
- package/coverage/lcov-report/src/lazy/index.html +0 -161
- package/coverage/lcov-report/src/lazy/lazy.ts.html +0 -181
- package/coverage/lcov-report/src/lazy/light.ts.html +0 -172
- package/coverage/lcov-report/src/lazy/observable.ts.html +0 -196
- package/coverage/lcov-report/src/lazy/promise.ts.html +0 -241
- package/coverage/lcov-report/src/lazy/singleton.ts.html +0 -181
- package/coverage/lcov-report/src/lazy.light.ts.html +0 -172
- package/coverage/lcov-report/src/logger/batch.ts.html +0 -112
- package/coverage/lcov-report/src/logger/console.ts.html +0 -241
- package/coverage/lcov-report/src/logger/index.html +0 -176
- package/coverage/lcov-report/src/logger/index.ts.html +0 -298
- package/coverage/lcov-report/src/logger/named.ts.html +0 -226
- package/coverage/lcov-report/src/logger/proxy.ts.html +0 -172
- package/coverage/lcov-report/src/math/arrays.ts.html +0 -868
- package/coverage/lcov-report/src/math/calc.ts.html +0 -292
- package/coverage/lcov-report/src/math/distribution.ts.html +0 -145
- package/coverage/lcov-report/src/math/index.html +0 -161
- package/coverage/lcov-report/src/math/index.ts.html +0 -166
- package/coverage/lcov-report/src/observers.ts.html +0 -368
- package/coverage/lcov-report/src/observersMap.ts.html +0 -400
- package/coverage/lcov-report/src/observingCache.ts.html +0 -565
- package/coverage/lcov-report/src/queue/index.html +0 -131
- package/coverage/lcov-report/src/queue/parallel.ts.html +0 -511
- package/coverage/lcov-report/src/queue/tasks.ts.html +0 -358
- package/coverage/lcov-report/src/tempoCache.ts.html +0 -139
- package/coverage/lcov-report/src/transitionObserver.ts.html +0 -634
- package/coverage/lcov-report/src/types/comparator.ts.html +0 -103
- package/coverage/lcov-report/src/types/getter.ts.html +0 -127
- package/coverage/lcov-report/src/types/index.html +0 -146
- package/coverage/lcov-report/src/types/index.ts.html +0 -112
- package/coverage/lcov-report/src/types.ts.html +0 -175
- package/coverage/lcov-report/src/validation/ValidationErrors.ts.html +0 -163
- package/coverage/lcov-report/src/validation/creditCard.ts.html +0 -160
- package/coverage/lcov-report/src/validation/helpers.ts.html +0 -226
- package/coverage/lcov-report/src/validation/index.html +0 -206
- package/coverage/lcov-report/src/validation/index.ts.html +0 -112
- package/coverage/lcov-report/src/validation/types.ts.html +0 -139
- package/coverage/lcov-report/src/validation/validators.ts.html +0 -250
- package/coverage/lcov-report/src/validation/wrappers.ts.html +0 -163
- package/coverage/lcov-report/src/viewModels/CommonModel.ts.html +0 -220
- package/coverage/lcov-report/src/viewModels/FlagModel.ts.html +0 -295
- package/coverage/lcov-report/src/viewModels/LoadingModel.ts.html +0 -241
- package/coverage/lcov-report/src/viewModels/MultiSelectModel.ts.html +0 -619
- package/coverage/lcov-report/src/viewModels/NumberModel.ts.html +0 -235
- package/coverage/lcov-report/src/viewModels/SelectModel.ts.html +0 -541
- package/coverage/lcov-report/src/viewModels/TextModel.ts.html +0 -466
- package/coverage/lcov-report/src/viewModels/Validatable.ts.html +0 -391
- package/coverage/lcov-report/src/viewModels/index.html +0 -236
- package/coverage/lcov-report/src/viewModels/wrappers.ts.html +0 -232
- package/coverage/lcov-report/structures/helpers/enum.ts.html +0 -454
- package/coverage/lcov-report/structures/helpers/index.html +0 -116
- package/coverage/lcov-report/structures/index.html +0 -116
- package/coverage/lcov-report/structures/promiseCache.ts.html +0 -628
- package/coverage/lcov-report/structures/queue/index.html +0 -131
- package/coverage/lcov-report/structures/queue/parallel.ts.html +0 -511
- package/coverage/lcov-report/structures/queue/tasks.ts.html +0 -358
- package/coverage/lcov-report/structures/subscribersMap.ts.html +0 -400
- package/coverage/lcov-report/structures/subscribersPromiseCache.ts.html +0 -562
- package/coverage/lcov-report/structures/tempoCache.ts.html +0 -139
- package/coverage/lcov-report/tasks.ts.html +0 -355
- package/coverage/lcov-report/tempoCache.ts.html +0 -134
- package/coverage/lcov-report/timer.ts.html +0 -200
- package/coverage/lcov-report/types/comparator.ts.html +0 -103
- package/coverage/lcov-report/types/getter.ts.html +0 -127
- package/coverage/lcov-report/types/index.html +0 -146
- package/coverage/lcov-report/types/index.ts.html +0 -136
- package/coverage/lcov-report/update.ts.html +0 -374
- package/coverage/lcov-report/validation/ValidationErrors.ts.html +0 -163
- package/coverage/lcov-report/validation/creditCard.ts.html +0 -160
- package/coverage/lcov-report/validation/helpers.ts.html +0 -226
- package/coverage/lcov-report/validation/index.html +0 -206
- package/coverage/lcov-report/validation/index.ts.html +0 -112
- package/coverage/lcov-report/validation/types.ts.html +0 -139
- package/coverage/lcov-report/validation/validators.ts.html +0 -250
- package/coverage/lcov-report/validation/wrappers.ts.html +0 -163
- package/coverage/lcov-report/viewModels/CommonModel.ts.html +0 -215
- package/coverage/lcov-report/viewModels/FlagModel.ts.html +0 -290
- package/coverage/lcov-report/viewModels/LoadingModel.ts.html +0 -244
- package/coverage/lcov-report/viewModels/MultiSelectModel.ts.html +0 -614
- package/coverage/lcov-report/viewModels/NumberModel.ts.html +0 -230
- package/coverage/lcov-report/viewModels/SelectModel.ts.html +0 -536
- package/coverage/lcov-report/viewModels/TextModel.ts.html +0 -461
- package/coverage/lcov-report/viewModels/Validatable.ts.html +0 -386
- package/coverage/lcov-report/viewModels/index.html +0 -116
- package/coverage/lcov.info +0 -2765
- package/global-test-setup.js +0 -3
- package/jest.config.js +0 -10
- package/lib/async/misc.d.ts +0 -3
- package/lib/async/misc.js +0 -13
- package/lib/async/misc.js.map +0 -1
- package/lib/logger/index.js.map +0 -1
- package/src/.DS_Store +0 -0
- package/src/__tests__/helpers/expect.ts +0 -3
- package/src/__tests__/helpers/main.ts +0 -12
- package/src/abstractions/controllers/IPluggableController.ts +0 -7
- package/src/async/__tests__/timeout.test.ts +0 -74
- package/src/async/arrays.extend.ts +0 -17
- package/src/async/arrays.ts +0 -38
- package/src/async/misc.ts +0 -11
- package/src/async/timeout.ts +0 -84
- package/src/controllers/PluggableController.ts +0 -35
- package/src/dates/__tests__/dates.test.ts +0 -1314
- package/src/dates/calc.ts +0 -72
- package/src/dates/convert.ts +0 -191
- package/src/dates/datex.ts +0 -42
- package/src/dates/format.ts +0 -106
- package/src/dates/index.ts +0 -9
- package/src/dates/parse.ts +0 -24
- package/src/dates/period.ts +0 -23
- package/src/dates/shift.ts +0 -90
- package/src/dates/types.ts +0 -32
- package/src/dates/yearDate.ts +0 -36
- package/src/fields/__tests__/fields.update.test.ts +0 -73
- package/src/fields/filter.ts +0 -27
- package/src/fields/index.ts +0 -4
- package/src/fields/transfer.ts +0 -85
- package/src/fields/update.ts +0 -124
- package/src/functions/assert.ts +0 -19
- package/src/functions/disposer.ts +0 -97
- package/src/functions/safeCall.ts +0 -6
- package/src/functions/throttle.ts +0 -96
- package/src/lazy/__tests__/lazy.test.ts +0 -48
- package/src/lazy/light.ts +0 -29
- package/src/lazy/promise.ts +0 -52
- package/src/lazy/singleton.ts +0 -32
- package/src/logger/__tests__/logger.test.ts +0 -206
- package/src/logger/abstractions.ts +0 -13
- package/src/logger/batch.ts +0 -9
- package/src/logger/console.ts +0 -52
- package/src/logger/file.ts +0 -66
- package/src/logger/index.ts +0 -71
- package/src/logger/named.ts +0 -47
- package/src/logger/proxy.ts +0 -29
- package/src/math/__tests__/arrays.test.ts +0 -196
- package/src/math/__tests__/calc.test.ts +0 -67
- package/src/math/__tests__/distribution.test.ts +0 -25
- package/src/math/__tests__/index.test.ts +0 -20
- package/src/math/arrays.ts +0 -274
- package/src/math/calc.ts +0 -69
- package/src/math/distribution.ts +0 -20
- package/src/math/index.ts +0 -27
- package/src/models/EntityWithStatus.ts +0 -58
- package/src/models/File.ts +0 -14
- package/src/observing/event.ts +0 -91
- package/src/observing/progressTracker.ts +0 -90
- package/src/observing/throttledEvent.ts +0 -20
- package/src/observing/timer.ts +0 -40
- package/src/storage/abstractions.ts +0 -18
- package/src/storage/asyncWrapper.ts +0 -24
- package/src/storage/index.ts +0 -2
- package/src/storage/keyStorage.ts +0 -40
- package/src/structures/__tests__/enumHelper.test.ts +0 -85
- package/src/structures/__tests__/tempoCache.test.ts +0 -31
- package/src/structures/helpers/enum.ts +0 -123
- package/src/structures/helpers/name.ts +0 -58
- package/src/structures/linkedList.ts +0 -129
- package/src/structures/pool.ts +0 -47
- package/src/structures/queue/__tests__/parallel.test.ts +0 -58
- package/src/structures/queue/__tests__/tasks.test.ts +0 -87
- package/src/structures/queue/parallel.ts +0 -142
- package/src/structures/queue/tasks.ts +0 -91
- package/src/structures/tempoCache.ts +0 -18
- package/src/types/comparator.ts +0 -6
- package/src/types/deep.ts +0 -18
- package/src/types/functions.ts +0 -8
- package/src/types/getter.ts +0 -14
- package/src/types/ident.ts +0 -8
- package/src/types/index.ts +0 -17
- package/src/validation/ValidationErrors.ts +0 -26
- package/src/validation/__tests__/index.test.ts +0 -8
- package/src/validation/__tests__/validator.test.ts +0 -107
- package/src/validation/creditCard.ts +0 -25
- package/src/validation/emails.ts +0 -5
- package/src/validation/helpers.ts +0 -47
- package/src/validation/index.ts +0 -9
- package/src/validation/types.ts +0 -18
- package/src/validation/validators.ts +0 -55
- package/src/validation/wrappers.ts +0 -26
- package/tsconfig.build.json +0 -10
- package/tsconfig.json +0 -32
- package/yarn-error.log +0 -3709
- package/yarn.lock +0 -3446
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { updateArray } from '../update';
|
|
2
|
-
|
|
3
|
-
describe('fields/update', () => {
|
|
4
|
-
it('empty input', () => {
|
|
5
|
-
expect(updateArray(null, null)).toStrictEqual({ changed: 0, result: null });
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
it('updates primitives | numbers', () => {
|
|
9
|
-
const target = [1, 5, 3];
|
|
10
|
-
const source = [4, 3, 2];
|
|
11
|
-
|
|
12
|
-
const results1 = updateArray(target, source, { clone: true });
|
|
13
|
-
expect(results1.changed).toBe(4);
|
|
14
|
-
expect(results1.result).toStrictEqual([2, 3, 4]);
|
|
15
|
-
|
|
16
|
-
const results2 = updateArray(target, source, { sorter: null });
|
|
17
|
-
expect(results2.changed).toBe(4);
|
|
18
|
-
expect(results2.result).toStrictEqual([3, 4, 2]);
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it('updates primitives | strings', () => {
|
|
22
|
-
const target = ['a', 'b', 'c'];
|
|
23
|
-
const source = ['b', 'c', 'd'];
|
|
24
|
-
|
|
25
|
-
const results = updateArray(target, source);
|
|
26
|
-
|
|
27
|
-
expect(results.changed).toBe(2);
|
|
28
|
-
expect(results.result).toStrictEqual(source);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
describe('updates objects', () => {
|
|
32
|
-
it('no options', () => {
|
|
33
|
-
const res = updateArray([
|
|
34
|
-
{ id: 1, v: 'a' },
|
|
35
|
-
{ id: 5, v: 'e' },
|
|
36
|
-
{ id: 3, v: 'c' },
|
|
37
|
-
], [
|
|
38
|
-
{ id: 2, v: 'b' },
|
|
39
|
-
]);
|
|
40
|
-
|
|
41
|
-
expect(res.changed).toBe(4);
|
|
42
|
-
expect(res.result).toStrictEqual([
|
|
43
|
-
{ id: 2, v: 'b' },
|
|
44
|
-
]);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
// eslint-disable-next-line jest/expect-expect
|
|
48
|
-
it('full options', () => {
|
|
49
|
-
const res = updateArray([
|
|
50
|
-
{ id: 1, v: 'a' },
|
|
51
|
-
{ id: 5, v: 'e' },
|
|
52
|
-
{ id: 3, v: 'c' },
|
|
53
|
-
], [
|
|
54
|
-
{ id: 2, v: 'b' },
|
|
55
|
-
{ id: 1, v: '1K' },
|
|
56
|
-
], {
|
|
57
|
-
clone: true,
|
|
58
|
-
comparator: (v1, v2) => v1.id === v2.id,
|
|
59
|
-
updater: (t, s) => {
|
|
60
|
-
t.v = s.v + '_' + t.id;
|
|
61
|
-
return t;
|
|
62
|
-
},
|
|
63
|
-
sorter: (v1, v2) => v1.id - v2.id,
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
expect(res.changed).toBe(3);
|
|
67
|
-
expect(res.result).toStrictEqual([
|
|
68
|
-
{ id: 1, v: '1K_1' },
|
|
69
|
-
{ id: 2, v: 'b' },
|
|
70
|
-
]);
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
});
|
package/src/fields/filter.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
export type FieldFilter<T> = (value: T[keyof T]) => boolean;
|
|
3
|
-
|
|
4
|
-
export function filterFields<T>(source: Partial<T>, ...fields: ((keyof T) | { key: keyof T, filter: FieldFilter<T>})[]): Partial<T> {
|
|
5
|
-
const res: Partial<T> = { };
|
|
6
|
-
|
|
7
|
-
fields.forEach(k => {
|
|
8
|
-
if (typeof k === 'object') {
|
|
9
|
-
const v = source[k.key];
|
|
10
|
-
if (k.filter(v)) {
|
|
11
|
-
res[k.key] = v;
|
|
12
|
-
}
|
|
13
|
-
} else {
|
|
14
|
-
const v = source[k];
|
|
15
|
-
if (v) {
|
|
16
|
-
res[k] = v;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
return res;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export namespace filterFields {
|
|
25
|
-
export function Truethy<T>(): FieldFilter<T> { return (v) => !!v; }
|
|
26
|
-
export function NotNull<T>(): FieldFilter<T> { return v => v != null; }
|
|
27
|
-
}
|
package/src/fields/index.ts
DELETED
package/src/fields/transfer.ts
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
export function transferFields<T>(
|
|
3
|
-
source: T,
|
|
4
|
-
predicate: (f: keyof T, v: T[keyof T]) => boolean,
|
|
5
|
-
destination: Partial<T>,
|
|
6
|
-
...fields: (keyof T)[]
|
|
7
|
-
): number {
|
|
8
|
-
let count = 0;
|
|
9
|
-
fields.forEach(f => {
|
|
10
|
-
const v = source[f];
|
|
11
|
-
if (!predicate || predicate(f, v)) {
|
|
12
|
-
destination[f] = v;
|
|
13
|
-
++count;
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
return count;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export namespace transferFields {
|
|
21
|
-
export function truthy<T>(
|
|
22
|
-
source: T,
|
|
23
|
-
destination: Partial<T>,
|
|
24
|
-
...fields: (keyof T)[]
|
|
25
|
-
): number {
|
|
26
|
-
return transferFields(source, (f, v) => !!v, destination, ...fields);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export function notNull<T>(
|
|
30
|
-
source: T,
|
|
31
|
-
destination: Partial<T>,
|
|
32
|
-
...fields: (keyof T)[]
|
|
33
|
-
): number {
|
|
34
|
-
return transferFields(source, (f, v) => v != null, destination, ...fields);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export function defined<T>(
|
|
38
|
-
source: T,
|
|
39
|
-
destination: Partial<T>,
|
|
40
|
-
...fields: (keyof T)[]
|
|
41
|
-
): number {
|
|
42
|
-
return transferFields(source, (f, v) => v !== undefined, destination, ...fields);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export function changed<T>(
|
|
46
|
-
source: T,
|
|
47
|
-
compare: T,
|
|
48
|
-
destination: Partial<T>,
|
|
49
|
-
...fields: (keyof T)[]
|
|
50
|
-
): number {
|
|
51
|
-
return transferFields(
|
|
52
|
-
source,
|
|
53
|
-
(f, v) => v !== undefined && source[f] !== compare[f],
|
|
54
|
-
destination,
|
|
55
|
-
...fields
|
|
56
|
-
);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export function hasChangedFields<T>(left: T, right: T, ...fields: (keyof T)[]) {
|
|
61
|
-
return fields.some(f => left[f] !== right[f]);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
type ExtractChangedFieldsResult<T> = {
|
|
65
|
-
transferred: number;
|
|
66
|
-
result: Partial<T>;
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
export function extractChangedFields<T>(
|
|
70
|
-
source: Partial<T>,
|
|
71
|
-
image: T,
|
|
72
|
-
...fields: (keyof T)[]
|
|
73
|
-
): ExtractChangedFieldsResult<T> {
|
|
74
|
-
const res: Partial<T> = {};
|
|
75
|
-
const count = transferFields<Partial<T>>(
|
|
76
|
-
source,
|
|
77
|
-
(f, v) => v !== undefined && v !== image[f],
|
|
78
|
-
res,
|
|
79
|
-
...fields
|
|
80
|
-
);
|
|
81
|
-
return {
|
|
82
|
-
transferred: count,
|
|
83
|
-
result: res,
|
|
84
|
-
};
|
|
85
|
-
}
|
package/src/fields/update.ts
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { safeCall } from '../functions/safeCall';
|
|
2
|
-
import { Comparator } from '../types';
|
|
3
|
-
|
|
4
|
-
export namespace Fields {
|
|
5
|
-
export type Getter<T> = (obj: Partial<T>) => T[keyof T];
|
|
6
|
-
export type Setter<T> = (obj: Partial<T>, val: T[keyof T]) => void;
|
|
7
|
-
export type Comparer<T> = (source: Partial<T>, target: Partial<T>) => boolean;
|
|
8
|
-
export type Updater<T> = (target: T, source: T) => T;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
export function updateField<T>(target: T, source: Partial<T>, diff: Partial<T>, key: keyof T, hasChanged: null | Fields.Comparer<T> = null): boolean {
|
|
13
|
-
return updateFieldExtended(target, source, diff, t => t[key], (t, v) => t[key] = v, hasChanged);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export function updateFieldExtended<T>(
|
|
17
|
-
target: T,
|
|
18
|
-
source: Partial<T>,
|
|
19
|
-
diff: Partial<T>,
|
|
20
|
-
get: Fields.Getter<T>,
|
|
21
|
-
set: Fields.Setter<T>,
|
|
22
|
-
hasChanged: null | Fields.Comparer<T> = null,
|
|
23
|
-
): boolean {
|
|
24
|
-
|
|
25
|
-
hasChanged = hasChanged || ((v1: T, v2: T) => (get(v1) !== get(v2)));
|
|
26
|
-
|
|
27
|
-
let changed = true;
|
|
28
|
-
|
|
29
|
-
if (get(source) !== undefined && hasChanged(source, target)) {
|
|
30
|
-
changed = true;
|
|
31
|
-
set(diff, get(target));
|
|
32
|
-
set(target, get(source));
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return changed;
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
const DefaultComparator: Comparator<any> = (v1, v2) => v1 === v2;
|
|
40
|
-
const DefaultUpdater: Fields.Updater<any> = (v1, v2) => Object.assign(v1, v2);
|
|
41
|
-
|
|
42
|
-
export type UpdateArrayOptions<T> = {
|
|
43
|
-
additive?: boolean,
|
|
44
|
-
unshift?: boolean,
|
|
45
|
-
clone?: boolean,
|
|
46
|
-
comparator?: Comparator<T>,
|
|
47
|
-
updater?: Fields.Updater<T>,
|
|
48
|
-
sorter?: Comparator<T, number> | null | undefined,
|
|
49
|
-
hooks?: UpdateArrayHooks<T>,
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
export type UpdateArrayHooks<T> = {
|
|
53
|
-
onAdded?: (item: T, index?: number) => void,
|
|
54
|
-
onDeleted?: (item: T, index?: number) => void,
|
|
55
|
-
onUpdated?: (previous: T, next: T, index?: number) => void,
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
export function updateArray<T>(
|
|
59
|
-
target: T[] | null,
|
|
60
|
-
source: T[] | null,
|
|
61
|
-
options?: UpdateArrayOptions<T>,
|
|
62
|
-
): { changed: number, result: T[] } {
|
|
63
|
-
if (!source) {
|
|
64
|
-
return { changed: 0, result: target };
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
let changed = 0;
|
|
68
|
-
const result = Array.isArray(target)
|
|
69
|
-
? (options?.clone ? target.slice() : target)
|
|
70
|
-
: [];
|
|
71
|
-
|
|
72
|
-
const comparator = options?.comparator || DefaultComparator;
|
|
73
|
-
const updater = options?.updater || DefaultUpdater;
|
|
74
|
-
const onDeleted = options?.hooks?.onDeleted;
|
|
75
|
-
const onUpdate = options?.hooks?.onUpdated;
|
|
76
|
-
const onAdded = options?.hooks?.onAdded;
|
|
77
|
-
|
|
78
|
-
// remove all missing elements
|
|
79
|
-
if (!options?.additive) {
|
|
80
|
-
for (let i = 0; i < result.length; ++i) {
|
|
81
|
-
if (source.find(item => comparator(item, result[i])) == null) {
|
|
82
|
-
// DELETE
|
|
83
|
-
const removed = result.splice(i, 1);
|
|
84
|
-
safeCall(onDeleted, removed[0], i);
|
|
85
|
-
|
|
86
|
-
++changed;
|
|
87
|
-
--i;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
const unshift = options?.unshift || false;
|
|
93
|
-
|
|
94
|
-
// add all new elements and update existing
|
|
95
|
-
source.forEach(item => {
|
|
96
|
-
const existingIndex = result.findIndex(i => comparator(item, i));
|
|
97
|
-
const existingItem = result[existingIndex];
|
|
98
|
-
if (existingIndex < 0) {
|
|
99
|
-
if (unshift) {
|
|
100
|
-
result.unshift(item);
|
|
101
|
-
} else {
|
|
102
|
-
result.push(item);
|
|
103
|
-
}
|
|
104
|
-
safeCall(onAdded, item, unshift ? 0 : result.length - 1);
|
|
105
|
-
++changed;
|
|
106
|
-
} else if (typeof existingItem === 'object') {
|
|
107
|
-
const before = onUpdate != null ? { ...existingItem } : undefined;
|
|
108
|
-
result[existingIndex] = updater(existingItem, item);
|
|
109
|
-
if (onUpdate != null) {
|
|
110
|
-
onUpdate(before!, result[existingIndex], existingIndex);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
const sorter = options?.sorter;
|
|
116
|
-
if (sorter !== null) {
|
|
117
|
-
result.sort(sorter || undefined);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
return {
|
|
121
|
-
result,
|
|
122
|
-
changed,
|
|
123
|
-
};
|
|
124
|
-
}
|
package/src/functions/assert.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Getter } from '../types';
|
|
2
|
-
import logger from '../logger';
|
|
3
|
-
|
|
4
|
-
export function assert(condition: boolean, error: Getter<string | Error>, objectToLog?: Getter<any>): asserts condition {
|
|
5
|
-
if (condition) {
|
|
6
|
-
return;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
const e = Getter.getValue(error);
|
|
10
|
-
if (objectToLog) {
|
|
11
|
-
logger.error('Assertion failed:', e, Getter.getValue(objectToLog));
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
if (typeof e === 'string') {
|
|
15
|
-
throw new Error(e);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
throw e;
|
|
19
|
-
}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import logger from '../logger';
|
|
2
|
-
|
|
3
|
-
export interface IDisposable {
|
|
4
|
-
dispose(): void;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
export interface DisposeFunction {
|
|
8
|
-
(): void;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export class Disposer {
|
|
12
|
-
|
|
13
|
-
private readonly _disposers: DisposeFunction[] = [];
|
|
14
|
-
private readonly _map = new Map<string, DisposeFunction>();
|
|
15
|
-
|
|
16
|
-
private _loggerName: string = null;
|
|
17
|
-
|
|
18
|
-
constructor(loggerName: string = null) {
|
|
19
|
-
this._loggerName = loggerName;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
public setLoggerName(loggerName: string) {
|
|
23
|
-
this._loggerName = loggerName;
|
|
24
|
-
return this;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
public add(d: DisposeFunction | IDisposable, id?: string) {
|
|
28
|
-
if (!d) {
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
const dd: DisposeFunction = typeof d !== 'function'
|
|
33
|
-
? (() => d.dispose ? d.dispose() : null)
|
|
34
|
-
: d;
|
|
35
|
-
|
|
36
|
-
this._disposers.push(dd);
|
|
37
|
-
|
|
38
|
-
if (id) {
|
|
39
|
-
// dispose previous identified disposer
|
|
40
|
-
if (this._map.has(id)) {
|
|
41
|
-
this.execute(id);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
this._map.set(id, dd);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
public execute(id: string) {
|
|
49
|
-
const d = this._map.get(id);
|
|
50
|
-
if (!d) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
this._map.delete(id);
|
|
55
|
-
const i = this._disposers.indexOf(d);
|
|
56
|
-
if (i >= 0) {
|
|
57
|
-
this._disposers.splice(i, 1);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
d();
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
public dispose(log = false) {
|
|
64
|
-
if (log) {
|
|
65
|
-
logger.log(
|
|
66
|
-
`[Disposer:${this._loggerName || '<unknown>'}] Disposing ${this._disposers.length} items including named ones:`,
|
|
67
|
-
Array.from(this._map.entries()).map(e => e[0]),
|
|
68
|
-
);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
const copy = this._disposers.slice().reverse();
|
|
72
|
-
this._disposers.length = 0;
|
|
73
|
-
this._map.clear();
|
|
74
|
-
|
|
75
|
-
// this should separate side effects
|
|
76
|
-
copy.forEach(d => d());
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export function combineDisposers(...items: DisposeFunction[]): DisposeFunction {
|
|
81
|
-
return () => items.forEach(i => i());
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export class Disposable implements IDisposable {
|
|
85
|
-
|
|
86
|
-
protected readonly disposer: Disposer;
|
|
87
|
-
protected _isDisposed = false;
|
|
88
|
-
|
|
89
|
-
constructor(loggerName: string = null) {
|
|
90
|
-
this.disposer = new Disposer(loggerName);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
public dispose = () => {
|
|
94
|
-
this._isDisposed = true;
|
|
95
|
-
this.disposer.dispose();
|
|
96
|
-
};
|
|
97
|
-
}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import logger from '../logger';
|
|
2
|
-
|
|
3
|
-
export class ThrottleAction<T = any> {
|
|
4
|
-
|
|
5
|
-
private _timeoutRef: any = null;
|
|
6
|
-
private _postponedCb: () => (T | Promise<T>) = null;
|
|
7
|
-
private _locked = false;
|
|
8
|
-
|
|
9
|
-
private _resolvers: (() => void)[] = [];
|
|
10
|
-
|
|
11
|
-
constructor(public timeout = 1000) {}
|
|
12
|
-
|
|
13
|
-
clear() {
|
|
14
|
-
clearTimeout(this._timeoutRef);
|
|
15
|
-
this._timeoutRef = null;
|
|
16
|
-
this._postponedCb = null;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
tryRun(cb: () => T | Promise<T>, restartTimeout = false) {
|
|
20
|
-
if (!this._timeoutRef) {
|
|
21
|
-
this._postponedCb = cb;
|
|
22
|
-
this._timeoutRef = setTimeout(this.forceRun, this.timeout);
|
|
23
|
-
// logger.log('THROTTLE setTimeout', this.timeout);
|
|
24
|
-
} else if (restartTimeout) {
|
|
25
|
-
this.clear();
|
|
26
|
-
this.tryRun(cb);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
forceRun = async () => {
|
|
31
|
-
const cb = this._postponedCb;
|
|
32
|
-
this.clear();
|
|
33
|
-
|
|
34
|
-
if (this._locked) {
|
|
35
|
-
logger.warn('THROTTLE LOCKED');
|
|
36
|
-
} else if (cb) {
|
|
37
|
-
try {
|
|
38
|
-
this._locked = true;
|
|
39
|
-
return await cb();
|
|
40
|
-
} finally {
|
|
41
|
-
this._locked = false;
|
|
42
|
-
|
|
43
|
-
const resolvers = this._resolvers.slice();
|
|
44
|
-
this._resolvers.length = 0;
|
|
45
|
-
// logger.log('getPromise: resolving', resolvers.length);
|
|
46
|
-
resolvers.forEach(r => r());
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
getPromise() {
|
|
52
|
-
if (!this._locked && !this._timeoutRef) {
|
|
53
|
-
// logger.log('getPromise: nothing to wait for');
|
|
54
|
-
return Promise.resolve();
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return new Promise<void>(resolve => {
|
|
58
|
-
// logger.log('getPromise: adding resolver');
|
|
59
|
-
this._resolvers.push(resolve);
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
export class ThrottleProcessor<TSubject> {
|
|
65
|
-
|
|
66
|
-
private readonly _queue: TSubject[] = [];
|
|
67
|
-
private readonly _action: ThrottleAction = null;
|
|
68
|
-
|
|
69
|
-
constructor(readonly process: (objs: TSubject[]) => Promise<any>, timeout = 1000) {
|
|
70
|
-
if (!process) {
|
|
71
|
-
throw new Error('Arg0 expected: process');
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
this._action = new ThrottleAction(timeout);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
push(data: TSubject) {
|
|
78
|
-
this._queue.push(data);
|
|
79
|
-
|
|
80
|
-
this._action.tryRun(this._process, true);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
private _process = async () => {
|
|
84
|
-
if (!this._queue.length) {
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
const objs = this._queue.slice();
|
|
89
|
-
this._queue.length = 0;
|
|
90
|
-
await this.process(objs);
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
clear() {
|
|
94
|
-
this._action.clear();
|
|
95
|
-
}
|
|
96
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { Lazy } from '../singleton';
|
|
2
|
-
import { LazyPromise } from '../promise';
|
|
3
|
-
import { setTimeoutAsync } from '../../async/timeout';
|
|
4
|
-
|
|
5
|
-
import '../../__tests__/helpers/expect';
|
|
6
|
-
|
|
7
|
-
describe('Lazy', () => {
|
|
8
|
-
it('simple', () => {
|
|
9
|
-
const VAL = 'abc';
|
|
10
|
-
const l = new Lazy(() => VAL);
|
|
11
|
-
|
|
12
|
-
expect(l.hasValue).toBeFalse();
|
|
13
|
-
expect(l.value).toBe(VAL);
|
|
14
|
-
expect(l.hasValue).toBeTrue();
|
|
15
|
-
|
|
16
|
-
l.reset();
|
|
17
|
-
expect(l.hasValue).toBeFalse();
|
|
18
|
-
|
|
19
|
-
l.prewarm();
|
|
20
|
-
|
|
21
|
-
expect(l.hasValue).toBeTrue();
|
|
22
|
-
expect(l.value).toBe(VAL);
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
describe('LazyPromise', () => {
|
|
27
|
-
|
|
28
|
-
it('simple', async () => {
|
|
29
|
-
const VAL = 'abc';
|
|
30
|
-
const l = new LazyPromise(() => setTimeoutAsync(100).then(() => VAL));
|
|
31
|
-
|
|
32
|
-
expect(l.hasValue).toBeFalse();
|
|
33
|
-
expect(l.busy).toBeFalse();
|
|
34
|
-
|
|
35
|
-
expect(l.value).toBeUndefined();
|
|
36
|
-
expect(l.busy).toBeTrue();
|
|
37
|
-
|
|
38
|
-
await expect(l.promise).resolves.not.toThrow();
|
|
39
|
-
|
|
40
|
-
expect(l.hasValue).toBeTrue();
|
|
41
|
-
expect(l.busy).toBeFalse();
|
|
42
|
-
expect(l.value).toBe(VAL);
|
|
43
|
-
|
|
44
|
-
l.dispose();
|
|
45
|
-
expect(l.hasValue).toBeFalse();
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
});
|
package/src/lazy/light.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import type { IDisposable } from '../functions/disposer';
|
|
2
|
-
|
|
3
|
-
export type LazyLight<T> = IDisposable & {
|
|
4
|
-
readonly value: T;
|
|
5
|
-
readonly hasValue: boolean;
|
|
6
|
-
|
|
7
|
-
reset(): void;
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
export function createLazy<T>(factory: () => T) {
|
|
11
|
-
const _factory = factory;
|
|
12
|
-
let _instance: T = undefined;
|
|
13
|
-
|
|
14
|
-
const res: LazyLight<T> = {
|
|
15
|
-
get value() {
|
|
16
|
-
if (_instance === undefined) {
|
|
17
|
-
_instance = _factory();
|
|
18
|
-
}
|
|
19
|
-
return _instance;
|
|
20
|
-
},
|
|
21
|
-
get hasValue() { return _instance !== undefined; },
|
|
22
|
-
reset: () => {
|
|
23
|
-
_instance = undefined;
|
|
24
|
-
},
|
|
25
|
-
dispose: () => res.reset(),
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
return res;
|
|
29
|
-
}
|
package/src/lazy/promise.ts
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import type { IDisposable } from '../functions/disposer';
|
|
2
|
-
|
|
3
|
-
export class LazyPromise<T> implements IDisposable {
|
|
4
|
-
|
|
5
|
-
private _instance: T = undefined;
|
|
6
|
-
private _busy: boolean = null;
|
|
7
|
-
|
|
8
|
-
private _promise: Promise<T> = null;
|
|
9
|
-
|
|
10
|
-
constructor(
|
|
11
|
-
private readonly _factory: () => Promise<T>,
|
|
12
|
-
private readonly initial: T = undefined,
|
|
13
|
-
) {
|
|
14
|
-
this._instance = initial;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
get busy() { return this._busy || false; }
|
|
18
|
-
get hasValue() { return this._busy === false; }
|
|
19
|
-
|
|
20
|
-
get promise() {
|
|
21
|
-
this.ensureInstanceLoading();
|
|
22
|
-
return this._promise;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
get value() {
|
|
26
|
-
this.ensureInstanceLoading();
|
|
27
|
-
return this._instance;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
protected ensureInstanceLoading() {
|
|
31
|
-
if (this._busy === null) {
|
|
32
|
-
this._busy = true;
|
|
33
|
-
this._promise = this._factory();
|
|
34
|
-
this._promise.then(this.setInstance);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
private setInstance = (res: T) => {
|
|
39
|
-
this._busy = false;
|
|
40
|
-
this._instance = res || null;
|
|
41
|
-
|
|
42
|
-
// keep this._promise to allow to re-use it outside
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
reset() {
|
|
46
|
-
this._busy = null;
|
|
47
|
-
this._instance = this.initial;
|
|
48
|
-
this._promise = null;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
dispose = () => this.reset();
|
|
52
|
-
}
|
package/src/lazy/singleton.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type { IDisposable } from '../functions/disposer';
|
|
2
|
-
|
|
3
|
-
export class Lazy<T> implements IDisposable {
|
|
4
|
-
|
|
5
|
-
protected _instance: T = null;
|
|
6
|
-
|
|
7
|
-
constructor(protected readonly _factory: (() => T)) { }
|
|
8
|
-
|
|
9
|
-
get hasValue() { return this._instance !== null; }
|
|
10
|
-
|
|
11
|
-
get value() {
|
|
12
|
-
this.ensureInstance();
|
|
13
|
-
return this._instance;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
private ensureInstance() {
|
|
17
|
-
if (this._instance === null) {
|
|
18
|
-
this._instance = this._factory();
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
prewarm() {
|
|
23
|
-
this.ensureInstance();
|
|
24
|
-
return this;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
reset() {
|
|
28
|
-
this._instance = null;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
dispose() { this.reset(); }
|
|
32
|
-
}
|