@sparted/shared-library 1.2.0 → 1.2.2
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/business/picture-spot/index.d.ts +37 -0
- package/business/types/campaign.d.ts +12 -0
- package/{dist/business → business}/types/content.d.ts +7 -8
- package/business/types/content.js.map +1 -0
- package/{src/business/types/index.ts → business/types/index.d.ts} +5 -5
- package/package.json +1 -1
- package/.circleci/config.yml +0 -40
- package/.eslintignore +0 -1
- package/.eslintrc.json +0 -25
- package/.gitignore +0 -37
- package/.idea/.gitignore +0 -8
- package/.idea/codeStyles/Project.xml +0 -35
- package/.idea/codeStyles/codeStyleConfig.xml +0 -5
- package/.idea/inspectionProfiles/Project_Default.xml +0 -6
- package/.idea/jsLinters/eslint.xml +0 -6
- package/.idea/misc.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/shared-library.iml +0 -11
- package/.idea/vcs.xml +0 -6
- package/.idea/workspace.xml +0 -108
- package/.prettierrc.json +0 -6
- package/CHANGELOG.md +0 -130
- package/README.md +0 -26
- package/dist/business/picture-spot/index.d.ts +0 -2
- package/dist/business/types/content.js.map +0 -1
- package/dist/business/types/index.d.ts +0 -4
- package/dist/package.json +0 -66
- package/global.d.ts +0 -2
- package/rollup.config.ts +0 -19
- package/src/array/__tests__/array-to-map.test.ts +0 -50
- package/src/array/__tests__/get-values-from-keys.test.ts +0 -14
- package/src/array/__tests__/inner-join.test.ts +0 -55
- package/src/array/__tests__/left-outter-join.test.ts +0 -55
- package/src/array/array-to-map.ts +0 -32
- package/src/array/get-values-from-keys.ts +0 -3
- package/src/array/index.ts +0 -4
- package/src/array/inner-join.ts +0 -10
- package/src/array/left-outter-join.ts +0 -10
- package/src/business/picture-spot/index.ts +0 -3
- package/src/business/types/campaign.ts +0 -14
- package/src/business/types/content.ts +0 -155
- package/src/business/types/media.ts +0 -18
- package/src/business/types/multilingual.ts +0 -46
- package/src/business/types/thematic.ts +0 -10
- package/src/cdn/__tests__/cdn.factory.test.ts +0 -150
- package/src/cdn/__tests__/utils.test.ts +0 -528
- package/src/cdn/cdn.factory.ts +0 -70
- package/src/cdn/index.ts +0 -2
- package/src/cdn/types/cdn-factory.type.ts +0 -49
- package/src/cdn/types/index.ts +0 -1
- package/src/cdn/utils/extract-info-from-url.util.ts +0 -25
- package/src/cdn/utils/get-cdn-from-s3-url.util.ts +0 -20
- package/src/cdn/utils/get-cdn-url.util.ts +0 -31
- package/src/cdn/utils/twicpics-transformations.util.ts +0 -9
- package/src/color/__tests__/get-contrast-color.test.ts +0 -22
- package/src/color/get-contrast-color.ts +0 -18
- package/src/color/index.ts +0 -1
- package/src/formatting/__tests__/format-number.test.ts +0 -11
- package/src/formatting/format-number.ts +0 -14
- package/src/formatting/index.ts +0 -1
- package/src/fp/__tests__/run-while.test.ts +0 -29
- package/src/fp/index.ts +0 -1
- package/src/fp/run-while.ts +0 -54
- package/src/http/__tests__/build-search-params.test.ts +0 -17
- package/src/http/__tests__/encode-search-object.test.ts +0 -34
- package/src/http/__tests__/fetch-with-timeout.test.ts +0 -50
- package/src/http/build-search-params.ts +0 -18
- package/src/http/encode-search-object.ts +0 -39
- package/src/http/fetch-with-timeout.ts +0 -24
- package/src/http/index.ts +0 -3
- package/src/index.ts +0 -15
- package/src/linked-list/__tests__/apply-diff-linked-list.test.ts +0 -103
- package/src/linked-list/__tests__/create-linked-list.test.ts +0 -204
- package/src/linked-list/__tests__/find-linked-list.test.ts +0 -40
- package/src/linked-list/__tests__/get-linked-list.test.ts +0 -28
- package/src/linked-list/__tests__/insert-linked-list.test.ts +0 -186
- package/src/linked-list/__tests__/linked-list-utils.test.ts +0 -252
- package/src/linked-list/__tests__/reduce-linked-list.test.ts +0 -31
- package/src/linked-list/__tests__/remove-linked-list.test.ts +0 -129
- package/src/linked-list/__tests__/update-linked-list.test.ts +0 -53
- package/src/linked-list/__tests__/while-linked-list.test.ts +0 -58
- package/src/linked-list/apply-diff-linked-list.ts +0 -35
- package/src/linked-list/create-linked-list.ts +0 -79
- package/src/linked-list/find-linked-list.ts +0 -26
- package/src/linked-list/get-linked-list.ts +0 -9
- package/src/linked-list/index.ts +0 -2
- package/src/linked-list/insert-linked-list.ts +0 -50
- package/src/linked-list/linked-list-utils.ts +0 -143
- package/src/linked-list/reduce-linked-list.ts +0 -18
- package/src/linked-list/remove-linked-list.ts +0 -36
- package/src/linked-list/type.ts +0 -38
- package/src/linked-list/update-linked-list.ts +0 -30
- package/src/linked-list/while-linked-list.ts +0 -33
- package/src/math/__tests__/clamp-number.test.ts +0 -30
- package/src/math/__tests__/interpolate.test.ts +0 -28
- package/src/math/__tests__/median.test.ts +0 -27
- package/src/math/__tests__/number-range.test.ts +0 -59
- package/src/math/__tests__/random-number.test.ts +0 -11
- package/src/math/clamp-number.ts +0 -8
- package/src/math/index.ts +0 -5
- package/src/math/interpolate.ts +0 -18
- package/src/math/median.ts +0 -21
- package/src/math/number-range.ts +0 -16
- package/src/math/random-number.ts +0 -10
- package/src/object/__tests__/merge-deep.test.ts +0 -56
- package/src/object/__tests__/strip-properties-from-object.test.ts +0 -65
- package/src/object/index.ts +0 -2
- package/src/object/merge-deep.ts +0 -26
- package/src/object/strip-properties-from-object.ts +0 -26
- package/src/parsing/__tests__/parse-boolean.test.ts +0 -15
- package/src/parsing/__tests__/parse-enum.test.ts +0 -19
- package/src/parsing/__tests__/parse-number.test.ts +0 -20
- package/src/parsing/index.ts +0 -3
- package/src/parsing/parse-boolean.ts +0 -10
- package/src/parsing/parse-enum.ts +0 -16
- package/src/parsing/parse-number.ts +0 -12
- package/src/predicates/__tests__/is-function.test.ts +0 -11
- package/src/predicates/__tests__/is-null.test.ts +0 -11
- package/src/predicates/__tests__/is-object.test.ts +0 -11
- package/src/predicates/__tests__/is-primitive.test.ts +0 -42
- package/src/predicates/__tests__/is-undefined.test.ts +0 -11
- package/src/predicates/__tests__/is-uuid.test.ts +0 -13
- package/src/predicates/index.ts +0 -5
- package/src/predicates/is-function.ts +0 -3
- package/src/predicates/is-null.ts +0 -1
- package/src/predicates/is-object.ts +0 -3
- package/src/predicates/is-primitive.ts +0 -19
- package/src/predicates/is-undefined.ts +0 -3
- package/src/predicates/is-uuid.ts +0 -3
- package/src/promise/__tests__/delay.test.ts +0 -13
- package/src/promise/__tests__/execute-or-resolve-default.test.ts +0 -25
- package/src/promise/__tests__/execute-with-delay.test.ts +0 -24
- package/src/promise/delay.ts +0 -3
- package/src/promise/execute-or-resolve-default.ts +0 -14
- package/src/promise/execute-with-delay.ts +0 -6
- package/src/promise/index.ts +0 -3
- package/src/string/__tests__/is-string-length-within-range.test.ts +0 -23
- package/src/string/__tests__/replace-in-template.test.ts +0 -52
- package/src/string/index.ts +0 -2
- package/src/string/is-string-length-within-range.ts +0 -10
- package/src/string/replace-in-template.ts +0 -45
- package/src/time/__tests__/convert.test.ts +0 -14
- package/src/time/__tests__/format-minutes.test.ts +0 -10
- package/src/time/__tests__/get-time-diff-as-string.test.ts +0 -128
- package/src/time/constants.ts +0 -4
- package/src/time/convert.ts +0 -5
- package/src/time/format-minutes.ts +0 -9
- package/src/time/get-time-diff-as-string.ts +0 -196
- package/src/time/index.ts +0 -4
- package/src/types/function.ts +0 -1
- package/src/types/general.ts +0 -15
- package/src/types/index.ts +0 -4
- package/src/types/object.ts +0 -33
- package/src/types/search.ts +0 -29
- package/tsconfig.json +0 -25
- package/yarn-error.log +0 -4133
- package/yarn.lock +0 -4045
- /package/{dist/_virtual → _virtual}/_tslib.js +0 -0
- /package/{dist/_virtual → _virtual}/_tslib.js.map +0 -0
- /package/{dist/array → array}/array-to-map.d.ts +0 -0
- /package/{dist/array → array}/array-to-map.js +0 -0
- /package/{dist/array → array}/array-to-map.js.map +0 -0
- /package/{dist/array → array}/get-values-from-keys.d.ts +0 -0
- /package/{dist/array → array}/get-values-from-keys.js +0 -0
- /package/{dist/array → array}/get-values-from-keys.js.map +0 -0
- /package/{dist/array → array}/index.d.ts +0 -0
- /package/{dist/array → array}/index.js +0 -0
- /package/{dist/array → array}/index.js.map +0 -0
- /package/{dist/array → array}/inner-join.d.ts +0 -0
- /package/{dist/array → array}/inner-join.js +0 -0
- /package/{dist/array → array}/inner-join.js.map +0 -0
- /package/{dist/array → array}/left-outter-join.d.ts +0 -0
- /package/{dist/array → array}/left-outter-join.js +0 -0
- /package/{dist/array → array}/left-outter-join.js.map +0 -0
- /package/{dist/business → business}/picture-spot/index.js +0 -0
- /package/{dist/business → business}/picture-spot/index.js.map +0 -0
- /package/{dist/business → business}/types/content.js +0 -0
- /package/{dist/business → business}/types/index.js +0 -0
- /package/{dist/business → business}/types/index.js.map +0 -0
- /package/{dist/business → business}/types/media.d.ts +0 -0
- /package/{dist/business → business}/types/multilingual.d.ts +0 -0
- /package/{dist/business → business}/types/multilingual.js +0 -0
- /package/{dist/business → business}/types/multilingual.js.map +0 -0
- /package/{dist/business → business}/types/thematic.d.ts +0 -0
- /package/{dist/cdn → cdn}/cdn.factory.d.ts +0 -0
- /package/{dist/cdn → cdn}/cdn.factory.js +0 -0
- /package/{dist/cdn → cdn}/cdn.factory.js.map +0 -0
- /package/{dist/cdn → cdn}/index.d.ts +0 -0
- /package/{dist/cdn → cdn}/index.js +0 -0
- /package/{dist/cdn → cdn}/index.js.map +0 -0
- /package/{dist/cdn → cdn}/types/cdn-factory.type.d.ts +0 -0
- /package/{dist/cdn → cdn}/types/index.d.ts +0 -0
- /package/{dist/cdn → cdn}/types/index.js +0 -0
- /package/{dist/cdn → cdn}/types/index.js.map +0 -0
- /package/{dist/cdn → cdn}/utils/extract-info-from-url.util.d.ts +0 -0
- /package/{dist/cdn → cdn}/utils/extract-info-from-url.util.js +0 -0
- /package/{dist/cdn → cdn}/utils/extract-info-from-url.util.js.map +0 -0
- /package/{dist/cdn → cdn}/utils/get-cdn-from-s3-url.util.d.ts +0 -0
- /package/{dist/cdn → cdn}/utils/get-cdn-from-s3-url.util.js +0 -0
- /package/{dist/cdn → cdn}/utils/get-cdn-from-s3-url.util.js.map +0 -0
- /package/{dist/cdn → cdn}/utils/get-cdn-url.util.d.ts +0 -0
- /package/{dist/cdn → cdn}/utils/get-cdn-url.util.js +0 -0
- /package/{dist/cdn → cdn}/utils/get-cdn-url.util.js.map +0 -0
- /package/{dist/cdn → cdn}/utils/twicpics-transformations.util.d.ts +0 -0
- /package/{dist/cdn → cdn}/utils/twicpics-transformations.util.js +0 -0
- /package/{dist/cdn → cdn}/utils/twicpics-transformations.util.js.map +0 -0
- /package/{dist/color → color}/get-contrast-color.d.ts +0 -0
- /package/{dist/color → color}/get-contrast-color.js +0 -0
- /package/{dist/color → color}/get-contrast-color.js.map +0 -0
- /package/{dist/color → color}/index.d.ts +0 -0
- /package/{dist/color → color}/index.js +0 -0
- /package/{dist/color → color}/index.js.map +0 -0
- /package/{dist/formatting → formatting}/format-number.d.ts +0 -0
- /package/{dist/formatting → formatting}/format-number.js +0 -0
- /package/{dist/formatting → formatting}/format-number.js.map +0 -0
- /package/{dist/formatting → formatting}/index.d.ts +0 -0
- /package/{dist/formatting → formatting}/index.js +0 -0
- /package/{dist/formatting → formatting}/index.js.map +0 -0
- /package/{dist/fp → fp}/index.d.ts +0 -0
- /package/{dist/fp → fp}/index.js +0 -0
- /package/{dist/fp → fp}/index.js.map +0 -0
- /package/{dist/fp → fp}/run-while.d.ts +0 -0
- /package/{dist/fp → fp}/run-while.js +0 -0
- /package/{dist/fp → fp}/run-while.js.map +0 -0
- /package/{dist/http → http}/build-search-params.d.ts +0 -0
- /package/{dist/http → http}/build-search-params.js +0 -0
- /package/{dist/http → http}/build-search-params.js.map +0 -0
- /package/{dist/http → http}/encode-search-object.d.ts +0 -0
- /package/{dist/http → http}/encode-search-object.js +0 -0
- /package/{dist/http → http}/encode-search-object.js.map +0 -0
- /package/{dist/http → http}/fetch-with-timeout.d.ts +0 -0
- /package/{dist/http → http}/fetch-with-timeout.js +0 -0
- /package/{dist/http → http}/fetch-with-timeout.js.map +0 -0
- /package/{dist/http → http}/index.d.ts +0 -0
- /package/{dist/http → http}/index.js +0 -0
- /package/{dist/http → http}/index.js.map +0 -0
- /package/{dist/index.d.ts → index.d.ts} +0 -0
- /package/{dist/index.js → index.js} +0 -0
- /package/{dist/index.js.map → index.js.map} +0 -0
- /package/{dist/linked-list → linked-list}/apply-diff-linked-list.d.ts +0 -0
- /package/{dist/linked-list → linked-list}/apply-diff-linked-list.js +0 -0
- /package/{dist/linked-list → linked-list}/apply-diff-linked-list.js.map +0 -0
- /package/{dist/linked-list → linked-list}/create-linked-list.d.ts +0 -0
- /package/{dist/linked-list → linked-list}/create-linked-list.js +0 -0
- /package/{dist/linked-list → linked-list}/create-linked-list.js.map +0 -0
- /package/{dist/linked-list → linked-list}/find-linked-list.d.ts +0 -0
- /package/{dist/linked-list → linked-list}/find-linked-list.js +0 -0
- /package/{dist/linked-list → linked-list}/find-linked-list.js.map +0 -0
- /package/{dist/linked-list → linked-list}/get-linked-list.d.ts +0 -0
- /package/{dist/linked-list → linked-list}/get-linked-list.js +0 -0
- /package/{dist/linked-list → linked-list}/get-linked-list.js.map +0 -0
- /package/{dist/linked-list → linked-list}/index.d.ts +0 -0
- /package/{dist/linked-list → linked-list}/index.js +0 -0
- /package/{dist/linked-list → linked-list}/index.js.map +0 -0
- /package/{dist/linked-list → linked-list}/insert-linked-list.d.ts +0 -0
- /package/{dist/linked-list → linked-list}/insert-linked-list.js +0 -0
- /package/{dist/linked-list → linked-list}/insert-linked-list.js.map +0 -0
- /package/{dist/linked-list → linked-list}/linked-list-utils.d.ts +0 -0
- /package/{dist/linked-list → linked-list}/linked-list-utils.js +0 -0
- /package/{dist/linked-list → linked-list}/linked-list-utils.js.map +0 -0
- /package/{dist/linked-list → linked-list}/reduce-linked-list.d.ts +0 -0
- /package/{dist/linked-list → linked-list}/reduce-linked-list.js +0 -0
- /package/{dist/linked-list → linked-list}/reduce-linked-list.js.map +0 -0
- /package/{dist/linked-list → linked-list}/remove-linked-list.d.ts +0 -0
- /package/{dist/linked-list → linked-list}/remove-linked-list.js +0 -0
- /package/{dist/linked-list → linked-list}/remove-linked-list.js.map +0 -0
- /package/{dist/linked-list → linked-list}/type.d.ts +0 -0
- /package/{dist/linked-list → linked-list}/update-linked-list.d.ts +0 -0
- /package/{dist/linked-list → linked-list}/update-linked-list.js +0 -0
- /package/{dist/linked-list → linked-list}/update-linked-list.js.map +0 -0
- /package/{dist/linked-list → linked-list}/while-linked-list.d.ts +0 -0
- /package/{dist/linked-list → linked-list}/while-linked-list.js +0 -0
- /package/{dist/linked-list → linked-list}/while-linked-list.js.map +0 -0
- /package/{dist/math → math}/clamp-number.d.ts +0 -0
- /package/{dist/math → math}/clamp-number.js +0 -0
- /package/{dist/math → math}/clamp-number.js.map +0 -0
- /package/{dist/math → math}/index.d.ts +0 -0
- /package/{dist/math → math}/index.js +0 -0
- /package/{dist/math → math}/index.js.map +0 -0
- /package/{dist/math → math}/interpolate.d.ts +0 -0
- /package/{dist/math → math}/interpolate.js +0 -0
- /package/{dist/math → math}/interpolate.js.map +0 -0
- /package/{dist/math → math}/median.d.ts +0 -0
- /package/{dist/math → math}/median.js +0 -0
- /package/{dist/math → math}/median.js.map +0 -0
- /package/{dist/math → math}/number-range.d.ts +0 -0
- /package/{dist/math → math}/number-range.js +0 -0
- /package/{dist/math → math}/number-range.js.map +0 -0
- /package/{dist/math → math}/random-number.d.ts +0 -0
- /package/{dist/math → math}/random-number.js +0 -0
- /package/{dist/math → math}/random-number.js.map +0 -0
- /package/{dist/object → object}/index.d.ts +0 -0
- /package/{dist/object → object}/index.js +0 -0
- /package/{dist/object → object}/index.js.map +0 -0
- /package/{dist/object → object}/merge-deep.d.ts +0 -0
- /package/{dist/object → object}/merge-deep.js +0 -0
- /package/{dist/object → object}/merge-deep.js.map +0 -0
- /package/{dist/object → object}/strip-properties-from-object.d.ts +0 -0
- /package/{dist/object → object}/strip-properties-from-object.js +0 -0
- /package/{dist/object → object}/strip-properties-from-object.js.map +0 -0
- /package/{dist/parsing → parsing}/index.d.ts +0 -0
- /package/{dist/parsing → parsing}/index.js +0 -0
- /package/{dist/parsing → parsing}/index.js.map +0 -0
- /package/{dist/parsing → parsing}/parse-boolean.d.ts +0 -0
- /package/{dist/parsing → parsing}/parse-boolean.js +0 -0
- /package/{dist/parsing → parsing}/parse-boolean.js.map +0 -0
- /package/{dist/parsing → parsing}/parse-enum.d.ts +0 -0
- /package/{dist/parsing → parsing}/parse-enum.js +0 -0
- /package/{dist/parsing → parsing}/parse-enum.js.map +0 -0
- /package/{dist/parsing → parsing}/parse-number.d.ts +0 -0
- /package/{dist/parsing → parsing}/parse-number.js +0 -0
- /package/{dist/parsing → parsing}/parse-number.js.map +0 -0
- /package/{dist/predicates → predicates}/index.d.ts +0 -0
- /package/{dist/predicates → predicates}/index.js +0 -0
- /package/{dist/predicates → predicates}/index.js.map +0 -0
- /package/{dist/predicates → predicates}/is-function.d.ts +0 -0
- /package/{dist/predicates → predicates}/is-function.js +0 -0
- /package/{dist/predicates → predicates}/is-function.js.map +0 -0
- /package/{dist/predicates → predicates}/is-null.d.ts +0 -0
- /package/{dist/predicates → predicates}/is-null.js +0 -0
- /package/{dist/predicates → predicates}/is-null.js.map +0 -0
- /package/{dist/predicates → predicates}/is-object.d.ts +0 -0
- /package/{dist/predicates → predicates}/is-object.js +0 -0
- /package/{dist/predicates → predicates}/is-object.js.map +0 -0
- /package/{dist/predicates → predicates}/is-primitive.d.ts +0 -0
- /package/{dist/predicates → predicates}/is-primitive.js +0 -0
- /package/{dist/predicates → predicates}/is-primitive.js.map +0 -0
- /package/{dist/predicates → predicates}/is-undefined.d.ts +0 -0
- /package/{dist/predicates → predicates}/is-undefined.js +0 -0
- /package/{dist/predicates → predicates}/is-undefined.js.map +0 -0
- /package/{dist/predicates → predicates}/is-uuid.d.ts +0 -0
- /package/{dist/promise → promise}/delay.d.ts +0 -0
- /package/{dist/promise → promise}/delay.js +0 -0
- /package/{dist/promise → promise}/delay.js.map +0 -0
- /package/{dist/promise → promise}/execute-or-resolve-default.d.ts +0 -0
- /package/{dist/promise → promise}/execute-or-resolve-default.js +0 -0
- /package/{dist/promise → promise}/execute-or-resolve-default.js.map +0 -0
- /package/{dist/promise → promise}/execute-with-delay.d.ts +0 -0
- /package/{dist/promise → promise}/execute-with-delay.js +0 -0
- /package/{dist/promise → promise}/execute-with-delay.js.map +0 -0
- /package/{dist/promise → promise}/index.d.ts +0 -0
- /package/{dist/promise → promise}/index.js +0 -0
- /package/{dist/promise → promise}/index.js.map +0 -0
- /package/{dist/string → string}/index.d.ts +0 -0
- /package/{dist/string → string}/index.js +0 -0
- /package/{dist/string → string}/index.js.map +0 -0
- /package/{dist/string → string}/is-string-length-within-range.d.ts +0 -0
- /package/{dist/string → string}/is-string-length-within-range.js +0 -0
- /package/{dist/string → string}/is-string-length-within-range.js.map +0 -0
- /package/{dist/string → string}/replace-in-template.d.ts +0 -0
- /package/{dist/string → string}/replace-in-template.js +0 -0
- /package/{dist/string → string}/replace-in-template.js.map +0 -0
- /package/{dist/time → time}/constants.d.ts +0 -0
- /package/{dist/time → time}/constants.js +0 -0
- /package/{dist/time → time}/constants.js.map +0 -0
- /package/{dist/time → time}/convert.d.ts +0 -0
- /package/{dist/time → time}/convert.js +0 -0
- /package/{dist/time → time}/convert.js.map +0 -0
- /package/{dist/time → time}/format-minutes.d.ts +0 -0
- /package/{dist/time → time}/format-minutes.js +0 -0
- /package/{dist/time → time}/format-minutes.js.map +0 -0
- /package/{dist/time → time}/get-time-diff-as-string.d.ts +0 -0
- /package/{dist/time → time}/get-time-diff-as-string.js +0 -0
- /package/{dist/time → time}/get-time-diff-as-string.js.map +0 -0
- /package/{dist/time → time}/index.d.ts +0 -0
- /package/{dist/time → time}/index.js +0 -0
- /package/{dist/time → time}/index.js.map +0 -0
- /package/{dist/types → types}/function.d.ts +0 -0
- /package/{dist/types → types}/general.d.ts +0 -0
- /package/{dist/types → types}/index.d.ts +0 -0
- /package/{dist/types → types}/index.js +0 -0
- /package/{dist/types → types}/index.js.map +0 -0
- /package/{dist/types → types}/object.d.ts +0 -0
- /package/{dist/types → types}/search.d.ts +0 -0
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { stripPropertiesFromObject } from '../strip-properties-from-object';
|
|
2
|
-
|
|
3
|
-
describe('stripPropertiesFromObject', () => {
|
|
4
|
-
const obj = {
|
|
5
|
-
a: 1,
|
|
6
|
-
b: {
|
|
7
|
-
b1: 1,
|
|
8
|
-
b2: 2,
|
|
9
|
-
b3: 3,
|
|
10
|
-
b4: {
|
|
11
|
-
b41: 1,
|
|
12
|
-
b42: 2,
|
|
13
|
-
b43: 3,
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
c: 3,
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
it('should remove the properties from the object', () => {
|
|
20
|
-
const result = stripPropertiesFromObject(obj, ['c', 'b.b1', 'b.b4.b41']);
|
|
21
|
-
|
|
22
|
-
expect(result).toMatchObject({
|
|
23
|
-
a: 1,
|
|
24
|
-
b: {
|
|
25
|
-
b2: 2,
|
|
26
|
-
b3: 3,
|
|
27
|
-
b4: {
|
|
28
|
-
b42: 2,
|
|
29
|
-
b43: 3,
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
// Check if no mutation on the orignal object
|
|
35
|
-
expect(obj).toEqual({
|
|
36
|
-
a: 1,
|
|
37
|
-
b: {
|
|
38
|
-
b1: 1,
|
|
39
|
-
b2: 2,
|
|
40
|
-
b3: 3,
|
|
41
|
-
b4: {
|
|
42
|
-
b41: 1,
|
|
43
|
-
b42: 2,
|
|
44
|
-
b43: 3,
|
|
45
|
-
},
|
|
46
|
-
},
|
|
47
|
-
c: 3,
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
it('should ignore properties that do not exist', () => {
|
|
52
|
-
const result = stripPropertiesFromObject(obj, ['d', 'a.b', 'b.b1.b11']);
|
|
53
|
-
expect(result).toEqual(obj);
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
it('should not fail with empty array', () => {
|
|
57
|
-
const result = stripPropertiesFromObject(obj, []);
|
|
58
|
-
expect(result).toEqual(obj);
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
it('should handle empty property', () => {
|
|
62
|
-
const result = stripPropertiesFromObject(obj, ['']);
|
|
63
|
-
expect(result).toEqual(obj);
|
|
64
|
-
});
|
|
65
|
-
});
|
package/src/object/index.ts
DELETED
package/src/object/merge-deep.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { DeepPartial, ValueType } from '../types';
|
|
2
|
-
|
|
3
|
-
// https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript/8511350#8511350
|
|
4
|
-
const isObject = (a: any) => typeof a === 'object' && a !== null;
|
|
5
|
-
const isValueType = (a: any): a is ValueType => !isObject(a) || Array.isArray(a);
|
|
6
|
-
|
|
7
|
-
export const mergeDeep = <T>(a: T, b: DeepPartial<T>): T => {
|
|
8
|
-
if (isValueType(a) || isValueType(b)) {
|
|
9
|
-
return b as T;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
return (Object.keys(b) as (keyof T)[]).reduce((acc, key) => {
|
|
13
|
-
// @ts-ignore
|
|
14
|
-
if (!(key in a)) {
|
|
15
|
-
return acc;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
if (b[key] === a[key]) {
|
|
19
|
-
return acc;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const merged = mergeDeep(a[key], b[key] as DeepPartial<T[keyof T]>);
|
|
23
|
-
|
|
24
|
-
return { ...acc, [key]: merged };
|
|
25
|
-
}, a);
|
|
26
|
-
};
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import structuredClone from '@ungap/structured-clone';
|
|
2
|
-
|
|
3
|
-
export const stripPropertiesFromObject = <Output extends Record<any, any>, Input extends Record<any, any>>(
|
|
4
|
-
obj: Input,
|
|
5
|
-
properties: string[],
|
|
6
|
-
): Output => {
|
|
7
|
-
const copy = structuredClone(obj);
|
|
8
|
-
|
|
9
|
-
properties.forEach((nestedPropertyStr) => {
|
|
10
|
-
const nestedProperties = nestedPropertyStr.split('.');
|
|
11
|
-
const propertyToRemove = nestedProperties[nestedProperties.length - 1];
|
|
12
|
-
|
|
13
|
-
const nestedObject =
|
|
14
|
-
nestedProperties.length === 1
|
|
15
|
-
? copy
|
|
16
|
-
: nestedProperties
|
|
17
|
-
.slice(0, nestedProperties.length - 1)
|
|
18
|
-
.reduce((acc, property) => acc[property], copy);
|
|
19
|
-
|
|
20
|
-
if (nestedObject) {
|
|
21
|
-
delete nestedObject[propertyToRemove];
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
return copy;
|
|
26
|
-
};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { parseBoolean } from '../parse-boolean';
|
|
2
|
-
|
|
3
|
-
describe('parseBoolean', () => {
|
|
4
|
-
it('should return true if value is "true"', () => {
|
|
5
|
-
expect(parseBoolean('true')).toStrictEqual(true);
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
it('should return false if value is "false"', () => {
|
|
9
|
-
expect(parseBoolean('false')).toStrictEqual(false);
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
it('should throw an exception if value is neither "true" nor "false"', () => {
|
|
13
|
-
expect(() => parseBoolean('value')).toThrow();
|
|
14
|
-
});
|
|
15
|
-
});
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { createEnumParser } from '../parse-enum';
|
|
2
|
-
|
|
3
|
-
enum TestEnum {
|
|
4
|
-
FirstValue = 'first',
|
|
5
|
-
SecondValue = 'second',
|
|
6
|
-
ThirdValue = 'third',
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
describe('createEnumParser', () => {
|
|
10
|
-
const parseTestEnum = createEnumParser(TestEnum);
|
|
11
|
-
|
|
12
|
-
it('should return a valid enum parser', () => {
|
|
13
|
-
expect(parseTestEnum('second')).toStrictEqual(TestEnum.SecondValue);
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
it('should throw an error if the parsing did not work', () => {
|
|
17
|
-
expect(() => parseTestEnum('fourth')).toThrowError();
|
|
18
|
-
});
|
|
19
|
-
});
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { parseNumber } from '../parse-number';
|
|
2
|
-
|
|
3
|
-
describe('parseNumber', () => {
|
|
4
|
-
it('should return number 10 if value is "10', () => {
|
|
5
|
-
expect(parseNumber('10')).toStrictEqual(10);
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
it('should return -10 if value is "-10"', () => {
|
|
9
|
-
expect(parseNumber('-10')).toStrictEqual(-10);
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
it('should return 0 if value is "0"', () => {
|
|
13
|
-
expect(parseNumber('0')).toStrictEqual(0);
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
it('should throw an exception if value is not a number', () => {
|
|
17
|
-
expect(() => parseNumber('number')).toThrow();
|
|
18
|
-
expect(() => parseNumber('false')).toThrow();
|
|
19
|
-
});
|
|
20
|
-
});
|
package/src/parsing/index.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Parse a string to a boolean. Throw error if string is neither "true" nor "false"
|
|
3
|
-
*/
|
|
4
|
-
export const parseBoolean = (value: string): boolean => {
|
|
5
|
-
if (value !== 'true' && value !== 'false') {
|
|
6
|
-
throw new Error('Cannot parse value');
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
return value === 'true';
|
|
10
|
-
};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { Primitive } from '../types';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Factory to build enum to parse a string to an enum. Throw error if string is not an enum value
|
|
5
|
-
*/
|
|
6
|
-
export const createEnumParser = <E extends Record<string, Primitive>>(enumType: E) => (
|
|
7
|
-
(value: string) => {
|
|
8
|
-
const enumValues = Object.values(enumType);
|
|
9
|
-
|
|
10
|
-
if (!enumValues.includes(value as any)) {
|
|
11
|
-
throw new Error('Can\'t parse this value');
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
return value as unknown as E;
|
|
15
|
-
}
|
|
16
|
-
);
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Parse a string to a number. Throw error if string is NaN
|
|
3
|
-
*/
|
|
4
|
-
export const parseNumber = (value: string): number => {
|
|
5
|
-
const number = parseInt(value, 10);
|
|
6
|
-
|
|
7
|
-
if (Number.isNaN(number)) {
|
|
8
|
-
throw new Error('Cannot parse value');
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
return number;
|
|
12
|
-
};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { isFunction } from '../is-function';
|
|
2
|
-
|
|
3
|
-
describe('isFunction', () => {
|
|
4
|
-
it('should return true if value is a function', () => {
|
|
5
|
-
expect(isFunction(() => {})).toBeTrue();
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
it('should return false if value is not a function', () => {
|
|
9
|
-
expect(isFunction('')).toBeFalse();
|
|
10
|
-
});
|
|
11
|
-
});
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { isNull } from '../is-null';
|
|
2
|
-
|
|
3
|
-
describe('isNull', () => {
|
|
4
|
-
it('should return true if value is null', () => {
|
|
5
|
-
expect(isNull(null)).toBeTrue();
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
it('should return false if value is not null', () => {
|
|
9
|
-
expect(isNull('')).toBeFalse();
|
|
10
|
-
});
|
|
11
|
-
});
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { isObject } from '../is-object';
|
|
2
|
-
|
|
3
|
-
describe('isObject', () => {
|
|
4
|
-
it('should return true if value is an object', () => {
|
|
5
|
-
expect(isObject({})).toBeTrue();
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
it('should return false if value is not an object', () => {
|
|
9
|
-
expect(isObject('')).toBeFalse();
|
|
10
|
-
});
|
|
11
|
-
});
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { isPrimitive, isArrayOfPrimitive } from '../is-primitive';
|
|
2
|
-
|
|
3
|
-
describe('isPrimitive', () => {
|
|
4
|
-
it('should return true if value is a primitive', () => {
|
|
5
|
-
expect(isPrimitive('a value')).toBeTrue();
|
|
6
|
-
expect(isPrimitive(6)).toBeTrue();
|
|
7
|
-
expect(isPrimitive(true)).toBeTrue();
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
it('should return false if value is not a primitive', () => {
|
|
11
|
-
expect(isPrimitive({})).toBeFalse();
|
|
12
|
-
expect(isPrimitive(new Date())).toBeFalse();
|
|
13
|
-
expect(isPrimitive([])).toBeFalse();
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
describe('isArrayOfPrimitive', () => {
|
|
18
|
-
it('should return false if value not an array', () => {
|
|
19
|
-
expect(isArrayOfPrimitive({})).toBeFalse();
|
|
20
|
-
expect(isArrayOfPrimitive(1)).toBeFalse();
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
it('should return false if not every value in the array is primitive', () => {
|
|
24
|
-
expect(isArrayOfPrimitive([
|
|
25
|
-
1,
|
|
26
|
-
'test',
|
|
27
|
-
true,
|
|
28
|
-
false,
|
|
29
|
-
[],
|
|
30
|
-
{},
|
|
31
|
-
])).toBeFalse();
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
it('should return true if every value in the array is a primitive', () => {
|
|
35
|
-
expect(isArrayOfPrimitive([
|
|
36
|
-
1,
|
|
37
|
-
'test',
|
|
38
|
-
true,
|
|
39
|
-
false,
|
|
40
|
-
])).toBeTrue();
|
|
41
|
-
});
|
|
42
|
-
});
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { isUndefined } from '../is-undefined';
|
|
2
|
-
|
|
3
|
-
describe('isUndefined', () => {
|
|
4
|
-
it('should return true if value is undefined', () => {
|
|
5
|
-
expect(isUndefined(undefined)).toBeTrue();
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
it('should return false if value is not undefined', () => {
|
|
9
|
-
expect(isUndefined('')).toBeFalse();
|
|
10
|
-
});
|
|
11
|
-
});
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { isUuidV4 } from '../is-uuid';
|
|
2
|
-
|
|
3
|
-
describe('isUuidV4', () => {
|
|
4
|
-
it('returns true if the string is uuid v4', () => {
|
|
5
|
-
expect(isUuidV4('dd819894-70f3-4629-8712-430445f93c5d')).toBeTrue();
|
|
6
|
-
});
|
|
7
|
-
it('returns false if argument is not a string', () => {
|
|
8
|
-
expect(isUuidV4(4)).toBeFalse();
|
|
9
|
-
});
|
|
10
|
-
it('returns false if argument is uuid V1', () => {
|
|
11
|
-
expect(isUuidV4('4dfde9e2-3988-11ed-a261-0242ac120002')).toBeFalse();
|
|
12
|
-
});
|
|
13
|
-
});
|
package/src/predicates/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const isNull = (value: any): value is null => value === null;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Primitive } from '../types/general';
|
|
2
|
-
|
|
3
|
-
const PRIMITIVE_TYPES = [
|
|
4
|
-
'string',
|
|
5
|
-
'boolean',
|
|
6
|
-
'number',
|
|
7
|
-
];
|
|
8
|
-
|
|
9
|
-
export const isPrimitive = (value: any): value is Primitive => (
|
|
10
|
-
PRIMITIVE_TYPES.includes(typeof value)
|
|
11
|
-
);
|
|
12
|
-
|
|
13
|
-
export const isArrayOfPrimitive = (value: any): value is Array<Primitive> => {
|
|
14
|
-
if (!Array.isArray(value)) {
|
|
15
|
-
return false;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
return value.every((arrayValue) => isPrimitive(arrayValue));
|
|
19
|
-
};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { delay } from '../delay';
|
|
2
|
-
|
|
3
|
-
jest.useFakeTimers();
|
|
4
|
-
jest.spyOn(global, 'setTimeout');
|
|
5
|
-
|
|
6
|
-
describe('delay.ts', () => {
|
|
7
|
-
it('waits ', () => {
|
|
8
|
-
delay(500);
|
|
9
|
-
|
|
10
|
-
expect(setTimeout).toHaveBeenCalledOnce();
|
|
11
|
-
expect(setTimeout).toHaveBeenCalledWith(expect.any(Function), 500);
|
|
12
|
-
});
|
|
13
|
-
});
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { executeOrResolveDefault } from '../execute-or-resolve-default';
|
|
2
|
-
|
|
3
|
-
describe('executeOrResolveDefault', () => {
|
|
4
|
-
it('should execute the function', async () => {
|
|
5
|
-
const cb = jest.fn().mockResolvedValue(8);
|
|
6
|
-
const res = await executeOrResolveDefault(cb, {
|
|
7
|
-
execute: true,
|
|
8
|
-
defaultValue: undefined,
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
expect(res).toStrictEqual(8);
|
|
12
|
-
expect(cb).toHaveBeenCalledTimes(1);
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it('should not execute the function', async () => {
|
|
16
|
-
const cb = jest.fn().mockResolvedValue(8);
|
|
17
|
-
const res = await executeOrResolveDefault(cb, {
|
|
18
|
-
execute: false,
|
|
19
|
-
defaultValue: 'sup m8',
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
expect(res).toStrictEqual('sup m8');
|
|
23
|
-
expect(cb).toHaveBeenCalledTimes(0);
|
|
24
|
-
});
|
|
25
|
-
});
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { executeWithDelay } from '../execute-with-delay';
|
|
2
|
-
|
|
3
|
-
describe('executeWithDelay', () => {
|
|
4
|
-
beforeAll(() => {
|
|
5
|
-
jest.useFakeTimers();
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
afterAll(() => {
|
|
9
|
-
jest.useRealTimers();
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
it('should execute the promise with a delay', async () => {
|
|
13
|
-
const setTimeoutSpy = jest.spyOn(global, 'setTimeout');
|
|
14
|
-
const res = executeWithDelay(() => Promise.resolve(1), 500);
|
|
15
|
-
|
|
16
|
-
expect(setTimeoutSpy).toHaveBeenCalledWith(expect.toBeFunction(), 500);
|
|
17
|
-
|
|
18
|
-
jest.advanceTimersByTime(501);
|
|
19
|
-
|
|
20
|
-
expect(await res).toStrictEqual(1);
|
|
21
|
-
|
|
22
|
-
setTimeoutSpy.mockRestore();
|
|
23
|
-
});
|
|
24
|
-
});
|
package/src/promise/delay.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export type ExecutionConfig<Default> = {
|
|
2
|
-
execute: boolean,
|
|
3
|
-
defaultValue: Default,
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
export const executeOrResolveDefault = <T, Default>(callback: () => Promise<T>, config: ExecutionConfig<Default>): Promise<T | Default> => {
|
|
7
|
-
const { execute, defaultValue } = config;
|
|
8
|
-
|
|
9
|
-
if (execute) {
|
|
10
|
-
return callback();
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
return Promise.resolve(defaultValue);
|
|
14
|
-
};
|
package/src/promise/index.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { isStringLengthWithinRange } from '../is-string-length-within-range';
|
|
2
|
-
|
|
3
|
-
describe('isStringLengthWithinRange', () => {
|
|
4
|
-
it('should return true if the length is within the range', () => {
|
|
5
|
-
expect(isStringLengthWithinRange({ min: 1, max: 10 }, 'a'.repeat(5))).toBe(true);
|
|
6
|
-
expect(isStringLengthWithinRange({ min: 1, max: 10 }, 'a'.repeat(1))).toBe(true);
|
|
7
|
-
expect(isStringLengthWithinRange({ min: 1, max: 10 }, 'a'.repeat(10))).toBe(true);
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
it('should return false if the length is not within the range', () => {
|
|
11
|
-
expect(isStringLengthWithinRange({ min: 1, max: 10 }, 'a'.repeat(20))).toBe(false);
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
it('should handle undefined string', () => {
|
|
15
|
-
expect(isStringLengthWithinRange({ min: 1, max: 10 })).toBe(false);
|
|
16
|
-
expect(isStringLengthWithinRange({ min: 0, max: 10 })).toBe(true);
|
|
17
|
-
expect(isStringLengthWithinRange({ min: -10, max: -1 })).toBe(false);
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it('should throw an error if the range is invalid', () => {
|
|
21
|
-
expect(() => isStringLengthWithinRange({ min: 10, max: 1 })).toThrowError('Invalid range');
|
|
22
|
-
})
|
|
23
|
-
});
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { replaceInTemplate } from '../replace-in-template';
|
|
2
|
-
|
|
3
|
-
describe('replaceInTemplate', () => {
|
|
4
|
-
it('should inject the params object into the template with the default config', () => {
|
|
5
|
-
const template = 'You need to wait {{time}} minutes before ordering on {{deliveryService}} again';
|
|
6
|
-
const message = replaceInTemplate(template, {
|
|
7
|
-
time: 5,
|
|
8
|
-
deliveryService: 'Uber Eat',
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
expect(message).toStrictEqual('You need to wait 5 minutes before ordering on Uber Eat again');
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
it('should handle if there is a primitive array in params', () => {
|
|
15
|
-
const template = 'Grocery: {{groceries}}';
|
|
16
|
-
const message = replaceInTemplate(template, {
|
|
17
|
-
groceries: [
|
|
18
|
-
'Twix',
|
|
19
|
-
'Oasis',
|
|
20
|
-
'm&ms',
|
|
21
|
-
],
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
expect(message).toStrictEqual('Grocery: Twix, Oasis, m&ms');
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it('should ignore non primitive values', () => {
|
|
28
|
-
const template = 'City: {{city}}, population: {{population}}';
|
|
29
|
-
const message = replaceInTemplate(template, {
|
|
30
|
-
city: 'Washington D.C.',
|
|
31
|
-
population: {
|
|
32
|
-
value: 12000000,
|
|
33
|
-
},
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
expect(message).toStrictEqual('City: Washington D.C., population: {{population}}');
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
it('should handle custom delimiter', () => {
|
|
40
|
-
const template = 'ISO |iso|, |focalLength| mm, f/|aperture|';
|
|
41
|
-
const params = {
|
|
42
|
-
iso: 100,
|
|
43
|
-
focalLength: 50,
|
|
44
|
-
aperture: '2.8',
|
|
45
|
-
};
|
|
46
|
-
const message = replaceInTemplate(template, params, {
|
|
47
|
-
delimiter: '|',
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
expect(message).toStrictEqual('ISO 100, 50 mm, f/2.8');
|
|
51
|
-
});
|
|
52
|
-
});
|
package/src/string/index.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Range } from '../types/general';
|
|
2
|
-
|
|
3
|
-
export const isStringLengthWithinRange = (range: Range, str?: string) => {
|
|
4
|
-
if (range.min > range.max) {
|
|
5
|
-
throw new Error('Invalid range');
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
const strLength = str?.length || 0;
|
|
9
|
-
return strLength >= (range.min || 0) && strLength <= range.max;
|
|
10
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { isArrayOfPrimitive, isPrimitive } from '../predicates';
|
|
2
|
-
|
|
3
|
-
export type ReplaceConfig = {
|
|
4
|
-
delimiter: string | {
|
|
5
|
-
left: string,
|
|
6
|
-
right: string,
|
|
7
|
-
},
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
const defaultConfig: ReplaceConfig = {
|
|
11
|
-
delimiter: {
|
|
12
|
-
left: '{{',
|
|
13
|
-
right: '}}',
|
|
14
|
-
},
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Replace string inside a template. For now, only works with
|
|
19
|
-
* an object containing promirives or array of primitives. If
|
|
20
|
-
* it contains other objects, they will be ignored.
|
|
21
|
-
*
|
|
22
|
-
* Uses the mustache syntax by default.
|
|
23
|
-
*/
|
|
24
|
-
export const replaceInTemplate = (
|
|
25
|
-
template: string,
|
|
26
|
-
params: Record<string, any>,
|
|
27
|
-
config: ReplaceConfig = defaultConfig,
|
|
28
|
-
) => {
|
|
29
|
-
const { delimiter } = config;
|
|
30
|
-
const leftDelimiter = typeof delimiter === 'string' ? delimiter : delimiter.left;
|
|
31
|
-
const rightDelimiter = typeof delimiter === 'string' ? delimiter : delimiter.right;
|
|
32
|
-
|
|
33
|
-
return Object
|
|
34
|
-
.entries(params)
|
|
35
|
-
.reduce((acc, [key, value]) => {
|
|
36
|
-
if (!isPrimitive(value) && !isArrayOfPrimitive(value)) {
|
|
37
|
-
return acc;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
const searchValue = `${leftDelimiter}${key}${rightDelimiter}`;
|
|
41
|
-
const replaceBy = Array.isArray(value) ? value.join(', ') : String(value);
|
|
42
|
-
|
|
43
|
-
return acc.replace(searchValue, replaceBy);
|
|
44
|
-
}, template);
|
|
45
|
-
};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { msToHour, msToMinute } from '../convert';
|
|
2
|
-
|
|
3
|
-
describe('msToMinute', () => {
|
|
4
|
-
it('should correctly convert milliseconds to minutes', () => {
|
|
5
|
-
expect(msToMinute(2520000)).toStrictEqual(42);
|
|
6
|
-
});
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
describe('msToHour', () => {
|
|
10
|
-
it('should correctly convert milliseconds to hours', () => {
|
|
11
|
-
expect(msToHour(1.08e+7)).toStrictEqual(3);
|
|
12
|
-
expect(msToHour(10)).toStrictEqual(0);
|
|
13
|
-
});
|
|
14
|
-
});
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { formatMinutes } from '../format-minutes';
|
|
2
|
-
|
|
3
|
-
describe('formatMinutes', () => {
|
|
4
|
-
it('should format minutes correctly', () => {
|
|
5
|
-
expect(formatMinutes(48)).toBe('48min');
|
|
6
|
-
expect(formatMinutes(65)).toBe('1h5min');
|
|
7
|
-
expect(formatMinutes(150)).toBe('2h30min');
|
|
8
|
-
expect(formatMinutes(355)).toBe('5h55min');
|
|
9
|
-
});
|
|
10
|
-
});
|