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/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
- export let animationFrame = (period, delay = 0) => {
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
- throw new Error("Uncaught error as creating animation frame semantic.");
31
+ console.error(error);
30
32
  }
31
33
  });
32
34
  };
33
35
  ;
34
- export let attribute = (target) => {
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
- throw new Error("Uncaught error as creating attribute semantic.");
55
+ console.error(error);
54
56
  }
55
57
  });
56
58
  }
57
59
  throw new TypeError("Target must be an object.");
58
60
  };
59
- export let blob = (blob, chunk = 64n * 1024n) => {
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
- throw new Error("Uncaught error as creating blob semantic.");
128
+ console.error(error);
126
129
  }
127
130
  });
128
131
  };
129
- export let empty = () => {
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
- export let fill = (element, count) => {
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
- throw new Error("Uncaught error as creating fill semantic.");
402
+ console.error(error);
146
403
  }
147
404
  });
148
405
  }
149
406
  throw new TypeError("Invalid arguments.");
150
407
  };
151
408
  ;
152
- export let from = (iterable) => {
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
- throw new Error("Uncaught error as creating from semantic.");
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
- throw new Error("Uncaught error as creating from semantic.");
440
+ console.error(error);
184
441
  }
185
442
  });
186
443
  }
187
444
  throw new TypeError("Invalid arguments");
188
445
  };
189
- export let generate = (supplier, interrupt) => {
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
- throw new Error("Uncaught error as creating generate semantic.");
462
+ console.error(error);
205
463
  }
206
464
  });
207
465
  }
208
466
  throw new TypeError("Invalid arguments");
209
467
  };
210
- export let interval = (period, delay = 0) => {
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
- throw new Error("Uncaught error as creating interval semantic.");
501
+ console.error(error);
243
502
  }
244
503
  });
245
504
  }
246
505
  throw new TypeError("Invalid arguments.");
247
506
  };
248
- export let iterate = (generator) => {
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
- throw new Error("Uncaught error as creating iterate semantic.");
513
+ console.error(error);
255
514
  }
256
515
  }
257
516
  throw new TypeError("Invalid arguments.");
258
517
  };
259
- export let promise = (promise) => {
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
- throw new Error("Uncaught error as creating promise semantic.");
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
- export let range = (start, end, step = 1) => {
282
- if ((!isNumber(step) && !isBigInt(step)) || (isNumber(step) && useCompare(step, 0) === 0) || (isBigInt(step) && useCompare(step, 0n) === 0)) {
283
- throw new TypeError("Step must be numeric and cannot be zero.");
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
- for (let i = minimum; condition(i); i += limit) {
291
- let value = i;
292
- if (interrupt(value, BigInt(i))) {
545
+ let index = 0n;
546
+ for (let element of target) {
547
+ if (interrupt(element, index)) {
293
548
  break;
294
549
  }
295
- accept(value, BigInt(i));
550
+ accept(element, index);
551
+ index++;
296
552
  }
297
553
  }
298
554
  catch (error) {
299
- throw new Error("Uncaught error as creating range semantic.");
555
+ console.error(error);
300
556
  }
301
557
  });
302
558
  }
303
559
  throw new TypeError("Invalid arguments.");
304
560
  };
305
- export let websocket = (websocket) => {
306
- if (invalidate(websocket)) {
307
- throw new TypeError("WebSocket is invalid.");
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
- return new Semantic((accept, interrupt) => {
310
- try {
311
- let index = 0n;
312
- let stop = false;
313
- websocket.addEventListener("open", (event) => {
314
- if (stop || interrupt(event, index)) {
315
- stop = true;
316
- }
317
- else {
318
- accept(event, index);
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
- websocket.addEventListener("message", (event) => {
323
- if (stop || interrupt(event, index)) {
324
- stop = true;
325
- }
326
- else {
327
- accept(event, index);
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
- websocket.addEventListener("error", (event) => {
332
- if (stop || interrupt(event, index)) {
333
- stop = true;
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
- else {
336
- accept(event, index);
337
- index++;
622
+ catch (error) {
623
+ console.error(error);
338
624
  }
339
625
  });
340
- websocket.addEventListener("close", (event) => {
341
- if (stop || interrupt(event, index)) {
342
- stop = true;
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
- else {
345
- accept(event, index);
346
- index++;
645
+ catch (error) {
646
+ console.error(error);
347
647
  }
348
648
  });
349
649
  }
350
- catch (error) {
351
- throw new Error("Uncaught error as creating websocket semantic.");
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 "./collectable";
1
+ import type { Collectable, OrderedCollectable, Statistics, UnorderedCollectable, WindowCollectable } from "./semantic";
2
2
  import type { Collector } from "./collector";
3
- import type { Hashable } from "./hash";
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 isSemanticMap: (target: unknown) => target is SemanticMap<unknown, unknown>;
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;