@sparted/shared-library 1.0.7 → 1.0.8-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.circleci/config.yml +40 -0
- package/.eslintignore +1 -0
- package/.eslintrc.js +17 -0
- package/.gitignore +37 -0
- package/CHANGELOG.md +34 -0
- package/README.md +26 -0
- package/dist/github/commits/create-git-blob.d.ts +26 -0
- package/dist/github/commits/create-git-blob.js +42 -0
- package/dist/github/commits/create-git-blob.js.map +1 -0
- package/dist/github/commits/create-git-commit.d.ts +23 -0
- package/dist/github/commits/create-git-commit.js +39 -0
- package/dist/github/commits/create-git-commit.js.map +1 -0
- package/dist/github/commits/create-git-tree.d.ts +29 -0
- package/dist/github/commits/create-git-tree.js +47 -0
- package/dist/github/commits/create-git-tree.js.map +1 -0
- package/dist/github/commits/get-sha-last-commit-of-branch.d.ts +21 -0
- package/dist/github/commits/get-sha-last-commit-of-branch.js +35 -0
- package/dist/github/commits/get-sha-last-commit-of-branch.js.map +1 -0
- package/dist/github/commits/get-tree-by-commit-sha.d.ts +23 -0
- package/dist/github/commits/get-tree-by-commit-sha.js +37 -0
- package/dist/github/commits/get-tree-by-commit-sha.js.map +1 -0
- package/dist/github/commits/index.d.ts +6 -0
- package/dist/github/commits/index.js +20 -0
- package/dist/github/commits/run-new-commit-process.d.ts +27 -0
- package/dist/github/commits/run-new-commit-process.js +49 -0
- package/dist/github/commits/run-new-commit-process.js.map +1 -0
- package/dist/github/commits/utils.d.ts +1 -0
- package/dist/github/commits/utils.js +29 -0
- package/dist/github/commits/utils.js.map +1 -0
- package/dist/github/contents/get-file-content.d.ts +20 -0
- package/dist/github/contents/get-file-content.js +38 -0
- package/dist/github/contents/get-file-content.js.map +1 -0
- package/dist/github/github.d.ts +25 -0
- package/dist/github/github.js +53 -0
- package/dist/github/github.js.map +1 -0
- package/dist/github/index.d.ts +1 -0
- package/dist/github/index.js +10 -0
- package/dist/index.d.ts +15 -0
- package/{index.js → dist/index.js} +2 -0
- package/{index.js.map → dist/index.js.map} +1 -1
- package/dist/package.json +65 -0
- package/dist/string/index.js.map +1 -0
- package/dist/time/index.js.map +1 -0
- package/global.d.ts +2 -0
- package/package.json +7 -3
- package/rollup.config.ts +15 -0
- package/src/array/__tests__/array-to-map.test.ts +50 -0
- package/src/array/__tests__/get-values-from-keys.test.ts +14 -0
- package/src/array/array-to-map.ts +32 -0
- package/src/array/get-values-from-keys.ts +3 -0
- package/src/array/index.ts +2 -0
- package/src/cdn/__tests__/cdn.factory.test.ts +120 -0
- package/src/cdn/__tests__/utils.test.ts +456 -0
- package/src/cdn/cdn.factory.ts +63 -0
- package/src/cdn/index.ts +2 -0
- package/src/cdn/types/cdn-factory.type.ts +35 -0
- package/src/cdn/types/index.ts +1 -0
- package/src/cdn/utils/extract-info-from-url.util.ts +21 -0
- package/src/cdn/utils/get-cdn-from-s3-url.util.ts +20 -0
- package/src/cdn/utils/get-cdn-url.util.ts +26 -0
- package/src/formatting/__tests__/format-number.test.ts +11 -0
- package/src/formatting/format-number.ts +14 -0
- package/src/formatting/index.ts +1 -0
- package/src/fp/__tests__/run-while.test.ts +29 -0
- package/src/fp/index.ts +1 -0
- package/src/fp/run-while.ts +54 -0
- package/src/github/commits/create-git-blob.ts +57 -0
- package/src/github/commits/create-git-commit.ts +57 -0
- package/src/github/commits/create-git-tree.ts +68 -0
- package/src/github/commits/get-sha-last-commit-of-branch.ts +50 -0
- package/src/github/commits/get-tree-by-commit-sha.ts +52 -0
- package/src/github/commits/index.ts +6 -0
- package/src/github/commits/run-new-commit-process.ts +88 -0
- package/src/github/commits/utils.ts +31 -0
- package/src/github/contents/get-file-content.ts +50 -0
- package/src/github/github.ts +74 -0
- package/src/github/index.ts +1 -0
- package/src/http/__tests__/encode-search-object.test.ts +34 -0
- package/src/http/__tests__/fetch-with-timeout.test.ts +50 -0
- package/src/http/encode-search-object.ts +39 -0
- package/src/http/fetch-with-timeout.ts +24 -0
- package/src/http/index.ts +2 -0
- package/{index.d.ts → src/index.ts} +15 -14
- package/src/linked-list/__tests__/apply-diff-linked-list.test.ts +103 -0
- package/src/linked-list/__tests__/create-linked-list.test.ts +204 -0
- package/src/linked-list/__tests__/find-linked-list.test.ts +40 -0
- package/src/linked-list/__tests__/get-linked-list.test.ts +28 -0
- package/src/linked-list/__tests__/insert-linked-list.test.ts +186 -0
- package/src/linked-list/__tests__/linked-list-utils.test.ts +252 -0
- package/src/linked-list/__tests__/reduce-linked-list.test.ts +31 -0
- package/src/linked-list/__tests__/remove-linked-list.test.ts +129 -0
- package/src/linked-list/__tests__/update-linked-list.test.ts +53 -0
- package/src/linked-list/__tests__/while-linked-list.test.ts +58 -0
- package/src/linked-list/apply-diff-linked-list.ts +35 -0
- package/src/linked-list/create-linked-list.ts +79 -0
- package/src/linked-list/find-linked-list.ts +26 -0
- package/src/linked-list/get-linked-list.ts +9 -0
- package/src/linked-list/index.ts +2 -0
- package/src/linked-list/insert-linked-list.ts +50 -0
- package/src/linked-list/linked-list-utils.ts +143 -0
- package/src/linked-list/reduce-linked-list.ts +18 -0
- package/src/linked-list/remove-linked-list.ts +36 -0
- package/src/linked-list/type.ts +38 -0
- package/src/linked-list/update-linked-list.ts +29 -0
- package/src/linked-list/while-linked-list.ts +33 -0
- package/src/math/__tests__/clamp-number.test.ts +30 -0
- package/src/math/__tests__/interpolate.test.ts +28 -0
- package/src/math/__tests__/number-range.test.ts +59 -0
- package/src/math/__tests__/random-number.test.ts +11 -0
- package/src/math/clamp-number.ts +8 -0
- package/src/math/index.ts +4 -0
- package/src/math/interpolate.ts +18 -0
- package/src/math/number-range.ts +16 -0
- package/src/math/random-number.ts +10 -0
- package/src/object/__tests__/merge-deep.test.ts +56 -0
- package/src/object/index.ts +1 -0
- package/src/object/merge-deep.ts +27 -0
- package/src/parsing/__tests__/parse-boolean.test.ts +15 -0
- package/src/parsing/__tests__/parse-enum.test.ts +19 -0
- package/src/parsing/__tests__/parse-number.test.ts +20 -0
- package/src/parsing/index.ts +3 -0
- package/src/parsing/parse-boolean.ts +10 -0
- package/src/parsing/parse-enum.ts +16 -0
- package/src/parsing/parse-number.ts +12 -0
- package/src/predicates/__tests__/is-function.test.ts +11 -0
- package/src/predicates/__tests__/is-null.test.ts +11 -0
- package/src/predicates/__tests__/is-object.test.ts +11 -0
- package/src/predicates/__tests__/is-primitive.test.ts +42 -0
- package/src/predicates/__tests__/is-undefined.test.ts +11 -0
- package/src/predicates/__tests__/is-uuid.test.ts +13 -0
- package/src/predicates/index.ts +5 -0
- package/src/predicates/is-function.ts +3 -0
- package/src/predicates/is-null.ts +3 -0
- package/src/predicates/is-object.ts +3 -0
- package/src/predicates/is-primitive.ts +19 -0
- package/src/predicates/is-undefined.ts +3 -0
- package/src/predicates/is-uuid.ts +3 -0
- package/src/promise/__tests__/delay.test.ts +13 -0
- package/src/promise/__tests__/execute-or-resolve-default.test.ts +25 -0
- package/src/promise/__tests__/execute-with-delay.test.ts +24 -0
- package/src/promise/delay.ts +3 -0
- package/src/promise/execute-or-resolve-default.ts +14 -0
- package/src/promise/execute-with-delay.ts +6 -0
- package/src/promise/index.ts +3 -0
- package/src/string/__tests__/replace-in-template.test.ts +52 -0
- package/src/string/index.ts +1 -0
- package/src/string/replace-in-template.ts +45 -0
- package/src/time/__tests__/convert.test.ts +14 -0
- package/src/time/__tests__/format-minutes.test.ts +10 -0
- package/src/time/__tests__/get-time-diff-as-string.test.ts +128 -0
- package/src/time/constants.ts +4 -0
- package/src/time/convert.ts +5 -0
- package/src/time/format-minutes.ts +9 -0
- package/src/time/get-time-diff-as-string.ts +196 -0
- package/src/time/index.ts +4 -0
- package/src/types/function.ts +1 -0
- package/src/types/general.ts +8 -0
- package/src/types/index.ts +4 -0
- package/src/types/object.ts +33 -0
- package/src/types/search.ts +29 -0
- package/tsconfig.eslint.json +8 -0
- package/tsconfig.json +25 -0
- /package/{_virtual → dist/_virtual}/_tslib.js +0 -0
- /package/{_virtual → dist/_virtual}/_tslib.js.map +0 -0
- /package/{array → dist/array}/array-to-map.d.ts +0 -0
- /package/{array → dist/array}/array-to-map.js +0 -0
- /package/{array → dist/array}/array-to-map.js.map +0 -0
- /package/{array → dist/array}/get-values-from-keys.d.ts +0 -0
- /package/{array → dist/array}/get-values-from-keys.js +0 -0
- /package/{array → dist/array}/get-values-from-keys.js.map +0 -0
- /package/{array → dist/array}/index.d.ts +0 -0
- /package/{array → dist/array}/index.js +0 -0
- /package/{array → dist/array}/index.js.map +0 -0
- /package/{cdn → dist/cdn}/cdn.factory.d.ts +0 -0
- /package/{cdn → dist/cdn}/cdn.factory.js +0 -0
- /package/{cdn → dist/cdn}/cdn.factory.js.map +0 -0
- /package/{cdn → dist/cdn}/index.d.ts +0 -0
- /package/{cdn → dist/cdn}/index.js +0 -0
- /package/{cdn → dist/cdn}/index.js.map +0 -0
- /package/{cdn → dist/cdn}/types/cdn-factory.type.d.ts +0 -0
- /package/{cdn → dist/cdn}/types/index.d.ts +0 -0
- /package/{cdn → dist/cdn}/types/index.js +0 -0
- /package/{cdn → dist/cdn}/types/index.js.map +0 -0
- /package/{cdn → dist/cdn}/utils/extract-info-from-url.util.d.ts +0 -0
- /package/{cdn → dist/cdn}/utils/extract-info-from-url.util.js +0 -0
- /package/{cdn → dist/cdn}/utils/extract-info-from-url.util.js.map +0 -0
- /package/{cdn → dist/cdn}/utils/get-cdn-from-s3-url.util.d.ts +0 -0
- /package/{cdn → dist/cdn}/utils/get-cdn-from-s3-url.util.js +0 -0
- /package/{cdn → dist/cdn}/utils/get-cdn-from-s3-url.util.js.map +0 -0
- /package/{cdn → dist/cdn}/utils/get-cdn-url.util.d.ts +0 -0
- /package/{cdn → dist/cdn}/utils/get-cdn-url.util.js +0 -0
- /package/{cdn → dist/cdn}/utils/get-cdn-url.util.js.map +0 -0
- /package/{formatting → dist/formatting}/format-number.d.ts +0 -0
- /package/{formatting → dist/formatting}/format-number.js +0 -0
- /package/{formatting → dist/formatting}/format-number.js.map +0 -0
- /package/{formatting → dist/formatting}/index.d.ts +0 -0
- /package/{formatting → dist/formatting}/index.js +0 -0
- /package/{formatting → dist/formatting}/index.js.map +0 -0
- /package/{fp → dist/fp}/index.d.ts +0 -0
- /package/{fp → dist/fp}/index.js +0 -0
- /package/{fp → dist/fp}/index.js.map +0 -0
- /package/{fp → dist/fp}/run-while.d.ts +0 -0
- /package/{fp → dist/fp}/run-while.js +0 -0
- /package/{fp → dist/fp}/run-while.js.map +0 -0
- /package/{time → dist/github/commits}/index.js.map +0 -0
- /package/{linked-list → dist/github}/index.js.map +0 -0
- /package/{http → dist/http}/encode-search-object.d.ts +0 -0
- /package/{http → dist/http}/encode-search-object.js +0 -0
- /package/{http → dist/http}/encode-search-object.js.map +0 -0
- /package/{http → dist/http}/fetch-with-timeout.d.ts +0 -0
- /package/{http → dist/http}/fetch-with-timeout.js +0 -0
- /package/{http → dist/http}/fetch-with-timeout.js.map +0 -0
- /package/{http → dist/http}/index.d.ts +0 -0
- /package/{http → dist/http}/index.js +0 -0
- /package/{http → dist/http}/index.js.map +0 -0
- /package/{linked-list → dist/linked-list}/apply-diff-linked-list.d.ts +0 -0
- /package/{linked-list → dist/linked-list}/apply-diff-linked-list.js +0 -0
- /package/{linked-list → dist/linked-list}/apply-diff-linked-list.js.map +0 -0
- /package/{linked-list → dist/linked-list}/create-linked-list.d.ts +0 -0
- /package/{linked-list → dist/linked-list}/create-linked-list.js +0 -0
- /package/{linked-list → dist/linked-list}/create-linked-list.js.map +0 -0
- /package/{linked-list → dist/linked-list}/find-linked-list.d.ts +0 -0
- /package/{linked-list → dist/linked-list}/find-linked-list.js +0 -0
- /package/{linked-list → dist/linked-list}/find-linked-list.js.map +0 -0
- /package/{linked-list → dist/linked-list}/get-linked-list.d.ts +0 -0
- /package/{linked-list → dist/linked-list}/get-linked-list.js +0 -0
- /package/{linked-list → dist/linked-list}/get-linked-list.js.map +0 -0
- /package/{linked-list → dist/linked-list}/index.d.ts +0 -0
- /package/{linked-list → dist/linked-list}/index.js +0 -0
- /package/{object → dist/linked-list}/index.js.map +0 -0
- /package/{linked-list → dist/linked-list}/insert-linked-list.d.ts +0 -0
- /package/{linked-list → dist/linked-list}/insert-linked-list.js +0 -0
- /package/{linked-list → dist/linked-list}/insert-linked-list.js.map +0 -0
- /package/{linked-list → dist/linked-list}/linked-list-utils.d.ts +0 -0
- /package/{linked-list → dist/linked-list}/linked-list-utils.js +0 -0
- /package/{linked-list → dist/linked-list}/linked-list-utils.js.map +0 -0
- /package/{linked-list → dist/linked-list}/reduce-linked-list.d.ts +0 -0
- /package/{linked-list → dist/linked-list}/reduce-linked-list.js +0 -0
- /package/{linked-list → dist/linked-list}/reduce-linked-list.js.map +0 -0
- /package/{linked-list → dist/linked-list}/remove-linked-list.d.ts +0 -0
- /package/{linked-list → dist/linked-list}/remove-linked-list.js +0 -0
- /package/{linked-list → dist/linked-list}/remove-linked-list.js.map +0 -0
- /package/{linked-list → dist/linked-list}/type.d.ts +0 -0
- /package/{linked-list → dist/linked-list}/update-linked-list.d.ts +0 -0
- /package/{linked-list → dist/linked-list}/update-linked-list.js +0 -0
- /package/{linked-list → dist/linked-list}/update-linked-list.js.map +0 -0
- /package/{linked-list → dist/linked-list}/while-linked-list.d.ts +0 -0
- /package/{linked-list → dist/linked-list}/while-linked-list.js +0 -0
- /package/{linked-list → dist/linked-list}/while-linked-list.js.map +0 -0
- /package/{math → dist/math}/clamp-number.d.ts +0 -0
- /package/{math → dist/math}/clamp-number.js +0 -0
- /package/{math → dist/math}/clamp-number.js.map +0 -0
- /package/{math → dist/math}/index.d.ts +0 -0
- /package/{math → dist/math}/index.js +0 -0
- /package/{math → dist/math}/index.js.map +0 -0
- /package/{math → dist/math}/interpolate.d.ts +0 -0
- /package/{math → dist/math}/interpolate.js +0 -0
- /package/{math → dist/math}/interpolate.js.map +0 -0
- /package/{math → dist/math}/number-range.d.ts +0 -0
- /package/{math → dist/math}/number-range.js +0 -0
- /package/{math → dist/math}/number-range.js.map +0 -0
- /package/{math → dist/math}/random-number.d.ts +0 -0
- /package/{math → dist/math}/random-number.js +0 -0
- /package/{math → dist/math}/random-number.js.map +0 -0
- /package/{object → dist/object}/index.d.ts +0 -0
- /package/{object → dist/object}/index.js +0 -0
- /package/{string → dist/object}/index.js.map +0 -0
- /package/{object → dist/object}/merge-deep.d.ts +0 -0
- /package/{object → dist/object}/merge-deep.js +0 -0
- /package/{object → dist/object}/merge-deep.js.map +0 -0
- /package/{parsing → dist/parsing}/index.d.ts +0 -0
- /package/{parsing → dist/parsing}/index.js +0 -0
- /package/{parsing → dist/parsing}/index.js.map +0 -0
- /package/{parsing → dist/parsing}/parse-boolean.d.ts +0 -0
- /package/{parsing → dist/parsing}/parse-boolean.js +0 -0
- /package/{parsing → dist/parsing}/parse-boolean.js.map +0 -0
- /package/{parsing → dist/parsing}/parse-enum.d.ts +0 -0
- /package/{parsing → dist/parsing}/parse-enum.js +0 -0
- /package/{parsing → dist/parsing}/parse-enum.js.map +0 -0
- /package/{parsing → dist/parsing}/parse-number.d.ts +0 -0
- /package/{parsing → dist/parsing}/parse-number.js +0 -0
- /package/{parsing → dist/parsing}/parse-number.js.map +0 -0
- /package/{predicates → dist/predicates}/index.d.ts +0 -0
- /package/{predicates → dist/predicates}/index.js +0 -0
- /package/{predicates → dist/predicates}/index.js.map +0 -0
- /package/{predicates → dist/predicates}/is-function.d.ts +0 -0
- /package/{predicates → dist/predicates}/is-function.js +0 -0
- /package/{predicates → dist/predicates}/is-function.js.map +0 -0
- /package/{predicates → dist/predicates}/is-null.d.ts +0 -0
- /package/{predicates → dist/predicates}/is-null.js +0 -0
- /package/{predicates → dist/predicates}/is-null.js.map +0 -0
- /package/{predicates → dist/predicates}/is-object.d.ts +0 -0
- /package/{predicates → dist/predicates}/is-object.js +0 -0
- /package/{predicates → dist/predicates}/is-object.js.map +0 -0
- /package/{predicates → dist/predicates}/is-primitive.d.ts +0 -0
- /package/{predicates → dist/predicates}/is-primitive.js +0 -0
- /package/{predicates → dist/predicates}/is-primitive.js.map +0 -0
- /package/{predicates → dist/predicates}/is-undefined.d.ts +0 -0
- /package/{predicates → dist/predicates}/is-undefined.js +0 -0
- /package/{predicates → dist/predicates}/is-undefined.js.map +0 -0
- /package/{predicates → dist/predicates}/is-uuid.d.ts +0 -0
- /package/{promise → dist/promise}/delay.d.ts +0 -0
- /package/{promise → dist/promise}/delay.js +0 -0
- /package/{promise → dist/promise}/delay.js.map +0 -0
- /package/{promise → dist/promise}/execute-or-resolve-default.d.ts +0 -0
- /package/{promise → dist/promise}/execute-or-resolve-default.js +0 -0
- /package/{promise → dist/promise}/execute-or-resolve-default.js.map +0 -0
- /package/{promise → dist/promise}/execute-with-delay.d.ts +0 -0
- /package/{promise → dist/promise}/execute-with-delay.js +0 -0
- /package/{promise → dist/promise}/execute-with-delay.js.map +0 -0
- /package/{promise → dist/promise}/index.d.ts +0 -0
- /package/{promise → dist/promise}/index.js +0 -0
- /package/{promise → dist/promise}/index.js.map +0 -0
- /package/{string → dist/string}/index.d.ts +0 -0
- /package/{string → dist/string}/index.js +0 -0
- /package/{string → dist/string}/replace-in-template.d.ts +0 -0
- /package/{string → dist/string}/replace-in-template.js +0 -0
- /package/{string → dist/string}/replace-in-template.js.map +0 -0
- /package/{time → dist/time}/constants.d.ts +0 -0
- /package/{time → dist/time}/constants.js +0 -0
- /package/{time → dist/time}/constants.js.map +0 -0
- /package/{time → dist/time}/convert.d.ts +0 -0
- /package/{time → dist/time}/convert.js +0 -0
- /package/{time → dist/time}/convert.js.map +0 -0
- /package/{time → dist/time}/format-minutes.d.ts +0 -0
- /package/{time → dist/time}/format-minutes.js +0 -0
- /package/{time → dist/time}/format-minutes.js.map +0 -0
- /package/{time → dist/time}/get-time-diff-as-string.d.ts +0 -0
- /package/{time → dist/time}/get-time-diff-as-string.js +0 -0
- /package/{time → dist/time}/get-time-diff-as-string.js.map +0 -0
- /package/{time → dist/time}/index.d.ts +0 -0
- /package/{time → dist/time}/index.js +0 -0
- /package/{types → dist/types}/function.d.ts +0 -0
- /package/{types → dist/types}/general.d.ts +0 -0
- /package/{types → dist/types}/index.d.ts +0 -0
- /package/{types → dist/types}/index.js +0 -0
- /package/{types → dist/types}/index.js.map +0 -0
- /package/{types → dist/types}/object.d.ts +0 -0
- /package/{types → dist/types}/search.d.ts +0 -0
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { ReplaceConfig, replaceInTemplate } from '../string';
|
|
2
|
+
import { MS_HOUR, MS_DAY } from './constants';
|
|
3
|
+
import { msToMinute, msToHour } from './convert';
|
|
4
|
+
|
|
5
|
+
export type MonthLocaleLabels = [
|
|
6
|
+
string,
|
|
7
|
+
string,
|
|
8
|
+
string,
|
|
9
|
+
string,
|
|
10
|
+
string,
|
|
11
|
+
string,
|
|
12
|
+
string,
|
|
13
|
+
string,
|
|
14
|
+
string,
|
|
15
|
+
string,
|
|
16
|
+
string,
|
|
17
|
+
string,
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
export type DiffTemplate = {
|
|
21
|
+
/**
|
|
22
|
+
* e.g.: ("%time% %timelabel% blabla")
|
|
23
|
+
*/
|
|
24
|
+
timeTemplate: string,
|
|
25
|
+
/**
|
|
26
|
+
* e.g.: "%date% blabla"
|
|
27
|
+
*/
|
|
28
|
+
monthLocaleLabels: MonthLocaleLabels,
|
|
29
|
+
fullDateTemplate: string,
|
|
30
|
+
timeLabel: {
|
|
31
|
+
minute: {
|
|
32
|
+
singular: string,
|
|
33
|
+
plural: string,
|
|
34
|
+
},
|
|
35
|
+
hour: {
|
|
36
|
+
singular: string,
|
|
37
|
+
plural: string,
|
|
38
|
+
},
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const defaultLocaleLabels: MonthLocaleLabels = [
|
|
43
|
+
'January',
|
|
44
|
+
'February',
|
|
45
|
+
'March',
|
|
46
|
+
'April',
|
|
47
|
+
'May',
|
|
48
|
+
'June',
|
|
49
|
+
'July',
|
|
50
|
+
'August',
|
|
51
|
+
'September',
|
|
52
|
+
'October',
|
|
53
|
+
'November',
|
|
54
|
+
'December',
|
|
55
|
+
];
|
|
56
|
+
|
|
57
|
+
const defaultEnglishTemplate: DiffTemplate = {
|
|
58
|
+
timeTemplate: '%time% %timeLabel% ago',
|
|
59
|
+
fullDateTemplate: 'on %date%',
|
|
60
|
+
monthLocaleLabels: defaultLocaleLabels,
|
|
61
|
+
timeLabel: {
|
|
62
|
+
minute: {
|
|
63
|
+
singular: 'min',
|
|
64
|
+
plural: 'min',
|
|
65
|
+
},
|
|
66
|
+
hour: {
|
|
67
|
+
singular: 'hour',
|
|
68
|
+
plural: 'hours',
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
const TEMPLATE_CONFIG: ReplaceConfig = {
|
|
74
|
+
delimiter: {
|
|
75
|
+
left: '%',
|
|
76
|
+
right: '%',
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
type HourFormat = {
|
|
81
|
+
time: string,
|
|
82
|
+
period: 'am' | 'pm';
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
type MinuteFormat = {
|
|
86
|
+
time: string,
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
type DateForTemplate = {
|
|
90
|
+
old: Date,
|
|
91
|
+
recent: Date,
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
type ParamForTemplateConfig = {
|
|
95
|
+
templateConfig: DiffTemplate,
|
|
96
|
+
dates: DateForTemplate,
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const formatMinuteString = (minute: number): MinuteFormat => {
|
|
100
|
+
const str = minute.toString();
|
|
101
|
+
|
|
102
|
+
return {
|
|
103
|
+
time: str.length === 2 ? str : `0${str}`,
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
const formatHourString = (hour: number): HourFormat => {
|
|
108
|
+
const period = hour < 12 ? 'am' : 'pm';
|
|
109
|
+
const twelveHourTime = hour > 12 ? hour - 12 : hour;
|
|
110
|
+
|
|
111
|
+
return {
|
|
112
|
+
time: twelveHourTime === 0 ? '12' : twelveHourTime.toString(),
|
|
113
|
+
period,
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
const getTemplatingParameters = (msDiff: number, config: ParamForTemplateConfig) => {
|
|
118
|
+
const { dates, templateConfig } = config;
|
|
119
|
+
const { timeLabel, monthLocaleLabels, timeTemplate, fullDateTemplate } = templateConfig;
|
|
120
|
+
|
|
121
|
+
if (msDiff < MS_HOUR) {
|
|
122
|
+
const minuteDiff = msToMinute(msDiff);
|
|
123
|
+
const minuteUnit = minuteDiff > 1
|
|
124
|
+
? timeLabel.minute.plural
|
|
125
|
+
: timeLabel.minute.singular;
|
|
126
|
+
|
|
127
|
+
return {
|
|
128
|
+
template: timeTemplate,
|
|
129
|
+
params: {
|
|
130
|
+
time: String(minuteDiff || 1),
|
|
131
|
+
timeLabel: minuteUnit,
|
|
132
|
+
},
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (msDiff < MS_DAY) {
|
|
137
|
+
const hourDiff = msToHour(msDiff);
|
|
138
|
+
const hourUnit = hourDiff > 1
|
|
139
|
+
? timeLabel.hour.plural
|
|
140
|
+
: timeLabel.hour.singular;
|
|
141
|
+
|
|
142
|
+
return {
|
|
143
|
+
template: timeTemplate,
|
|
144
|
+
params: {
|
|
145
|
+
time: String(hourDiff),
|
|
146
|
+
timeLabel: hourUnit,
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
const monthLabel = monthLocaleLabels[dates.old.getMonth()];
|
|
152
|
+
|
|
153
|
+
const minute = formatMinuteString(dates.old.getMinutes());
|
|
154
|
+
const hour = formatHourString(dates.old.getHours());
|
|
155
|
+
|
|
156
|
+
const dayFormat = `${monthLabel} ${dates.old.getDate()}`;
|
|
157
|
+
const timeFormat = `${hour.time}:${minute.time} ${hour.period}`;
|
|
158
|
+
|
|
159
|
+
return {
|
|
160
|
+
template: fullDateTemplate,
|
|
161
|
+
params: {
|
|
162
|
+
date: `${dayFormat}, ${timeFormat}`,
|
|
163
|
+
},
|
|
164
|
+
};
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* The returned string follows the following rules:
|
|
169
|
+
* - If diff < 60 minutes: '29 min ago'
|
|
170
|
+
* - If diff >= 60 minutes & < 24 hours: '12 hours ago' | '1 hour ago'
|
|
171
|
+
* - If diff > 24 hours: 'on March 15, 14:45 pm'
|
|
172
|
+
*
|
|
173
|
+
* @param olderDate - Date
|
|
174
|
+
* @param recentDate - Date
|
|
175
|
+
* @param template - DiffTemplate
|
|
176
|
+
* @returns a preformated string to be inserted in a phrase.
|
|
177
|
+
*/
|
|
178
|
+
export const getTimeDiffAsString = (olderDate: Date, recentDate = new Date(), templateConfig = defaultEnglishTemplate): string => {
|
|
179
|
+
const oldDateTime = olderDate.getTime();
|
|
180
|
+
const recentDateTime = recentDate.getTime();
|
|
181
|
+
|
|
182
|
+
if (oldDateTime > recentDateTime) {
|
|
183
|
+
return '';
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
const msDiff = recentDateTime - oldDateTime;
|
|
187
|
+
const { template, params } = getTemplatingParameters(msDiff, {
|
|
188
|
+
dates: {
|
|
189
|
+
old: olderDate,
|
|
190
|
+
recent: recentDate,
|
|
191
|
+
},
|
|
192
|
+
templateConfig,
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
return replaceInTemplate(template, params, TEMPLATE_CONFIG);
|
|
196
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type GenericFunction<TS extends any[], R> = (...args: TS) => R;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ValueType } from './general';
|
|
2
|
+
|
|
3
|
+
// Used to extract non function attributes from a class or object
|
|
4
|
+
export type NonMethodKeys<T> = { [P in keyof T]: T[P] extends Function ? never : P }[keyof T];
|
|
5
|
+
export type Attributes<T> = { [K in NonMethodKeys<T>]: T[K] };
|
|
6
|
+
export type PartialAttributes<T> = { [K in NonMethodKeys<T>]?: T[K] };
|
|
7
|
+
|
|
8
|
+
// Used to extract functions attributes from a class or object
|
|
9
|
+
export type MethodKeys<T> = { [P in keyof T]: T[P] extends Function ? P : never }[keyof T];
|
|
10
|
+
export type Methods<T> = { [K in MethodKeys<T>]: T[K] };
|
|
11
|
+
export type PartialMethods<T> = { [K in MethodKeys<T>]?: T[K] };
|
|
12
|
+
|
|
13
|
+
export type ClassType<T> = {
|
|
14
|
+
new(...args: any[]): T;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
18
|
+
|
|
19
|
+
export type DeepPartial<T> = T extends ValueType
|
|
20
|
+
? T
|
|
21
|
+
: { [P in keyof T]?: DeepPartial<T[P]> };
|
|
22
|
+
|
|
23
|
+
// Return intersecting properties of A & B
|
|
24
|
+
export type Intersection<A, B> = {
|
|
25
|
+
[P in keyof A & keyof B]: A[P] | B[P];
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Helper type. Passes T out again, but boxes it in a way that it cannot
|
|
30
|
+
* "widen" the type by accident if it is a generic that should be inferred
|
|
31
|
+
* from elsewhere.
|
|
32
|
+
*/
|
|
33
|
+
export type NoInfer<T> = [T][T extends any ? 0 : never];
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export type SearchSortBy = string;
|
|
2
|
+
export type SearchSortOrder = 'asc' | 'desc';
|
|
3
|
+
|
|
4
|
+
export type SearchSort = {
|
|
5
|
+
[by: SearchSortBy]: SearchSortOrder
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export type SearchQueryProperty = string;
|
|
9
|
+
export type SearchQueryValue = string;
|
|
10
|
+
|
|
11
|
+
export type SearchQuery = {
|
|
12
|
+
[property: SearchQueryProperty]: SearchQueryValue,
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export type SearchObject = {
|
|
16
|
+
offset: number,
|
|
17
|
+
limit: number,
|
|
18
|
+
sort?: Record<string, SearchSortOrder>,
|
|
19
|
+
query?: SearchQuery,
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export type SearchResponse<T> = {
|
|
23
|
+
items: ReadonlyArray<T>,
|
|
24
|
+
offset: number,
|
|
25
|
+
limit: number,
|
|
26
|
+
total: number,
|
|
27
|
+
next: string | null,
|
|
28
|
+
previous: string | null,
|
|
29
|
+
};
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"allowJs": false,
|
|
4
|
+
"allowSyntheticDefaultImports": true,
|
|
5
|
+
"moduleResolution": "node",
|
|
6
|
+
"strict": true,
|
|
7
|
+
"noImplicitAny": true,
|
|
8
|
+
"strictNullChecks": true,
|
|
9
|
+
"sourceMap": true,
|
|
10
|
+
"module": "ESNext",
|
|
11
|
+
"target": "ES6",
|
|
12
|
+
"isolatedModules": true,
|
|
13
|
+
"forceConsistentCasingInFileNames": true,
|
|
14
|
+
"declaration": true,
|
|
15
|
+
"outDir": "dist",
|
|
16
|
+
"lib": ["es2015", "es2017.object"]
|
|
17
|
+
},
|
|
18
|
+
"files": ["global.d.ts"],
|
|
19
|
+
"include": [
|
|
20
|
+
"src/**/*"
|
|
21
|
+
],
|
|
22
|
+
"exclude": [
|
|
23
|
+
"**/node_modules",
|
|
24
|
+
]
|
|
25
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/{fp → dist/fp}/index.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|