@bodil/monkey-business 0.1.4 → 0.2.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.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Option } from "@bodil/opt";
1
+ import { Option } from "@bodil/core";
2
2
  import { type OrderFn } from "@bodil/core/order";
3
3
  import type { Present } from "@bodil/core/types";
4
4
  declare global {
@@ -15,9 +15,6 @@ declare global {
15
15
  */
16
16
  mapEntries<A, B>(obj: Record<string, A>, fn: (entry: [key: string, value: A]) => [string, B]): Record<string, B>;
17
17
  }
18
- interface ErrorConstructor {
19
- isError(value: unknown): value is Error;
20
- }
21
18
  interface Map<K, V> {
22
19
  /**
23
20
  * If `key` exists in the map, return the value associated with it.
package/dist/index.js CHANGED
@@ -1,254 +1,207 @@
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/opt";
3
+ import { None, Option, Some } from "@bodil/core";
4
4
  import { bisectHigh, bisectLow } from "@bodil/core/order";
5
5
  import { assert } from "@bodil/core/assert";
6
+ import defineProperties from "define-properties";
6
7
  // Object
7
- Object.get = function get(obj, key) {
8
- return Object.hasOwn(obj, key) ? Some(obj[key]) : None;
9
- };
10
- Object.mapEntries = function mapEntries(obj, fn) {
11
- return Object.fromEntries(Object.entries(obj).map(fn));
12
- };
13
- // Error
14
- Error.isError ??= function isError(value) {
15
- if (!value || (typeof value !== "object" && typeof value !== "function")) {
16
- return false;
17
- }
18
- if (value instanceof Error || value instanceof DOMException) {
19
- return true;
20
- }
21
- try {
22
- const clone = structuredClone(value);
23
- return clone instanceof Error || clone instanceof DOMException;
24
- }
25
- catch (e) {
26
- return false;
27
- }
28
- };
8
+ defineProperties(Object, {
9
+ get(obj, key) {
10
+ return Object.hasOwn(obj, key) ? Some(obj[key]) : None;
11
+ },
12
+ mapEntries(obj, fn) {
13
+ return Object.fromEntries(Object.entries(obj).map(fn));
14
+ },
15
+ });
29
16
  // Map
30
- Map.prototype.getOrSet = function getOrSet(key, defaultValue) {
31
- const result = this.get(key);
32
- if (result !== undefined) {
33
- return result;
34
- }
35
- const newValue = defaultValue();
36
- this.set(key, newValue);
37
- return newValue;
38
- };
17
+ defineProperties(Map.prototype, {
18
+ getOrSet(key, defaultValue) {
19
+ const result = this.get(key);
20
+ if (result !== undefined) {
21
+ return result;
22
+ }
23
+ const newValue = defaultValue();
24
+ this.set(key, newValue);
25
+ return newValue;
26
+ },
27
+ });
39
28
  // Array
40
- Object.defineProperties(Array.prototype, {
41
- remove: {
42
- enumerable: false,
43
- get() {
44
- return function remove(value) {
45
- return this.removeIndex(this.indexOf(value));
46
- };
47
- },
48
- },
49
- removeFn: {
50
- enumerable: false,
51
- get() {
52
- return function removeFn(predicate) {
53
- return this.removeIndex(this.findIndex(predicate));
54
- };
55
- },
56
- },
57
- removeIndex: {
58
- enumerable: false,
59
- get() {
60
- return function removeIndex(index) {
61
- if (!Number.isInteger(index)) {
62
- throw new TypeError(`Array.removeIndex(): index ${index} is not an integer`);
63
- }
64
- if (index < 0 || index >= this.length) {
65
- return None;
66
- }
67
- const removed = this.splice(index, 1).pop();
68
- return Option.from(removed);
69
- };
70
- },
71
- },
72
- insert: {
73
- enumerable: false,
74
- get() {
75
- return function insert(value, index) {
76
- if (!Number.isInteger(index)) {
77
- throw new TypeError(`Array.insert(): index ${index} is not an integer`);
78
- }
79
- if (index > this.length || index < 0) {
80
- throw new RangeError(`Array.insert: index ${index} out of bounds`);
81
- }
82
- this.splice(index, 0, value);
83
- return this;
84
- };
85
- },
86
- },
87
- insertOrdered: {
88
- enumerable: false,
89
- get() {
90
- return function insertOrdered(value, cmp, duplicates = "high") {
91
- return this.insert(value, (duplicates === "low" ? bisectLow : bisectHigh)(cmp, this, value));
92
- };
93
- },
94
- },
95
- present: {
96
- enumerable: false,
97
- get() {
98
- return function present() {
99
- return this.filter((value) => value !== undefined);
100
- };
101
- },
102
- },
103
- nonNullable: {
104
- enumerable: false,
105
- get() {
106
- return function nonNullable() {
107
- return this.filter((value) => value !== undefined);
108
- };
109
- },
110
- },
111
- get: {
112
- enumerable: false,
113
- get() {
114
- return function get(index) {
115
- return Object.get(this, index);
116
- };
117
- },
29
+ defineProperties(Array.prototype, {
30
+ remove(value) {
31
+ return this.removeIndex(this.indexOf(value));
32
+ },
33
+ removeFn(predicate) {
34
+ return this.removeIndex(this.findIndex(predicate));
35
+ },
36
+ removeIndex(index) {
37
+ if (!Number.isInteger(index)) {
38
+ throw new TypeError(`Array.removeIndex(): index ${index} is not an integer`);
39
+ }
40
+ if (index < 0 || index >= this.length) {
41
+ return None;
42
+ }
43
+ const removed = this.splice(index, 1).pop();
44
+ return Option.from(removed);
45
+ },
46
+ insert(value, index) {
47
+ if (!Number.isInteger(index)) {
48
+ throw new TypeError(`Array.insert(): index ${index} is not an integer`);
49
+ }
50
+ if (index > this.length || index < 0) {
51
+ throw new RangeError(`Array.insert: index ${index} out of bounds`);
52
+ }
53
+ this.splice(index, 0, value);
54
+ return this;
55
+ },
56
+ insertOrdered(value, cmp, duplicates = "high") {
57
+ return this.insert(value, (duplicates === "low" ? bisectLow : bisectHigh)(cmp, this, value));
58
+ },
59
+ present() {
60
+ return this.filter((value) => value !== undefined);
61
+ },
62
+ nonNullable() {
63
+ return this.filter((value) => value !== undefined);
64
+ },
65
+ get(index) {
66
+ return Object.get(this, index);
118
67
  },
119
68
  });
120
69
  // Iterator
121
- Iterator.empty = function empty() {
122
- return Iterator.from([]);
123
- };
124
- Iterator.concat = function concat(...inputs) {
125
- if (inputs.length === 0) {
126
- return Iterator.empty();
127
- }
128
- let iter = inputs[0][Symbol.iterator]();
129
- let index = 0;
130
- let done = false;
131
- return Iterator.from({
132
- next() {
133
- if (!done) {
134
- let result = iter.next();
135
- while (result.done === true && index < inputs.length - 1) {
136
- iter = inputs[++index][Symbol.iterator]();
137
- result = iter.next();
70
+ defineProperties(Iterator, {
71
+ empty() {
72
+ return Iterator.from([]);
73
+ },
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
+ }
138
92
  }
139
- if (result.done !== true) {
140
- return result;
93
+ done = true;
94
+ return { done: true, value: undefined };
95
+ },
96
+ });
97
+ },
98
+ });
99
+ defineProperties(Iterator.prototype, {
100
+ takeOne() {
101
+ const result = this.next();
102
+ return result.done === true ? None : Some(result.value);
103
+ },
104
+ takeWhile(predicate) {
105
+ const iter = this;
106
+ let index = 0;
107
+ let done = false;
108
+ return Iterator.from({
109
+ next() {
110
+ if (!done) {
111
+ const result = iter.next();
112
+ if (result.done === true) {
113
+ return result;
114
+ }
115
+ if (predicate(result.value, index++)) {
116
+ return result;
117
+ }
141
118
  }
142
- }
143
- done = true;
144
- return { done: true, value: undefined };
145
- },
146
- });
147
- };
148
- Iterator.prototype.takeOne = function takeOne() {
149
- const result = this.next();
150
- return result.done === true ? None : Some(result.value);
151
- };
152
- Iterator.prototype.takeWhile = function takeWhile(predicate) {
153
- const iter = this;
154
- let index = 0;
155
- let done = false;
156
- return Iterator.from({
157
- next() {
158
- if (!done) {
159
- const result = iter.next();
160
- if (result.done === true) {
161
- return result;
119
+ done = true;
120
+ return { done: true, value: undefined };
121
+ },
122
+ });
123
+ },
124
+ skipWhile(predicate) {
125
+ const iter = this;
126
+ let index = 0;
127
+ let skipped = false;
128
+ return Iterator.from({
129
+ next() {
130
+ if (skipped) {
131
+ return iter.next();
162
132
  }
163
- if (predicate(result.value, index++)) {
164
- return result;
133
+ while (true) {
134
+ const result = iter.next();
135
+ if (result.done === true) {
136
+ return result;
137
+ }
138
+ if (!predicate(result.value, index++)) {
139
+ skipped = true;
140
+ return result;
141
+ }
165
142
  }
143
+ },
144
+ });
145
+ },
146
+ findMap(mapFn) {
147
+ let index = 0;
148
+ while (true) {
149
+ const result = this.next();
150
+ if (result.done === true) {
151
+ return undefined;
166
152
  }
167
- done = true;
168
- return { done: true, value: undefined };
169
- },
170
- });
171
- };
172
- Iterator.prototype.skipWhile = function skipWhile(predicate) {
173
- const iter = this;
174
- let index = 0;
175
- let skipped = false;
176
- return Iterator.from({
177
- next() {
178
- if (skipped) {
179
- return iter.next();
153
+ const mapped = mapFn(result.value, index++);
154
+ if (mapped !== undefined) {
155
+ return mapped;
180
156
  }
181
- while (true) {
182
- const result = iter.next();
183
- if (result.done === true) {
184
- return result;
157
+ }
158
+ },
159
+ partition(size) {
160
+ const iter = this;
161
+ let done = false;
162
+ return Iterator.from({
163
+ next() {
164
+ if (done) {
165
+ return { done: true, value: undefined };
185
166
  }
186
- if (!predicate(result.value, index++)) {
187
- skipped = true;
188
- return result;
167
+ const part = [];
168
+ while (true) {
169
+ const result = iter.next();
170
+ if (result.done === true) {
171
+ done = true;
172
+ return part.length > 0
173
+ ? { done: false, value: part }
174
+ : { done: true, value: undefined };
175
+ }
176
+ part.push(result.value);
177
+ if (part.length === size) {
178
+ return { done: false, value: part };
179
+ }
189
180
  }
190
- }
191
- },
192
- });
193
- };
194
- Iterator.prototype.findMap = function findMap(mapFn) {
195
- let index = 0;
196
- while (true) {
197
- const result = this.next();
198
- if (result.done === true) {
199
- return undefined;
181
+ },
182
+ });
183
+ },
184
+ frontBiasedPartition(size) {
185
+ const input = this.toArray();
186
+ let inputPos = 0;
187
+ const firstLength = input.length % size;
188
+ const output = [];
189
+ if (firstLength > 0) {
190
+ output.push(input.slice(0, firstLength));
191
+ inputPos = firstLength;
200
192
  }
201
- const mapped = mapFn(result.value, index++);
202
- if (mapped !== undefined) {
203
- return mapped;
193
+ while (inputPos < input.length) {
194
+ output.push(input.slice(inputPos, inputPos + size));
195
+ inputPos += size;
204
196
  }
205
- }
206
- };
207
- Iterator.prototype.partition = function partition(size) {
208
- const iter = this;
209
- let done = false;
210
- return Iterator.from({
211
- next() {
212
- if (done) {
213
- return { done: true, value: undefined };
214
- }
215
- const part = [];
216
- while (true) {
217
- const result = iter.next();
218
- if (result.done === true) {
219
- done = true;
220
- return part.length > 0
221
- ? { done: false, value: part }
222
- : { done: true, value: undefined };
223
- }
224
- part.push(result.value);
225
- if (part.length === size) {
226
- return { done: false, value: part };
227
- }
228
- }
229
- },
230
- });
231
- };
232
- Iterator.prototype.frontBiasedPartition = function frontBiasedPartition(size) {
233
- const input = this.toArray();
234
- let inputPos = 0;
235
- const firstLength = input.length % size;
236
- const output = [];
237
- if (firstLength > 0) {
238
- output.push(input.slice(0, firstLength));
239
- inputPos = firstLength;
240
- }
241
- while (inputPos < input.length) {
242
- output.push(input.slice(inputPos, inputPos + size));
243
- inputPos += size;
244
- }
245
- assert(inputPos === input.length);
246
- return output;
247
- };
248
- Iterator.prototype.present = function present() {
249
- return Iterator.from(this.filter((item) => item !== undefined));
250
- };
251
- Iterator.prototype.nonNullable = function nonNullable() {
252
- return Iterator.from(this.filter((item) => item !== undefined && item !== null));
253
- };
197
+ assert(inputPos === input.length);
198
+ return output;
199
+ },
200
+ present() {
201
+ return Iterator.from(this.filter((item) => item !== undefined));
202
+ },
203
+ nonNullable() {
204
+ return Iterator.from(this.filter((item) => item !== undefined && item !== null));
205
+ },
206
+ });
254
207
  //# sourceMappingURL=index.js.map
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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"}
@@ -1,5 +1,5 @@
1
1
  import { test, expect, expectTypeOf } from "vitest";
2
- import { Order } from "@bodil/core";
2
+ import { order as Order } from "@bodil/core";
3
3
  import ".";
4
4
  import "@bodil/opt-vitest";
5
5
  const Iterator = globalThis.Iterator;
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@bodil/monkey-business",
3
- "version": "0.1.4",
3
+ "version": "0.2.0",
4
4
  "description": "Let's give JS core types a polish",
5
+ "homepage": "https://codeberg.org/bodil/monkey-business",
5
6
  "repository": {
6
7
  "type": "git",
7
- "url": "git+https://github.com/bodil/monkey-business.git"
8
+ "url": "ssh://git@codeberg.org/bodil/monkey-business.git"
8
9
  },
9
10
  "license": "EUPL-1.2+",
10
11
  "module": "dist/index.js",
@@ -25,21 +26,22 @@
25
26
  "access": "public"
26
27
  },
27
28
  "dependencies": {
28
- "@bodil/core": "^0.1.2",
29
- "@bodil/opt": "^0.2.6"
29
+ "@bodil/core": "^0.2.2",
30
+ "@types/define-properties": "^1.1.5",
31
+ "define-properties": "^1.2.1"
30
32
  },
31
33
  "devDependencies": {
32
34
  "@bodil/opt-vitest": "^1.0.0",
33
35
  "@eslint/eslintrc": "^3.3.1",
34
- "@eslint/js": "^9.24.0",
35
- "@typescript-eslint/eslint-plugin": "^8.29.1",
36
- "@typescript-eslint/parser": "^8.29.1",
37
- "eslint": "^9.24.0",
38
- "eslint-config-prettier": "^10.1.1",
39
- "eslint-plugin-jsdoc": "^50.6.9",
36
+ "@eslint/js": "^9.33.0",
37
+ "@typescript-eslint/eslint-plugin": "^8.39.1",
38
+ "@typescript-eslint/parser": "^8.39.1",
39
+ "eslint": "^9.33.0",
40
+ "eslint-config-prettier": "^10.1.8",
41
+ "eslint-plugin-jsdoc": "^53.0.0",
40
42
  "globals": "^15.15.0",
41
- "typescript": "^5.8.3",
42
- "vitest": "^3.1.1"
43
+ "typescript": "^5.9.2",
44
+ "vitest": "^3.2.4"
43
45
  },
44
46
  "scripts": {
45
47
  "build": "tsc",
package/src/index.test.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { test, expect, expectTypeOf } from "vitest";
2
- import type { Option } from "@bodil/opt";
3
- import { Order } from "@bodil/core";
2
+ import type { Option } from "@bodil/core";
3
+ import { order as Order } from "@bodil/core";
4
4
 
5
5
  import ".";
6
6
 
package/src/index.ts CHANGED
@@ -1,10 +1,11 @@
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/opt";
4
+ import { None, Option, Some } from "@bodil/core";
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
+ import defineProperties from "define-properties";
8
9
 
9
10
  declare global {
10
11
  interface ObjectConstructor {
@@ -25,10 +26,6 @@ declare global {
25
26
  ): Record<string, B>;
26
27
  }
27
28
 
28
- interface ErrorConstructor {
29
- isError(value: unknown): value is Error;
30
- }
31
-
32
29
  interface Map<K, V> {
33
30
  /**
34
31
  * If `key` exists in the map, return the value associated with it.
@@ -164,308 +161,253 @@ declare global {
164
161
 
165
162
  // Object
166
163
 
167
- Object.get = function get<O extends object, K extends keyof O>(obj: O, key: K): Option<O[K]> {
168
- return Object.hasOwn(obj, key) ? Some(obj[key]) : None;
169
- };
170
-
171
- Object.mapEntries = function mapEntries<A, B>(
172
- obj: Record<string, A>,
173
- fn: (entry: [key: string, value: A]) => [string, B]
174
- ): Record<string, B> {
175
- return Object.fromEntries(Object.entries(obj).map(fn));
176
- };
177
-
178
- // Error
179
-
180
- Error.isError ??= function isError(value: unknown): value is Error {
181
- if (!value || (typeof value !== "object" && typeof value !== "function")) {
182
- return false;
183
- }
184
-
185
- if (value instanceof Error || value instanceof DOMException) {
186
- return true;
187
- }
164
+ defineProperties(Object, {
165
+ get<O extends object, K extends keyof O>(obj: O, key: K): Option<O[K]> {
166
+ return Object.hasOwn(obj, key) ? Some(obj[key]) : None;
167
+ },
188
168
 
189
- try {
190
- const clone = structuredClone(value);
191
- return clone instanceof Error || clone instanceof DOMException;
192
- } catch (e) {
193
- return false;
194
- }
195
- };
169
+ mapEntries<A, B>(
170
+ obj: Record<string, A>,
171
+ fn: (entry: [key: string, value: A]) => [string, B]
172
+ ): Record<string, B> {
173
+ return Object.fromEntries(Object.entries(obj).map(fn));
174
+ },
175
+ });
196
176
 
197
177
  // Map
198
178
 
199
- Map.prototype.getOrSet = function getOrSet<K, V>(
200
- this: Map<K, NonNullable<V>>,
201
- key: K,
202
- defaultValue: () => NonNullable<V>
203
- ): V {
204
- const result = this.get(key);
205
- if (result !== undefined) {
206
- return result;
207
- }
208
- const newValue = defaultValue();
209
- this.set(key, newValue);
210
- return newValue;
211
- };
179
+ defineProperties(Map.prototype, {
180
+ getOrSet<K, V>(this: Map<K, NonNullable<V>>, key: K, defaultValue: () => NonNullable<V>): V {
181
+ const result = this.get(key);
182
+ if (result !== undefined) {
183
+ return result;
184
+ }
185
+ const newValue = defaultValue();
186
+ this.set(key, newValue);
187
+ return newValue;
188
+ },
189
+ });
212
190
 
213
191
  // Array
214
192
 
215
- Object.defineProperties(Array.prototype, {
216
- remove: {
217
- enumerable: false,
218
- get() {
219
- return function remove<T>(this: Array<T>, value: T): Option<T> {
220
- return this.removeIndex(this.indexOf(value));
221
- };
222
- },
193
+ defineProperties(Array.prototype, {
194
+ remove<T>(this: Array<T>, value: T): Option<T> {
195
+ return this.removeIndex(this.indexOf(value));
223
196
  },
224
- removeFn: {
225
- enumerable: false,
226
- get() {
227
- return function removeFn<T>(
228
- this: Array<T>,
229
- predicate: (value: T, index: number, obj: Array<T>) => boolean
230
- ): Option<T> {
231
- return this.removeIndex(this.findIndex(predicate as () => boolean));
232
- };
233
- },
197
+
198
+ removeFn<T>(
199
+ this: Array<T>,
200
+ predicate: (value: T, index: number, obj: Array<T>) => boolean
201
+ ): Option<T> {
202
+ return this.removeIndex(this.findIndex(predicate as () => boolean));
234
203
  },
235
- removeIndex: {
236
- enumerable: false,
237
- get() {
238
- return function removeIndex<T>(this: Array<T>, index: number): Option<T> {
239
- if (!Number.isInteger(index)) {
240
- throw new TypeError(`Array.removeIndex(): index ${index} is not an integer`);
241
- }
242
- if (index < 0 || index >= this.length) {
243
- return None;
244
- }
245
- const removed = this.splice(index, 1).pop();
246
- return Option.from(removed);
247
- };
248
- },
204
+
205
+ removeIndex<T>(this: Array<T>, index: number): Option<T> {
206
+ if (!Number.isInteger(index)) {
207
+ throw new TypeError(`Array.removeIndex(): index ${index} is not an integer`);
208
+ }
209
+ if (index < 0 || index >= this.length) {
210
+ return None;
211
+ }
212
+ const removed = this.splice(index, 1).pop();
213
+ return Option.from(removed);
249
214
  },
250
- insert: {
251
- enumerable: false,
252
- get() {
253
- return function insert<T>(this: Array<T>, value: T, index: number): Array<T> {
254
- if (!Number.isInteger(index)) {
255
- throw new TypeError(`Array.insert(): index ${index} is not an integer`);
256
- }
257
- if (index > this.length || index < 0) {
258
- throw new RangeError(`Array.insert: index ${index} out of bounds`);
259
- }
260
- this.splice(index, 0, value);
261
- return this;
262
- };
263
- },
215
+
216
+ insert<T>(this: Array<T>, value: T, index: number): Array<T> {
217
+ if (!Number.isInteger(index)) {
218
+ throw new TypeError(`Array.insert(): index ${index} is not an integer`);
219
+ }
220
+ if (index > this.length || index < 0) {
221
+ throw new RangeError(`Array.insert: index ${index} out of bounds`);
222
+ }
223
+ this.splice(index, 0, value);
224
+ return this;
264
225
  },
265
- insertOrdered: {
266
- enumerable: false,
267
- get() {
268
- return function insertOrdered<T>(
269
- this: Array<T>,
270
- value: T,
271
- cmp: OrderFn<T>,
272
- duplicates: "low" | "high" = "high"
273
- ): Array<T> {
274
- return this.insert(
275
- value,
276
- (duplicates === "low" ? bisectLow : bisectHigh)(cmp, this, value)
277
- );
278
- };
279
- },
226
+
227
+ insertOrdered<T>(
228
+ this: Array<T>,
229
+ value: T,
230
+ cmp: OrderFn<T>,
231
+ duplicates: "low" | "high" = "high"
232
+ ): Array<T> {
233
+ return this.insert(
234
+ value,
235
+ (duplicates === "low" ? bisectLow : bisectHigh)(cmp, this, value)
236
+ );
280
237
  },
281
- present: {
282
- enumerable: false,
283
- get() {
284
- return function present<T>(this: Array<T>): Array<Present<T>> {
285
- return this.filter((value: T): value is Present<T> => value !== undefined);
286
- };
287
- },
238
+
239
+ present<T>(this: Array<T>): Array<Present<T>> {
240
+ return this.filter((value: T): value is Present<T> => value !== undefined);
288
241
  },
289
- nonNullable: {
290
- enumerable: false,
291
- get() {
292
- return function nonNullable<T>(this: Array<T>): Array<NonNullable<T>> {
293
- return this.filter((value: T): value is NonNullable<T> => value !== undefined);
294
- };
295
- },
242
+
243
+ nonNullable<T>(this: Array<T>): Array<NonNullable<T>> {
244
+ return this.filter((value: T): value is NonNullable<T> => value !== undefined);
296
245
  },
297
- get: {
298
- enumerable: false,
299
- get() {
300
- return function get<T>(this: Array<T>, index: number): Option<T> {
301
- return Object.get(this, index);
302
- };
303
- },
246
+
247
+ get<T>(this: Array<T>, index: number): Option<T> {
248
+ return Object.get(this, index);
304
249
  },
305
250
  });
306
251
 
307
252
  // Iterator
308
253
 
309
- Iterator.empty = function empty<T>(): IteratorObject<T> {
310
- return Iterator.from([]);
311
- };
254
+ defineProperties(Iterator, {
255
+ empty<T>(): IteratorObject<T> {
256
+ return Iterator.from([]);
257
+ },
312
258
 
313
- Iterator.concat = function concat<T>(...inputs: Array<Iterable<T>>): IteratorObject<T> {
314
- if (inputs.length === 0) {
315
- return Iterator.empty();
316
- }
317
- let iter: Iterator<T> = inputs[0][Symbol.iterator]();
318
- let index = 0;
319
- let done = false;
320
- return Iterator.from({
321
- next(): IteratorResult<T, undefined> {
322
- if (!done) {
323
- let result = iter.next();
324
- while (result.done === true && index < inputs.length - 1) {
325
- iter = inputs[++index][Symbol.iterator]();
326
- result = iter.next();
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
+ }
327
277
  }
328
- if (result.done !== true) {
329
- return result;
278
+ done = true;
279
+ return { done: true, value: undefined };
280
+ },
281
+ });
282
+ },
283
+ });
284
+
285
+ defineProperties(Iterator.prototype, {
286
+ takeOne<T>(this: Iterator<T>): Option<T> {
287
+ const result = this.next();
288
+ return result.done === true ? None : Some(result.value);
289
+ },
290
+
291
+ takeWhile<T>(
292
+ this: IteratorObject<T, undefined>,
293
+ predicate: (value: T, index: number) => boolean
294
+ ): IteratorObject<T, undefined> {
295
+ const iter = this;
296
+ let index = 0;
297
+ let done = false;
298
+ return Iterator.from<T>({
299
+ next(): IteratorResult<T, undefined> {
300
+ if (!done) {
301
+ const result = iter.next();
302
+ if (result.done === true) {
303
+ return result;
304
+ }
305
+ if (predicate(result.value, index++)) {
306
+ return result;
307
+ }
330
308
  }
331
- }
332
- done = true;
333
- return { done: true, value: undefined };
334
- },
335
- });
336
- };
337
-
338
- Iterator.prototype.takeOne = function takeOne<T>(this: Iterator<T>): Option<T> {
339
- const result = this.next();
340
- return result.done === true ? None : Some(result.value);
341
- };
342
-
343
- Iterator.prototype.takeWhile = function takeWhile<T>(
344
- this: IteratorObject<T, undefined>,
345
- predicate: (value: T, index: number) => boolean
346
- ): IteratorObject<T, undefined> {
347
- const iter = this;
348
- let index = 0;
349
- let done = false;
350
- return Iterator.from<T>({
351
- next(): IteratorResult<T, undefined> {
352
- if (!done) {
353
- const result = iter.next();
354
- if (result.done === true) {
355
- return result;
309
+ done = true;
310
+ return { done: true, value: undefined };
311
+ },
312
+ });
313
+ },
314
+
315
+ skipWhile<T>(
316
+ this: IteratorObject<T, undefined>,
317
+ predicate: (value: T, index: number) => boolean
318
+ ): IteratorObject<T, undefined> {
319
+ const iter = this;
320
+ let index = 0;
321
+ let skipped = false;
322
+ return Iterator.from<T>({
323
+ next(): IteratorResult<T, undefined> {
324
+ if (skipped) {
325
+ return iter.next();
356
326
  }
357
- if (predicate(result.value, index++)) {
358
- return result;
327
+ while (true) {
328
+ const result = iter.next();
329
+ if (result.done === true) {
330
+ return result;
331
+ }
332
+ if (!predicate(result.value, index++)) {
333
+ skipped = true;
334
+ return result;
335
+ }
359
336
  }
337
+ },
338
+ });
339
+ },
340
+
341
+ findMap<T, U>(
342
+ this: IteratorObject<T, undefined>,
343
+ mapFn: (value: T, index: number) => NonNullable<U> | undefined
344
+ ): NonNullable<U> | undefined {
345
+ let index = 0;
346
+ while (true) {
347
+ const result = this.next();
348
+ if (result.done === true) {
349
+ return undefined;
360
350
  }
361
- done = true;
362
- return { done: true, value: undefined };
363
- },
364
- });
365
- };
366
-
367
- Iterator.prototype.skipWhile = function skipWhile<T>(
368
- this: IteratorObject<T, undefined>,
369
- predicate: (value: T, index: number) => boolean
370
- ): IteratorObject<T, undefined> {
371
- const iter = this;
372
- let index = 0;
373
- let skipped = false;
374
- return Iterator.from<T>({
375
- next(): IteratorResult<T, undefined> {
376
- if (skipped) {
377
- return iter.next();
351
+ const mapped = mapFn(result.value, index++);
352
+ if (mapped !== undefined) {
353
+ return mapped;
378
354
  }
379
- while (true) {
380
- const result = iter.next();
381
- if (result.done === true) {
382
- return result;
355
+ }
356
+ },
357
+
358
+ partition<T>(
359
+ this: IteratorObject<T, undefined>,
360
+ size: number
361
+ ): IteratorObject<Array<T>, undefined> {
362
+ const iter = this;
363
+ let done = false;
364
+ return Iterator.from<Array<T>>({
365
+ next(): IteratorResult<Array<T>, undefined> {
366
+ if (done) {
367
+ return { done: true, value: undefined };
383
368
  }
384
- if (!predicate(result.value, index++)) {
385
- skipped = true;
386
- return result;
369
+ const part = [];
370
+ while (true) {
371
+ const result = iter.next();
372
+ if (result.done === true) {
373
+ done = true;
374
+ return part.length > 0
375
+ ? { done: false, value: part }
376
+ : { done: true, value: undefined };
377
+ }
378
+ part.push(result.value);
379
+ if (part.length === size) {
380
+ return { done: false, value: part };
381
+ }
387
382
  }
388
- }
389
- },
390
- });
391
- };
392
-
393
- Iterator.prototype.findMap = function findMap<T, U>(
394
- this: IteratorObject<T, undefined>,
395
- mapFn: (value: T, index: number) => NonNullable<U> | undefined
396
- ): NonNullable<U> | undefined {
397
- let index = 0;
398
- while (true) {
399
- const result = this.next();
400
- if (result.done === true) {
401
- return undefined;
383
+ },
384
+ });
385
+ },
386
+
387
+ frontBiasedPartition<T>(this: IteratorObject<T, undefined>, size: number): Array<Array<T>> {
388
+ const input = this.toArray();
389
+ let inputPos = 0;
390
+ const firstLength = input.length % size;
391
+ const output: Array<Array<T>> = [];
392
+ if (firstLength > 0) {
393
+ output.push(input.slice(0, firstLength));
394
+ inputPos = firstLength;
402
395
  }
403
- const mapped = mapFn(result.value, index++);
404
- if (mapped !== undefined) {
405
- return mapped;
396
+ while (inputPos < input.length) {
397
+ output.push(input.slice(inputPos, inputPos + size));
398
+ inputPos += size;
406
399
  }
407
- }
408
- };
409
-
410
- Iterator.prototype.partition = function partition<T>(
411
- this: IteratorObject<T, undefined>,
412
- size: number
413
- ): IteratorObject<Array<T>, undefined> {
414
- const iter = this;
415
- let done = false;
416
- return Iterator.from<Array<T>>({
417
- next(): IteratorResult<Array<T>, undefined> {
418
- if (done) {
419
- return { done: true, value: undefined };
420
- }
421
- const part = [];
422
- while (true) {
423
- const result = iter.next();
424
- if (result.done === true) {
425
- done = true;
426
- return part.length > 0
427
- ? { done: false, value: part }
428
- : { done: true, value: undefined };
429
- }
430
- part.push(result.value);
431
- if (part.length === size) {
432
- return { done: false, value: part };
433
- }
434
- }
435
- },
436
- });
437
- };
438
-
439
- Iterator.prototype.frontBiasedPartition = function frontBiasedPartition<T>(
440
- this: IteratorObject<T, undefined>,
441
- size: number
442
- ): Array<Array<T>> {
443
- const input = this.toArray();
444
- let inputPos = 0;
445
- const firstLength = input.length % size;
446
- const output: Array<Array<T>> = [];
447
- if (firstLength > 0) {
448
- output.push(input.slice(0, firstLength));
449
- inputPos = firstLength;
450
- }
451
- while (inputPos < input.length) {
452
- output.push(input.slice(inputPos, inputPos + size));
453
- inputPos += size;
454
- }
455
- assert(inputPos === input.length);
456
- return output;
457
- };
458
-
459
- Iterator.prototype.present = function present<T>(
460
- this: IteratorObject<T, undefined>
461
- ): IteratorObject<Present<T>, undefined> {
462
- return Iterator.from(this.filter((item): item is Present<T> => item !== undefined));
463
- };
464
-
465
- Iterator.prototype.nonNullable = function nonNullable<T>(
466
- this: IteratorObject<T, undefined>
467
- ): IteratorObject<NonNullable<T>, undefined> {
468
- return Iterator.from(
469
- this.filter((item): item is NonNullable<T> => item !== undefined && item !== null)
470
- );
471
- };
400
+ assert(inputPos === input.length);
401
+ return output;
402
+ },
403
+
404
+ present<T>(this: IteratorObject<T, undefined>): IteratorObject<Present<T>, undefined> {
405
+ return Iterator.from(this.filter((item): item is Present<T> => item !== undefined));
406
+ },
407
+
408
+ nonNullable<T>(this: IteratorObject<T, undefined>): IteratorObject<NonNullable<T>, undefined> {
409
+ return Iterator.from(
410
+ this.filter((item): item is NonNullable<T> => item !== undefined && item !== null)
411
+ );
412
+ },
413
+ });