get-or-throw 1.2.1 → 1.3.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.
package/dist/index.cjs CHANGED
@@ -33,7 +33,14 @@ function getOrThrow(objOrArr, keyOrIndex, errorMessage) {
33
33
  index = length + index;
34
34
  }
35
35
  if (index >= 0 && index < length) {
36
- return objOrArr[index];
36
+ const value = objOrArr[index];
37
+ if (value === void 0) {
38
+ throw new Error(
39
+ errorMessage ?? `Value at index ${String(keyOrIndex)} is undefined.`
40
+ );
41
+ } else {
42
+ return value;
43
+ }
37
44
  } else {
38
45
  throw new Error(
39
46
  errorMessage ?? `Index ${String(keyOrIndex)} is out of bounds.`
@@ -41,7 +48,14 @@ function getOrThrow(objOrArr, keyOrIndex, errorMessage) {
41
48
  }
42
49
  } else {
43
50
  if (keyOrIndex in objOrArr) {
44
- return objOrArr[keyOrIndex];
51
+ const value = objOrArr[keyOrIndex];
52
+ if (value === void 0) {
53
+ throw new Error(
54
+ errorMessage ?? `Value at key "${String(keyOrIndex)}" is undefined.`
55
+ );
56
+ } else {
57
+ return value;
58
+ }
45
59
  } else {
46
60
  throw new Error(
47
61
  errorMessage ?? `Key "${String(keyOrIndex)}" does not exist in the object.`
package/dist/index.d.cts CHANGED
@@ -1,12 +1,13 @@
1
1
  /**
2
- * Get a value from an object or array, or throw an error if the key or index
3
- * does not exist.
2
+ * Get a value from an object or array, and throw an error if the key or index
3
+ * does not exist or if the resulting value is undefined.
4
4
  *
5
5
  * @param objOrArr The object or array to get the value from.
6
6
  * @param keyOrIndex The key or index to get the value from.
7
7
  * @param errorMessage Optional error message to include in the error thrown.
8
8
  * @returns The value at the given key or index.
9
- * @throws An error if the key or index does not exist.
9
+ * @throws An error if the key or index does not exist, or if the resulting
10
+ * value is undefined.
10
11
  */
11
12
  declare function getOrThrow<T extends object, K extends keyof T>(obj: T, key: K, errorMessage?: string): T[K];
12
13
  declare function getOrThrow<T>(arr: T[], index: number, errorMessage?: string): T;
package/dist/index.d.ts CHANGED
@@ -1,12 +1,13 @@
1
1
  /**
2
- * Get a value from an object or array, or throw an error if the key or index
3
- * does not exist.
2
+ * Get a value from an object or array, and throw an error if the key or index
3
+ * does not exist or if the resulting value is undefined.
4
4
  *
5
5
  * @param objOrArr The object or array to get the value from.
6
6
  * @param keyOrIndex The key or index to get the value from.
7
7
  * @param errorMessage Optional error message to include in the error thrown.
8
8
  * @returns The value at the given key or index.
9
- * @throws An error if the key or index does not exist.
9
+ * @throws An error if the key or index does not exist, or if the resulting
10
+ * value is undefined.
10
11
  */
11
12
  declare function getOrThrow<T extends object, K extends keyof T>(obj: T, key: K, errorMessage?: string): T[K];
12
13
  declare function getOrThrow<T>(arr: T[], index: number, errorMessage?: string): T;
package/dist/index.js CHANGED
@@ -7,7 +7,14 @@ function getOrThrow(objOrArr, keyOrIndex, errorMessage) {
7
7
  index = length + index;
8
8
  }
9
9
  if (index >= 0 && index < length) {
10
- return objOrArr[index];
10
+ const value = objOrArr[index];
11
+ if (value === void 0) {
12
+ throw new Error(
13
+ errorMessage ?? `Value at index ${String(keyOrIndex)} is undefined.`
14
+ );
15
+ } else {
16
+ return value;
17
+ }
11
18
  } else {
12
19
  throw new Error(
13
20
  errorMessage ?? `Index ${String(keyOrIndex)} is out of bounds.`
@@ -15,7 +22,14 @@ function getOrThrow(objOrArr, keyOrIndex, errorMessage) {
15
22
  }
16
23
  } else {
17
24
  if (keyOrIndex in objOrArr) {
18
- return objOrArr[keyOrIndex];
25
+ const value = objOrArr[keyOrIndex];
26
+ if (value === void 0) {
27
+ throw new Error(
28
+ errorMessage ?? `Value at key "${String(keyOrIndex)}" is undefined.`
29
+ );
30
+ } else {
31
+ return value;
32
+ }
19
33
  } else {
20
34
  throw new Error(
21
35
  errorMessage ?? `Key "${String(keyOrIndex)}" does not exist in the object.`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "get-or-throw",
3
- "version": "1.2.1",
3
+ "version": "1.3.0",
4
4
  "description": "A convenience function for adhering to Typescript's noUncheckedIndexedAccess rule",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -28,7 +28,8 @@
28
28
  },
29
29
  "homepage": "https://github.com/0x80/get-or-throw#readme",
30
30
  "devDependencies": {
31
- "@codecompose/typescript-config": "^1.0.5",
31
+ "@codecompose/typescript-config": "^1.1.2",
32
+ "del-cli": "^5.1.0",
32
33
  "prettier": "^3.3.3",
33
34
  "prettier-plugin-jsdoc": "^1.3.0",
34
35
  "tsup": "^8.3.0",
@@ -36,6 +37,7 @@
36
37
  },
37
38
  "scripts": {
38
39
  "build": "tsup",
40
+ "clean": "del dist tsconfig.tsbuildinfo",
39
41
  "test": "echo \"Error: no test specified\" && exit 1"
40
42
  }
41
43
  }
@@ -1,12 +1,13 @@
1
1
  /**
2
- * Get a value from an object or array, or throw an error if the key or index
3
- * does not exist.
2
+ * Get a value from an object or array, and throw an error if the key or index
3
+ * does not exist or if the resulting value is undefined.
4
4
  *
5
5
  * @param objOrArr The object or array to get the value from.
6
6
  * @param keyOrIndex The key or index to get the value from.
7
7
  * @param errorMessage Optional error message to include in the error thrown.
8
8
  * @returns The value at the given key or index.
9
- * @throws An error if the key or index does not exist.
9
+ * @throws An error if the key or index does not exist, or if the resulting
10
+ * value is undefined.
10
11
  */
11
12
  export function getOrThrow<T extends object, K extends keyof T>(
12
13
  obj: T,
@@ -33,7 +34,15 @@ export function getOrThrow<T extends object, K extends keyof T>(
33
34
  }
34
35
 
35
36
  if (index >= 0 && index < length) {
36
- return objOrArr[index]!;
37
+ const value = objOrArr[index];
38
+
39
+ if (value === undefined) {
40
+ throw new Error(
41
+ errorMessage ?? `Value at index ${String(keyOrIndex)} is undefined.`
42
+ );
43
+ } else {
44
+ return value;
45
+ }
37
46
  } else {
38
47
  throw new Error(
39
48
  errorMessage ?? `Index ${String(keyOrIndex)} is out of bounds.`
@@ -41,7 +50,15 @@ export function getOrThrow<T extends object, K extends keyof T>(
41
50
  }
42
51
  } else {
43
52
  if (keyOrIndex in objOrArr) {
44
- return objOrArr[keyOrIndex as K];
53
+ const value = objOrArr[keyOrIndex as K];
54
+
55
+ if (value === undefined) {
56
+ throw new Error(
57
+ errorMessage ?? `Value at key "${String(keyOrIndex)}" is undefined.`
58
+ );
59
+ } else {
60
+ return value;
61
+ }
45
62
  } else {
46
63
  throw new Error(
47
64
  errorMessage ??
package/tsconfig.json CHANGED
@@ -1,7 +1,3 @@
1
1
  {
2
- "extends": "@codecompose/typescript-config/library.json",
3
- "compilerOptions": {
4
- "composite": false,
5
- "incremental": false
6
- }
2
+ "extends": "@codecompose/typescript-config/single-library.json"
7
3
  }