@jakubmazanec/ts-utils 1.0.0-fdb1c25

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 (86) hide show
  1. package/LICENSE +18 -0
  2. package/dist/main.d.ts +2 -0
  3. package/dist/main.js +4 -0
  4. package/dist/main.js.map +1 -0
  5. package/dist/types/AtLeastOneRequired.d.ts +36 -0
  6. package/dist/types/AtLeastOneRequired.js +35 -0
  7. package/dist/types/AtLeastOneRequired.js.map +1 -0
  8. package/dist/types/DeepPartial.d.ts +60 -0
  9. package/dist/types/DeepPartial.js +3 -0
  10. package/dist/types/DeepPartial.js.map +1 -0
  11. package/dist/types/DeepReadonly.d.ts +34 -0
  12. package/dist/types/DeepReadonly.js +3 -0
  13. package/dist/types/DeepReadonly.js.map +1 -0
  14. package/dist/types/If.d.ts +15 -0
  15. package/dist/types/If.js +16 -0
  16. package/dist/types/If.js.map +1 -0
  17. package/dist/types/IsEqual.d.ts +26 -0
  18. package/dist/types/IsEqual.js +16 -0
  19. package/dist/types/IsEqual.js.map +1 -0
  20. package/dist/types/LiteralUnion.d.ts +21 -0
  21. package/dist/types/LiteralUnion.js +3 -0
  22. package/dist/types/LiteralUnion.js.map +1 -0
  23. package/dist/types/NonArray.d.ts +1 -0
  24. package/dist/types/NonArray.js +3 -0
  25. package/dist/types/NonArray.js.map +1 -0
  26. package/dist/types/NonArrayLike.d.ts +1 -0
  27. package/dist/types/NonArrayLike.js +3 -0
  28. package/dist/types/NonArrayLike.js.map +1 -0
  29. package/dist/types/OptionalKeys.d.ts +12 -0
  30. package/dist/types/OptionalKeys.js +11 -0
  31. package/dist/types/OptionalKeys.js.map +1 -0
  32. package/dist/types/Parameters.d.ts +17 -0
  33. package/dist/types/Parameters.js +18 -0
  34. package/dist/types/Parameters.js.map +1 -0
  35. package/dist/types/Primitive.d.ts +4 -0
  36. package/dist/types/Primitive.js +5 -0
  37. package/dist/types/Primitive.js.map +1 -0
  38. package/dist/types/RequiredKeys.d.ts +12 -0
  39. package/dist/types/RequiredKeys.js +11 -0
  40. package/dist/types/RequiredKeys.js.map +1 -0
  41. package/dist/types/ReturnType.d.ts +18 -0
  42. package/dist/types/ReturnType.js +19 -0
  43. package/dist/types/ReturnType.js.map +1 -0
  44. package/dist/types/TupleToUnion.d.ts +10 -0
  45. package/dist/types/TupleToUnion.js +11 -0
  46. package/dist/types/TupleToUnion.js.map +1 -0
  47. package/dist/types/UnionToIntersection.d.ts +15 -0
  48. package/dist/types/UnionToIntersection.js +11 -0
  49. package/dist/types/UnionToIntersection.js.map +1 -0
  50. package/dist/types.d.ts +15 -0
  51. package/dist/types.js +17 -0
  52. package/dist/types.js.map +1 -0
  53. package/dist/utils/assert.d.ts +34 -0
  54. package/dist/utils/assert.js +41 -0
  55. package/dist/utils/assert.js.map +1 -0
  56. package/dist/utils/is.d.ts +28 -0
  57. package/dist/utils/is.js +31 -0
  58. package/dist/utils/is.js.map +1 -0
  59. package/dist/utils/isNonNullable.d.ts +18 -0
  60. package/dist/utils/isNonNullable.js +21 -0
  61. package/dist/utils/isNonNullable.js.map +1 -0
  62. package/dist/utils.d.ts +3 -0
  63. package/dist/utils.js +5 -0
  64. package/dist/utils.js.map +1 -0
  65. package/package.json +35 -0
  66. package/src/main.ts +2 -0
  67. package/src/types/AtLeastOneRequired.ts +37 -0
  68. package/src/types/DeepPartial.ts +83 -0
  69. package/src/types/DeepReadonly.ts +47 -0
  70. package/src/types/If.ts +15 -0
  71. package/src/types/IsEqual.ts +29 -0
  72. package/src/types/LiteralUnion.ts +22 -0
  73. package/src/types/NonArray.ts +3 -0
  74. package/src/types/NonArrayLike.ts +3 -0
  75. package/src/types/OptionalKeys.ts +15 -0
  76. package/src/types/Parameters.ts +20 -0
  77. package/src/types/Primitive.ts +4 -0
  78. package/src/types/RequiredKeys.ts +15 -0
  79. package/src/types/ReturnType.ts +21 -0
  80. package/src/types/TupleToUnion.ts +10 -0
  81. package/src/types/UnionToIntersection.ts +21 -0
  82. package/src/types.ts +15 -0
  83. package/src/utils/assert.ts +44 -0
  84. package/src/utils/is.ts +30 -0
  85. package/src/utils/isNonNullable.ts +20 -0
  86. package/src/utils.ts +3 -0
@@ -0,0 +1,44 @@
1
+ /**
2
+ * A subclass of `Error` that indicates an assertion failure.
3
+ */
4
+ export class AssertionError extends Error {
5
+ /**
6
+ * @param message Message added to the default error message
7
+ */
8
+ constructor(message?: string) {
9
+ super(`Wrong assertion encountered${message ? `: "${message}"` : ''}!`);
10
+
11
+ this.name = 'AssertionError';
12
+ }
13
+ }
14
+
15
+ /**
16
+ * A function that throws {@linkcode AssertionError} (with optional message defined with `errorMessage`) if
17
+ * `condition` is falsy.
18
+ * You can use it to narrow types:
19
+ *
20
+ * ```TypeScript
21
+ * interface Foo {
22
+ * kind: 'Foo';
23
+ * }
24
+ *
25
+ * interface Bar {
26
+ * kind: 'Bar';
27
+ * }
28
+ *
29
+ * declare const foobar: Foo | Bar;
30
+ *
31
+ * assert(is<Foo>(foobar, foobar.kind === 'Foo'));
32
+ *
33
+ * // `typeof foobar` is now `Foo`
34
+ * ```
35
+ *
36
+ * @param condition Condition we're asserting isn't falsy
37
+ * @param errorMessage Message for the `AssertionError`
38
+ */
39
+ export function assert(condition: unknown, errorMessage?: string): asserts condition {
40
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions -- we don't mind here
41
+ if (!condition) {
42
+ throw new AssertionError(errorMessage);
43
+ }
44
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * A generic type guard. If `isMatched` is `true`, TypeScript assumes `value` is of type `T`.
3
+ * You can use it to narrow types:
4
+ *
5
+ * ```TypeScript
6
+ * interface Foo {
7
+ * value: string;
8
+ * }
9
+ *
10
+ * interface Bar {
11
+ * value: number;
12
+ * }
13
+ *
14
+ * declare let foobar: Foo | Bar;
15
+ *
16
+ * if (is<Foo>(foobar, typeof foobar.value === 'string')) {
17
+ * // `typeof foobar` is now `Foo`
18
+ * } else {
19
+ * // `typeof foobar` is now `Bar`
20
+ * }
21
+ * ```
22
+ *
23
+ * @typeParam T Potential type of `value`
24
+ * @param value Value being checked
25
+ * @param isMatched Specifies if `value` is of type `T`
26
+ * @return Value of `isMatched`
27
+ */
28
+ export function is<T>(value: unknown, isMatched: boolean): value is T {
29
+ return isMatched;
30
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * A type guard that checks whether variable is not `null` or `undefined`:
3
+ *
4
+ * ```TypeScript
5
+ * declare let foobar: string | null;
6
+ *
7
+ * if (isNonNullable(foobar)) {
8
+ * // `typeof foobar` is now `string`
9
+ * } else {
10
+ * // `typeof foobar` is now `null`
11
+ * }
12
+ * ```
13
+ *
14
+ * @typeParam T Type of `value`
15
+ * @param value Value being checked
16
+ * @return `true` if `value` is non-nullable
17
+ */
18
+ export function isNonNullable<T>(value: T): value is NonNullable<T> {
19
+ return value !== undefined && value !== null;
20
+ }
package/src/utils.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './utils/assert.js';
2
+ export * from './utils/is.js';
3
+ export * from './utils/isNonNullable.js';