functional-examples 0.0.0-alpha.1

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 (202) hide show
  1. package/README.md +148 -0
  2. package/dist/cli/commands/generate.d.ts +10 -0
  3. package/dist/cli/commands/generate.d.ts.map +1 -0
  4. package/dist/cli/commands/generate.js +64 -0
  5. package/dist/cli/commands/generate.js.map +1 -0
  6. package/dist/cli/commands/init.d.ts +14 -0
  7. package/dist/cli/commands/init.d.ts.map +1 -0
  8. package/dist/cli/commands/init.js +95 -0
  9. package/dist/cli/commands/init.js.map +1 -0
  10. package/dist/cli/commands/scan.d.ts +20 -0
  11. package/dist/cli/commands/scan.d.ts.map +1 -0
  12. package/dist/cli/commands/scan.js +182 -0
  13. package/dist/cli/commands/scan.js.map +1 -0
  14. package/dist/cli/commands/validate.d.ts +10 -0
  15. package/dist/cli/commands/validate.d.ts.map +1 -0
  16. package/dist/cli/commands/validate.js +65 -0
  17. package/dist/cli/commands/validate.js.map +1 -0
  18. package/dist/cli/index.d.ts +88 -0
  19. package/dist/cli/index.d.ts.map +1 -0
  20. package/dist/cli/index.js +43 -0
  21. package/dist/cli/index.js.map +1 -0
  22. package/dist/cli/plugin-commands.d.ts +17 -0
  23. package/dist/cli/plugin-commands.d.ts.map +1 -0
  24. package/dist/cli/plugin-commands.js +45 -0
  25. package/dist/cli/plugin-commands.js.map +1 -0
  26. package/dist/config/index.d.ts +11 -0
  27. package/dist/config/index.d.ts.map +1 -0
  28. package/dist/config/index.js +9 -0
  29. package/dist/config/index.js.map +1 -0
  30. package/dist/config/index.spec.d.ts +5 -0
  31. package/dist/config/index.spec.d.ts.map +1 -0
  32. package/dist/config/index.spec.js +142 -0
  33. package/dist/config/index.spec.js.map +1 -0
  34. package/dist/config/loader.d.ts +7 -0
  35. package/dist/config/loader.d.ts.map +1 -0
  36. package/dist/config/loader.js +85 -0
  37. package/dist/config/loader.js.map +1 -0
  38. package/dist/config/merger.d.ts +27 -0
  39. package/dist/config/merger.d.ts.map +1 -0
  40. package/dist/config/merger.js +41 -0
  41. package/dist/config/merger.js.map +1 -0
  42. package/dist/config/resolver.d.ts +28 -0
  43. package/dist/config/resolver.d.ts.map +1 -0
  44. package/dist/config/resolver.js +165 -0
  45. package/dist/config/resolver.js.map +1 -0
  46. package/dist/config/schema.d.ts +53 -0
  47. package/dist/config/schema.d.ts.map +1 -0
  48. package/dist/config/schema.js +42 -0
  49. package/dist/config/schema.js.map +1 -0
  50. package/dist/config/types.d.ts +17 -0
  51. package/dist/config/types.d.ts.map +1 -0
  52. package/dist/config/types.js +5 -0
  53. package/dist/config/types.js.map +1 -0
  54. package/dist/config/validator.d.ts +6 -0
  55. package/dist/config/validator.d.ts.map +1 -0
  56. package/dist/config/validator.js +17 -0
  57. package/dist/config/validator.js.map +1 -0
  58. package/dist/extractors/index.d.ts +9 -0
  59. package/dist/extractors/index.d.ts.map +1 -0
  60. package/dist/extractors/index.js +9 -0
  61. package/dist/extractors/index.js.map +1 -0
  62. package/dist/extractors/loader.d.ts +19 -0
  63. package/dist/extractors/loader.d.ts.map +1 -0
  64. package/dist/extractors/loader.js +120 -0
  65. package/dist/extractors/loader.js.map +1 -0
  66. package/dist/extractors/meta-yml-fn.d.ts +19 -0
  67. package/dist/extractors/meta-yml-fn.d.ts.map +1 -0
  68. package/dist/extractors/meta-yml-fn.js +66 -0
  69. package/dist/extractors/meta-yml-fn.js.map +1 -0
  70. package/dist/extractors/meta-yml.d.ts +24 -0
  71. package/dist/extractors/meta-yml.d.ts.map +1 -0
  72. package/dist/extractors/meta-yml.js +65 -0
  73. package/dist/extractors/meta-yml.js.map +1 -0
  74. package/dist/extractors/registry.d.ts +58 -0
  75. package/dist/extractors/registry.d.ts.map +1 -0
  76. package/dist/extractors/registry.js +114 -0
  77. package/dist/extractors/registry.js.map +1 -0
  78. package/dist/extractors/registry.spec.d.ts +2 -0
  79. package/dist/extractors/registry.spec.d.ts.map +1 -0
  80. package/dist/extractors/registry.spec.js +102 -0
  81. package/dist/extractors/registry.spec.js.map +1 -0
  82. package/dist/extractors/types.d.ts +34 -0
  83. package/dist/extractors/types.d.ts.map +1 -0
  84. package/dist/extractors/types.js +8 -0
  85. package/dist/extractors/types.js.map +1 -0
  86. package/dist/extractors/yaml-frontmatter-fn.d.ts +18 -0
  87. package/dist/extractors/yaml-frontmatter-fn.d.ts.map +1 -0
  88. package/dist/extractors/yaml-frontmatter-fn.js +73 -0
  89. package/dist/extractors/yaml-frontmatter-fn.js.map +1 -0
  90. package/dist/extractors/yaml-frontmatter.d.ts +22 -0
  91. package/dist/extractors/yaml-frontmatter.d.ts.map +1 -0
  92. package/dist/extractors/yaml-frontmatter.js +83 -0
  93. package/dist/extractors/yaml-frontmatter.js.map +1 -0
  94. package/dist/extractors/yaml-frontmatter.spec.d.ts +2 -0
  95. package/dist/extractors/yaml-frontmatter.spec.d.ts.map +1 -0
  96. package/dist/extractors/yaml-frontmatter.spec.js +134 -0
  97. package/dist/extractors/yaml-frontmatter.spec.js.map +1 -0
  98. package/dist/files/index.d.ts +5 -0
  99. package/dist/files/index.d.ts.map +1 -0
  100. package/dist/files/index.js +5 -0
  101. package/dist/files/index.js.map +1 -0
  102. package/dist/files/reader.d.ts +50 -0
  103. package/dist/files/reader.d.ts.map +1 -0
  104. package/dist/files/reader.js +62 -0
  105. package/dist/files/reader.js.map +1 -0
  106. package/dist/index.d.ts +29 -0
  107. package/dist/index.d.ts.map +1 -0
  108. package/dist/index.js +22 -0
  109. package/dist/index.js.map +1 -0
  110. package/dist/plugins/index.d.ts +4 -0
  111. package/dist/plugins/index.d.ts.map +1 -0
  112. package/dist/plugins/index.js +4 -0
  113. package/dist/plugins/index.js.map +1 -0
  114. package/dist/plugins/pipeline.d.ts +11 -0
  115. package/dist/plugins/pipeline.d.ts.map +1 -0
  116. package/dist/plugins/pipeline.js +24 -0
  117. package/dist/plugins/pipeline.js.map +1 -0
  118. package/dist/plugins/registry.d.ts +57 -0
  119. package/dist/plugins/registry.d.ts.map +1 -0
  120. package/dist/plugins/registry.js +93 -0
  121. package/dist/plugins/registry.js.map +1 -0
  122. package/dist/plugins/validation.d.ts +64 -0
  123. package/dist/plugins/validation.d.ts.map +1 -0
  124. package/dist/plugins/validation.js +55 -0
  125. package/dist/plugins/validation.js.map +1 -0
  126. package/dist/regions/index.d.ts +7 -0
  127. package/dist/regions/index.d.ts.map +1 -0
  128. package/dist/regions/index.js +6 -0
  129. package/dist/regions/index.js.map +1 -0
  130. package/dist/regions/languages.d.ts +15 -0
  131. package/dist/regions/languages.d.ts.map +1 -0
  132. package/dist/regions/languages.js +182 -0
  133. package/dist/regions/languages.js.map +1 -0
  134. package/dist/regions/parser.d.ts +63 -0
  135. package/dist/regions/parser.d.ts.map +1 -0
  136. package/dist/regions/parser.js +175 -0
  137. package/dist/regions/parser.js.map +1 -0
  138. package/dist/regions/parser.spec.d.ts +2 -0
  139. package/dist/regions/parser.spec.d.ts.map +1 -0
  140. package/dist/regions/parser.spec.js +190 -0
  141. package/dist/regions/parser.spec.js.map +1 -0
  142. package/dist/regions/types.d.ts +37 -0
  143. package/dist/regions/types.d.ts.map +1 -0
  144. package/dist/regions/types.js +5 -0
  145. package/dist/regions/types.js.map +1 -0
  146. package/dist/scanner/candidates.d.ts +24 -0
  147. package/dist/scanner/candidates.d.ts.map +1 -0
  148. package/dist/scanner/candidates.js +83 -0
  149. package/dist/scanner/candidates.js.map +1 -0
  150. package/dist/scanner/index.d.ts +8 -0
  151. package/dist/scanner/index.d.ts.map +1 -0
  152. package/dist/scanner/index.js +6 -0
  153. package/dist/scanner/index.js.map +1 -0
  154. package/dist/scanner/scan.d.ts +40 -0
  155. package/dist/scanner/scan.d.ts.map +1 -0
  156. package/dist/scanner/scan.js +44 -0
  157. package/dist/scanner/scan.js.map +1 -0
  158. package/dist/scanner/scanner.d.ts +29 -0
  159. package/dist/scanner/scanner.d.ts.map +1 -0
  160. package/dist/scanner/scanner.js +296 -0
  161. package/dist/scanner/scanner.js.map +1 -0
  162. package/dist/scanner/scanner.spec.d.ts +2 -0
  163. package/dist/scanner/scanner.spec.d.ts.map +1 -0
  164. package/dist/scanner/scanner.spec.js +262 -0
  165. package/dist/scanner/scanner.spec.js.map +1 -0
  166. package/dist/scanner/types.d.ts +43 -0
  167. package/dist/scanner/types.d.ts.map +1 -0
  168. package/dist/scanner/types.js +5 -0
  169. package/dist/scanner/types.js.map +1 -0
  170. package/dist/schema/index.d.ts +4 -0
  171. package/dist/schema/index.d.ts.map +1 -0
  172. package/dist/schema/index.js +4 -0
  173. package/dist/schema/index.js.map +1 -0
  174. package/dist/schema/merger.d.ts +35 -0
  175. package/dist/schema/merger.d.ts.map +1 -0
  176. package/dist/schema/merger.js +161 -0
  177. package/dist/schema/merger.js.map +1 -0
  178. package/dist/schema/typegen.d.ts +13 -0
  179. package/dist/schema/typegen.d.ts.map +1 -0
  180. package/dist/schema/typegen.js +125 -0
  181. package/dist/schema/typegen.js.map +1 -0
  182. package/dist/schema/validator.d.ts +7 -0
  183. package/dist/schema/validator.d.ts.map +1 -0
  184. package/dist/schema/validator.js +32 -0
  185. package/dist/schema/validator.js.map +1 -0
  186. package/dist/types/default-map.d.ts +21 -0
  187. package/dist/types/default-map.d.ts.map +1 -0
  188. package/dist/types/default-map.js +32 -0
  189. package/dist/types/default-map.js.map +1 -0
  190. package/dist/types/extended-iterable.d.ts +197 -0
  191. package/dist/types/extended-iterable.d.ts.map +1 -0
  192. package/dist/types/extended-iterable.js +769 -0
  193. package/dist/types/extended-iterable.js.map +1 -0
  194. package/dist/types/guards.d.ts +2 -0
  195. package/dist/types/guards.d.ts.map +1 -0
  196. package/dist/types/guards.js +2 -0
  197. package/dist/types/guards.js.map +1 -0
  198. package/dist/types/index.d.ts +11 -0
  199. package/dist/types/index.d.ts.map +1 -0
  200. package/dist/types/index.js +10 -0
  201. package/dist/types/index.js.map +1 -0
  202. package/package.json +61 -0
@@ -0,0 +1,197 @@
1
+ import { TypeGuard } from './guards.js';
2
+ /**
3
+ * A wrapper around Iterable that provides chainable transformation methods.
4
+ * Each method returns a new ExtendedIterable wrapping the source,
5
+ * mirroring how Array methods work but with lazy evaluation.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const numbers = new ExtendedIterable([1, 2, 3]);
10
+ * const doubled = numbers.map(x => x * 2).collect(); // [2, 4, 6]
11
+ *
12
+ * // Works with any iterable, including generators
13
+ * const result = new ExtendedIterable(myGenerator())
14
+ * .map(transform)
15
+ * .join(', ');
16
+ * ```
17
+ */
18
+ export declare class ExtendedIterable<T> implements Iterable<T> {
19
+ private _iterFn;
20
+ constructor(iterable: Iterable<T>);
21
+ private static _from;
22
+ /**
23
+ * Flattens one level of nesting by yielding elements from nested iterables.
24
+ * Non-iterable values are yielded as-is. Strings are not split into characters.
25
+ */
26
+ flat(): ExtendedIterable<T extends Iterable<infer U> ? U : T>;
27
+ /**
28
+ * Maps each element through a transformation function.
29
+ * Evaluation is lazy - the function is called only when iterating.
30
+ */
31
+ map<T2>(fn: (val: T) => T2): ExtendedIterable<T2>;
32
+ filter(predicate: (val: T) => boolean): ExtendedIterable<T>;
33
+ filter<T2>(predicate: (val: T) => TypeGuard<T2>): ExtendedIterable<T2>;
34
+ /**
35
+ * Takes the first n elements.
36
+ */
37
+ take(n: number): ExtendedIterable<T>;
38
+ /**
39
+ * Tests whether at least one element passes the predicate.
40
+ * Short-circuits on first match.
41
+ * Supports both sync and async predicates - returns Promise if predicate is async.
42
+ */
43
+ some(predicate: (val: T) => boolean): boolean;
44
+ some(predicate: (val: T) => Promise<boolean>): Promise<boolean>;
45
+ /**
46
+ * Returns the first element that passes the predicate, or undefined.
47
+ * Short-circuits on first match.
48
+ * Supports both sync and async predicates - returns Promise if predicate is async.
49
+ */
50
+ find(predicate: (val: T) => boolean): T | undefined;
51
+ find(predicate: (val: T) => Promise<boolean>): Promise<T | undefined>;
52
+ /**
53
+ * Reduces the iterable to a single value by applying a function against
54
+ * an accumulator and each element.
55
+ *
56
+ * Without an initial value, the first element is used as the accumulator
57
+ * and reduction starts from the second element. Throws TypeError on empty iterables.
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * iter([1, 2, 3]).reduce((sum, n) => sum + n); // 6
62
+ * iter([1, 2, 3]).reduce((sum, n) => sum + n, 10); // 16
63
+ * ```
64
+ */
65
+ reduce(fn: (acc: T, val: T) => T): T;
66
+ reduce<U>(fn: (acc: U, val: T) => U, initialValue: U): U;
67
+ /**
68
+ * Collects all elements into an array.
69
+ */
70
+ collect(): T[];
71
+ /**
72
+ * Joins all elements into a string with a separator.
73
+ * Elements are converted to strings using toString().
74
+ */
75
+ join(separator: string): string;
76
+ /**
77
+ * Prepends an iterable to the start of this iterable.
78
+ */
79
+ prefix<U>(prefix: Iterable<U>): ExtendedIterable<T | U>;
80
+ /**
81
+ * Removes elements from the iterable and optionally inserts new elements.
82
+ * Returns both the modified iterable and the deleted elements.
83
+ * Both iterables share state - iterating either will cache results for the other.
84
+ *
85
+ * @param matcher - Predicate to find the splice position
86
+ * @param deleteCount - Number of elements to remove after the match
87
+ * @param insertIterable - Elements to insert after removing
88
+ * @returns Object with `sliced` (modified iterable) and `deleted` (removed elements)
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * const { deleted, sliced } = iter([1, 2, 3, 4, 5])
93
+ * .splice((el) => el === 3, 2, iter([10, 20]));
94
+ * sliced.collect(); // [1, 2, 10, 20, 5]
95
+ * deleted.collect(); // [3, 4]
96
+ * ```
97
+ */
98
+ splice(matcher: (val: T) => boolean, deleteCount: number, insertIterable: Iterable<T>): {
99
+ deleted: ExtendedIterable<T>;
100
+ sliced: ExtendedIterable<T>;
101
+ };
102
+ [Symbol.iterator](): Iterator<T>;
103
+ }
104
+ export declare class AsyncExtendedIterable<T> implements AsyncIterable<T> {
105
+ private asyncIterable;
106
+ constructor(iterable: AsyncIterable<T> | Iterable<T>);
107
+ /**
108
+ * Maps each element through a transformation function.
109
+ * The function can be sync or async.
110
+ * Evaluation is lazy - the function is called only when iterating.
111
+ */
112
+ map<T2>(fn: (val: T) => T2 | Promise<T2>): AsyncExtendedIterable<T2>;
113
+ filter(predicate: (val: T) => boolean | Promise<boolean>): AsyncExtendedIterable<T>;
114
+ filter<T2 = unknown>(predicate: (val: T) => TypeGuard<T2>): AsyncExtendedIterable<T2>;
115
+ /**
116
+ * Reduces the async iterable to a single value.
117
+ * Without an initial value, the first element is used as the accumulator.
118
+ * Throws TypeError on empty iterables when no initial value is provided.
119
+ */
120
+ reduce(fn: (acc: T, val: T) => T | Promise<T>): Promise<T>;
121
+ reduce<U>(fn: (acc: U, val: T) => U | Promise<U>, initialValue: U): Promise<U>;
122
+ /**
123
+ * Collects all elements into an array.
124
+ */
125
+ collect(): Promise<T[]>;
126
+ /**
127
+ * Joins all elements into a string with a separator.
128
+ * Elements are converted to strings using String().
129
+ */
130
+ join(separator: string): Promise<string>;
131
+ /**
132
+ * Takes the first n elements.
133
+ */
134
+ take(n: number): AsyncExtendedIterable<T>;
135
+ /**
136
+ * Tests whether at least one element passes the predicate.
137
+ * Short-circuits on first match. Predicate can be sync or async.
138
+ */
139
+ some(predicate: (val: T) => boolean | Promise<boolean>): Promise<boolean>;
140
+ /**
141
+ * Returns the first element that passes the predicate, or undefined.
142
+ * Short-circuits on first match. Predicate can be sync or async.
143
+ */
144
+ find(predicate: (val: T) => boolean | Promise<boolean>): Promise<T | undefined>;
145
+ /**
146
+ * Removes elements from the async iterable and optionally inserts new elements.
147
+ * Returns both the modified iterable and the deleted elements.
148
+ * Both iterables share state - iterating either will cache results for the other.
149
+ */
150
+ splice(matcher: (val: T) => boolean | Promise<boolean>, deleteCount: number, insertIterable: AsyncIterable<T> | Iterable<T>): Promise<{
151
+ deleted: AsyncExtendedIterable<T>;
152
+ sliced: AsyncExtendedIterable<T>;
153
+ }>;
154
+ [Symbol.asyncIterator](): AsyncIterator<T>;
155
+ }
156
+ /**
157
+ * Helper to create an AsyncExtendedIterable from any iterable.
158
+ */
159
+ export declare function asyncIter<T>(iterable: AsyncIterable<T> | Iterable<T>): AsyncExtendedIterable<T>;
160
+ /**
161
+ * Returns an AsyncExtendedIterable that yields promise results as they settle,
162
+ * in completion order (not input order).
163
+ *
164
+ * Like Promise.allSettled, but streaming - you get results as soon as they're ready,
165
+ * with full chaining support.
166
+ *
167
+ * @example
168
+ * ```typescript
169
+ * const promises = [
170
+ * fetch('/slow'), // takes 3s
171
+ * fetch('/fast'), // takes 1s
172
+ * fetch('/medium'), // takes 2s
173
+ * ];
174
+ *
175
+ * // Results arrive in order: fast, medium, slow
176
+ * for await (const result of asSettled(promises)) {
177
+ * if (result.status === 'fulfilled') {
178
+ * console.log('Got:', result.value);
179
+ * } else {
180
+ * console.log('Failed:', result.reason);
181
+ * }
182
+ * }
183
+ *
184
+ * // Chain operations
185
+ * const firstThreeSuccesses = await asSettled(promises)
186
+ * .filter(r => r.status === 'fulfilled')
187
+ * .map(r => (r as PromiseFulfilledResult<Response>).value)
188
+ * .take(3)
189
+ * .collect();
190
+ * ```
191
+ */
192
+ export declare function asSettled<T>(promises: Iterable<Promise<T>>): AsyncExtendedIterable<PromiseSettledResult<T>>;
193
+ /**
194
+ * Helper to create an ExtendedIterable from any iterable.
195
+ */
196
+ export declare function iter<T>(iterable: Iterable<T>): ExtendedIterable<T>;
197
+ //# sourceMappingURL=extended-iterable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extended-iterable.d.ts","sourceRoot":"","sources":["../../src/types/extended-iterable.ts"],"names":[],"mappings":"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"}