@bodil/monkey-business 0.2.0 → 0.2.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/dist/index.d.ts CHANGED
@@ -1,7 +1,13 @@
1
- import { Option } from "@bodil/core";
1
+ import { Option } from "@bodil/opt";
2
2
  import { type OrderFn } from "@bodil/core/order";
3
3
  import type { Present } from "@bodil/core/types";
4
+ import "es-iterator-helpers/Iterator.concat/auto";
5
+ import "es-iterator-helpers/Iterator.zip/auto";
6
+ import "es-iterator-helpers/Iterator.zipKeyed/auto";
4
7
  declare global {
8
+ /**
9
+ * Added methods on the {@link Object} global object.
10
+ */
5
11
  interface ObjectConstructor {
6
12
  /**
7
13
  * Checked key lookup. Returns {@link None} if a key isn't present.
@@ -15,6 +21,9 @@ declare global {
15
21
  */
16
22
  mapEntries<A, B>(obj: Record<string, A>, fn: (entry: [key: string, value: A]) => [string, B]): Record<string, B>;
17
23
  }
24
+ /**
25
+ * Added methods on {@link Map}s.
26
+ */
18
27
  interface Map<K, V> {
19
28
  /**
20
29
  * If `key` exists in the map, return the value associated with it.
@@ -23,6 +32,9 @@ declare global {
23
32
  */
24
33
  getOrSet(key: K, defaultValue: () => V): V;
25
34
  }
35
+ /**
36
+ * Added methods on {@link Array}s.
37
+ */
26
38
  interface Array<T> {
27
39
  /**
28
40
  * Insert `value` at `index` in the array.
@@ -77,6 +89,9 @@ declare global {
77
89
  */
78
90
  get(index: number): Option<T>;
79
91
  }
92
+ /**
93
+ * Added methods on the {@link Iterator} global object.
94
+ */
80
95
  interface IteratorConstructor {
81
96
  /**
82
97
  * Construct an empty iterator.
@@ -84,22 +99,29 @@ declare global {
84
99
  empty<T>(): IteratorObject<T>;
85
100
  /**
86
101
  * Sequence multiple iterators into a single one.
87
- * {@see https://github.com/tc39/proposal-iterator-sequencing}
102
+ * @see https://github.com/tc39/proposal-iterator-sequencing
88
103
  */
89
104
  concat<T>(...inputs: Array<Iterable<T>>): IteratorObject<T>;
105
+ /**
106
+ * @see https://github.com/tc39/proposal-joint-iteration
107
+ */
108
+ zip<T>(inputs: Iterable<Iterable<T>>): IteratorObject<Array<T>>;
109
+ /**
110
+ * @see https://github.com/tc39/proposal-joint-iteration
111
+ */
112
+ zipKeyed<T>(inputs: Record<string, Iterable<T>>): IteratorObject<Record<string, T>>;
90
113
  }
91
114
  interface IteratorObject<T, TReturn, TNext> {
92
115
  /**
93
116
  * Get the next value from the iterator, wrapped in an {@link Option}
94
117
  * type. If the iterator has no more values, return {@link None}.
95
- *
96
- * This is the nicely utility typed version of {@link Iterator#next}.
97
118
  */
98
119
  takeOne(): Option<T>;
99
120
  /**
100
121
  * Take items from the iterator only until the first time `predicate` returns false.
101
122
  */
102
123
  takeWhile<S extends T>(predicate: (value: T, index: number) => value is S): IteratorObject<S, undefined>;
124
+ /** @ignore */
103
125
  takeWhile(predicate: (value: T, index: number) => boolean): IteratorObject<T, undefined>;
104
126
  /**
105
127
  * Ignore all items matching `predicate` until the first item that
package/dist/index.js CHANGED
@@ -1,9 +1,13 @@
1
1
  /* eslint-disable @typescript-eslint/no-this-alias */
2
2
  // deno-lint-ignore-file no-this-alias
3
- import { None, Option, Some } from "@bodil/core";
3
+ import { None, Option, Some } from "@bodil/opt";
4
4
  import { bisectHigh, bisectLow } from "@bodil/core/order";
5
5
  import { assert } from "@bodil/core/assert";
6
6
  import defineProperties from "define-properties";
7
+ import shimUnscopables from "es-shim-unscopables";
8
+ import "es-iterator-helpers/Iterator.concat/auto";
9
+ import "es-iterator-helpers/Iterator.zip/auto";
10
+ import "es-iterator-helpers/Iterator.zipKeyed/auto";
7
11
  // Object
8
12
  defineProperties(Object, {
9
13
  get(obj, key) {
@@ -66,35 +70,19 @@ defineProperties(Array.prototype, {
66
70
  return Object.get(this, index);
67
71
  },
68
72
  });
73
+ shimUnscopables("remove");
74
+ shimUnscopables("removeFn");
75
+ shimUnscopables("removeIndex");
76
+ shimUnscopables("insert");
77
+ shimUnscopables("insertOrdered");
78
+ shimUnscopables("present");
79
+ shimUnscopables("nonNullable");
80
+ shimUnscopables("get");
69
81
  // Iterator
70
82
  defineProperties(Iterator, {
71
83
  empty() {
72
84
  return Iterator.from([]);
73
85
  },
74
- concat(...inputs) {
75
- if (inputs.length === 0) {
76
- return Iterator.empty();
77
- }
78
- let iter = inputs[0][Symbol.iterator]();
79
- let index = 0;
80
- let done = false;
81
- return Iterator.from({
82
- next() {
83
- if (!done) {
84
- let result = iter.next();
85
- while (result.done === true && index < inputs.length - 1) {
86
- iter = inputs[++index][Symbol.iterator]();
87
- result = iter.next();
88
- }
89
- if (result.done !== true) {
90
- return result;
91
- }
92
- }
93
- done = true;
94
- return { done: true, value: undefined };
95
- },
96
- });
97
- },
98
86
  });
99
87
  defineProperties(Iterator.prototype, {
100
88
  takeOne() {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bodil/monkey-business",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Let's give JS core types a polish",
5
5
  "homepage": "https://codeberg.org/bodil/monkey-business",
6
6
  "repository": {
@@ -26,20 +26,26 @@
26
26
  "access": "public"
27
27
  },
28
28
  "dependencies": {
29
- "@bodil/core": "^0.2.2",
29
+ "@bodil/core": "^0.3.0",
30
+ "@bodil/opt": "^0.4.1",
30
31
  "@types/define-properties": "^1.1.5",
31
- "define-properties": "^1.2.1"
32
+ "define-properties": "^1.2.1",
33
+ "es-iterator-helpers": "^1.2.1",
34
+ "es-shim-unscopables": "^1.1.0"
32
35
  },
33
36
  "devDependencies": {
34
- "@bodil/opt-vitest": "^1.0.0",
37
+ "@bodil/opt-vitest": "^1.1.0",
35
38
  "@eslint/eslintrc": "^3.3.1",
36
39
  "@eslint/js": "^9.33.0",
37
40
  "@typescript-eslint/eslint-plugin": "^8.39.1",
38
41
  "@typescript-eslint/parser": "^8.39.1",
39
42
  "eslint": "^9.33.0",
40
43
  "eslint-config-prettier": "^10.1.8",
41
- "eslint-plugin-jsdoc": "^53.0.0",
42
- "globals": "^15.15.0",
44
+ "eslint-plugin-jsdoc": "^54.0.0",
45
+ "globals": "^16.3.0",
46
+ "typedoc": "^0.28.10",
47
+ "typedoc-plugin-extras": "^4.0.1",
48
+ "typedoc-plugin-mdn-links": "^5.0.8",
43
49
  "typescript": "^5.9.2",
44
50
  "vitest": "^3.2.4"
45
51
  },
@@ -47,6 +53,8 @@
47
53
  "build": "tsc",
48
54
  "test": "vitest --run",
49
55
  "lint": "eslint src",
56
+ "doc": "typedoc",
57
+ "doc:readthedocs": "typedoc --out $READTHEDOCS_OUTPUT/html",
50
58
  "prepublish": "tsc"
51
59
  }
52
60
  }
package/src/index.test.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { test, expect, expectTypeOf } from "vitest";
2
- import type { Option } from "@bodil/core";
2
+ import type { Option } from "@bodil/opt";
3
3
  import { order as Order } from "@bodil/core";
4
4
 
5
5
  import ".";
package/src/index.ts CHANGED
@@ -1,13 +1,21 @@
1
1
  /* eslint-disable @typescript-eslint/no-this-alias */
2
2
  // deno-lint-ignore-file no-this-alias
3
3
 
4
- import { None, Option, Some } from "@bodil/core";
4
+ import { None, Option, Some } from "@bodil/opt";
5
5
  import { type OrderFn, bisectHigh, bisectLow } from "@bodil/core/order";
6
6
  import type { Present } from "@bodil/core/types";
7
7
  import { assert } from "@bodil/core/assert";
8
8
  import defineProperties from "define-properties";
9
+ import shimUnscopables from "es-shim-unscopables";
10
+
11
+ import "es-iterator-helpers/Iterator.concat/auto";
12
+ import "es-iterator-helpers/Iterator.zip/auto";
13
+ import "es-iterator-helpers/Iterator.zipKeyed/auto";
9
14
 
10
15
  declare global {
16
+ /**
17
+ * Added methods on the {@link Object} global object.
18
+ */
11
19
  interface ObjectConstructor {
12
20
  /**
13
21
  * Checked key lookup. Returns {@link None} if a key isn't present.
@@ -26,6 +34,9 @@ declare global {
26
34
  ): Record<string, B>;
27
35
  }
28
36
 
37
+ /**
38
+ * Added methods on {@link Map}s.
39
+ */
29
40
  interface Map<K, V> {
30
41
  /**
31
42
  * If `key` exists in the map, return the value associated with it.
@@ -35,6 +46,9 @@ declare global {
35
46
  getOrSet(key: K, defaultValue: () => V): V;
36
47
  }
37
48
 
49
+ /**
50
+ * Added methods on {@link Array}s.
51
+ */
38
52
  interface Array<T> {
39
53
  /**
40
54
  * Insert `value` at `index` in the array.
@@ -97,6 +111,9 @@ declare global {
97
111
  get(index: number): Option<T>;
98
112
  }
99
113
 
114
+ /**
115
+ * Added methods on the {@link Iterator} global object.
116
+ */
100
117
  interface IteratorConstructor {
101
118
  /**
102
119
  * Construct an empty iterator.
@@ -104,9 +121,17 @@ declare global {
104
121
  empty<T>(): IteratorObject<T>;
105
122
  /**
106
123
  * Sequence multiple iterators into a single one.
107
- * {@see https://github.com/tc39/proposal-iterator-sequencing}
124
+ * @see https://github.com/tc39/proposal-iterator-sequencing
108
125
  */
109
126
  concat<T>(...inputs: Array<Iterable<T>>): IteratorObject<T>;
127
+ /**
128
+ * @see https://github.com/tc39/proposal-joint-iteration
129
+ */
130
+ zip<T>(inputs: Iterable<Iterable<T>>): IteratorObject<Array<T>>;
131
+ /**
132
+ * @see https://github.com/tc39/proposal-joint-iteration
133
+ */
134
+ zipKeyed<T>(inputs: Record<string, Iterable<T>>): IteratorObject<Record<string, T>>;
110
135
  }
111
136
 
112
137
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -114,8 +139,6 @@ declare global {
114
139
  /**
115
140
  * Get the next value from the iterator, wrapped in an {@link Option}
116
141
  * type. If the iterator has no more values, return {@link None}.
117
- *
118
- * This is the nicely utility typed version of {@link Iterator#next}.
119
142
  */
120
143
  takeOne(): Option<T>;
121
144
  /**
@@ -124,6 +147,7 @@ declare global {
124
147
  takeWhile<S extends T>(
125
148
  predicate: (value: T, index: number) => value is S
126
149
  ): IteratorObject<S, undefined>;
150
+ /** @ignore */
127
151
  takeWhile(predicate: (value: T, index: number) => boolean): IteratorObject<T, undefined>;
128
152
  /**
129
153
  * Ignore all items matching `predicate` until the first item that
@@ -249,37 +273,21 @@ defineProperties(Array.prototype, {
249
273
  },
250
274
  });
251
275
 
276
+ shimUnscopables("remove");
277
+ shimUnscopables("removeFn");
278
+ shimUnscopables("removeIndex");
279
+ shimUnscopables("insert");
280
+ shimUnscopables("insertOrdered");
281
+ shimUnscopables("present");
282
+ shimUnscopables("nonNullable");
283
+ shimUnscopables("get");
284
+
252
285
  // Iterator
253
286
 
254
287
  defineProperties(Iterator, {
255
288
  empty<T>(): IteratorObject<T> {
256
289
  return Iterator.from([]);
257
290
  },
258
-
259
- concat<T>(...inputs: Array<Iterable<T>>): IteratorObject<T> {
260
- if (inputs.length === 0) {
261
- return Iterator.empty();
262
- }
263
- let iter: Iterator<T> = inputs[0][Symbol.iterator]();
264
- let index = 0;
265
- let done = false;
266
- return Iterator.from({
267
- next(): IteratorResult<T, undefined> {
268
- if (!done) {
269
- let result = iter.next();
270
- while (result.done === true && index < inputs.length - 1) {
271
- iter = inputs[++index][Symbol.iterator]();
272
- result = iter.next();
273
- }
274
- if (result.done !== true) {
275
- return result;
276
- }
277
- }
278
- done = true;
279
- return { done: true, value: undefined };
280
- },
281
- });
282
- },
283
291
  });
284
292
 
285
293
  defineProperties(Iterator.prototype, {