linqx 0.2.0 → 0.3.2

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.
Files changed (144) hide show
  1. package/README.md +181 -87
  2. package/dist/core/dictionary.d.ts +14 -0
  3. package/dist/core/enumerable.d.ts +9 -0
  4. package/dist/core/enumerator.d.ts +10 -0
  5. package/dist/core/grouping.d.ts +11 -0
  6. package/dist/core/lookup.d.ts +12 -0
  7. package/dist/core/memoized-enumerable.d.ts +12 -0
  8. package/dist/core/ordered-enumerable.d.ts +14 -0
  9. package/dist/core/shared-enumerable.d.ts +10 -0
  10. package/dist/extensions.d.ts +18 -0
  11. package/dist/extensions.js +13 -0
  12. package/dist/factories/choice.d.ts +8 -0
  13. package/dist/factories/cycle.d.ts +8 -0
  14. package/dist/factories/defer.d.ts +8 -0
  15. package/dist/factories/empty.d.ts +3 -0
  16. package/dist/factories/from.d.ts +46 -0
  17. package/dist/factories/generate.d.ts +9 -0
  18. package/dist/factories/make.d.ts +8 -0
  19. package/dist/factories/matches.d.ts +14 -0
  20. package/dist/factories/range-down.d.ts +10 -0
  21. package/dist/factories/range-to.d.ts +12 -0
  22. package/dist/factories/range.d.ts +10 -0
  23. package/dist/factories/repeat-with-finalize.d.ts +9 -0
  24. package/dist/factories/repeat.d.ts +9 -0
  25. package/dist/factories/to-infinity.d.ts +9 -0
  26. package/dist/factories/to-negative-infinity.d.ts +9 -0
  27. package/dist/factories/unfold.d.ts +9 -0
  28. package/dist/index.d.ts +87 -3
  29. package/dist/index.js +2 -4
  30. package/dist/internal/create-enumerable.d.ts +3 -0
  31. package/dist/internal/functions.d.ts +6 -0
  32. package/dist/internal/to-iterable.d.ts +2 -0
  33. package/dist/operators/aggregate-by.d.ts +2 -0
  34. package/dist/operators/aggregate.d.ts +2 -0
  35. package/dist/operators/all.d.ts +2 -0
  36. package/dist/operators/alternate.d.ts +2 -0
  37. package/dist/operators/any.d.ts +2 -0
  38. package/dist/operators/append.d.ts +2 -0
  39. package/dist/operators/as-enumerable.d.ts +2 -0
  40. package/dist/operators/average.d.ts +2 -0
  41. package/dist/operators/buffer.d.ts +2 -0
  42. package/dist/operators/cast.d.ts +2 -0
  43. package/dist/operators/catch-error.d.ts +2 -0
  44. package/dist/operators/choose.d.ts +2 -0
  45. package/dist/operators/chunk.d.ts +2 -0
  46. package/dist/operators/concat.d.ts +2 -0
  47. package/dist/operators/contains.d.ts +2 -0
  48. package/dist/operators/count-by.d.ts +2 -0
  49. package/dist/operators/count.d.ts +2 -0
  50. package/dist/operators/create-ordered-enumerable.d.ts +2 -0
  51. package/dist/operators/default-if-empty.d.ts +2 -0
  52. package/dist/operators/distinct-by.d.ts +2 -0
  53. package/dist/operators/distinct-until-changed.d.ts +2 -0
  54. package/dist/operators/distinct.d.ts +2 -0
  55. package/dist/operators/do-action.d.ts +3 -0
  56. package/dist/operators/element-at-or-default.d.ts +2 -0
  57. package/dist/operators/element-at.d.ts +2 -0
  58. package/dist/operators/except-by.d.ts +2 -0
  59. package/dist/operators/except.d.ts +2 -0
  60. package/dist/operators/finally-action.d.ts +2 -0
  61. package/dist/operators/first-or-default.d.ts +2 -0
  62. package/dist/operators/first.d.ts +2 -0
  63. package/dist/operators/flatten.d.ts +2 -0
  64. package/dist/operators/for-each.d.ts +3 -0
  65. package/dist/operators/force.d.ts +2 -0
  66. package/dist/operators/group-by.d.ts +2 -0
  67. package/dist/operators/group-join.d.ts +2 -0
  68. package/dist/operators/index-of.d.ts +2 -0
  69. package/dist/operators/index.d.ts +2 -0
  70. package/dist/operators/insert.d.ts +2 -0
  71. package/dist/operators/intersect-by.d.ts +2 -0
  72. package/dist/operators/intersect.d.ts +2 -0
  73. package/dist/operators/is-empty.d.ts +2 -0
  74. package/dist/operators/join-with.d.ts +2 -0
  75. package/dist/operators/join.d.ts +2 -0
  76. package/dist/operators/last-index-of.d.ts +2 -0
  77. package/dist/operators/last-or-default.d.ts +2 -0
  78. package/dist/operators/last.d.ts +2 -0
  79. package/dist/operators/left-join.d.ts +2 -0
  80. package/dist/operators/let-bind.d.ts +2 -0
  81. package/dist/operators/log.d.ts +2 -0
  82. package/dist/operators/map.d.ts +2 -0
  83. package/dist/operators/max-by.d.ts +2 -0
  84. package/dist/operators/max.d.ts +2 -0
  85. package/dist/operators/memoize.d.ts +2 -0
  86. package/dist/operators/merge.d.ts +2 -0
  87. package/dist/operators/min-by.d.ts +2 -0
  88. package/dist/operators/min.d.ts +2 -0
  89. package/dist/operators/of-type.d.ts +2 -0
  90. package/dist/operators/operators.d.ts +208 -0
  91. package/dist/operators/order-by-descending.d.ts +2 -0
  92. package/dist/operators/order-by.d.ts +2 -0
  93. package/dist/operators/page.d.ts +2 -0
  94. package/dist/operators/pairwise.d.ts +2 -0
  95. package/dist/operators/partition-by.d.ts +2 -0
  96. package/dist/operators/position.d.ts +2 -0
  97. package/dist/operators/prepend.d.ts +2 -0
  98. package/dist/operators/reverse.d.ts +2 -0
  99. package/dist/operators/right-join.d.ts +2 -0
  100. package/dist/operators/scan.d.ts +2 -0
  101. package/dist/operators/select-many.d.ts +2 -0
  102. package/dist/operators/select.d.ts +2 -0
  103. package/dist/operators/sequence-equal.d.ts +2 -0
  104. package/dist/operators/share.d.ts +2 -0
  105. package/dist/operators/shuffle.d.ts +2 -0
  106. package/dist/operators/single-or-default.d.ts +2 -0
  107. package/dist/operators/single.d.ts +2 -0
  108. package/dist/operators/skip-last.d.ts +2 -0
  109. package/dist/operators/skip-while.d.ts +2 -0
  110. package/dist/operators/skip.d.ts +2 -0
  111. package/dist/operators/sum.d.ts +2 -0
  112. package/dist/operators/take-except-last.d.ts +2 -0
  113. package/dist/operators/take-from-last.d.ts +2 -0
  114. package/dist/operators/take-last.d.ts +2 -0
  115. package/dist/operators/take-while.d.ts +2 -0
  116. package/dist/operators/take.d.ts +2 -0
  117. package/dist/operators/then-by-descending.d.ts +2 -0
  118. package/dist/operators/then-by.d.ts +2 -0
  119. package/dist/operators/to-array.d.ts +2 -0
  120. package/dist/operators/to-dictionary.d.ts +2 -0
  121. package/dist/operators/to-joined-string.d.ts +2 -0
  122. package/dist/operators/to-json-string.d.ts +2 -0
  123. package/dist/operators/to-lookup.d.ts +2 -0
  124. package/dist/operators/to-map.d.ts +2 -0
  125. package/dist/operators/to-object.d.ts +2 -0
  126. package/dist/operators/to-set.d.ts +2 -0
  127. package/dist/operators/trace.d.ts +2 -0
  128. package/dist/operators/traverse-breadth-first.d.ts +2 -0
  129. package/dist/operators/traverse-depth-first.d.ts +2 -0
  130. package/dist/operators/union-by.d.ts +2 -0
  131. package/dist/operators/union.d.ts +2 -0
  132. package/dist/operators/weighted-sample.d.ts +2 -0
  133. package/dist/operators/where-if.d.ts +2 -0
  134. package/dist/operators/where.d.ts +2 -0
  135. package/dist/operators/with-neighbors.d.ts +2 -0
  136. package/dist/operators/zip.d.ts +2 -0
  137. package/dist/src-D_Mk3oMP.js +1597 -0
  138. package/dist/types.d.ts +1154 -0
  139. package/dist/utils.d.ts +56 -0
  140. package/package.json +18 -11
  141. package/dist/linq.d.ts +0 -256
  142. package/dist/linq.js +0 -3085
  143. package/dist/linqx.d.ts +0 -36
  144. package/dist/linqx.js +0 -153
@@ -0,0 +1,56 @@
1
+ import type { IEnumerable, IEnumerator } from './types.js';
2
+ /** Low-level helpers used to integrate custom sources and host prototypes with linqx. */
3
+ export interface EnumerableUtils {
4
+ /**
5
+ * Returns a function unchanged, or creates an identity function for a nullish value.
6
+ *
7
+ * @param expression The function to return. `null` and `undefined` select the identity function.
8
+ * @returns The supplied function or an identity function.
9
+ * @throws {TypeError} When a non-nullish value is not a function.
10
+ */
11
+ createLambda<T>(expression?: T): T extends null | undefined ? (value: unknown) => unknown : T;
12
+ /**
13
+ * Creates a sequence from an imperative enumerator factory.
14
+ *
15
+ * @param getEnumerator Creates a fresh enumerator for an enumeration.
16
+ * @returns A deferred linqx sequence.
17
+ */
18
+ createEnumerable<T>(getEnumerator: () => IEnumerator<T>): IEnumerable<T>;
19
+ /**
20
+ * Creates an imperative enumerator from lifecycle callbacks.
21
+ *
22
+ * `initialize` runs on the first call to `moveNext`; `dispose` runs when enumeration ends,
23
+ * fails, or is explicitly disposed.
24
+ *
25
+ * @param initialize Initializes enumeration state.
26
+ * @param tryGetNext Advances the state and returns whether a current element is available.
27
+ * @param dispose Releases enumeration resources.
28
+ * @returns An imperative enumerator controlled by the callbacks.
29
+ */
30
+ createEnumerator<T>(initialize: () => void, tryGetNext: () => boolean, dispose: () => void): IEnumerator<T>;
31
+ /**
32
+ * Adds linqx instance operators to a constructor's prototype.
33
+ *
34
+ * Existing member names are preserved and the linqx alternative receives a `ByLinq` suffix.
35
+ *
36
+ * @param type The constructor whose prototype will be extended.
37
+ * @throws {TypeError} When `type` is not a constructor with a prototype.
38
+ */
39
+ extendTo(type: unknown): void;
40
+ /**
41
+ * Removes members previously installed by `extendTo` from a constructor's prototype.
42
+ *
43
+ * @param type The constructor whose linqx extensions will be removed.
44
+ * @throws {TypeError} When `type` is not a constructor with a prototype.
45
+ */
46
+ recallFrom(type: unknown): void;
47
+ /**
48
+ * Tests whether the runtime exposes the native iterator symbols required by linqx.
49
+ *
50
+ * @returns `true` when `Symbol.iterator` is available; otherwise, `false`.
51
+ */
52
+ hasNativeIteratorSupport(): boolean;
53
+ }
54
+ /** Low-level utilities exposed as `Enumerable.Utils`. */
55
+ export declare const Utils: EnumerableUtils;
56
+ export declare function definePropertyIfAbsent<T extends object, K extends PropertyKey>(target: T, key: K, value: unknown, writable?: boolean, configurable?: boolean, enumerable?: boolean): boolean;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "author": "huoshan12345",
4
4
  "description": "Modern fork of linq with more APIs",
5
5
  "type": "module",
6
- "version": "0.2.0",
6
+ "version": "0.3.2",
7
7
  "license": "MIT",
8
8
  "homepage": "https://github.com/huoshan12345/linqx",
9
9
  "repository": {
@@ -21,7 +21,10 @@
21
21
  "node": "*"
22
22
  },
23
23
  "main": "dist/index.js",
24
- "exports": "./dist/index.js",
24
+ "exports": {
25
+ ".": "./dist/index.js",
26
+ "./extensions": "./dist/extensions.js"
27
+ },
25
28
  "types": "dist/index.d.ts",
26
29
  "files": [
27
30
  "dist",
@@ -30,20 +33,24 @@
30
33
  ],
31
34
  "devDependencies": {
32
35
  "@phiberber/pinst": "^3.0.1",
33
- "@types/node": "^25.6.0",
34
- "npm-run-all2": "^8.0.4",
36
+ "@types/node": "^26.4.1",
37
+ "npm-run-all2": "^9.0.3",
35
38
  "shx": "^0.4.0",
36
- "typescript": "^6.0.3",
37
- "vitest": "^4.1.4"
39
+ "typescript": "^7.0.2",
40
+ "vite": "^8.2.2",
41
+ "vitest": "^5.0.0"
38
42
  },
39
43
  "scripts": {
40
44
  "_preinstall": "npx only-allow pnpm",
41
45
  "clean": "shx rm -rf dist/** && shx rm -f *.tgz",
42
- "copy": "shx cp linq.js dist && shx cp linq.d.ts dist",
43
- "build": "run-s clean && tsc && run-s copy",
46
+ "build": "run-s clean && run-s build:ts && run-s build:dts",
47
+ "build:ts": "run-s type-check && vite build",
48
+ "build:dts": "tsc -p tsconfig.build.json",
44
49
  "type-check": "tsc --noEmit",
45
- "test:ts": "run-s type-check && vitest run",
46
- "test:js": "node test/testrunner.js",
47
- "test": "run-p test:ts test:js"
50
+ "test": "run-s type-check && vitest run",
51
+ "test:watch": "vitest",
52
+ "tutorial": "run-s build && node sample/tutorial.ts",
53
+ "ncu": "npx npm-check-updates -u",
54
+ "p": "run-s build && pnpm pack"
48
55
  }
49
56
  }
package/dist/linq.d.ts DELETED
@@ -1,256 +0,0 @@
1
- declare namespace Enumerable {
2
- export let Utils: {
3
- createLambda(expression: null): (x: unknown) => unknown;
4
- createLambda(expression: string): ((...params: unknown[]) => unknown);
5
- createLambda<T>(expression?: T): T;
6
- createEnumerable<T>(getEnumerator: () => IEnumerator<T>): IEnumerable<T>;
7
- createEnumerator<T>(initialize: () => void, tryGetNext: () => boolean, dispose: () => void): IEnumerator<T>;
8
- extendTo(type: unknown): void;
9
- recallFrom(type: unknown): void;
10
- hasNativeIteratorSupport(): boolean;
11
- }
12
-
13
- export function choice<T>(...params: T[]): IEnumerable<T>;
14
- export function cycle<T>(...params: T[]): IEnumerable<T>;
15
- export function empty<T>(): IEnumerable<T>;
16
- export function from(): IEnumerable<unknown>;
17
- export function from<T>(obj: IEnumerable<T>): IEnumerable<T>;
18
- export function from(obj: number): IEnumerable<number>;
19
- export function from(obj: boolean): IEnumerable<boolean>;
20
- export function from(obj: string): IEnumerable<string>;
21
- export function from<T>(obj: T[]): IEnumerable<T>;
22
- export function from<T>(obj: Iterator<T>): IEnumerable<T>;
23
- export function from<T>(obj: Iterable<T>): IEnumerable<T>;
24
- export function from<T>(obj: { length: number;[x: number]: T; }): IEnumerable<T>;
25
- export function from<K extends PropertyKey, T>(obj: Record<K, T>): IEnumerable<{ key: K; value: T }>;
26
- export function make<T>(element: T): IEnumerable<T>;
27
- export function matches<T>(input: string, pattern: RegExp): IEnumerable<T>;
28
- export function matches<T>(input: string, pattern: string, flags?: string): IEnumerable<T>;
29
- export function range(start: number, count: number, step?: number): IEnumerable<number>;
30
- export function rangeDown(start: number, count: number, step?: number): IEnumerable<number>;
31
- export function rangeTo(start: number, to: number, step?: number): IEnumerable<number>;
32
- export function repeat<T>(element: T, count?: number): IEnumerable<T>;
33
- export function repeatWithFinalize<T>(initializer: () => T, finalizer: (element: T) => void): IEnumerable<T>;
34
- export function generate<T>(func: () => T, count?: number): IEnumerable<T>;
35
- export function toInfinity(start?: number, step?: number): IEnumerable<number>;
36
- export function toNegativeInfinity(start?: number, step?: number): IEnumerable<number>;
37
- export function unfold<T>(seed: T, func: (value: T) => T): IEnumerable<T>;
38
- export function defer<T>(enumerableFactory: () => IEnumerable<T>): IEnumerable<T>;
39
-
40
- export interface IEnumerable<T> {
41
- (getEnumerator: () => IEnumerator<T>): void;
42
- getEnumerator(): IEnumerator<T>;
43
- [Symbol.iterator](): Iterator<T>;
44
-
45
- // Extension Methods
46
- traverseBreadthFirst(childrenSelector: (element: T) => IEnumerable<T>): IEnumerable<T>;
47
- traverseBreadthFirst<TResult>(childrenSelector: (element: T) => IEnumerable<T>, resultSelector: (element: T, nestLevel: number) => TResult): IEnumerable<TResult>;
48
- traverseDepthFirst<TResult>(childrenSelector: (element: T) => IEnumerable<T>, resultSelector?: (element: T, nestLevel: number) => TResult): IEnumerable<TResult>;
49
- flatten(): IEnumerable<unknown>;
50
- pairwise<TResult>(selector: (prev: T, current: T) => TResult): IEnumerable<TResult>;
51
- scan(func: (prev: T, current: T) => T): IEnumerable<T>;
52
- scan<TAccumulate>(seed: TAccumulate, func: (prev: TAccumulate, current: T) => TAccumulate): IEnumerable<TAccumulate>;
53
- select<TResult>(selector: (element: T, index: number) => TResult): IEnumerable<TResult>;
54
- selectMany<TOther>(collectionSelector: (element: T, index: number) => IEnumerable<TOther>): IEnumerable<TOther>;
55
- selectMany<TCollection, TResult>(collectionSelector: (element: T, index: number) => IEnumerable<TCollection>, resultSelector: (outer: T, inner: TCollection) => TResult): IEnumerable<TResult>;
56
- selectMany<TOther>(collectionSelector: (element: T, index: number) => TOther[]): IEnumerable<TOther>;
57
- selectMany<TCollection, TResult>(collectionSelector: (element: T, index: number) => TCollection[], resultSelector: (outer: T, inner: TCollection) => TResult): IEnumerable<TResult>;
58
- selectMany<TOther>(collectionSelector: (element: T, index: number) => { length: number;[x: number]: TOther; }): IEnumerable<TOther>;
59
- selectMany<TCollection, TResult>(collectionSelector: (element: T, index: number) => { length: number;[x: number]: TCollection; }, resultSelector: (outer: T, inner: TCollection) => TResult): IEnumerable<TResult>;
60
- where<TOther extends T>(predicate: (element: T, index: number) => element is TOther): IEnumerable<TOther>;
61
- where(predicate: (element: T, index: number) => boolean): IEnumerable<T>;
62
- choose(selector: (element: T, index: number) => T): IEnumerable<T>;
63
- ofType<TResult>(type: unknown): IEnumerable<TResult>;
64
- zip<U, TResult>(second: IEnumerable<U>, resultSelector: (first: T, second: U, index: number) => TResult): IEnumerable<TResult>;
65
- zip<U, TResult>(second: { length: number;[x: number]: U; }, resultSelector: (first: T, second: U, index: number) => TResult): IEnumerable<TResult>;
66
- zip<U, TResult>(second: U[], resultSelector: (first: T, second: U, index: number) => TResult): IEnumerable<TResult>;
67
- zip<TResult>(...params: unknown[]): IEnumerable<TResult>; // last one is selector
68
- merge(...params: (T[] | IEnumerable<T> | { length: number;[x: number]: T; })[]): IEnumerable<T>;
69
- join<TInner, TKey, TResult>(inner: IEnumerable<TInner>, outerKeySelector: (outer: T) => TKey, innerKeySelector: (inner: TInner) => TKey, resultSelector: (outer: T, inner: TInner) => TResult, compareSelector?: (obj: T) => TKey): IEnumerable<TResult>;
70
- join<TInner, TKey, TResult>(inner: { length: number;[x: number]: TInner; }, outerKeySelector: (outer: T) => TKey, innerKeySelector: (inner: TInner) => TKey, resultSelector: (outer: T, inner: TInner) => TResult, compareSelector?: (obj: T) => TKey): IEnumerable<TResult>;
71
- join<TInner, TKey, TResult>(inner: TInner[], outerKeySelector: (outer: T) => TKey, innerKeySelector: (inner: TInner) => TKey, resultSelector: (outer: T, inner: TInner) => TResult, compareSelector?: (obj: T) => TKey): IEnumerable<TResult>;
72
- leftJoin<TInner, TKey, TResult>(inner: IEnumerable<TInner>, outerKeySelector: (outer: T) => TKey, innerKeySelector: (inner: TInner) => TKey, resultSelector: (outer: T, inner: TInner) => TResult, compareSelector?: (obj: T) => TKey): IEnumerable<TResult>;
73
- leftJoin<TInner, TKey, TResult>(inner: { length: number;[x: number]: TInner; }, outerKeySelector: (outer: T) => TKey, innerKeySelector: (inner: TInner) => TKey, resultSelector: (outer: T, inner: TInner) => TResult, compareSelector?: (obj: T) => TKey): IEnumerable<TResult>;
74
- leftJoin<TInner, TKey, TResult>(inner: TInner[], outerKeySelector: (outer: T) => TKey, innerKeySelector: (inner: TInner) => TKey, resultSelector: (outer: T, inner: TInner) => TResult, compareSelector?: (obj: T) => TKey): IEnumerable<TResult>;
75
- groupJoin<TInner, TKey, TResult>(inner: IEnumerable<TInner>, outerKeySelector: (outer: T) => TKey, innerKeySelector: (inner: TInner) => TKey, resultSelector: (outer: T, inner: IEnumerable<TInner>) => TResult, compareSelector?: (obj: T) => TKey): IEnumerable<TResult>;
76
- groupJoin<TInner, TKey, TResult>(inner: { length: number;[x: number]: TInner; }, outerKeySelector: (outer: T) => TKey, innerKeySelector: (inner: TInner) => TKey, resultSelector: (outer: T, inner: IEnumerable<TInner>) => TResult, compareSelector?: (obj: T) => TKey): IEnumerable<TResult>;
77
- groupJoin<TInner, TKey, TResult>(inner: TInner[], outerKeySelector: (outer: T) => TKey, innerKeySelector: (inner: TInner) => TKey, resultSelector: (outer: T, inner: IEnumerable<TInner>) => TResult, compareSelector?: (obj: T) => TKey): IEnumerable<TResult>;
78
- all(predicate: (element: T) => boolean): boolean;
79
- any(predicate?: (element: T) => boolean): boolean;
80
- isEmpty(): boolean;
81
- concat(...sequences: (T[] | IEnumerable<T> | { length: number;[x: number]: T; })[]): IEnumerable<T>;
82
- insert(index: number, second: IEnumerable<T>): IEnumerable<T>;
83
- insert(index: number, second: { length: number;[x: number]: T; }): IEnumerable<T>;
84
- alternate(alternateValue: T): IEnumerable<T>;
85
- alternate(alternateSequence: { length: number;[x: number]: T; }): IEnumerable<T>;
86
- alternate(alternateSequence: IEnumerable<T>): IEnumerable<T>;
87
- alternate(alternateSequence: T[]): IEnumerable<T>;
88
- contains(value: T): boolean;
89
- contains<TCompare>(value: T, compareSelector?: (element: T) => TCompare): boolean;
90
- defaultIfEmpty(defaultValue?: T): IEnumerable<T>;
91
- distinct(): IEnumerable<T>;
92
- distinct<TCompare>(compareSelector: (element: T) => TCompare): IEnumerable<T>;
93
- distinctUntilChanged(): IEnumerable<T>;
94
- distinctUntilChanged<TCompare>(compareSelector: (element: T) => TCompare): IEnumerable<T>;
95
- except(second: { length: number;[x: number]: T; }): IEnumerable<T>;
96
- except<TCompare>(second: { length: number;[x: number]: T; }, compareSelector: (element: T) => TCompare): IEnumerable<T>;
97
- except(second: IEnumerable<T>): IEnumerable<T>;
98
- except<TCompare>(second: IEnumerable<T>, compareSelector: (element: T) => TCompare): IEnumerable<T>;
99
- except(second: T[]): IEnumerable<T>;
100
- except<TCompare>(second: T[], compareSelector: (element: T) => TCompare): IEnumerable<T>;
101
- intersect(second: { length: number;[x: number]: T; }): IEnumerable<T>;
102
- intersect<TCompare>(second: { length: number;[x: number]: T; }, compareSelector: (element: T) => TCompare): IEnumerable<T>;
103
- intersect(second: IEnumerable<T>): IEnumerable<T>;
104
- intersect<TCompare>(second: IEnumerable<T>, compareSelector: (element: T) => TCompare): IEnumerable<T>;
105
- intersect(second: T[]): IEnumerable<T>;
106
- intersect<TCompare>(second: T[], compareSelector: (element: T) => TCompare): IEnumerable<T>;
107
- union(second: { length: number;[x: number]: T; }): IEnumerable<T>;
108
- union<TCompare>(second: { length: number;[x: number]: T; }, compareSelector: (element: T) => TCompare): IEnumerable<T>;
109
- union(second: IEnumerable<T>): IEnumerable<T>;
110
- union<TCompare>(second: IEnumerable<T>, compareSelector: (element: T) => TCompare): IEnumerable<T>;
111
- union(second: T[]): IEnumerable<T>;
112
- union<TCompare>(second: T[], compareSelector: (element: T) => TCompare): IEnumerable<T>;
113
- sequenceEqual(second: { length: number;[x: number]: T; }): boolean;
114
- sequenceEqual<TCompare>(second: { length: number;[x: number]: T; }, compareSelector: (element: T) => TCompare): boolean;
115
- sequenceEqual(second: IEnumerable<T>): boolean;
116
- sequenceEqual<TCompare>(second: IEnumerable<T>, compareSelector: (element: T) => TCompare): boolean;
117
- sequenceEqual(second: T[]): boolean;
118
- sequenceEqual<TCompare>(second: T[], compareSelector: (element: T) => TCompare): boolean;
119
- orderBy<TKey>(keySelector: (element: T) => TKey): IOrderedEnumerable<T>;
120
- orderBy<TKey>(keySelector: (element: T) => TKey, comparer: (first: TKey, second: TKey) => number): IOrderedEnumerable<T>;
121
- orderByDescending<TKey>(keySelector: (element: T) => TKey): IOrderedEnumerable<T>;
122
- orderByDescending<TKey>(keySelector: (element: T) => TKey, comparer: (first: TKey, second: TKey) => number): IOrderedEnumerable<T>;
123
- reverse(): IEnumerable<T>;
124
- shuffle(): IEnumerable<T>;
125
- weightedSample(weightSelector: (element: T) => number): IEnumerable<T>;
126
- groupBy<TKey>(keySelector: (element: T) => TKey): IEnumerable<IGrouping<TKey, T>>;
127
- groupBy<TKey, TElement>(keySelector: (element: T) => TKey, elementSelector: (element: T) => TElement): IEnumerable<IGrouping<TKey, TElement>>;
128
- groupBy<TKey, TElement, TResult>(keySelector: (element: T) => TKey, elementSelector: (element: T) => TElement, resultSelector: (key: TKey, element: IEnumerable<TElement>) => TResult): IEnumerable<TResult>;
129
- groupBy<TKey, TElement, TResult, TCompare>(keySelector: (element: T) => TKey, elementSelector: (element: T) => TElement, resultSelector: (key: TKey, element: IEnumerable<TElement>) => TResult, compareSelector: (element: TKey) => TCompare): IEnumerable<TResult>;
130
- partitionBy<TKey>(keySelector: (element: T) => TKey): IEnumerable<IGrouping<TKey, unknown>>;
131
- partitionBy<TKey, TElement>(keySelector: (element: T) => TKey, elementSelector: (element: T) => TElement): IEnumerable<IGrouping<TKey, TElement>>;
132
- partitionBy<TKey, TElement, TResult>(keySelector: (element: T) => TKey, elementSelector: (element: T) => TElement, resultSelector: (key: TKey, element: IEnumerable<TElement>) => TResult): IEnumerable<TResult>;
133
- partitionBy<TKey, TElement, TResult, TCompare>(keySelector: (element: T) => TKey, elementSelector: (element: T) => TElement, resultSelector: (key: TKey, element: IEnumerable<TElement>) => TResult, compareSelector: (element: TKey) => TCompare): IEnumerable<TResult>;
134
- buffer(count: number): IEnumerable<T[]>;
135
- aggregate(func: (prev: T, current: T) => T): T;
136
- aggregate<TAccumulate>(seed: TAccumulate, func: (prev: TAccumulate, current: T) => TAccumulate): TAccumulate;
137
- aggregate<TAccumulate, TResult>(seed: TAccumulate, func: (prev: TAccumulate, current: T) => TAccumulate, resultSelector: (last: TAccumulate) => TResult): TResult;
138
- average(selector?: (element: T) => number): number;
139
- count(predicate?: (element: T, index: number) => boolean): number;
140
- max(selector?: (element: T) => number): number;
141
- min(selector?: (element: T) => number): number;
142
- maxBy<TKey>(keySelector: (element: T) => TKey): T;
143
- minBy<TKey>(keySelector: (element: T) => TKey): T;
144
- sum(selector?: (element: T) => number): number;
145
- elementAt(index: number): T;
146
- elementAtOrDefault(index: number, defaultValue?: T): T | undefined;
147
- first<TOther extends T>(predicate: (element: T, index: number) => element is TOther): TOther;
148
- first(predicate?: (element: T, index: number) => boolean): T;
149
- firstOrDefault<TOther extends T, TDefault>(predicate: (element: T, index: number) => element is TOther, defaultValue: TDefault): TOther | TDefault;
150
- firstOrDefault<TDefault>(predicate: (element: T, index: number) => boolean, defaultValue: TDefault): T | TDefault;
151
- firstOrDefault<TOther extends T>(predicate: (element: T, index: number) => element is TOther): TOther | undefined;
152
- firstOrDefault(predicate: (element: T, index: number) => boolean): T | undefined;
153
- firstOrDefault<TDefault>(defaultValue: TDefault): T | TDefault;
154
- firstOrDefault(): T | undefined;
155
- last<TOther extends T>(predicate: (element: T, index: number) => element is TOther): TOther;
156
- last(predicate?: (element: T, index: number) => boolean): T;
157
- lastOrDefault<TOther extends T, TDefault>(predicate: (element: T, index: number) => element is TOther, defaultValue: TDefault): TOther | TDefault;
158
- lastOrDefault<TDefault>(predicate: (element: T, index: number) => boolean, defaultValue: TDefault): T | TDefault;
159
- lastOrDefault<TOther extends T>(predicate: (element: T, index: number) => element is TOther): TOther | undefined;
160
- lastOrDefault(predicate: (element: T, index: number) => boolean): T | undefined;
161
- lastOrDefault<TDefault>(defaultValue: TDefault): T | TDefault;
162
- lastOrDefault(): T | undefined;
163
- single<TOther extends T>(predicate: (element: T, index: number) => element is TOther): TOther;
164
- single(predicate?: (element: T, index: number) => boolean): T;
165
- singleOrDefault<TOther extends T, TDefault>(predicate: (element: T, index: number) => element is TOther, defaultValue: TDefault): TOther | TDefault;
166
- singleOrDefault<TDefault>(predicate: (element: T, index: number) => boolean, defaultValue: TDefault): T | TDefault;
167
- singleOrDefault<TOther extends T>(predicate: (element: T, index: number) => element is TOther): TOther | undefined;
168
- singleOrDefault(predicate: (element: T, index: number) => boolean): T | undefined;
169
- singleOrDefault<TDefault>(defaultValue: TDefault): T | TDefault;
170
- singleOrDefault(): T | undefined;
171
- skip(count: number): IEnumerable<T>;
172
- skipWhile(predicate: (element: T, index: number) => boolean): IEnumerable<T>;
173
- take(count: number): IEnumerable<T>;
174
- takeWhile(predicate: (element: T, index: number) => boolean): IEnumerable<T>;
175
- takeExceptLast(count?: number): IEnumerable<T>;
176
- takeFromLast(count: number): IEnumerable<T>;
177
- indexOf(item: T): number;
178
- indexOf(predicate: (element: T, index: number) => boolean): number;
179
- lastIndexOf(item: T): number;
180
- lastIndexOf(predicate: (element: T, index: number) => boolean): number;
181
- asEnumerable(): IEnumerable<T>;
182
- cast<TResult>(): IEnumerable<TResult>;
183
- toArray(): T[];
184
- toLookup<TKey>(keySelector: (element: T) => TKey): ILookup<TKey, T>;
185
- toLookup<TKey, TElement>(keySelector: (element: T) => TKey, elementSelector: (element: T) => TElement): ILookup<TKey, TElement>;
186
- toLookup<TKey, TElement, TCompare>(keySelector: (element: T) => TKey, elementSelector: (element: T) => TElement, compareSelector: (key: TKey) => TCompare): ILookup<TKey, TElement>;
187
- toObject<TKey extends PropertyKey, TElement>(keySelector: (element: T) => TKey, elementSelector?: (element: T) => TElement): Record<TKey, TElement>;
188
- toDictionary<TKey>(keySelector: (element: T) => TKey): IDictionary<TKey, T>;
189
- toDictionary<TKey, TValue>(keySelector: (element: T) => TKey, elementSelector: (element: T) => TValue): IDictionary<TKey, TValue>;
190
- toDictionary<TKey, TValue, TCompare>(keySelector: (element: T) => TKey, elementSelector: (element: T) => TValue, compareSelector: (key: TKey) => TCompare): IDictionary<TKey, TValue>;
191
- toJSONString(replacer?: (key: string, value: unknown) => unknown, space?: string | number): string;
192
- toJSONString(replacer?: (string | number)[], space?: string | number): string;
193
- toJoinedString(separator?: string): string;
194
- toJoinedString<TResult>(separator: string, selector: (element: T, index: number) => TResult): string;
195
- doAction(action: (element: T, index: number) => void): IEnumerable<T>;
196
- doAction(action: (element: T, index: number) => boolean): IEnumerable<T>;
197
- forEach(action: (element: T, index: number) => void): void;
198
- forEach(action: (element: T, index: number) => boolean): void;
199
- force(): void;
200
- letBind<TResult>(func: (source: IEnumerable<T>) => { length: number;[x: number]: TResult; }): IEnumerable<TResult>;
201
- letBind<TResult>(func: (source: IEnumerable<T>) => TResult[]): IEnumerable<TResult>;
202
- letBind<TResult>(func: (source: IEnumerable<T>) => IEnumerable<TResult>): IEnumerable<TResult>;
203
- share(): IDisposableEnumerable<T>;
204
- memoize(): IDisposableEnumerable<T>;
205
- catchError(handler: string | ((exception: unknown) => void)): IEnumerable<T>;
206
- finallyAction(finallyAction: () => void): IEnumerable<T>;
207
- log(): IEnumerable<T>;
208
- log<TValue>(selector: (element: T) => TValue): IEnumerable<T>;
209
- trace(message?: string): IEnumerable<T>;
210
- trace<TValue>(message: string, selector: (element: T) => TValue): IEnumerable<T>;
211
- }
212
-
213
- export interface IEnumerator<T> {
214
- current(): T;
215
- moveNext(): boolean;
216
- dispose(): void;
217
- }
218
-
219
- export interface IOrderedEnumerable<T> extends IEnumerable<T> {
220
- createOrderedEnumerable<TKey>(keySelector: (element: T) => TKey, comparer?: (first: TKey, second: TKey) => number, descending?: boolean): IOrderedEnumerable<T>;
221
- thenBy<TKey>(keySelector: (element: T) => TKey): IOrderedEnumerable<T>;
222
- thenBy<TKey>(keySelector: (element: T) => TKey, comparer: (first: TKey, second: TKey) => number): IOrderedEnumerable<T>;
223
- thenByDescending<TKey>(keySelector: (element: T) => TKey): IOrderedEnumerable<T>;
224
- thenByDescending<TKey>(keySelector: (element: T) => TKey, comparer: (first: TKey, second: TKey) => number): IOrderedEnumerable<T>;
225
- }
226
-
227
- export interface IDisposableEnumerable<T> extends IEnumerable<T> {
228
- dispose(): void;
229
- }
230
-
231
- export interface IDictionary<TKey, TValue> {
232
- add(key: TKey, value: TValue): void;
233
- get(key: TKey): TValue;
234
- set(key: TKey, value: TValue): boolean;
235
- contains(key: TKey): boolean;
236
- clear(): void;
237
- remove(key: TKey): void;
238
- count(): number;
239
- toEnumerable(): IEnumerable<{ key: TKey; value: TValue }>;
240
- }
241
-
242
- export interface ILookup<TKey, TElement> {
243
- count(): number;
244
- get(key: TKey): IEnumerable<TElement>;
245
- contains(key: TKey): boolean;
246
- toEnumerable(): IEnumerable<IGrouping<TKey, TElement>>;
247
- }
248
-
249
- export interface IGrouping<TKey, TElement> extends IEnumerable<TElement> {
250
- key(): TKey;
251
- getSource(): TElement[];
252
- }
253
- }
254
-
255
- export default Enumerable;
256
- export { Enumerable };