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.
@@ -1,8 +1,6 @@
1
- import type { Collectable } from "./collectable";
2
- import { HashMap } from "./map";
1
+ import { Collectable } from "./semantic";
3
2
  import { Optional } from "./optional";
4
3
  import type { Semantic } from "./semantic";
5
- import { HashSet } from "./set";
6
4
  import { type BiFunctional, type BiPredicate, type Functional, type Predicate, type Supplier, type TriFunctional, type Generator, type TriPredicate, type Consumer, type BiConsumer, type Comparator } from "./utility";
7
5
  export declare class Collector<E, A, R> {
8
6
  protected identity: Supplier<A>;
@@ -94,6 +92,7 @@ interface UseGroup {
94
92
  }
95
93
  export declare let useGroup: UseGroup;
96
94
  interface UseGroupBy {
95
+ <E, K>(keyExtractor: Functional<E, K>): Collector<E, Map<K, E[]>, Map<K, E[]>>;
97
96
  <E, K, V>(keyExtractor: Functional<E, K>, valueExtractor: Functional<E, V>): Collector<E, Map<K, V[]>, Map<K, V[]>>;
98
97
  <E, K, V>(keyExtractor: BiFunctional<E, bigint, K>, valueExtractor: BiFunctional<E, bigint, V>): Collector<E, Map<K, V[]>, Map<K, V[]>>;
99
98
  }
@@ -131,17 +130,12 @@ interface UseReduce {
131
130
  export declare let useReduce: UseReduce;
132
131
  export declare let useToArray: <E>() => Collector<E, E[], E[]>;
133
132
  interface UseToMap {
133
+ <E, K>(keyExtractor: Functional<E, K>): Collector<E, Map<K, E>, Map<K, E>>;
134
134
  <E, K, V>(keyExtractor: Functional<E, K>, valueExtractor: Functional<E, V>): Collector<E, Map<K, V>, Map<K, V>>;
135
135
  <E, K, V>(keyExtractor: BiFunctional<E, bigint, K>, valueExtractor: BiFunctional<E, bigint, V>): Collector<E, Map<K, V>, Map<K, V>>;
136
136
  }
137
137
  export declare let useToMap: UseToMap;
138
- interface UseToHashMap {
139
- <E, K, V>(keyExtractor: Functional<E, K>, valueExtractor: Functional<E, V>): Collector<E, HashMap<K, V>, HashMap<K, V>>;
140
- <E, K, V>(keyExtractor: BiFunctional<E, bigint, K>, valueExtractor: BiFunctional<E, bigint, V>): Collector<E, HashMap<K, V>, HashMap<K, V>>;
141
- }
142
- export declare let useToHashMap: UseToHashMap;
143
138
  export declare let useToSet: <E>() => Collector<E, Set<E>, Set<E>>;
144
- export declare let useToHashSet: <E>() => Collector<E, HashSet<E>, HashSet<E>>;
145
139
  interface UseWrite {
146
140
  <E, S = string>(stream: WritableStream<S>): Collector<E, Promise<WritableStream<S>>, Promise<WritableStream<S>>>;
147
141
  <E, S = string>(stream: WritableStream<S>, accumulator: BiFunctional<WritableStream<S>, E, WritableStream<S>>): Collector<E, Promise<WritableStream<S>>, Promise<WritableStream<S>>>;
package/dist/collector.js CHANGED
@@ -1,8 +1,7 @@
1
+ import { Collectable } from "./semantic";
1
2
  import { isBigInt, isBoolean, isCollectable, isFunction, isIterable, isNumber, isObject, isSemantic, isString } from "./guard";
2
3
  import { useCompare, useToBigInt, useToNumber } from "./hook";
3
- import { HashMap } from "./map";
4
4
  import { Optional } from "./optional";
5
- import { HashSet } from "./set";
6
5
  import { CollectableSymbol } from "./symbol";
7
6
  import { validate, invalidate } from "./utility";
8
7
  export class Collector {
@@ -297,7 +296,7 @@ export let useGroup = (classifier) => {
297
296
  }
298
297
  throw new TypeError("Classifier must be a function.");
299
298
  };
300
- export let useGroupBy = (keyExtractor, valueExtractor) => {
299
+ export let useGroupBy = (keyExtractor, valueExtractor = (element) => element) => {
301
300
  if (isFunction(keyExtractor) && isFunction(valueExtractor)) {
302
301
  return Collector.full(() => new Map(), (accumulator, element, index) => {
303
302
  let key = keyExtractor(element, index);
@@ -440,7 +439,7 @@ export let useToArray = () => {
440
439
  }, (array) => array);
441
440
  };
442
441
  ;
443
- export let useToMap = (keyExtractor, valueExtractor) => {
442
+ export let useToMap = (keyExtractor, valueExtractor = (element) => element) => {
444
443
  if (isFunction(keyExtractor) && isFunction(valueExtractor)) {
445
444
  return Collector.full(() => new Map(), (map, element, index) => {
446
445
  let key = keyExtractor(element, index);
@@ -451,30 +450,12 @@ export let useToMap = (keyExtractor, valueExtractor) => {
451
450
  }
452
451
  throw new TypeError("Key extractor and value extractor must be functions.");
453
452
  };
454
- ;
455
- export let useToHashMap = (keyExtractor, valueExtractor) => {
456
- if (isFunction(keyExtractor) && isFunction(valueExtractor)) {
457
- return Collector.full(() => new HashMap(), (map, element, index) => {
458
- let key = keyExtractor(element, index);
459
- let value = valueExtractor(element, index);
460
- map.set(key, value);
461
- return map;
462
- }, (map) => map);
463
- }
464
- throw new TypeError("Key extractor and value extractor must be functions.");
465
- };
466
453
  export let useToSet = () => {
467
454
  return Collector.full(() => new Set(), (set, element) => {
468
455
  set.add(element);
469
456
  return set;
470
457
  }, (set) => set);
471
458
  };
472
- export let useToHashSet = () => {
473
- return Collector.full(() => new HashSet(), (set, element) => {
474
- set.add(element);
475
- return set;
476
- }, (set) => set);
477
- };
478
459
  ;
479
460
  export let useWrite = (argument1, argument2) => {
480
461
  if (isObject(argument1)) {
package/dist/factory.d.ts CHANGED
@@ -1,23 +1,81 @@
1
+ import { Optional } from "./optional";
1
2
  import { Semantic } from "./semantic";
2
- import type { BiFunctional, BiPredicate, Functional, Predicate, Supplier, TriFunctional, Generator } from "./utility";
3
- export declare let animationFrame: Functional<number, Semantic<number>> & BiFunctional<number, number, Semantic<number>>;
3
+ import type { BiPredicate, Predicate, Supplier, Generator, MaybeInvalid } from "./utility";
4
+ interface UseAnimationFrame {
5
+ (period: number): Semantic<number>;
6
+ (period: number, delay: number): Semantic<number>;
7
+ }
8
+ export declare let useAnimationFrame: UseAnimationFrame;
4
9
  interface Attribute<T> {
5
10
  key: keyof T;
6
11
  value: T[keyof T];
7
12
  }
8
- export declare let attribute: <T extends object>(target: T) => Semantic<Attribute<T>>;
9
- export declare let blob: Functional<Blob, Semantic<Uint8Array>> & BiFunctional<Blob, bigint, Semantic<Uint8Array>>;
10
- export declare let empty: <E>() => Semantic<E>;
11
- export declare let fill: (<E>(element: E, count: bigint) => Semantic<E>) & (<E>(supplier: Supplier<E>, count: bigint) => Semantic<E>);
12
- export interface From {
13
+ export declare let useAttribute: <T extends object>(target: T) => Semantic<Attribute<T>>;
14
+ interface UseBlob {
15
+ (blob: Blob): Semantic<Uint8Array>;
16
+ (blob: Blob, chunk: bigint): Semantic<Uint8Array>;
17
+ }
18
+ export declare let useBlob: UseBlob;
19
+ interface UseDocument {
20
+ <K extends keyof DocumentEventMap>(key: K): Semantic<DocumentEventMap[K extends keyof DocumentEventMap ? K : never]>;
21
+ <K extends keyof DocumentEventMap>(key: Iterable<K>): Semantic<DocumentEventMap[K extends keyof DocumentEventMap ? K : never]>;
22
+ }
23
+ export declare let useDocument: UseDocument;
24
+ interface UseHTMLElement {
25
+ <E extends HTMLElement, K extends keyof HTMLElementEventMap>(element: E, key: K): Semantic<HTMLElementEventMap[K extends keyof HTMLElementEventMap ? K : never]>;
26
+ <E extends HTMLElement, K extends keyof HTMLElementEventMap>(element: E, keys: Iterable<K>): Semantic<HTMLElementEventMap[K extends keyof HTMLElementEventMap ? K : never]>;
27
+ <E extends HTMLElement, K extends keyof HTMLElementEventMap>(elements: Iterable<E>, key: K): Semantic<HTMLElementEventMap[K extends keyof HTMLElementEventMap ? K : never]>;
28
+ <E extends HTMLElement, K extends keyof HTMLElementEventMap>(elements: Iterable<E>, keys: Iterable<K>): Semantic<HTMLElementEventMap[K extends keyof HTMLElementEventMap ? K : never]>;
29
+ <S extends keyof HTMLElementTagNameMap, K extends keyof HTMLElementEventMap>(selector: S, key: K): Semantic<HTMLElementEventMap[K extends keyof HTMLElementEventMap ? K : never]>;
30
+ <S extends keyof HTMLElementTagNameMap, K extends keyof HTMLElementEventMap>(selector: S, keys: Iterable<K>): Semantic<HTMLElementEventMap[K extends keyof HTMLElementEventMap ? K : never]>;
31
+ <S extends keyof HTMLElementTagNameMap, K extends keyof HTMLElementEventMap>(selectors: Iterable<S>, key: K): Semantic<HTMLElementEventMap[K extends keyof HTMLElementEventMap ? K : never]>;
32
+ <S extends keyof HTMLElementTagNameMap, K extends keyof HTMLElementEventMap>(selectors: Iterable<S>, keys: Iterable<K>): Semantic<HTMLElementEventMap[K extends keyof HTMLElementEventMap ? K : never]>;
33
+ }
34
+ export declare let useHTMLElement: UseHTMLElement;
35
+ export declare let useEmpty: <E>() => Semantic<E>;
36
+ interface UseFill {
37
+ <E>(element: E, count: bigint): Semantic<E>;
38
+ <E>(supplier: Supplier<E>, count: bigint): Semantic<E>;
39
+ }
40
+ export declare let useFill: UseFill;
41
+ export interface UseFrom {
13
42
  <E>(iterable: Iterable<E>): Semantic<E>;
14
43
  <E>(iterable: AsyncIterable<E>): Semantic<E>;
15
44
  }
16
- export declare let from: From;
17
- export declare let generate: (<E>(supplier: Supplier<E>, interrupt: Predicate<E>) => Semantic<E>) & (<E>(supplier: Supplier<E>, interrupt: BiPredicate<E, bigint>) => Semantic<E>);
18
- export declare let interval: Functional<number, Semantic<number>> & BiFunctional<number, number, Semantic<number>>;
19
- export declare let iterate: <E>(generator: Generator<E>) => Semantic<E>;
20
- export declare let promise: (<T>(promise: Promise<T>) => Semantic<T>);
21
- export declare let range: BiFunctional<number, number, Semantic<number>> & TriFunctional<number, number, number, Semantic<number>>;
22
- export declare let websocket: Functional<WebSocket, Semantic<MessageEvent | CloseEvent | Event>>;
45
+ export declare let useFrom: UseFrom;
46
+ interface UseGenerate {
47
+ <E>(supplier: Supplier<E>, interrupt: Predicate<E>): Semantic<E>;
48
+ <E>(supplier: Supplier<E>, interrupt: BiPredicate<E, bigint>): Semantic<E>;
49
+ }
50
+ export declare let useGenerate: UseGenerate;
51
+ interface UseInterval {
52
+ (period: number): Semantic<number>;
53
+ (period: number, delay: number): Semantic<number>;
54
+ }
55
+ export declare let useInterval: UseInterval;
56
+ export declare let useIterate: <E>(generator: Generator<E>) => Semantic<E>;
57
+ export declare let usePromise: (<T>(promise: Promise<T>) => Semantic<T>);
58
+ interface UseOf {
59
+ <E>(target: E): Semantic<E>;
60
+ <E>(target: Iterable<E>): Semantic<E>;
61
+ }
62
+ export declare let useOf: UseOf;
63
+ interface UseRange {
64
+ <N extends number | bigint>(start: N, end: N): Semantic<N extends number ? number : (N extends bigint ? bigint : never)>;
65
+ <N extends number | bigint>(start: N, end: N, step: N): Semantic<N extends number ? number : (N extends bigint ? bigint : never)>;
66
+ }
67
+ export declare let useRange: UseRange;
68
+ interface UseWebSocket {
69
+ (websocket: WebSocket): Semantic<WebSocketEventMap[keyof WebSocketEventMap]>;
70
+ <K extends keyof WebSocketEventMap>(websocket: WebSocket, key: K): Semantic<WebSocketEventMap[K extends keyof WebSocketEventMap ? K : never]>;
71
+ <K extends keyof WebSocketEventMap>(websocket: WebSocket, keys: Iterable<K>): Semantic<WebSocketEventMap[K extends keyof WebSocketEventMap ? K : never]>;
72
+ }
73
+ export declare let useWebSocket: UseWebSocket;
74
+ interface UseWindow {
75
+ <K extends keyof WindowEventMap>(key: K): Semantic<WindowEventMap[K extends keyof WindowEventMap ? K : never]>;
76
+ <K extends keyof WindowEventMap>(key: Iterable<K>): Semantic<WindowEventMap[K extends keyof WindowEventMap ? K : never]>;
77
+ }
78
+ export declare let useWindow: UseWindow;
79
+ export declare let useNullable: <T>(target: MaybeInvalid<T>) => Optional<T>;
80
+ export declare let useNonNull: <T>(target: T) => Optional<T>;
23
81
  export {};