semantic-typescript 0.4.1 → 0.5.3
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/collector.d.ts +3 -9
- package/dist/collector.js +3 -22
- package/dist/factory.d.ts +72 -14
- package/dist/factory.js +441 -71
- package/dist/guard.d.ts +6 -10
- package/dist/guard.js +21 -20
- package/dist/hash.d.ts +1 -2
- package/dist/hash.js +9 -15
- package/dist/hook.d.ts +5 -1
- package/dist/hook.js +72 -19
- package/dist/index.d.ts +0 -6
- package/dist/index.js +0 -6
- package/dist/main.d.ts +1 -0
- package/dist/main.js +4 -0
- package/dist/map.d.ts +4 -0
- package/dist/map.js +4 -6
- package/dist/node.d.ts +182 -0
- package/dist/node.js +918 -0
- package/dist/optional.d.ts +6 -3
- package/dist/optional.js +30 -8
- package/dist/semantic.d.ts +204 -4
- package/dist/semantic.js +1135 -13
- package/dist/set.js +1 -0
- package/dist/symbol.d.ts +1 -8
- package/dist/symbol.js +1 -8
- package/dist/tree.d.ts +82 -0
- package/dist/tree.js +257 -0
- package/dist/utility.d.ts +1 -1
- package/package.json +1 -1
- package/readme.md +492 -282
- package/dist/collectable.d.ts +0 -96
- package/dist/collectable.js +0 -554
- package/dist/statistics.d.ts +0 -97
- package/dist/statistics.js +0 -483
- package/dist/window.d.ts +0 -12
- package/dist/window.js +0 -72
package/dist/factory.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { isBigInt, isFunction, isIterable, isNumber, isObject, isPromise, isAsyncIterable } from "./guard";
|
|
2
|
-
import { useCompare, useTraverse } from "./hook";
|
|
1
|
+
import { isBigInt, isFunction, isIterable, isNumber, isObject, isPromise, isAsyncIterable, isString, isHTMLElemet } from "./guard";
|
|
2
|
+
import { useCompare, useToBigInt, useToNumber, useTraverse } from "./hook";
|
|
3
|
+
import { Optional } from "./optional";
|
|
3
4
|
import { Semantic } from "./semantic";
|
|
4
5
|
import { invalidate, validate } from "./utility";
|
|
5
|
-
|
|
6
|
+
;
|
|
7
|
+
export let useAnimationFrame = (period, delay = 0) => {
|
|
6
8
|
if (period <= 0 || !Number.isFinite(period) || delay < 0 || !Number.isFinite(delay)) {
|
|
7
9
|
throw new TypeError("Period must be positive finite number and delay must be non-negative finite number.");
|
|
8
10
|
}
|
|
@@ -26,12 +28,12 @@ export let animationFrame = (period, delay = 0) => {
|
|
|
26
28
|
};
|
|
27
29
|
}
|
|
28
30
|
catch (error) {
|
|
29
|
-
|
|
31
|
+
console.error(error);
|
|
30
32
|
}
|
|
31
33
|
});
|
|
32
34
|
};
|
|
33
35
|
;
|
|
34
|
-
export let
|
|
36
|
+
export let useAttribute = (target) => {
|
|
35
37
|
if (isObject(target)) {
|
|
36
38
|
return new Semantic((accept, interrupt) => {
|
|
37
39
|
try {
|
|
@@ -50,13 +52,14 @@ export let attribute = (target) => {
|
|
|
50
52
|
});
|
|
51
53
|
}
|
|
52
54
|
catch (error) {
|
|
53
|
-
|
|
55
|
+
console.error(error);
|
|
54
56
|
}
|
|
55
57
|
});
|
|
56
58
|
}
|
|
57
59
|
throw new TypeError("Target must be an object.");
|
|
58
60
|
};
|
|
59
|
-
|
|
61
|
+
;
|
|
62
|
+
export let useBlob = (blob, chunk = 64n * 1024n) => {
|
|
60
63
|
let size = Number(chunk);
|
|
61
64
|
if (size <= 0 || !Number.isSafeInteger(size)) {
|
|
62
65
|
throw new RangeError("Chunk size must be a safe positive integer.");
|
|
@@ -122,14 +125,268 @@ export let blob = (blob, chunk = 64n * 1024n) => {
|
|
|
122
125
|
})();
|
|
123
126
|
}
|
|
124
127
|
catch (error) {
|
|
125
|
-
|
|
128
|
+
console.error(error);
|
|
126
129
|
}
|
|
127
130
|
});
|
|
128
131
|
};
|
|
129
|
-
|
|
132
|
+
;
|
|
133
|
+
export let useDocument = (argument) => {
|
|
134
|
+
if (isString(argument)) {
|
|
135
|
+
let key = argument;
|
|
136
|
+
return new Semantic((accept, interrupt) => {
|
|
137
|
+
try {
|
|
138
|
+
let index = 0n;
|
|
139
|
+
let listener = (event) => {
|
|
140
|
+
if (interrupt(event, index)) {
|
|
141
|
+
window.document.addEventListener(key, listener);
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
accept(event, index);
|
|
145
|
+
index++;
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
window.document.addEventListener(key, listener);
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
console.error(error);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
if (isIterable(argument)) {
|
|
156
|
+
let keys = new Set(argument);
|
|
157
|
+
return new Semantic((accept, interrupt) => {
|
|
158
|
+
try {
|
|
159
|
+
let index = 0n;
|
|
160
|
+
for (let key of keys) {
|
|
161
|
+
if (isString(key)) {
|
|
162
|
+
let listener = (event) => {
|
|
163
|
+
if (interrupt(event, index)) {
|
|
164
|
+
window.document.addEventListener(key, listener);
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
accept(event, index);
|
|
168
|
+
index++;
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
window.document.addEventListener(key, listener);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
console.error(error);
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
throw new TypeError("Argument must be a string or an iterable of strings.");
|
|
181
|
+
};
|
|
182
|
+
;
|
|
183
|
+
export let useHTMLElement = (argument1, argument2) => {
|
|
184
|
+
if (isString(argument1)) {
|
|
185
|
+
let selector = argument1;
|
|
186
|
+
if (isString(argument2)) {
|
|
187
|
+
let key = argument2;
|
|
188
|
+
return new Semantic((accept, interrupt) => {
|
|
189
|
+
try {
|
|
190
|
+
let index = 0n;
|
|
191
|
+
let elements = window.document.querySelectorAll(selector);
|
|
192
|
+
for (let element of elements) {
|
|
193
|
+
if (validate(element)) {
|
|
194
|
+
let listener = (event) => {
|
|
195
|
+
if (interrupt(event, index)) {
|
|
196
|
+
element.removeEventListener(key, listener);
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
accept(event, index);
|
|
200
|
+
index++;
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
element.addEventListener(key, listener);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
catch (error) {
|
|
208
|
+
console.error(error);
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
if (isIterable(argument2)) {
|
|
213
|
+
let keys = new Set(argument2);
|
|
214
|
+
return new Semantic((accept, interrupt) => {
|
|
215
|
+
try {
|
|
216
|
+
let index = 0n;
|
|
217
|
+
let elements = window.document.querySelectorAll(selector);
|
|
218
|
+
for (let element of elements) {
|
|
219
|
+
for (let key of keys) {
|
|
220
|
+
if (isString(key)) {
|
|
221
|
+
let listener = (event) => {
|
|
222
|
+
if (interrupt(event, index)) {
|
|
223
|
+
element.removeEventListener(key, listener);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
accept(event, index);
|
|
227
|
+
index++;
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
element.addEventListener(key, listener);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
console.error(error);
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
if (isIterable(argument1)) {
|
|
242
|
+
let elementsOrSelectors = argument1;
|
|
243
|
+
if (isString(argument2)) {
|
|
244
|
+
let key = argument2;
|
|
245
|
+
return new Semantic((accept, interrupt) => {
|
|
246
|
+
try {
|
|
247
|
+
let index = 0n;
|
|
248
|
+
for (let elementOrSelector of elementsOrSelectors) {
|
|
249
|
+
if (isString(elementOrSelector)) {
|
|
250
|
+
let element = window.document.querySelector(elementOrSelector);
|
|
251
|
+
if (validate(element)) {
|
|
252
|
+
let listener = (event) => {
|
|
253
|
+
if (interrupt(event, index)) {
|
|
254
|
+
element.removeEventListener(key, listener);
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
accept(event, index);
|
|
258
|
+
index++;
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
element.addEventListener(key, listener);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
else if (isHTMLElemet(elementOrSelector)) {
|
|
265
|
+
let element = elementOrSelector;
|
|
266
|
+
let listener = (event) => {
|
|
267
|
+
if (interrupt(event, index)) {
|
|
268
|
+
element.removeEventListener(key, listener);
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
accept(event, index);
|
|
272
|
+
index++;
|
|
273
|
+
}
|
|
274
|
+
};
|
|
275
|
+
element.addEventListener(key, listener);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
catch (error) {
|
|
280
|
+
console.error(error);
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
if (isIterable(argument2)) {
|
|
285
|
+
let keys = argument2;
|
|
286
|
+
return new Semantic((accept, interrupt) => {
|
|
287
|
+
try {
|
|
288
|
+
let index = 0n;
|
|
289
|
+
for (let elementOrSelector of elementsOrSelectors) {
|
|
290
|
+
if (isString(elementOrSelector)) {
|
|
291
|
+
let element = window.document.querySelector(elementOrSelector);
|
|
292
|
+
if (validate(element)) {
|
|
293
|
+
for (let key of keys) {
|
|
294
|
+
if (isString(key)) {
|
|
295
|
+
let listener = (event) => {
|
|
296
|
+
if (interrupt(event, index)) {
|
|
297
|
+
element.removeEventListener(key, listener);
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
accept(event, index);
|
|
301
|
+
index++;
|
|
302
|
+
}
|
|
303
|
+
};
|
|
304
|
+
element.addEventListener(key, listener);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
else if (isHTMLElemet(elementOrSelector)) {
|
|
310
|
+
let element = elementOrSelector;
|
|
311
|
+
for (let key of keys) {
|
|
312
|
+
if (isString(key)) {
|
|
313
|
+
let listener = (event) => {
|
|
314
|
+
if (interrupt(event, index)) {
|
|
315
|
+
element.removeEventListener(key, listener);
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
accept(event, index);
|
|
319
|
+
index++;
|
|
320
|
+
}
|
|
321
|
+
};
|
|
322
|
+
element.addEventListener(key, listener);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
catch (error) {
|
|
329
|
+
console.error(error);
|
|
330
|
+
}
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
if (isHTMLElemet(argument1)) {
|
|
335
|
+
let element = argument1;
|
|
336
|
+
if (isString(argument2)) {
|
|
337
|
+
let key = argument2;
|
|
338
|
+
return new Semantic((accept, interrupt) => {
|
|
339
|
+
try {
|
|
340
|
+
let index = 0n;
|
|
341
|
+
let listener = (event) => {
|
|
342
|
+
if (interrupt(event, index)) {
|
|
343
|
+
element.removeEventListener(key, listener);
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
accept(event, index);
|
|
347
|
+
index++;
|
|
348
|
+
}
|
|
349
|
+
};
|
|
350
|
+
element.addEventListener(key, listener);
|
|
351
|
+
}
|
|
352
|
+
catch (error) {
|
|
353
|
+
console.error(error);
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
if (isIterable(argument2)) {
|
|
358
|
+
let keys = argument2;
|
|
359
|
+
return new Semantic((accept, interrupt) => {
|
|
360
|
+
try {
|
|
361
|
+
let index = 0n;
|
|
362
|
+
for (let key of keys) {
|
|
363
|
+
if (isString(key)) {
|
|
364
|
+
let listener = (event) => {
|
|
365
|
+
if (interrupt(event, index)) {
|
|
366
|
+
element.removeEventListener(key, listener);
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
accept(event, index);
|
|
370
|
+
index++;
|
|
371
|
+
}
|
|
372
|
+
};
|
|
373
|
+
element.addEventListener(key, listener);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
catch (error) {
|
|
378
|
+
console.error(error);
|
|
379
|
+
}
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
throw new TypeError("Invalid arguments.");
|
|
384
|
+
};
|
|
385
|
+
export let useEmpty = () => {
|
|
130
386
|
return new Semantic(() => { });
|
|
131
387
|
};
|
|
132
|
-
|
|
388
|
+
;
|
|
389
|
+
export let useFill = (element, count) => {
|
|
133
390
|
if (validate(element) && count > 0n) {
|
|
134
391
|
return new Semantic((accept, interrupt) => {
|
|
135
392
|
try {
|
|
@@ -142,14 +399,14 @@ export let fill = (element, count) => {
|
|
|
142
399
|
}
|
|
143
400
|
}
|
|
144
401
|
catch (error) {
|
|
145
|
-
|
|
402
|
+
console.error(error);
|
|
146
403
|
}
|
|
147
404
|
});
|
|
148
405
|
}
|
|
149
406
|
throw new TypeError("Invalid arguments.");
|
|
150
407
|
};
|
|
151
408
|
;
|
|
152
|
-
export let
|
|
409
|
+
export let useFrom = (iterable) => {
|
|
153
410
|
if (isIterable(iterable)) {
|
|
154
411
|
return new Semantic((accept, interrupt) => {
|
|
155
412
|
try {
|
|
@@ -163,7 +420,7 @@ export let from = (iterable) => {
|
|
|
163
420
|
}
|
|
164
421
|
}
|
|
165
422
|
catch (error) {
|
|
166
|
-
|
|
423
|
+
console.error(error);
|
|
167
424
|
}
|
|
168
425
|
});
|
|
169
426
|
}
|
|
@@ -180,13 +437,14 @@ export let from = (iterable) => {
|
|
|
180
437
|
}
|
|
181
438
|
}
|
|
182
439
|
catch (error) {
|
|
183
|
-
|
|
440
|
+
console.error(error);
|
|
184
441
|
}
|
|
185
442
|
});
|
|
186
443
|
}
|
|
187
444
|
throw new TypeError("Invalid arguments");
|
|
188
445
|
};
|
|
189
|
-
|
|
446
|
+
;
|
|
447
|
+
export let useGenerate = (supplier, interrupt) => {
|
|
190
448
|
if (isFunction(supplier) && isFunction(interrupt)) {
|
|
191
449
|
return new Semantic((accept, interrupt) => {
|
|
192
450
|
try {
|
|
@@ -201,13 +459,14 @@ export let generate = (supplier, interrupt) => {
|
|
|
201
459
|
}
|
|
202
460
|
}
|
|
203
461
|
catch (error) {
|
|
204
|
-
|
|
462
|
+
console.error(error);
|
|
205
463
|
}
|
|
206
464
|
});
|
|
207
465
|
}
|
|
208
466
|
throw new TypeError("Invalid arguments");
|
|
209
467
|
};
|
|
210
|
-
|
|
468
|
+
;
|
|
469
|
+
export let useInterval = (period, delay = 0) => {
|
|
211
470
|
if (period > 0 && delay >= 0) {
|
|
212
471
|
return new Semantic((accept, interrupt) => {
|
|
213
472
|
try {
|
|
@@ -239,24 +498,24 @@ export let interval = (period, delay = 0) => {
|
|
|
239
498
|
}
|
|
240
499
|
}
|
|
241
500
|
catch (error) {
|
|
242
|
-
|
|
501
|
+
console.error(error);
|
|
243
502
|
}
|
|
244
503
|
});
|
|
245
504
|
}
|
|
246
505
|
throw new TypeError("Invalid arguments.");
|
|
247
506
|
};
|
|
248
|
-
export let
|
|
507
|
+
export let useIterate = (generator) => {
|
|
249
508
|
if (isFunction(generator)) {
|
|
250
509
|
try {
|
|
251
510
|
return new Semantic(generator);
|
|
252
511
|
}
|
|
253
512
|
catch (error) {
|
|
254
|
-
|
|
513
|
+
console.error(error);
|
|
255
514
|
}
|
|
256
515
|
}
|
|
257
516
|
throw new TypeError("Invalid arguments.");
|
|
258
517
|
};
|
|
259
|
-
export let
|
|
518
|
+
export let usePromise = (promise) => {
|
|
260
519
|
if (isPromise(promise)) {
|
|
261
520
|
return new Semantic((accept, interrupt) => {
|
|
262
521
|
try {
|
|
@@ -270,7 +529,7 @@ export let promise = (promise) => {
|
|
|
270
529
|
});
|
|
271
530
|
}
|
|
272
531
|
catch (error) {
|
|
273
|
-
|
|
532
|
+
console.error(error);
|
|
274
533
|
}
|
|
275
534
|
});
|
|
276
535
|
}
|
|
@@ -278,77 +537,188 @@ export let promise = (promise) => {
|
|
|
278
537
|
throw new TypeError("Invalid arguments.");
|
|
279
538
|
}
|
|
280
539
|
};
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
}
|
|
285
|
-
if (isNumber(start) && isNumber(end)) {
|
|
286
|
-
let minimum = start, maximum = end, limit = Number(step);
|
|
287
|
-
let condition = limit > 0 ? (i) => i < maximum : (i) => i > maximum;
|
|
540
|
+
;
|
|
541
|
+
export let useOf = (...target) => {
|
|
542
|
+
if (Array.isArray(target)) {
|
|
288
543
|
return new Semantic((accept, interrupt) => {
|
|
289
544
|
try {
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
if (interrupt(
|
|
545
|
+
let index = 0n;
|
|
546
|
+
for (let element of target) {
|
|
547
|
+
if (interrupt(element, index)) {
|
|
293
548
|
break;
|
|
294
549
|
}
|
|
295
|
-
accept(
|
|
550
|
+
accept(element, index);
|
|
551
|
+
index++;
|
|
296
552
|
}
|
|
297
553
|
}
|
|
298
554
|
catch (error) {
|
|
299
|
-
|
|
555
|
+
console.error(error);
|
|
300
556
|
}
|
|
301
557
|
});
|
|
302
558
|
}
|
|
303
559
|
throw new TypeError("Invalid arguments.");
|
|
304
560
|
};
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
561
|
+
;
|
|
562
|
+
export let useRange = (start, end, step = (isNumber(start) && isNumber(end) ? 1 : 1n)) => {
|
|
563
|
+
if ((!isNumber(step) && !isBigInt(step)) || (isNumber(step) && useCompare(step, 0) === 0) || (isBigInt(step) && useCompare(step, 0n) === 0)) {
|
|
564
|
+
throw new TypeError("Step must be numeric and cannot be zero.");
|
|
308
565
|
}
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
accept(
|
|
566
|
+
if (isNumber(start) && isNumber(end)) {
|
|
567
|
+
let trusted = useToNumber(step);
|
|
568
|
+
return new Semantic((accept, interrupt) => {
|
|
569
|
+
try {
|
|
570
|
+
let index = 0n;
|
|
571
|
+
for (let i = start; i < end; i += trusted) {
|
|
572
|
+
if (interrupt(i, index)) {
|
|
573
|
+
break;
|
|
574
|
+
}
|
|
575
|
+
accept(i, index);
|
|
319
576
|
index++;
|
|
320
577
|
}
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
578
|
+
}
|
|
579
|
+
catch (error) {
|
|
580
|
+
console.error(error);
|
|
581
|
+
}
|
|
582
|
+
});
|
|
583
|
+
}
|
|
584
|
+
else if (isBigInt(start) && isBigInt(end)) {
|
|
585
|
+
let trusted = useToBigInt(step);
|
|
586
|
+
return new Semantic((accept, interrupt) => {
|
|
587
|
+
try {
|
|
588
|
+
let index = 0n;
|
|
589
|
+
for (let i = start; i < end; i += trusted) {
|
|
590
|
+
if (interrupt(i, index)) {
|
|
591
|
+
break;
|
|
592
|
+
}
|
|
593
|
+
accept(i, index);
|
|
328
594
|
index++;
|
|
329
595
|
}
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
596
|
+
}
|
|
597
|
+
catch (error) {
|
|
598
|
+
console.error(error);
|
|
599
|
+
}
|
|
600
|
+
});
|
|
601
|
+
}
|
|
602
|
+
throw new TypeError("Invalid arguments.");
|
|
603
|
+
};
|
|
604
|
+
;
|
|
605
|
+
export let useWebSocket = (argument1, argument2) => {
|
|
606
|
+
if (isObject(argument1) && isFunction(Reflect.get(argument1, "addEventListener"))) {
|
|
607
|
+
let websocket = argument1;
|
|
608
|
+
if (isString(argument2)) {
|
|
609
|
+
let key = argument2;
|
|
610
|
+
return new Semantic((accept, interrupt) => {
|
|
611
|
+
try {
|
|
612
|
+
let listener = (event) => {
|
|
613
|
+
if (interrupt(event, 0n)) {
|
|
614
|
+
websocket.removeEventListener(key, listener);
|
|
615
|
+
}
|
|
616
|
+
else {
|
|
617
|
+
accept(event, 0n);
|
|
618
|
+
}
|
|
619
|
+
};
|
|
620
|
+
websocket.addEventListener(key, listener);
|
|
334
621
|
}
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
index++;
|
|
622
|
+
catch (error) {
|
|
623
|
+
console.error(error);
|
|
338
624
|
}
|
|
339
625
|
});
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
626
|
+
}
|
|
627
|
+
else if (isIterable(argument2)) {
|
|
628
|
+
let keys = argument2;
|
|
629
|
+
return new Semantic((accept, interrupt) => {
|
|
630
|
+
try {
|
|
631
|
+
for (let key of keys) {
|
|
632
|
+
if (isString(key)) {
|
|
633
|
+
let listener = (event) => {
|
|
634
|
+
if (interrupt(event, 0n)) {
|
|
635
|
+
websocket.removeEventListener(key, listener);
|
|
636
|
+
}
|
|
637
|
+
else {
|
|
638
|
+
accept(event, 0n);
|
|
639
|
+
}
|
|
640
|
+
};
|
|
641
|
+
websocket.addEventListener(key, listener);
|
|
642
|
+
}
|
|
643
|
+
}
|
|
343
644
|
}
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
index++;
|
|
645
|
+
catch (error) {
|
|
646
|
+
console.error(error);
|
|
347
647
|
}
|
|
348
648
|
});
|
|
349
649
|
}
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
650
|
+
let keys = ["open", "message", "close", "error"];
|
|
651
|
+
return new Semantic((accept, interrupt) => {
|
|
652
|
+
try {
|
|
653
|
+
for (let key of keys) {
|
|
654
|
+
let listener = (event) => {
|
|
655
|
+
if (interrupt(event, 0n)) {
|
|
656
|
+
websocket.removeEventListener(key, listener);
|
|
657
|
+
}
|
|
658
|
+
else {
|
|
659
|
+
accept(event, 0n);
|
|
660
|
+
}
|
|
661
|
+
};
|
|
662
|
+
websocket.addEventListener(key, listener);
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
catch (error) {
|
|
666
|
+
console.error(error);
|
|
667
|
+
}
|
|
668
|
+
});
|
|
669
|
+
}
|
|
670
|
+
throw new TypeError("Invalid arguments.");
|
|
671
|
+
};
|
|
672
|
+
;
|
|
673
|
+
export let useWindow = (argument1) => {
|
|
674
|
+
if (isString(argument1)) {
|
|
675
|
+
let key = argument1;
|
|
676
|
+
return new Semantic((accept, interrupt) => {
|
|
677
|
+
try {
|
|
678
|
+
let listener = (event) => {
|
|
679
|
+
if (interrupt(event, 0n)) {
|
|
680
|
+
window.removeEventListener(key, listener);
|
|
681
|
+
}
|
|
682
|
+
else {
|
|
683
|
+
console.log(event.type, event);
|
|
684
|
+
accept(event, 0n);
|
|
685
|
+
}
|
|
686
|
+
};
|
|
687
|
+
window.addEventListener(key, listener);
|
|
688
|
+
}
|
|
689
|
+
catch (error) {
|
|
690
|
+
console.error(error);
|
|
691
|
+
}
|
|
692
|
+
});
|
|
693
|
+
}
|
|
694
|
+
else if (isIterable(argument1)) {
|
|
695
|
+
let keys = new Set(argument1);
|
|
696
|
+
return new Semantic((accept, interrupt) => {
|
|
697
|
+
try {
|
|
698
|
+
let index = 0n;
|
|
699
|
+
for (let key of keys) {
|
|
700
|
+
if (isString(key)) {
|
|
701
|
+
let listener = function (event) {
|
|
702
|
+
if (interrupt(event, index)) {
|
|
703
|
+
console.log("Terminal", performance.now());
|
|
704
|
+
window.removeEventListener(key, listener);
|
|
705
|
+
}
|
|
706
|
+
else {
|
|
707
|
+
console.log("accept", performance.now());
|
|
708
|
+
accept(event, index);
|
|
709
|
+
}
|
|
710
|
+
};
|
|
711
|
+
index++;
|
|
712
|
+
window.addEventListener(key, listener);
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
catch (error) {
|
|
717
|
+
console.error(error);
|
|
718
|
+
}
|
|
719
|
+
});
|
|
720
|
+
}
|
|
721
|
+
throw new TypeError("Invalid arguments.");
|
|
354
722
|
};
|
|
723
|
+
export let useNullable = (target) => Optional.ofNullable(target);
|
|
724
|
+
export let useNonNull = (target) => Optional.ofNonNull(target);
|
package/dist/guard.d.ts
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import type { Collectable, OrderedCollectable, UnorderedCollectable } from "./
|
|
1
|
+
import type { Collectable, OrderedCollectable, Statistics, UnorderedCollectable, WindowCollectable } from "./semantic";
|
|
2
2
|
import type { Collector } from "./collector";
|
|
3
|
-
import type {
|
|
4
|
-
import type { HashMap, SemanticMap } from "./map";
|
|
3
|
+
import type { Optional } from "./optional";
|
|
5
4
|
import type { Semantic } from "./semantic";
|
|
6
|
-
import type { HashSet } from "./set";
|
|
7
|
-
import type { Statistics } from "./statistics";
|
|
8
5
|
import type { AsyncFunction, MaybePrimitive, Primitive } from "./utility";
|
|
9
|
-
import type { WindowCollectable } from "./window";
|
|
10
6
|
export declare let isBoolean: (target: unknown) => target is boolean;
|
|
11
7
|
export declare let isString: (target: unknown) => target is string;
|
|
12
8
|
export declare let isNumber: (target: unknown) => target is number;
|
|
@@ -26,11 +22,11 @@ export declare let isUnorderedCollectable: (target: unknown) => target is Unorde
|
|
|
26
22
|
export declare let isStatistics: (target: unknown) => target is Statistics<unknown, number | bigint>;
|
|
27
23
|
export declare let isNumericStatistics: (target: unknown) => target is Statistics<unknown, number | bigint>;
|
|
28
24
|
export declare let isBigIntStatistics: (target: unknown) => target is Statistics<unknown, number | bigint>;
|
|
29
|
-
export declare let
|
|
30
|
-
export declare let isHashable: (target: unknown) => target is Hashable;
|
|
31
|
-
export declare let isHashMap: (target: unknown) => target is HashMap<unknown, unknown>;
|
|
32
|
-
export declare let isHashSet: (target: unknown) => target is HashSet<unknown>;
|
|
25
|
+
export declare let isOptional: <T>(target: unknown) => target is Optional<T>;
|
|
33
26
|
export declare let isPromise: (target: unknown) => target is Promise<unknown>;
|
|
34
27
|
export declare let isAsyncFunction: (target: unknown) => target is AsyncFunction;
|
|
35
28
|
export declare let isGeneratorFunction: (target: unknown) => target is Generator<unknown, unknown, unknown>;
|
|
36
29
|
export declare let isAsyncGeneratorFunction: (target: unknown) => target is AsyncGenerator<unknown, unknown, unknown>;
|
|
30
|
+
export declare let isWindow: (target: unknown) => target is Window;
|
|
31
|
+
export declare let isDocument: (target: unknown) => target is Document;
|
|
32
|
+
export declare let isHTMLElemet: (target: unknown) => target is HTMLElement;
|