semantic-typescript 0.3.8 → 0.5.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/factory.d.ts CHANGED
@@ -1,49 +1,37 @@
1
1
  import { Semantic } from "./semantic";
2
- import type { BiPredicate, Functional, Predicate, Supplier, Generator } from "./utility";
3
- interface AnimationFrameFunction {
4
- (period: number): Semantic<number>;
5
- (period: number, delay: number): Semantic<number>;
6
- }
7
- export declare let animationFrame: AnimationFrameFunction;
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>>;
8
4
  interface Attribute<T> {
9
5
  key: keyof T;
10
6
  value: T[keyof T];
11
7
  }
12
8
  export declare let attribute: <T extends object>(target: T) => Semantic<Attribute<T>>;
13
- interface BlobFunction {
14
- (blob: Blob): Semantic<Uint8Array>;
15
- (blob: Blob, chunk: bigint): Semantic<Uint8Array>;
16
- }
17
- export declare let blob: BlobFunction;
9
+ export declare let blob: Functional<Blob, Semantic<Uint8Array>> & BiFunctional<Blob, bigint, Semantic<Uint8Array>>;
18
10
  export declare let empty: <E>() => Semantic<E>;
19
- interface FillFunction {
20
- <E>(element: E, count: bigint): Semantic<E>;
21
- <E>(supplier: Supplier<E>, count: bigint): Semantic<E>;
22
- }
23
- export declare let fill: FillFunction;
24
- export interface FromFunction {
11
+ type KeyOfEventMap<T extends Window | Document | HTMLElement> = T extends Window ? keyof WindowEventMap : (T extends Document ? keyof DocumentEventMap : (T extends HTMLElement ? keyof HTMLElementEventMap : never));
12
+ type ValueOfEventMap<T extends Window | Document | HTMLElement, K extends KeyOfEventMap<T>> = T extends Window ? (K extends keyof WindowEventMap ? WindowEventMap[K] : never) : (T extends Document ? (K extends keyof DocumentEventMap ? DocumentEventMap[K] : never) : (T extends HTMLElement ? (K extends keyof HTMLElementEventMap ? HTMLElementEventMap[K] : never) : never));
13
+ interface EventFunction {
14
+ <E extends Window, K extends KeyOfEventMap<E>, V = ValueOfEventMap<E, K>>(target: E, key: K): Semantic<V>;
15
+ <E extends Window, K extends KeyOfEventMap<E>, V = ValueOfEventMap<E, K>>(target: E, key: Iterable<K>): Semantic<V>;
16
+ <E extends Document, K extends KeyOfEventMap<E>, V = ValueOfEventMap<E, K>>(target: E, key: K): Semantic<V>;
17
+ <E extends Document, K extends KeyOfEventMap<E>, V = ValueOfEventMap<E, K>>(target: E, key: Iterable<K>): Semantic<V>;
18
+ <E extends Document, K extends KeyOfEventMap<E>, V = ValueOfEventMap<E, K>>(target: E, key: Iterable<K>): Semantic<V>;
19
+ <E extends HTMLElement, K extends KeyOfEventMap<E>, V = ValueOfEventMap<E, K>>(target: E, key: K): Semantic<V>;
20
+ <E extends HTMLElement, K extends KeyOfEventMap<E>, V = ValueOfEventMap<E, K>>(target: E, key: Iterable<K>): Semantic<V>;
21
+ <E extends HTMLElement, K extends KeyOfEventMap<E>, V = ValueOfEventMap<E, K>>(target: Iterable<E>, key: K): Semantic<V>;
22
+ <E extends HTMLElement, K extends KeyOfEventMap<E>, V = ValueOfEventMap<E, K>>(target: Iterable<E>, key: Iterable<K>): Semantic<V>;
23
+ }
24
+ export declare let event: EventFunction;
25
+ export declare let fill: (<E>(element: E, count: bigint) => Semantic<E>) & (<E>(supplier: Supplier<E>, count: bigint) => Semantic<E>);
26
+ export interface From {
25
27
  <E>(iterable: Iterable<E>): Semantic<E>;
26
28
  <E>(iterable: AsyncIterable<E>): Semantic<E>;
27
29
  }
28
- export declare let from: FromFunction;
29
- interface GenerateFunction {
30
- <E>(supplier: Supplier<E>, count: bigint): Semantic<E>;
31
- <E>(element: E, count: bigint): Semantic<E>;
32
- <E>(supplier: Supplier<E>, interrupt: Predicate<E>): Semantic<E>;
33
- <E>(supplier: Supplier<E>, interrupt: BiPredicate<E, bigint>): Semantic<E>;
34
- }
35
- export declare let generate: GenerateFunction;
36
- interface IntervalFunction {
37
- (period: number): Semantic<number>;
38
- (period: number, delay: number): Semantic<number>;
39
- }
40
- export declare let interval: IntervalFunction;
30
+ export declare let from: From;
31
+ export declare let generate: (<E>(supplier: Supplier<E>, interrupt: Predicate<E>) => Semantic<E>) & (<E>(supplier: Supplier<E>, interrupt: BiPredicate<E, bigint>) => Semantic<E>);
32
+ export declare let interval: Functional<number, Semantic<number>> & BiFunctional<number, number, Semantic<number>>;
41
33
  export declare let iterate: <E>(generator: Generator<E>) => Semantic<E>;
42
34
  export declare let promise: (<T>(promise: Promise<T>) => Semantic<T>);
43
- interface RangeFunction {
44
- (start: number, end: number): Semantic<number>;
45
- (start: number, end: number, step: number): Semantic<number>;
46
- }
47
- export declare let range: RangeFunction;
35
+ export declare let range: BiFunctional<number, number, Semantic<number>> & TriFunctional<number, number, number, Semantic<number>>;
48
36
  export declare let websocket: Functional<WebSocket, Semantic<MessageEvent | CloseEvent | Event>>;
49
37
  export {};
package/dist/factory.js CHANGED
@@ -1,8 +1,7 @@
1
- import { isBigInt, isFunction, isIterable, isNumber, isObject, isPromise, isAsyncIterable } from "./guard";
1
+ import { isBigInt, isFunction, isIterable, isNumber, isObject, isPromise, isAsyncIterable, isWindow, isString, isDocument } from "./guard";
2
2
  import { useCompare, useTraverse } from "./hook";
3
3
  import { Semantic } from "./semantic";
4
4
  import { invalidate, validate } from "./utility";
5
- ;
6
5
  export let animationFrame = (period, delay = 0) => {
7
6
  if (period <= 0 || !Number.isFinite(period) || delay < 0 || !Number.isFinite(delay)) {
8
7
  throw new TypeError("Period must be positive finite number and delay must be non-negative finite number.");
@@ -57,7 +56,6 @@ export let attribute = (target) => {
57
56
  }
58
57
  throw new TypeError("Target must be an object.");
59
58
  };
60
- ;
61
59
  export let blob = (blob, chunk = 64n * 1024n) => {
62
60
  let size = Number(chunk);
63
61
  if (size <= 0 || !Number.isSafeInteger(size)) {
@@ -132,6 +130,163 @@ export let empty = () => {
132
130
  return new Semantic(() => { });
133
131
  };
134
132
  ;
133
+ export let event = (argument1, argument2) => {
134
+ if (isWindow(argument1)) {
135
+ let target = argument1;
136
+ if (isString(argument2)) {
137
+ let key = argument2;
138
+ return new Semantic((accept, interrupt) => {
139
+ try {
140
+ let index = 0n;
141
+ let listener = (event) => {
142
+ if (interrupt(event, index)) {
143
+ target.removeEventListener(key, listener);
144
+ }
145
+ else {
146
+ accept(event, index);
147
+ index++;
148
+ }
149
+ };
150
+ target.addEventListener(key, listener);
151
+ }
152
+ catch (error) {
153
+ throw new Error("Uncaught error as creating event semantic.");
154
+ }
155
+ });
156
+ }
157
+ if (isIterable(argument2)) {
158
+ let keys = argument2;
159
+ return new Semantic((accept, interrupt) => {
160
+ try {
161
+ let index = 0n;
162
+ for (let key of keys) {
163
+ if (isString(key)) {
164
+ let listener = (event) => {
165
+ if (interrupt(event, index)) {
166
+ target.removeEventListener(key, listener);
167
+ }
168
+ else {
169
+ accept(event, index);
170
+ index++;
171
+ }
172
+ };
173
+ target.addEventListener(key, listener);
174
+ }
175
+ }
176
+ }
177
+ catch (error) {
178
+ throw new Error("Uncaught error as creating event semantic.");
179
+ }
180
+ });
181
+ }
182
+ }
183
+ if (isDocument(argument1)) {
184
+ let target = argument1;
185
+ if (isString(argument2)) {
186
+ let key = argument2;
187
+ return new Semantic((accept, interrupt) => {
188
+ try {
189
+ let index = 0n;
190
+ let listener = (event) => {
191
+ if (interrupt(event, index)) {
192
+ target.removeEventListener(key, listener);
193
+ }
194
+ else {
195
+ accept(event, index);
196
+ index++;
197
+ }
198
+ };
199
+ target.addEventListener(key, listener);
200
+ }
201
+ catch (error) {
202
+ throw new Error("Uncaught error as creating event semantic.");
203
+ }
204
+ });
205
+ }
206
+ if (isIterable(argument2)) {
207
+ let keys = argument2;
208
+ return new Semantic((accept, interrupt) => {
209
+ try {
210
+ let index = 0n;
211
+ for (let key of keys) {
212
+ if (isString(key)) {
213
+ let listener = (event) => {
214
+ if (interrupt(event, index)) {
215
+ target.removeEventListener(key, listener);
216
+ }
217
+ else {
218
+ accept(event, index);
219
+ index++;
220
+ }
221
+ };
222
+ target.addEventListener(key, listener);
223
+ }
224
+ }
225
+ }
226
+ catch (error) {
227
+ throw new Error("Uncaught error as creating event semantic.");
228
+ }
229
+ });
230
+ }
231
+ }
232
+ if (isIterable(argument1)) {
233
+ let targets = argument1;
234
+ if (isString(argument2)) {
235
+ let key = argument2;
236
+ return new Semantic((accept, interrupt) => {
237
+ try {
238
+ let index = 0n;
239
+ for (let target of targets) {
240
+ if (isObject(target) && isFunction(Reflect.get(target, "addEventListener"))) {
241
+ let listener = (event) => {
242
+ if (interrupt(event, index)) {
243
+ target.removeEventListener(key, listener);
244
+ }
245
+ else {
246
+ accept(event, index);
247
+ }
248
+ };
249
+ target.addEventListener(key, listener);
250
+ }
251
+ }
252
+ }
253
+ catch (error) {
254
+ throw new Error("Uncaught error as creating event semantic.");
255
+ }
256
+ });
257
+ }
258
+ if (isIterable(argument2)) {
259
+ let keys = argument2;
260
+ return new Semantic((accept, interrupt) => {
261
+ try {
262
+ let index = 0n;
263
+ for (let target of targets) {
264
+ if (isObject(target) && isFunction(Reflect.get(target, "addEventListener"))) {
265
+ for (let key of keys) {
266
+ if (isString(key)) {
267
+ let listener = (event) => {
268
+ if (interrupt(event, index)) {
269
+ target.removeEventListener(key, listener);
270
+ }
271
+ else {
272
+ accept(event, index);
273
+ index++;
274
+ }
275
+ };
276
+ target.addEventListener(key, listener);
277
+ }
278
+ }
279
+ }
280
+ }
281
+ }
282
+ catch (error) {
283
+ throw new Error("Uncaught error as creating event semantic.");
284
+ }
285
+ });
286
+ }
287
+ }
288
+ throw new TypeError("Invalid arguments.");
289
+ };
135
290
  export let fill = (element, count) => {
136
291
  if (validate(element) && count > 0n) {
137
292
  return new Semantic((accept, interrupt) => {
@@ -189,72 +344,13 @@ export let from = (iterable) => {
189
344
  }
190
345
  throw new TypeError("Invalid arguments");
191
346
  };
192
- ;
193
- export let generate = (argument1, argument2) => {
194
- if (isFunction(argument1)) {
195
- if (isFunction(argument2)) {
196
- let shutdown = argument2;
197
- return new Semantic((accept, interrupt) => {
198
- try {
199
- let index = 0n;
200
- while (true) {
201
- if (interrupt(argument1(), index) || shutdown(argument1(), index)) {
202
- break;
203
- }
204
- accept(argument1(), index);
205
- index++;
206
- }
207
- }
208
- catch (error) {
209
- throw new Error("Uncaught error as creating generate semantic.");
210
- }
211
- });
212
- }
213
- if (isBigInt(argument2)) {
214
- let limit = argument2;
215
- return new Semantic((accept, interrupt) => {
216
- try {
217
- let index = 0n;
218
- while (index < limit) {
219
- if (interrupt(argument1(), index)) {
220
- break;
221
- }
222
- accept(argument1(), index);
223
- index++;
224
- }
225
- }
226
- catch (error) {
227
- throw new Error("Uncaught error as creating generate semantic.");
228
- }
229
- });
230
- }
231
- throw new TypeError("Invalid arguments.");
232
- }
233
- let element = argument1;
234
- if (isFunction(argument2)) {
235
- let shutdown = argument2;
347
+ export let generate = (supplier, interrupt) => {
348
+ if (isFunction(supplier) && isFunction(interrupt)) {
236
349
  return new Semantic((accept, interrupt) => {
237
350
  try {
238
351
  let index = 0n;
239
352
  while (true) {
240
- if (interrupt(element, index) || shutdown(element, index)) {
241
- break;
242
- }
243
- accept(element, index);
244
- index++;
245
- }
246
- }
247
- catch (error) {
248
- throw new Error("Uncaught error as creating generate semantic.");
249
- }
250
- });
251
- }
252
- if (isBigInt(argument2)) {
253
- let limit = argument2;
254
- return new Semantic((accept, interrupt) => {
255
- try {
256
- let index = 0n;
257
- while (index < limit) {
353
+ let element = supplier();
258
354
  if (interrupt(element, index)) {
259
355
  break;
260
356
  }
@@ -267,9 +363,8 @@ export let generate = (argument1, argument2) => {
267
363
  }
268
364
  });
269
365
  }
270
- throw new TypeError("Invalid arguments.");
366
+ throw new TypeError("Invalid arguments");
271
367
  };
272
- ;
273
368
  export let interval = (period, delay = 0) => {
274
369
  if (period > 0 && delay >= 0) {
275
370
  return new Semantic((accept, interrupt) => {
@@ -341,7 +436,6 @@ export let promise = (promise) => {
341
436
  throw new TypeError("Invalid arguments.");
342
437
  }
343
438
  };
344
- ;
345
439
  export let range = (start, end, step = 1) => {
346
440
  if ((!isNumber(step) && !isBigInt(step)) || (isNumber(step) && useCompare(step, 0) === 0) || (isBigInt(step) && useCompare(step, 0n) === 0)) {
347
441
  throw new TypeError("Step must be numeric and cannot be zero.");
package/dist/guard.d.ts CHANGED
@@ -1,30 +1,45 @@
1
- import type { Collectable, OrderedCollectable, UnorderedCollectable } from "./collectable";
1
+ import type { Collectable, OrderedCollectable, Statistics, UnorderedCollectable, WindowCollectable } from "./collectable";
2
2
  import type { Collector } from "./collector";
3
+ import type { HashMap, SemanticMap } from "./map";
4
+ import type { BinaryNode, LinearNode, Node } from "./node";
5
+ import type { Optional } from "./optional";
3
6
  import type { Semantic } from "./semantic";
4
- import type { Statistics } from "./statistics";
5
- import type { AsyncFunction, Generator, MaybePrimitive, Primitive } from "./utility";
6
- import type { WindowCollectable } from "./window";
7
- export declare let isBoolean: (t: unknown) => t is boolean;
8
- export declare let isString: (t: unknown) => t is string;
9
- export declare let isNumber: (t: unknown) => t is number;
10
- export declare let isFunction: (t: unknown) => t is Function;
11
- export declare let isObject: (t: unknown) => t is object;
12
- export declare let isSymbol: (t: unknown) => t is symbol;
13
- export declare let isBigInt: (t: unknown) => t is bigint;
14
- export declare let isPrimitive: (t: MaybePrimitive<unknown>) => t is Primitive;
15
- export declare let isAsyncIterable: (t: unknown) => t is Iterable<unknown>;
16
- export declare let isIterable: (t: unknown) => t is Iterable<unknown>;
17
- export declare let isSemantic: (t: unknown) => t is Semantic<unknown>;
18
- export declare let isCollector: (t: unknown) => t is Collector<unknown, unknown, unknown>;
19
- export declare let isCollectable: (t: unknown) => t is Collectable<unknown>;
20
- export declare let isOrderedCollectable: (t: unknown) => t is OrderedCollectable<unknown>;
21
- export declare let isWindowCollectable: (t: unknown) => t is WindowCollectable<unknown>;
22
- export declare let isUnorderedCollectable: (t: unknown) => t is UnorderedCollectable<unknown>;
23
- export declare let isStatistics: (t: unknown) => t is Statistics<unknown, number | bigint>;
24
- export declare let isNumericStatistics: (t: unknown) => t is Statistics<unknown, number | bigint>;
25
- export declare let isBigIntStatistics: (t: unknown) => t is Statistics<unknown, number | bigint>;
26
- export declare let isPromise: (t: unknown) => t is Promise<unknown>;
27
- export declare let isGenerator: (t: unknown) => t is Generator<unknown>;
28
- export declare let isAsyncFunction: (t: unknown) => t is AsyncFunction;
29
- export declare let isGeneratorFunction: (t: unknown) => t is globalThis.Generator<unknown, unknown, unknown>;
30
- export declare let isAsyncGeneratorFunction: (t: unknown) => t is globalThis.AsyncGenerator<unknown, unknown, unknown>;
7
+ import type { HashSet } from "./set";
8
+ import type { AsyncFunction, MaybePrimitive, Primitive } from "./utility";
9
+ export declare let isBoolean: (target: unknown) => target is boolean;
10
+ export declare let isString: (target: unknown) => target is string;
11
+ export declare let isNumber: (target: unknown) => target is number;
12
+ export declare let isFunction: (target: unknown) => target is Function;
13
+ export declare let isObject: (target: unknown) => target is object;
14
+ export declare let isSymbol: (target: unknown) => target is symbol;
15
+ export declare let isBigInt: (target: unknown) => target is bigint;
16
+ export declare let isPrimitive: (target: MaybePrimitive<unknown>) => target is Primitive;
17
+ export declare let isAsyncIterable: (target: unknown) => target is Iterable<unknown>;
18
+ export declare let isIterable: (target: unknown) => target is Iterable<unknown>;
19
+ export declare let isSemantic: (target: unknown) => target is Semantic<unknown>;
20
+ export declare let isCollector: (target: unknown) => target is Collector<unknown, unknown, unknown>;
21
+ export declare let isCollectable: (target: unknown) => target is Collectable<unknown>;
22
+ export declare let isOrderedCollectable: (target: unknown) => target is OrderedCollectable<unknown>;
23
+ export declare let isWindowCollectable: (target: unknown) => target is WindowCollectable<unknown>;
24
+ export declare let isUnorderedCollectable: (target: unknown) => target is UnorderedCollectable<unknown>;
25
+ export declare let isStatistics: (target: unknown) => target is Statistics<unknown, number | bigint>;
26
+ export declare let isNumericStatistics: (target: unknown) => target is Statistics<unknown, number | bigint>;
27
+ export declare let isBigIntStatistics: (target: unknown) => target is Statistics<unknown, number | bigint>;
28
+ export declare let isSemanticMap: (target: unknown) => target is SemanticMap<unknown, unknown>;
29
+ export declare let isHashMap: (target: unknown) => target is HashMap<unknown, unknown>;
30
+ export declare let isHashSet: (target: unknown) => target is HashSet<unknown>;
31
+ export declare let isNode: (target: unknown) => target is Node<unknown, any>;
32
+ export declare let isLinearNode: (target: unknown) => target is LinearNode<unknown>;
33
+ export declare let isBinaryNode: (target: unknown) => target is BinaryNode<unknown, any>;
34
+ export declare let isRedBlackNode: (target: unknown) => target is BinaryNode<unknown, any>;
35
+ export declare let isTree: (target: unknown) => target is Node<unknown, any>;
36
+ export declare let isBinaryTree: (target: unknown) => target is Node<unknown, any>;
37
+ export declare let isRedBlackTree: (target: unknown) => target is Node<unknown, any>;
38
+ export declare let isOptional: <T>(target: unknown) => target is Optional<T>;
39
+ export declare let isPromise: (target: unknown) => target is Promise<unknown>;
40
+ export declare let isAsyncFunction: (target: unknown) => target is AsyncFunction;
41
+ export declare let isGeneratorFunction: (target: unknown) => target is Generator<unknown, unknown, unknown>;
42
+ export declare let isAsyncGeneratorFunction: (target: unknown) => target is AsyncGenerator<unknown, unknown, unknown>;
43
+ export declare let isWindow: (target: unknown) => target is Window;
44
+ export declare let isDocument: (target: unknown) => target is Document;
45
+ export declare let isHTMLElemet: (target: unknown) => target is HTMLElement;