getorset-anything 0.0.5 → 0.1.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.
@@ -16,6 +16,15 @@ function objGetOrSet(obj, key, initialValue) {
16
16
  }
17
17
  return val;
18
18
  }
19
+ function arrGetOrSet(arr, index, initialValue) {
20
+ let val = arr[index];
21
+ if (val === void 0) {
22
+ val = initialValue();
23
+ arr[index] = val;
24
+ }
25
+ return val;
26
+ }
19
27
 
28
+ exports.arrGetOrSet = arrGetOrSet;
20
29
  exports.mapGetOrSet = mapGetOrSet;
21
30
  exports.objGetOrSet = objGetOrSet;
@@ -8,6 +8,7 @@ type ValueOfMap<M extends Map<unknown, unknown>> = M extends Map<unknown, infer
8
8
  * const map = new Map<string, number[]>()
9
9
  *
10
10
  * const arr = mapGetOrSet(map, '123', () => [])
11
+ * // ↳ []
11
12
  *
12
13
  * arr.push('xyz')
13
14
  * ```
@@ -21,10 +22,23 @@ declare function mapGetOrSet<M extends Map<unknown, unknown>, T extends () => Va
21
22
  * const obj: Record<string, number[]> = {}
22
23
  *
23
24
  * const arr = objGetOrSet(obj, '123', () => [])
25
+ * // ↳ []
24
26
  *
25
27
  * arr.push('xyz')
26
28
  * ```
27
29
  */
28
30
  declare function objGetOrSet<O extends Record<string | number | symbol, unknown>, T extends () => O[keyof O]>(obj: O, key: keyof O, initialValue: T): ReturnType<T>;
31
+ /**
32
+ * Retrieve the value in an array, or if it wasn't found, set an initial value and return that.
33
+ *
34
+ * @example
35
+ * ```js
36
+ * const arr: number[] = []
37
+ *
38
+ * const val = arrGetOrSet(arr, 0, () => 123)
39
+ * // ↳ 123
40
+ * ```
41
+ */
42
+ declare function arrGetOrSet<A extends unknown[], T extends () => A[number]>(arr: A, index: number, initialValue: T): ReturnType<T>;
29
43
 
30
- export { mapGetOrSet, objGetOrSet };
44
+ export { arrGetOrSet, mapGetOrSet, objGetOrSet };
package/dist/index.d.ts CHANGED
@@ -8,6 +8,7 @@ type ValueOfMap<M extends Map<unknown, unknown>> = M extends Map<unknown, infer
8
8
  * const map = new Map<string, number[]>()
9
9
  *
10
10
  * const arr = mapGetOrSet(map, '123', () => [])
11
+ * // ↳ []
11
12
  *
12
13
  * arr.push('xyz')
13
14
  * ```
@@ -21,10 +22,23 @@ declare function mapGetOrSet<M extends Map<unknown, unknown>, T extends () => Va
21
22
  * const obj: Record<string, number[]> = {}
22
23
  *
23
24
  * const arr = objGetOrSet(obj, '123', () => [])
25
+ * // ↳ []
24
26
  *
25
27
  * arr.push('xyz')
26
28
  * ```
27
29
  */
28
30
  declare function objGetOrSet<O extends Record<string | number | symbol, unknown>, T extends () => O[keyof O]>(obj: O, key: keyof O, initialValue: T): ReturnType<T>;
31
+ /**
32
+ * Retrieve the value in an array, or if it wasn't found, set an initial value and return that.
33
+ *
34
+ * @example
35
+ * ```js
36
+ * const arr: number[] = []
37
+ *
38
+ * const val = arrGetOrSet(arr, 0, () => 123)
39
+ * // ↳ 123
40
+ * ```
41
+ */
42
+ declare function arrGetOrSet<A extends unknown[], T extends () => A[number]>(arr: A, index: number, initialValue: T): ReturnType<T>;
29
43
 
30
- export { mapGetOrSet, objGetOrSet };
44
+ export { arrGetOrSet, mapGetOrSet, objGetOrSet };
package/dist/index.js CHANGED
@@ -14,5 +14,13 @@ function objGetOrSet(obj, key, initialValue) {
14
14
  }
15
15
  return val;
16
16
  }
17
+ function arrGetOrSet(arr, index, initialValue) {
18
+ let val = arr[index];
19
+ if (val === void 0) {
20
+ val = initialValue();
21
+ arr[index] = val;
22
+ }
23
+ return val;
24
+ }
17
25
 
18
- export { mapGetOrSet, objGetOrSet };
26
+ export { arrGetOrSet, mapGetOrSet, objGetOrSet };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "getorset-anything",
3
- "version": "0.0.5",
3
+ "version": "0.1.0",
4
4
  "description": "Gets a value from a Map/Obj or sets an initial value when not found and returns that. TypeScript supported.",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -58,9 +58,6 @@
58
58
  "author": "Luca Ban - Mesqueeb",
59
59
  "funding": "https://github.com/sponsors/mesqueeb",
60
60
  "license": "MIT",
61
- "bugs": {
62
- "url": "https://github.com/mesqueeb/getorset-anything/issues"
63
- },
64
61
  "homepage": "https://github.com/mesqueeb/getorset-anything#readme",
65
62
  "devDependencies": {
66
63
  "@typescript-eslint/eslint-plugin": "^5.59.2",