@onivoro/isomorphic-common 24.9.0 → 24.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/package.json +8 -2
  2. package/jest.config.ts +0 -11
  3. package/project.json +0 -32
  4. package/src/index.ts +0 -80
  5. package/src/lib/constants/api-id-header.constant.ts +0 -1
  6. package/src/lib/constants/api-key-header.constant.ts +0 -1
  7. package/src/lib/constants/auth-cookie-name.constant.ts +0 -2
  8. package/src/lib/constants/millis-per-day.constant.ts +0 -3
  9. package/src/lib/constants/millis-per-hour.constant.ts +0 -3
  10. package/src/lib/constants/millis-per-minute.constant.ts +0 -1
  11. package/src/lib/constants/regexes.constant.ts +0 -30
  12. package/src/lib/functions/__snapshots__/chunk.function.spec.ts.snap +0 -94
  13. package/src/lib/functions/__snapshots__/split-date-range-into-days.function.spec.ts.snap +0 -50
  14. package/src/lib/functions/add-offset.function.spec.ts +0 -12
  15. package/src/lib/functions/add-offset.function.ts +0 -14
  16. package/src/lib/functions/arrange-act-assert.function.ts +0 -23
  17. package/src/lib/functions/camel-case.function.ts +0 -30
  18. package/src/lib/functions/chunk.function.spec.ts +0 -20
  19. package/src/lib/functions/chunk.function.ts +0 -25
  20. package/src/lib/functions/convert-object-to-literal.function.spec.ts +0 -16
  21. package/src/lib/functions/convert-object-to-literal.function.ts +0 -10
  22. package/src/lib/functions/format-usd.function.ts +0 -4
  23. package/src/lib/functions/from-boolean-string.function.ts +0 -3
  24. package/src/lib/functions/from-calendar-date.function.spec.ts +0 -11
  25. package/src/lib/functions/from-calendar-date.function.ts +0 -5
  26. package/src/lib/functions/from-csv-string.function.ts +0 -3
  27. package/src/lib/functions/get-date-last-month.function.ts +0 -6
  28. package/src/lib/functions/get-date-range-for-month.function copy.ts +0 -8
  29. package/src/lib/functions/get-date-range-for-month.function.ts +0 -8
  30. package/src/lib/functions/get-tag.function.ts +0 -10
  31. package/src/lib/functions/get-user-full-name.function.ts +0 -5
  32. package/src/lib/functions/is-symbol.function.ts +0 -11
  33. package/src/lib/functions/is-valid-date.function.ts +0 -5
  34. package/src/lib/functions/kebab-case.function.ts +0 -5
  35. package/src/lib/functions/map-entities-to-options.function.ts +0 -11
  36. package/src/lib/functions/map-enum-to-array-of-values.function copy.ts +0 -3
  37. package/src/lib/functions/map-enum-to-array-of-values.function.ts +0 -3
  38. package/src/lib/functions/map-enum-to-lookup-array.function.ts +0 -6
  39. package/src/lib/functions/map-enum-to-options.function copy.ts +0 -7
  40. package/src/lib/functions/map-enum-to-options.function.ts +0 -7
  41. package/src/lib/functions/mock-calls.function.ts +0 -4
  42. package/src/lib/functions/money.function.spec.ts +0 -10
  43. package/src/lib/functions/money.function.ts +0 -22
  44. package/src/lib/functions/parse-bool.function.ts +0 -3
  45. package/src/lib/functions/properties-to-array.function.ts +0 -21
  46. package/src/lib/functions/remove-alpha-chars.function.spec.ts +0 -11
  47. package/src/lib/functions/remove-alpha-chars.function.ts +0 -9
  48. package/src/lib/functions/remove-element-at-index.function copy.ts +0 -9
  49. package/src/lib/functions/remove-element-at-index.function.ts +0 -9
  50. package/src/lib/functions/round.function copy.ts +0 -4
  51. package/src/lib/functions/round.function.ts +0 -4
  52. package/src/lib/functions/sanitize-filename.function.ts +0 -9
  53. package/src/lib/functions/sleep.function.ts +0 -3
  54. package/src/lib/functions/snake-case.function.ts +0 -34
  55. package/src/lib/functions/sort-by-created-at.function.ts +0 -7
  56. package/src/lib/functions/sort-by-full-name.function.ts +0 -6
  57. package/src/lib/functions/sort-by-id.function.ts +0 -3
  58. package/src/lib/functions/sort-by-name.function.ts +0 -3
  59. package/src/lib/functions/sort-numbers.function.ts +0 -3
  60. package/src/lib/functions/split-date-range-into-days.function.spec.ts +0 -17
  61. package/src/lib/functions/split-date-range-into-days.function.ts +0 -26
  62. package/src/lib/functions/subtract-offset.function.spec.ts +0 -12
  63. package/src/lib/functions/subtract-offset.function.ts +0 -14
  64. package/src/lib/functions/to-boolean-string.function.ts +0 -3
  65. package/src/lib/functions/to-calendar-date.function.ts +0 -11
  66. package/src/lib/functions/to-csv-string.function.ts +0 -3
  67. package/src/lib/functions/to-decimal-base.function.ts +0 -23
  68. package/src/lib/functions/to-dollars-and-cents.function.spec.ts +0 -7
  69. package/src/lib/functions/to-dollars-and-cents.function.ts +0 -17
  70. package/src/lib/functions/to-string.function.ts +0 -25
  71. package/src/lib/functions/to-unique-array.function.spec.ts +0 -45
  72. package/src/lib/functions/to-unique-array.function.ts +0 -3
  73. package/src/lib/functions/to-words.function.spec.ts +0 -7
  74. package/src/lib/functions/to-words.function.ts +0 -108
  75. package/src/lib/functions/try-json-parse.spec.ts +0 -37
  76. package/src/lib/functions/try-json-parse.ts +0 -11
  77. package/src/lib/functions/try-json-stringify.spec.ts +0 -44
  78. package/src/lib/functions/try-json-stringify.ts +0 -11
  79. package/src/lib/functions/try-parse-date.function.spec.ts +0 -12
  80. package/src/lib/functions/try-parse-date.function.ts +0 -17
  81. package/src/lib/functions/unicode-words.const.ts +0 -70
  82. package/src/lib/functions/upper-first.function.spec.ts +0 -16
  83. package/src/lib/functions/upper-first.function.ts +0 -10
  84. package/src/lib/functions/use-date.function.ts +0 -21
  85. package/src/lib/functions/words.function.ts +0 -38
  86. package/src/lib/types/access-token.interface.ts +0 -8
  87. package/src/lib/types/axios-wrapped-nest-exception.interface.ts +0 -5
  88. package/src/lib/types/company.type.ts +0 -18
  89. package/src/lib/types/createable.type.ts +0 -1
  90. package/src/lib/types/entity-provider.interface.ts +0 -9
  91. package/src/lib/types/keys-of.type copy.ts +0 -1
  92. package/src/lib/types/keys-of.type.ts +0 -1
  93. package/src/lib/types/lookup.interface copy.ts +0 -4
  94. package/src/lib/types/lookup.interface.ts +0 -4
  95. package/src/lib/types/nameable.type.ts +0 -4
  96. package/tsconfig.json +0 -13
  97. package/tsconfig.lib.json +0 -10
  98. package/tsconfig.spec.json +0 -14
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onivoro/isomorphic-common",
3
- "version": "24.9.0",
3
+ "version": "24.11.0",
4
4
  "type": "commonjs",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",
@@ -10,5 +10,11 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "tslib": "^2.3.0"
13
- }
13
+ },
14
+ "files": [
15
+ "**/*.js",
16
+ "**/*.d.ts",
17
+ "**/*.js.map",
18
+ "README.md"
19
+ ]
14
20
  }
package/jest.config.ts DELETED
@@ -1,11 +0,0 @@
1
- /* eslint-disable */
2
- export default {
3
- displayName: 'lib-isomorphic-common',
4
- preset: '../../../jest.preset.js',
5
- testEnvironment: 'node',
6
- transform: {
7
- '^.+\\.[tj]s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.spec.json' }],
8
- },
9
- moduleFileExtensions: ['ts', 'js', 'html'],
10
- coverageDirectory: '../../../coverage/libs/isomorphic/common',
11
- };
package/project.json DELETED
@@ -1,32 +0,0 @@
1
- {
2
- "name": "lib-isomorphic-common",
3
- "$schema": "../../../node_modules/nx/schemas/project-schema.json",
4
- "sourceRoot": "libs/isomorphic/common/src",
5
- "projectType": "library",
6
- "targets": {
7
- "build": {
8
- "executor": "@nx/js:tsc",
9
- "outputs": ["{options.outputPath}"],
10
- "options": {
11
- "outputPath": "dist/libs/isomorphic/common",
12
- "main": "libs/isomorphic/common/src/index.ts",
13
- "tsConfig": "libs/isomorphic/common/tsconfig.lib.json",
14
- "assets": [
15
- "libs/isomorphic/common/README.md",
16
- "libs/isomorphic/common/package.json"
17
- ],
18
- "declaration": true,
19
- "updateBuildableProjectPackageJsonDependencies": true,
20
- "rootDir": "libs/isomorphic/common/src"
21
- }
22
- },
23
- "publish": {
24
- "executor": "@nx/js:npm",
25
- "outputs": [],
26
- "options": {
27
- "packageRoot": "dist/libs/isomorphic/common"
28
- }
29
- }
30
- },
31
- "tags": []
32
- }
package/src/index.ts DELETED
@@ -1,80 +0,0 @@
1
- export * from './lib/constants/api-id-header.constant';
2
- export * from './lib/constants/api-key-header.constant';
3
- export * from './lib/constants/auth-cookie-name.constant';
4
- export * from './lib/constants/regexes.constant';
5
-
6
- export * from './lib/functions/arrange-act-assert.function';
7
- export * from './lib/functions/mock-calls.function';
8
-
9
- export * from './lib/functions/chunk.function';
10
- export * from './lib/functions/format-usd.function';
11
- export * from './lib/functions/get-date-last-month.function';
12
- export * from './lib/functions/get-date-range-for-month.function';
13
- export * from './lib/functions/get-user-full-name.function';
14
- export * from './lib/functions/is-valid-date.function';
15
- export * from './lib/functions/map-entities-to-options.function';
16
- export * from './lib/functions/map-enum-to-array-of-values.function';
17
- export * from './lib/functions/map-enum-to-lookup-array.function';
18
- export * from './lib/functions/map-enum-to-options.function';
19
- export * from './lib/functions/remove-element-at-index.function';
20
- export * from './lib/functions/round.function';
21
- export * from './lib/functions/sort-by-created-at.function';
22
- export * from './lib/functions/sort-by-full-name.function';
23
- export * from './lib/functions/sort-by-id.function';
24
- export * from './lib/functions/sort-by-name.function';
25
- export * from './lib/functions/sort-numbers.function';
26
- export * from './lib/functions/split-date-range-into-days.function';
27
- export * from './lib/functions/use-date.function';
28
-
29
- export * from './lib/types/access-token.interface';
30
- export * from './lib/types/company.type';
31
- export * from './lib/types/createable.type';
32
- export * from './lib/types/keys-of.type';
33
- export * from './lib/types/lookup.interface';
34
- export * from './lib/types/nameable.type';
35
-
36
- export * from './lib/constants/millis-per-day.constant';
37
- export * from './lib/constants/millis-per-hour.constant';
38
- export * from './lib/constants/millis-per-minute.constant';
39
- export * from './lib/constants/regexes.constant';
40
-
41
- export * from './lib/functions/add-offset.function';
42
- export * from './lib/functions/camel-case.function';
43
- export * from './lib/functions/convert-object-to-literal.function';
44
- export * from './lib/functions/format-usd.function';
45
- export * from './lib/functions/from-boolean-string.function';
46
- export * from './lib/functions/from-calendar-date.function';
47
- export * from './lib/functions/from-csv-string.function';
48
- export * from './lib/functions/get-date-range-for-month.function';
49
- export * from './lib/functions/is-symbol.function';
50
- export * from './lib/functions/is-valid-date.function';
51
- export * from './lib/functions/kebab-case.function';
52
- export * from './lib/functions/map-enum-to-array-of-values.function';
53
- export * from './lib/functions/map-enum-to-lookup-array.function';
54
- export * from './lib/functions/map-enum-to-options.function';
55
- export * from './lib/functions/money.function';
56
- export * from './lib/functions/parse-bool.function';
57
- export * from './lib/functions/properties-to-array.function';
58
- export * from './lib/functions/remove-alpha-chars.function';
59
- export * from './lib/functions/remove-element-at-index.function';
60
- export * from './lib/functions/round.function';
61
- export * from './lib/functions/sleep.function';
62
- export * from './lib/functions/sanitize-filename.function';
63
- export * from './lib/functions/snake-case.function';
64
- export * from './lib/functions/subtract-offset.function';
65
- export * from './lib/functions/to-boolean-string.function';
66
- export * from './lib/functions/to-calendar-date.function';
67
- export * from './lib/functions/to-csv-string.function';
68
- export * from './lib/functions/to-decimal-base.function';
69
- export * from './lib/functions/to-dollars-and-cents.function';
70
- export * from './lib/functions/to-unique-array.function';
71
- export * from './lib/functions/to-words.function';
72
- export * from './lib/functions/try-parse-date.function';
73
- export * from './lib/functions/unicode-words.const';
74
- export * from './lib/functions/upper-first.function';
75
- export * from './lib/functions/words.function';
76
-
77
- export * from './lib/types/axios-wrapped-nest-exception.interface';
78
- export * from './lib/types/entity-provider.interface';
79
- export * from './lib/types/keys-of.type';
80
- export * from './lib/types/lookup.interface';
@@ -1 +0,0 @@
1
- export const apiIdHeader = 'x-api-id';
@@ -1 +0,0 @@
1
- export const apiKeyHeader = 'x-api-key';
@@ -1,2 +0,0 @@
1
- // TODO: REMOVE THIS BAD PATTERN OF HAVING LOWER LEVEL LIBS AWARE OF HIGHER ORDER LIBS/APPS
2
- export const authCookieName = 'token';
@@ -1,3 +0,0 @@
1
- import { MILLIS_PER_HOUR } from "./millis-per-hour.constant";
2
-
3
- export const MILLIS_PER_DAY = MILLIS_PER_HOUR * 24;
@@ -1,3 +0,0 @@
1
- import { MILLIS_PER_MINUTE } from "./millis-per-minute.constant";
2
-
3
- export const MILLIS_PER_HOUR = MILLIS_PER_MINUTE * 60;
@@ -1 +0,0 @@
1
- export const MILLIS_PER_MINUTE = 1000 * 60;
@@ -1,30 +0,0 @@
1
- export const oneOrMoreSpaces = /\s{1,}/g;
2
- export const multipleSpaces = /\s{2,}/g;
3
- export const comma = /,/g;
4
- export const dashesLettersNumbers = /^([a-z]|-|\d)*$/i;
5
- export const dashesLettersNumbersSpaces = /^([a-z]|-|\s|\d)*$/i;
6
- export const zip = /^\d{5}$/;
7
- export const phone = /^\d{3}-\d{3}-\d{4}$/;
8
- export const phonePlusOne = /^\+1\d{10}$/;
9
- export const code = /^\d{6}$/;
10
- export const url = /(https?:\/\/|https?:\/\/).*\..+/;
11
- export const protocol = /https?:\/\/|https?:\/\//;
12
- export const firstSpaceLast = /[a-z]+\s[a-z]+([a-z]|')+[a-z]+/i;
13
- export const passwordNumber = /\d/;
14
- export const passwordUpper = /[A-Z]/;
15
- export const passwordLower = /[a-z]/;
16
- export const passwordSpecial = /\^|\$|\*|\.|\?|-|!|@|#|%|>|<|:|;|_|~|\+|=/;
17
- export const ssn = /^\d{3}-\d{2}-\d{4}$/;
18
- export const numeric = /^(\d|\.)*$/;
19
- export const duns = /^\d{9}$/;
20
- export const lastFourSocial = /^\d{4}$/;
21
- export const ein = /^\d{2}-\d{7}$/;
22
- export const stateShort = /^[A-Z]{2}$/;
23
- export const email = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
24
- export const domain = /^(?!:\/\/)([a-zA-Z0-9-_]{1,63}\.)+[a-zA-Z]{2,63}$/;
25
- export const emailDomain = /^[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
26
- export const v4 = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/;
27
- export const dateIso8601 = /^\d{4}-\d{1,2}-\d{1,2}$/;
28
- export const dateIso8601WithTime = /^\d{4}-\d{1,2}-\d{1,2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
29
- export const decimalRegex = /(\d|\.)/g;
30
- export const slashR = /\r/g;
@@ -1,94 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`chunk given 1, returns an array of arrays 1`] = `
4
- [
5
- [
6
- "one",
7
- "two",
8
- "three",
9
- "four",
10
- "five",
11
- "six",
12
- "seven",
13
- "eight",
14
- ],
15
- ]
16
- `;
17
-
18
- exports[`chunk given 2, returns an array of arrays 1`] = `
19
- [
20
- [
21
- "one",
22
- "two",
23
- "three",
24
- "four",
25
- ],
26
- [
27
- "five",
28
- "six",
29
- "seven",
30
- "eight",
31
- ],
32
- ]
33
- `;
34
-
35
- exports[`chunk given 3, returns an array of arrays 1`] = `
36
- [
37
- [
38
- "one",
39
- "two",
40
- "three",
41
- ],
42
- [
43
- "four",
44
- "five",
45
- "six",
46
- ],
47
- [
48
- "seven",
49
- "eight",
50
- ],
51
- ]
52
- `;
53
-
54
- exports[`chunk given 4, returns an array of arrays 1`] = `
55
- [
56
- [
57
- "one",
58
- "two",
59
- ],
60
- [
61
- "three",
62
- "four",
63
- ],
64
- [
65
- "five",
66
- "six",
67
- ],
68
- [
69
- "seven",
70
- "eight",
71
- ],
72
- ]
73
- `;
74
-
75
- exports[`chunk given 5, returns an array of arrays 1`] = `
76
- [
77
- [
78
- "one",
79
- "two",
80
- ],
81
- [
82
- "three",
83
- "four",
84
- ],
85
- [
86
- "five",
87
- "six",
88
- ],
89
- [
90
- "seven",
91
- "eight",
92
- ],
93
- ]
94
- `;
@@ -1,50 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`splitDateRangeIntoDays given {"from":"","to":""}, returns an array of days 1`] = `[]`;
4
-
5
- exports[`splitDateRangeIntoDays given {"from":"2024-01-01","to":"2024-01-01"}, returns an array of days 1`] = `
6
- [
7
- "2024-01-01",
8
- ]
9
- `;
10
-
11
- exports[`splitDateRangeIntoDays given {"from":"2024-01-01","to":"2024-02-01"}, returns an array of days 1`] = `
12
- [
13
- "2024-01-01",
14
- "2024-01-02",
15
- "2024-01-03",
16
- "2024-01-04",
17
- "2024-01-05",
18
- "2024-01-06",
19
- "2024-01-07",
20
- "2024-01-08",
21
- "2024-01-09",
22
- "2024-01-10",
23
- "2024-01-11",
24
- "2024-01-12",
25
- "2024-01-13",
26
- "2024-01-14",
27
- "2024-01-15",
28
- "2024-01-16",
29
- "2024-01-17",
30
- "2024-01-18",
31
- "2024-01-19",
32
- "2024-01-20",
33
- "2024-01-21",
34
- "2024-01-22",
35
- "2024-01-23",
36
- "2024-01-24",
37
- "2024-01-25",
38
- "2024-01-26",
39
- "2024-01-27",
40
- "2024-01-28",
41
- "2024-01-29",
42
- "2024-01-30",
43
- "2024-01-31",
44
- "2024-02-01",
45
- ]
46
- `;
47
-
48
- exports[`splitDateRangeIntoDays given {"from":"2025-01-01","to":""}, returns an array of days 1`] = `[]`;
49
-
50
- exports[`splitDateRangeIntoDays given {"from":"asdf","to":"2345"}, returns an array of days 1`] = `[]`;
@@ -1,12 +0,0 @@
1
- import { addOffset } from './add-offset.function';
2
-
3
- describe('addOffset', () => {
4
- describe('GIVEN input is partial or full ISO8601', () => {
5
- it.each([
6
- '2023-12-23',
7
- '2023-12-23T00:00:00.000',
8
- ])('%j', (input) => {
9
- expect(addOffset(input)).toMatchSnapshot();
10
- });
11
- });
12
- });
@@ -1,14 +0,0 @@
1
- import { MILLIS_PER_MINUTE } from '../constants/millis-per-minute.constant';
2
- import { tryParseDate } from './try-parse-date.function';
3
-
4
- export function addOffset(input: string | Date | undefined | null): Date | undefined {
5
- const parsed = tryParseDate(input);
6
-
7
- if(!parsed) {
8
- return;
9
- }
10
-
11
- const offset = (parsed).getTimezoneOffset();
12
-
13
- return new Date(parsed.valueOf() + offset * MILLIS_PER_MINUTE);
14
- }
@@ -1,23 +0,0 @@
1
- // YOU MUST AWAIT THIS FUNCTION WHEN INVOKING IT!!!
2
-
3
- // TODO: PUT THIS IN A TEST-ONLY LIBRARY => LIBS/ISO/JEST
4
-
5
- export async function arrangeActAssert<TArrangeOutput, TActOutput>({ arrange, act, assert }: { arrange: () => TArrangeOutput, act: (_: TArrangeOutput) => TActOutput, assert: (_: TArrangeOutput & { result: TActOutput }) => any }) {
6
- const arrangeOutput = arrange();
7
-
8
- const actInput = isPromise(arrangeOutput) ? await arrangeOutput : arrangeOutput;
9
-
10
- const actOutput = act(actInput);
11
-
12
- const assertInput = isPromise(actOutput) ? await actOutput : actOutput;
13
-
14
- const assertOutput = assert({ ...actInput, result: assertInput });
15
-
16
- const returnValue = isPromise(assertOutput) ? await assertOutput : assertOutput;
17
-
18
- return returnValue;
19
- }
20
-
21
- function isPromise(value: any) {
22
- return (typeof value?.then) === 'function';
23
- }
@@ -1,30 +0,0 @@
1
- // https://github.com/lodash/lodash/blob/main/src/camelCase.ts
2
-
3
- import { toString } from './to-string.function';
4
- import { upperFirst } from './upper-first.function';
5
- import { words } from './words.function';
6
-
7
- /**
8
- * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).
9
- *
10
- * @since 3.0.0
11
- * @category String
12
- * @param {string} [string=''] The string to convert.
13
- * @returns {string} Returns the camel cased string.
14
- * @see lowerCase, kebabCase, snakeCase, startCase, upperCase, upperFirst
15
- * @example
16
- *
17
- * camelCase('Foo Bar')
18
- * // => 'fooBar'
19
- *
20
- * camelCase('--foo-bar--')
21
- * // => 'fooBar'
22
- *
23
- * camelCase('__FOO_BAR__')
24
- * // => 'fooBar'
25
- */
26
- export const camelCase = (string: string): string =>
27
- (words(toString(string).replace(/['\u2019]/g, '')) as string[]).reduce((result: string, word: string, index: number) => {
28
- word = word.toLowerCase();
29
- return result + (index ? upperFirst(word) : word);
30
- }, '');
@@ -1,20 +0,0 @@
1
- import { chunk } from './chunk.function';
2
- import { arrangeActAssert } from '../functions/arrange-act-assert.function';
3
-
4
- const array = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight'];
5
-
6
- describe('chunk', () => {
7
- it.each([
8
- [1],
9
- [2],
10
- [3],
11
- [4],
12
- [5],
13
- ])('given %j, returns an array of arrays', async (_) => await arrangeActAssert({
14
- arrange: () => ({ subject: chunk }),
15
- act: ({ subject }) => subject(array, _),
16
- assert: ({ result }) => {
17
- expect(result).toMatchSnapshot();
18
- }
19
- }));
20
- });
@@ -1,25 +0,0 @@
1
- export function chunk<T>(array: T[], numDivisions: number): T[][] {
2
- if (numDivisions <= 0) {
3
- throw new Error('Number of divisions must be greater than or equal to 0');
4
- }
5
-
6
- if (array.length === 0) {
7
- return [];
8
- }
9
-
10
- const result: T[][] = [];
11
- const chunkSize = Math.ceil(array.length / numDivisions);
12
-
13
- for (let i = 0; i < array.length; i += chunkSize) {
14
- result.push(array.slice(i, i + chunkSize));
15
- }
16
-
17
- while (result.length > numDivisions) {
18
- const lastChunk = result.pop();
19
- if (lastChunk) {
20
- result[result.length - 1].push(...lastChunk);
21
- }
22
- }
23
-
24
- return result;
25
- }
@@ -1,16 +0,0 @@
1
- import { convertObjectToLiteral } from './convert-object-to-literal.function';
2
-
3
- const qty = 337;
4
- const price = 100;
5
- const product = 'flux-capacitor';
6
-
7
- describe('convertObjectToLiteral', () => {
8
- it.each([[(k, v) => `${k}=${v}`, ' AND ', { qty, price, product }]])(
9
- 'converts an object to a string',
10
- (literalFn, delimiter, obj) => {
11
- expect(
12
- convertObjectToLiteral(literalFn, delimiter, obj)
13
- ).toMatchSnapshot();
14
- }
15
- );
16
- });
@@ -1,10 +0,0 @@
1
- export function convertObjectToLiteral(
2
- literalFn: (k: string, v: any) => string,
3
- delimiter: string,
4
- keyValuePairs: Record<string, any>
5
- ) {
6
- return Object.entries(keyValuePairs)
7
- .filter(([, v]) => !!v || v === 0 || v === false)
8
- .map(([k, v]) => literalFn(k, v?.toString?.()))
9
- .join(delimiter);
10
- }
@@ -1,4 +0,0 @@
1
- export function formatUsd(rawAmount?: number | string) {
2
- const amount = Number(rawAmount) || 0;
3
- return new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(amount);
4
- }
@@ -1,3 +0,0 @@
1
- export function fromBooleanString(value?: string) {
2
- return value === 'true';
3
- }
@@ -1,11 +0,0 @@
1
- import { fromCalendarDate } from './from-calendar-date.function';
2
-
3
- describe('fromCalendarDate', () => {
4
- describe('GIVEN input is partial or full ISO8601', () => {
5
- it.each([
6
- '2023-12-23',
7
- ])('%j', (input) => {
8
- expect(fromCalendarDate(input)).toMatchSnapshot();
9
- });
10
- });
11
- });
@@ -1,5 +0,0 @@
1
- import { addOffset } from "./add-offset.function";
2
-
3
- export function fromCalendarDate(input: string | Date | undefined | null): Date | null {
4
- return addOffset(input) || null;
5
- }
@@ -1,3 +0,0 @@
1
- export function fromCsvString(value?: string) {
2
- return value ? value.split(',').map((v) => v.trim()) : [];
3
- }
@@ -1,6 +0,0 @@
1
- import { MILLIS_PER_DAY } from "../constants/millis-per-day.constant";
2
-
3
- export function getDateLastMonth() {
4
- const days = new Date().getUTCDate() + 1;
5
- return new Date(Date.now() - (MILLIS_PER_DAY * days));
6
- }
@@ -1,8 +0,0 @@
1
- import { MILLIS_PER_DAY } from "../constants/millis-per-day.constant";
2
-
3
- export function getDateRangeForMonth(year: number, month: number) {
4
- const startDate = new Date(+Date.UTC(year, month + -1, 0) + MILLIS_PER_DAY);
5
- const endDate = new Date(+Date.UTC(year, month + 0, 0) + MILLIS_PER_DAY);
6
-
7
- return { startDate, endDate };
8
- }
@@ -1,8 +0,0 @@
1
- import { MILLIS_PER_DAY } from "../constants/millis-per-day.constant";
2
-
3
- export function getDateRangeForMonth(year: number, month: number) {
4
- const startDate = new Date(+Date.UTC(year, month + -1, 0) + MILLIS_PER_DAY);
5
- const endDate = new Date(+Date.UTC(year, month + 0, 0) + MILLIS_PER_DAY);
6
-
7
- return { startDate, endDate };
8
- }
@@ -1,10 +0,0 @@
1
- // https://github.com/lodash/lodash/blob/main/src/.internal/getTag.ts
2
-
3
- const toString = Object.prototype.toString
4
-
5
- export function getTag(value: any): string {
6
- if (value == null) {
7
- return value === undefined ? '[object Undefined]' : '[object Null]'
8
- }
9
- return toString.call(value)
10
- }
@@ -1,5 +0,0 @@
1
- import { TNameable } from "../types/nameable.type";
2
-
3
- export function getUserFullName(user: TNameable | undefined): string {
4
- return `${user?.firstName} ${user?.lastName}`;
5
- }
@@ -1,11 +0,0 @@
1
- // https://github.com/lodash/lodash/blob/main/src/isSymbol.ts
2
-
3
- import { getTag } from './get-tag.function';
4
-
5
- export function isSymbol(value: any): boolean {
6
- const type = typeof value;
7
- return (
8
- type === 'symbol' ||
9
- (type === 'object' && value != null && getTag(value) === '[object Symbol]')
10
- );
11
- }
@@ -1,5 +0,0 @@
1
- export function isValidDate(dateString: string | Date) {
2
- const date = new Date(dateString);
3
-
4
- return (date instanceof Date && !isNaN(date.getTime())) ? date : undefined;
5
- }
@@ -1,5 +0,0 @@
1
- import { snakeCase } from "./snake-case.function";
2
-
3
- export function kebabCase(string: string) {
4
- return snakeCase(string).replace(/_/g, '-');
5
- }
@@ -1,11 +0,0 @@
1
- export function mapEntitiesToOptions<TEntity extends { name?: string, id: string }>(
2
- entities: Record<string, TEntity>,
3
- ids: string[],
4
- includeBlank = true,
5
- ) {
6
- const entityArray = ids?.length ? (ids?.map((value => ({ value, display: entities[value].name || entities[value].id })))) : [];
7
-
8
- return includeBlank
9
- ? [{ display: '', value: '' }, ...entityArray]
10
- : entityArray;
11
- }
@@ -1,3 +0,0 @@
1
- export function mapEnumToArrayOfValues(enumeration: any): any {
2
- return Object.entries(enumeration).map(([key, value]) => value) as string[];
3
- }
@@ -1,3 +0,0 @@
1
- export function mapEnumToArrayOfValues(enumeration: any): any {
2
- return Object.entries(enumeration).map(([key, value]) => value) as string[];
3
- }
@@ -1,6 +0,0 @@
1
- import { ILookup } from "../types/lookup.interface";
2
-
3
- export function mapEnumToLookupArray<TEnum extends object>(enumeration: TEnum): ILookup<string, string>[] {
4
- return Object.entries(enumeration)
5
- .map(([key, value]) => ({ value, display: key.replace(/_/g, ' ') }) satisfies ILookup<string, string>);
6
- }