@shuji-bonji/rxjs-mcp 0.1.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.
Files changed (36) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja.md +284 -0
  3. package/README.md +295 -0
  4. package/dist/index.d.ts +3 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +94 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/tools/analyze-operators.d.ts +3 -0
  9. package/dist/tools/analyze-operators.d.ts.map +1 -0
  10. package/dist/tools/analyze-operators.js +396 -0
  11. package/dist/tools/analyze-operators.js.map +1 -0
  12. package/dist/tools/execute-stream-worker.d.ts +2 -0
  13. package/dist/tools/execute-stream-worker.d.ts.map +1 -0
  14. package/dist/tools/execute-stream-worker.js +246 -0
  15. package/dist/tools/execute-stream-worker.js.map +1 -0
  16. package/dist/tools/execute-stream.d.ts +3 -0
  17. package/dist/tools/execute-stream.d.ts.map +1 -0
  18. package/dist/tools/execute-stream.js +219 -0
  19. package/dist/tools/execute-stream.js.map +1 -0
  20. package/dist/tools/marble-diagram.d.ts +3 -0
  21. package/dist/tools/marble-diagram.d.ts.map +1 -0
  22. package/dist/tools/marble-diagram.js +207 -0
  23. package/dist/tools/marble-diagram.js.map +1 -0
  24. package/dist/tools/memory-leak.d.ts +3 -0
  25. package/dist/tools/memory-leak.d.ts.map +1 -0
  26. package/dist/tools/memory-leak.js +285 -0
  27. package/dist/tools/memory-leak.js.map +1 -0
  28. package/dist/tools/suggest-pattern.d.ts +3 -0
  29. package/dist/tools/suggest-pattern.d.ts.map +1 -0
  30. package/dist/tools/suggest-pattern.js +571 -0
  31. package/dist/tools/suggest-pattern.js.map +1 -0
  32. package/dist/types.d.ts +85 -0
  33. package/dist/types.d.ts.map +1 -0
  34. package/dist/types.js +3 -0
  35. package/dist/types.js.map +1 -0
  36. package/package.json +71 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-operators.d.ts","sourceRoot":"","sources":["../../src/tools/analyze-operators.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAkE,MAAM,aAAa,CAAC;AA4TjH,eAAO,MAAM,oBAAoB,EAAE,kBAoIlC,CAAC"}
@@ -0,0 +1,396 @@
1
+ import { z } from 'zod';
2
+ import { DOC_BASE_URL } from '../types.js';
3
+ // Input schema
4
+ const inputSchema = z.object({
5
+ code: z.string().describe('RxJS operator chain code to analyze'),
6
+ includeAlternatives: z.boolean().optional().default(true).describe('Whether to suggest alternative approaches'),
7
+ checkPerformance: z.boolean().optional().default(true).describe('Whether to check for performance issues'),
8
+ });
9
+ // Creation Functions database (based on https://shuji-bonji.github.io/RxJS-with-TypeScript/)
10
+ const creationFunctionDatabase = {
11
+ // basic
12
+ 'of': { name: 'of', category: 'basic', description: 'Emits the arguments you provide, then completes', docUrl: `${DOC_BASE_URL}/creation-functions/basic/of` },
13
+ 'from': { name: 'from', category: 'basic', description: 'Creates an Observable from an Array, Promise, or Iterable', docUrl: `${DOC_BASE_URL}/creation-functions/basic/from` },
14
+ 'fromEvent': { name: 'fromEvent', category: 'basic', description: 'Creates an Observable from DOM events', docUrl: `${DOC_BASE_URL}/creation-functions/basic/fromEvent` },
15
+ 'interval': { name: 'interval', category: 'basic', description: 'Emits incremental numbers at specified intervals', docUrl: `${DOC_BASE_URL}/creation-functions/basic/interval` },
16
+ 'timer': { name: 'timer', category: 'basic', description: 'Emits after a delay, then optionally at intervals', docUrl: `${DOC_BASE_URL}/creation-functions/basic/timer` },
17
+ // loop
18
+ 'range': { name: 'range', category: 'loop', description: 'Emits a sequence of numbers within a range', docUrl: `${DOC_BASE_URL}/creation-functions/loop/range` },
19
+ 'generate': { name: 'generate', category: 'loop', description: 'Creates an Observable with custom iteration logic', docUrl: `${DOC_BASE_URL}/creation-functions/loop/generate` },
20
+ // http
21
+ 'ajax': { name: 'ajax', category: 'http', description: 'Creates an Observable for AJAX requests', docUrl: `${DOC_BASE_URL}/creation-functions/http/ajax` },
22
+ 'fromFetch': { name: 'fromFetch', category: 'http', description: 'Creates an Observable from Fetch API', docUrl: `${DOC_BASE_URL}/creation-functions/http/fromFetch` },
23
+ // combination
24
+ 'concat': { name: 'concat', category: 'combination', description: 'Concatenates Observables in sequence', docUrl: `${DOC_BASE_URL}/creation-functions/combination/concat` },
25
+ 'merge': { name: 'merge', category: 'combination', description: 'Combines multiple Observables, emitting all values', docUrl: `${DOC_BASE_URL}/creation-functions/combination/merge` },
26
+ 'combineLatest': { name: 'combineLatest', category: 'combination', description: 'Combines latest values from all Observables', docUrl: `${DOC_BASE_URL}/creation-functions/combination/combineLatest` },
27
+ 'zip': { name: 'zip', category: 'combination', description: 'Combines values by index into arrays', docUrl: `${DOC_BASE_URL}/creation-functions/combination/zip` },
28
+ 'forkJoin': { name: 'forkJoin', category: 'combination', description: 'Waits for all to complete, emits final values', docUrl: `${DOC_BASE_URL}/creation-functions/combination/forkJoin` },
29
+ // selection
30
+ 'race': { name: 'race', category: 'selection', description: 'Emits from the Observable that emits first', docUrl: `${DOC_BASE_URL}/creation-functions/selection/race` },
31
+ 'partition': { name: 'partition', category: 'selection', description: 'Splits Observable into two based on predicate', docUrl: `${DOC_BASE_URL}/creation-functions/selection/partition` },
32
+ // conditional
33
+ 'iif': { name: 'iif', category: 'conditional', description: 'Subscribes to one of two Observables based on condition', docUrl: `${DOC_BASE_URL}/creation-functions/conditional/iif` },
34
+ 'defer': { name: 'defer', category: 'conditional', description: 'Creates Observable lazily at subscription time', docUrl: `${DOC_BASE_URL}/creation-functions/conditional/defer` },
35
+ // control
36
+ 'scheduled': { name: 'scheduled', category: 'control', description: 'Creates an Observable with a specific scheduler', docUrl: `${DOC_BASE_URL}/creation-functions/control/scheduled` },
37
+ 'using': { name: 'using', category: 'control', description: 'Creates Observable with resource management', docUrl: `${DOC_BASE_URL}/creation-functions/control/using` },
38
+ };
39
+ // Pipeable Operators database (based on https://shuji-bonji.github.io/RxJS-with-TypeScript/)
40
+ const operatorDatabase = {
41
+ // Transformation operators
42
+ 'map': { name: 'map', category: 'transformation', description: 'Transforms each value by applying a function', docUrl: `${DOC_BASE_URL}/operators/transformation/map` },
43
+ 'scan': { name: 'scan', category: 'transformation', description: 'Accumulates values over time, emits each step', docUrl: `${DOC_BASE_URL}/operators/transformation/scan` },
44
+ 'mergeScan': { name: 'mergeScan', category: 'transformation', description: 'Like scan but with inner Observable merging', docUrl: `${DOC_BASE_URL}/operators/transformation/mergeScan` },
45
+ 'reduce': { name: 'reduce', category: 'transformation', description: 'Accumulates values and emits final result on completion', docUrl: `${DOC_BASE_URL}/operators/transformation/reduce` },
46
+ 'pairwise': { name: 'pairwise', category: 'transformation', description: 'Emits previous and current value as array', docUrl: `${DOC_BASE_URL}/operators/transformation/pairwise` },
47
+ 'groupBy': { name: 'groupBy', category: 'transformation', description: 'Groups emissions by key into separate Observables', docUrl: `${DOC_BASE_URL}/operators/transformation/groupBy` },
48
+ 'mergeMap': { name: 'mergeMap', category: 'transformation', description: 'Projects values to inner Observable, running concurrently', docUrl: `${DOC_BASE_URL}/operators/transformation/mergeMap`, marblePattern: '-a---b---c--| → -A-B-C-D-E-F-|' },
49
+ 'switchMap': { name: 'switchMap', category: 'transformation', description: 'Projects values to inner Observable, cancelling previous', docUrl: `${DOC_BASE_URL}/operators/transformation/switchMap`, marblePattern: '-a---b---c--| → -A-B-C-D-E-F-|' },
50
+ 'concatMap': { name: 'concatMap', category: 'transformation', description: 'Projects values to inner Observable, waiting for completion', docUrl: `${DOC_BASE_URL}/operators/transformation/concatMap`, marblePattern: '-a---b---c--| → -A-A-B-B-C-C-|' },
51
+ 'exhaustMap': { name: 'exhaustMap', category: 'transformation', description: 'Projects values to inner Observable, ignoring new while active', docUrl: `${DOC_BASE_URL}/operators/transformation/exhaustMap`, marblePattern: '-a---b---c--| → -A-A-A---C-C-|' },
52
+ 'expand': { name: 'expand', category: 'transformation', description: 'Recursively projects values to inner Observables', docUrl: `${DOC_BASE_URL}/operators/transformation/expand` },
53
+ 'buffer': { name: 'buffer', category: 'transformation', description: 'Buffers values until notifier emits', docUrl: `${DOC_BASE_URL}/operators/transformation/buffer` },
54
+ 'bufferTime': { name: 'bufferTime', category: 'transformation', description: 'Buffers values for specified time periods', docUrl: `${DOC_BASE_URL}/operators/transformation/bufferTime` },
55
+ 'bufferCount': { name: 'bufferCount', category: 'transformation', description: 'Buffers specified number of values', docUrl: `${DOC_BASE_URL}/operators/transformation/bufferCount` },
56
+ 'bufferWhen': { name: 'bufferWhen', category: 'transformation', description: 'Buffers values using closing selector', docUrl: `${DOC_BASE_URL}/operators/transformation/bufferWhen` },
57
+ 'bufferToggle': { name: 'bufferToggle', category: 'transformation', description: 'Buffers values based on opening and closing signals', docUrl: `${DOC_BASE_URL}/operators/transformation/bufferToggle` },
58
+ 'windowTime': { name: 'windowTime', category: 'transformation', description: 'Splits source into nested Observables by time', docUrl: `${DOC_BASE_URL}/operators/transformation/windowTime` },
59
+ 'window': { name: 'window', category: 'transformation', description: 'Splits source into nested Observable windows', docUrl: `${DOC_BASE_URL}/operators/transformation/window` },
60
+ 'windowCount': { name: 'windowCount', category: 'transformation', description: 'Splits source into nested Observables by count', docUrl: `${DOC_BASE_URL}/operators/transformation/windowCount` },
61
+ 'windowToggle': { name: 'windowToggle', category: 'transformation', description: 'Splits source based on opening and closing signals', docUrl: `${DOC_BASE_URL}/operators/transformation/windowToggle` },
62
+ 'windowWhen': { name: 'windowWhen', category: 'transformation', description: 'Splits source using closing selector', docUrl: `${DOC_BASE_URL}/operators/transformation/windowWhen` },
63
+ // Filtering operators
64
+ 'filter': { name: 'filter', category: 'filtering', description: 'Emits only values that pass a predicate test', docUrl: `${DOC_BASE_URL}/operators/filtering/filter` },
65
+ 'take': { name: 'take', category: 'filtering', description: 'Emits only the first n values, then completes', docUrl: `${DOC_BASE_URL}/operators/filtering/take` },
66
+ 'takeLast': { name: 'takeLast', category: 'filtering', description: 'Emits only the last n values on completion', docUrl: `${DOC_BASE_URL}/operators/filtering/takeLast` },
67
+ 'takeWhile': { name: 'takeWhile', category: 'filtering', description: 'Emits while condition is true', docUrl: `${DOC_BASE_URL}/operators/filtering/takeWhile` },
68
+ 'skip': { name: 'skip', category: 'filtering', description: 'Skips the first n emissions', docUrl: `${DOC_BASE_URL}/operators/filtering/skip` },
69
+ 'skipLast': { name: 'skipLast', category: 'filtering', description: 'Skips the last n emissions', docUrl: `${DOC_BASE_URL}/operators/filtering/skipLast` },
70
+ 'skipWhile': { name: 'skipWhile', category: 'filtering', description: 'Skips while condition is true', docUrl: `${DOC_BASE_URL}/operators/filtering/skipWhile` },
71
+ 'skipUntil': { name: 'skipUntil', category: 'filtering', description: 'Skips until another Observable emits', docUrl: `${DOC_BASE_URL}/operators/filtering/skipUntil` },
72
+ 'first': { name: 'first', category: 'filtering', description: 'Emits only the first value (or first matching)', docUrl: `${DOC_BASE_URL}/operators/filtering/first` },
73
+ 'last': { name: 'last', category: 'filtering', description: 'Emits only the last value (or last matching)', docUrl: `${DOC_BASE_URL}/operators/filtering/last` },
74
+ 'elementAt': { name: 'elementAt', category: 'filtering', description: 'Emits only the value at specified index', docUrl: `${DOC_BASE_URL}/operators/filtering/elementAt` },
75
+ 'find': { name: 'find', category: 'filtering', description: 'Emits first value that matches predicate', docUrl: `${DOC_BASE_URL}/operators/filtering/find` },
76
+ 'findIndex': { name: 'findIndex', category: 'filtering', description: 'Emits index of first value that matches', docUrl: `${DOC_BASE_URL}/operators/filtering/findIndex` },
77
+ 'debounceTime': { name: 'debounceTime', category: 'filtering', description: 'Emits after a period of inactivity', docUrl: `${DOC_BASE_URL}/operators/filtering/debounceTime` },
78
+ 'throttleTime': { name: 'throttleTime', category: 'filtering', description: 'Emits first value, then ignores for duration', docUrl: `${DOC_BASE_URL}/operators/filtering/throttleTime` },
79
+ 'auditTime': { name: 'auditTime', category: 'filtering', description: 'Emits most recent value after duration', docUrl: `${DOC_BASE_URL}/operators/filtering/auditTime` },
80
+ 'audit': { name: 'audit', category: 'filtering', description: 'Emits most recent value when notifier emits', docUrl: `${DOC_BASE_URL}/operators/filtering/audit` },
81
+ 'sampleTime': { name: 'sampleTime', category: 'filtering', description: 'Emits most recent value at intervals', docUrl: `${DOC_BASE_URL}/operators/filtering/sampleTime` },
82
+ 'ignoreElements': { name: 'ignoreElements', category: 'filtering', description: 'Ignores all emissions, only passes complete/error', docUrl: `${DOC_BASE_URL}/operators/filtering/ignoreElements` },
83
+ 'distinct': { name: 'distinct', category: 'filtering', description: 'Emits only distinct values', docUrl: `${DOC_BASE_URL}/operators/filtering/distinct` },
84
+ 'distinctUntilChanged': { name: 'distinctUntilChanged', category: 'filtering', description: 'Emits when value changes from previous', docUrl: `${DOC_BASE_URL}/operators/filtering/distinctUntilChanged` },
85
+ 'distinctUntilKeyChanged': { name: 'distinctUntilKeyChanged', category: 'filtering', description: 'Emits when specific key value changes', docUrl: `${DOC_BASE_URL}/operators/filtering/distinctUntilKeyChanged` },
86
+ // Combination operators (pipeable)
87
+ 'concatWith': { name: 'concatWith', category: 'combination', description: 'Concatenates with other Observables in sequence', docUrl: `${DOC_BASE_URL}/operators/combination/concatWith` },
88
+ 'mergeWith': { name: 'mergeWith', category: 'combination', description: 'Merges with other Observables concurrently', docUrl: `${DOC_BASE_URL}/operators/combination/mergeWith` },
89
+ 'combineLatestWith': { name: 'combineLatestWith', category: 'combination', description: 'Combines latest values with other Observables', docUrl: `${DOC_BASE_URL}/operators/combination/combineLatestWith` },
90
+ 'zipWith': { name: 'zipWith', category: 'combination', description: 'Zips with other Observables by index', docUrl: `${DOC_BASE_URL}/operators/combination/zipWith` },
91
+ 'raceWith': { name: 'raceWith', category: 'combination', description: 'Races with other Observables, first wins', docUrl: `${DOC_BASE_URL}/operators/combination/raceWith` },
92
+ 'withLatestFrom': { name: 'withLatestFrom', category: 'combination', description: 'Combines with latest value from another Observable', docUrl: `${DOC_BASE_URL}/operators/combination/withLatestFrom` },
93
+ 'mergeAll': { name: 'mergeAll', category: 'combination', description: 'Flattens higher-order Observable concurrently', docUrl: `${DOC_BASE_URL}/operators/combination/mergeAll` },
94
+ 'concatAll': { name: 'concatAll', category: 'combination', description: 'Flattens higher-order Observable in sequence', docUrl: `${DOC_BASE_URL}/operators/combination/concatAll` },
95
+ 'switchAll': { name: 'switchAll', category: 'combination', description: 'Flattens to latest inner Observable', docUrl: `${DOC_BASE_URL}/operators/combination/switchAll` },
96
+ 'exhaustAll': { name: 'exhaustAll', category: 'combination', description: 'Flattens, ignoring new while active', docUrl: `${DOC_BASE_URL}/operators/combination/exhaustAll` },
97
+ 'combineLatestAll': { name: 'combineLatestAll', category: 'combination', description: 'Flattens with combineLatest strategy', docUrl: `${DOC_BASE_URL}/operators/combination/combineLatestAll` },
98
+ 'zipAll': { name: 'zipAll', category: 'combination', description: 'Flattens with zip strategy', docUrl: `${DOC_BASE_URL}/operators/combination/zipAll` },
99
+ // Utility operators
100
+ 'tap': { name: 'tap', category: 'utility', description: 'Performs side effects without altering emissions', docUrl: `${DOC_BASE_URL}/operators/utility/tap` },
101
+ 'delay': { name: 'delay', category: 'utility', description: 'Delays emissions by specified time', docUrl: `${DOC_BASE_URL}/operators/utility/delay` },
102
+ 'delayWhen': { name: 'delayWhen', category: 'utility', description: 'Delays emissions based on another Observable', docUrl: `${DOC_BASE_URL}/operators/utility/delayWhen` },
103
+ 'timeout': { name: 'timeout', category: 'utility', description: 'Errors if no emission within specified time', docUrl: `${DOC_BASE_URL}/operators/utility/timeout` },
104
+ 'takeUntil': { name: 'takeUntil', category: 'utility', description: 'Emits until another Observable emits', docUrl: `${DOC_BASE_URL}/operators/utility/takeUntil` },
105
+ 'finalize': { name: 'finalize', category: 'utility', description: 'Executes callback on completion or error', docUrl: `${DOC_BASE_URL}/operators/utility/finalize` },
106
+ 'repeat': { name: 'repeat', category: 'utility', description: 'Resubscribes to source on completion', docUrl: `${DOC_BASE_URL}/operators/utility/repeat` },
107
+ 'startWith': { name: 'startWith', category: 'utility', description: 'Emits specified values before source emissions', docUrl: `${DOC_BASE_URL}/operators/utility/startWith` },
108
+ 'endWith': { name: 'endWith', category: 'utility', description: 'Emits specified values after source completes', docUrl: `${DOC_BASE_URL}/operators/utility/endWith` },
109
+ 'toArray': { name: 'toArray', category: 'utility', description: 'Collects all emissions into an array', docUrl: `${DOC_BASE_URL}/operators/utility/toArray` },
110
+ 'materialize': { name: 'materialize', category: 'utility', description: 'Converts emissions to Notification objects', docUrl: `${DOC_BASE_URL}/operators/utility/materialize` },
111
+ 'dematerialize': { name: 'dematerialize', category: 'utility', description: 'Converts Notification objects to emissions', docUrl: `${DOC_BASE_URL}/operators/utility/dematerialize` },
112
+ 'observeOn': { name: 'observeOn', category: 'utility', description: 'Re-emits values on specified scheduler', docUrl: `${DOC_BASE_URL}/operators/utility/observeOn` },
113
+ 'subscribeOn': { name: 'subscribeOn', category: 'utility', description: 'Subscribes on specified scheduler', docUrl: `${DOC_BASE_URL}/operators/utility/subscribeOn` },
114
+ 'timestamp': { name: 'timestamp', category: 'utility', description: 'Attaches timestamp to each emission', docUrl: `${DOC_BASE_URL}/operators/utility/timestamp` },
115
+ // Conditional operators
116
+ 'defaultIfEmpty': { name: 'defaultIfEmpty', category: 'conditional', description: 'Emits default value if source completes empty', docUrl: `${DOC_BASE_URL}/operators/conditional/defaultIfEmpty` },
117
+ 'every': { name: 'every', category: 'conditional', description: 'Emits true if all values pass predicate', docUrl: `${DOC_BASE_URL}/operators/conditional/every` },
118
+ 'isEmpty': { name: 'isEmpty', category: 'conditional', description: 'Emits true if source completes without emitting', docUrl: `${DOC_BASE_URL}/operators/conditional/isEmpty` },
119
+ // Error handling operators
120
+ 'catchError': { name: 'catchError', category: 'error-handling', description: 'Catches errors and returns new Observable', docUrl: `${DOC_BASE_URL}/operators/error-handling/catchError` },
121
+ 'retry': { name: 'retry', category: 'error-handling', description: 'Retries the source Observable on error', docUrl: `${DOC_BASE_URL}/operators/error-handling/retry` },
122
+ 'retryWhen': { name: 'retryWhen', category: 'error-handling', description: 'Retries based on custom logic', docUrl: `${DOC_BASE_URL}/operators/error-handling/retryWhen` },
123
+ // Multicasting operators
124
+ 'share': { name: 'share', category: 'multicasting', description: 'Shares a single subscription among observers', docUrl: `${DOC_BASE_URL}/operators/multicasting/share` },
125
+ 'shareReplay': { name: 'shareReplay', category: 'multicasting', description: 'Shares and replays specified emissions', docUrl: `${DOC_BASE_URL}/operators/multicasting/shareReplay` },
126
+ // Legacy/deprecated but still commonly used
127
+ 'pluck': { name: 'pluck', category: 'transformation', description: 'Plucks a nested property from emitted objects (deprecated: use map)', docUrl: `${DOC_BASE_URL}/operators/transformation/pluck` },
128
+ 'mapTo': { name: 'mapTo', category: 'transformation', description: 'Maps every emission to a constant value (deprecated: use map)', docUrl: `${DOC_BASE_URL}/operators/transformation/mapTo` },
129
+ };
130
+ // Extract creation functions from code
131
+ function extractCreationFunctions(code) {
132
+ const functions = [];
133
+ Object.keys(creationFunctionDatabase).forEach(fn => {
134
+ // Match standalone function calls like of(), from(), interval()
135
+ const fnRegex = new RegExp(`\\b${fn}\\s*\\(`, 'g');
136
+ if (fnRegex.test(code) && !functions.includes(fn)) {
137
+ functions.push(fn);
138
+ }
139
+ });
140
+ return functions;
141
+ }
142
+ // Extract content from balanced parentheses (handles nested parens)
143
+ function extractBalancedContent(code, startIndex) {
144
+ let depth = 0;
145
+ let start = -1;
146
+ let i = startIndex;
147
+ while (i < code.length) {
148
+ if (code[i] === '(') {
149
+ if (depth === 0) {
150
+ start = i + 1;
151
+ }
152
+ depth++;
153
+ }
154
+ else if (code[i] === ')') {
155
+ depth--;
156
+ if (depth === 0) {
157
+ return code.slice(start, i);
158
+ }
159
+ }
160
+ i++;
161
+ }
162
+ return '';
163
+ }
164
+ // Extract operators from code
165
+ function extractOperators(code) {
166
+ const operators = [];
167
+ // Find all .pipe( occurrences and extract their balanced content
168
+ const pipePattern = /\.pipe\s*\(/g;
169
+ let match;
170
+ while ((match = pipePattern.exec(code)) !== null) {
171
+ const pipeContent = extractBalancedContent(code, match.index + match[0].length - 1);
172
+ // Now search for operators in the pipe content
173
+ Object.keys(operatorDatabase).forEach(op => {
174
+ // Match operator name followed by ( with possible whitespace
175
+ const opRegex = new RegExp(`\\b${op}\\s*\\(`, 'g');
176
+ if (opRegex.test(pipeContent) && !operators.includes(op)) {
177
+ operators.push(op);
178
+ }
179
+ });
180
+ }
181
+ // Also check for operators used with method chaining (legacy style)
182
+ Object.keys(operatorDatabase).forEach(op => {
183
+ const standaloneRegex = new RegExp(`\\.${op}\\s*\\(`, 'g');
184
+ if (standaloneRegex.test(code) && !operators.includes(op)) {
185
+ operators.push(op);
186
+ }
187
+ });
188
+ return operators;
189
+ }
190
+ // Analyze creation functions
191
+ function analyzeCreationFunctions(functions) {
192
+ return functions.map(fn => {
193
+ const info = creationFunctionDatabase[fn];
194
+ if (info) {
195
+ return info;
196
+ }
197
+ return {
198
+ name: fn,
199
+ category: 'basic',
200
+ description: 'Unknown creation function',
201
+ docUrl: '',
202
+ };
203
+ });
204
+ }
205
+ // Analyze operator chain
206
+ function analyzeOperatorChain(operators, checkPerformance) {
207
+ const analysis = {
208
+ operators: operators.map(op => {
209
+ const info = operatorDatabase[op];
210
+ if (info) {
211
+ return info;
212
+ }
213
+ return {
214
+ name: op,
215
+ category: 'utility',
216
+ description: 'Custom or unknown operator',
217
+ docUrl: '',
218
+ };
219
+ }),
220
+ categories: {},
221
+ performance: [],
222
+ suggestions: [],
223
+ };
224
+ // Count categories
225
+ analysis.operators.forEach(op => {
226
+ analysis.categories[op.category] = (analysis.categories[op.category] || 0) + 1;
227
+ });
228
+ // Performance checks
229
+ if (checkPerformance) {
230
+ // Check for multiple switchMap/mergeMap
231
+ const flatteningOps = operators.filter(op => ['switchMap', 'mergeMap', 'concatMap', 'exhaustMap'].includes(op));
232
+ if (flatteningOps.length > 1) {
233
+ analysis.performance.push(`⚠️ Multiple flattening operators (${flatteningOps.join(', ')}) may cause unnecessary complexity`);
234
+ }
235
+ // Check for filter after map
236
+ for (let i = 0; i < operators.length - 1; i++) {
237
+ if (operators[i] === 'map' && operators[i + 1] === 'filter') {
238
+ analysis.performance.push('💡 Consider combining map + filter into a single operation');
239
+ }
240
+ }
241
+ // Check for multiple subscriptions without share
242
+ if (!operators.includes('share') && !operators.includes('shareReplay')) {
243
+ if (operators.some(op => ['switchMap', 'mergeMap', 'concatMap'].includes(op))) {
244
+ analysis.suggestions.push('Consider adding `share()` or `shareReplay()` if multiple subscriptions exist');
245
+ }
246
+ }
247
+ // Check for missing error handling
248
+ const hasErrorHandling = operators.some(op => ['catchError', 'retry', 'retryWhen'].includes(op));
249
+ if (!hasErrorHandling && operators.some(op => ['switchMap', 'mergeMap', 'concatMap'].includes(op))) {
250
+ analysis.suggestions.push('Consider adding error handling with `catchError()` or `retry()`');
251
+ }
252
+ // Check for potential memory leaks
253
+ if (operators.includes('shareReplay')) {
254
+ analysis.performance.push('⚠️ `shareReplay()` without buffer limit may cause memory issues');
255
+ }
256
+ // Check for missing takeUntil
257
+ if (!operators.some(op => op.startsWith('take')) && operators.length > 3) {
258
+ analysis.suggestions.push('Consider using `takeUntil()` for proper cleanup in components');
259
+ }
260
+ }
261
+ return analysis;
262
+ }
263
+ // Suggest alternatives
264
+ function suggestAlternatives(operators) {
265
+ const suggestions = [];
266
+ // switchMap vs mergeMap vs concatMap vs exhaustMap
267
+ if (operators.includes('mergeMap')) {
268
+ suggestions.push('- **mergeMap**: Concurrent execution (current choice)\n- **switchMap**: Cancel previous, good for searches\n- **concatMap**: Sequential, preserves order\n- **exhaustMap**: Ignore new while processing');
269
+ }
270
+ // debounceTime vs throttleTime vs auditTime
271
+ if (operators.some(op => ['debounceTime', 'throttleTime', 'auditTime'].includes(op))) {
272
+ suggestions.push('**Rate limiting options:**\n- **debounceTime**: Wait for pause in emissions\n- **throttleTime**: Emit first, then ignore\n- **auditTime**: Emit last value after duration\n- **sampleTime**: Emit at regular intervals');
273
+ }
274
+ return suggestions;
275
+ }
276
+ // Tool implementation
277
+ export const analyzeOperatorsTool = {
278
+ definition: {
279
+ name: 'analyze_operators',
280
+ description: 'Analyze RxJS code for creation functions, operators, performance patterns, and best practices',
281
+ inputSchema: inputSchema,
282
+ annotations: {
283
+ readOnlyHint: true,
284
+ idempotentHint: true,
285
+ },
286
+ },
287
+ handler: async (args) => {
288
+ const input = inputSchema.parse(args);
289
+ try {
290
+ const creationFunctions = extractCreationFunctions(input.code);
291
+ const operators = extractOperators(input.code);
292
+ if (creationFunctions.length === 0 && operators.length === 0) {
293
+ return {
294
+ content: [{
295
+ type: 'text',
296
+ text: '## No RxJS code detected\n\nPlease provide code containing RxJS creation functions or operators to analyze.',
297
+ }],
298
+ };
299
+ }
300
+ const creationAnalysis = analyzeCreationFunctions(creationFunctions);
301
+ const operatorAnalysis = analyzeOperatorChain(operators, input.checkPerformance);
302
+ const alternatives = input.includeAlternatives ? suggestAlternatives(operators) : [];
303
+ const parts = [
304
+ '## RxJS Code Analysis',
305
+ '',
306
+ ];
307
+ // Creation Functions section
308
+ if (creationFunctions.length > 0) {
309
+ parts.push('### Creation Functions');
310
+ parts.push(`**Total:** ${creationFunctions.length}`);
311
+ parts.push('');
312
+ // Group by category
313
+ const byCategory = {};
314
+ creationAnalysis.forEach(fn => {
315
+ if (!byCategory[fn.category]) {
316
+ byCategory[fn.category] = [];
317
+ }
318
+ byCategory[fn.category].push(fn);
319
+ });
320
+ Object.entries(byCategory).forEach(([category, fns]) => {
321
+ parts.push(`**${category}:**`);
322
+ fns.forEach(fn => {
323
+ parts.push(`- **${fn.name}**: ${fn.description}`);
324
+ if (fn.docUrl) {
325
+ parts.push(` - 📖 [Documentation](${fn.docUrl})`);
326
+ }
327
+ });
328
+ parts.push('');
329
+ });
330
+ }
331
+ // Pipeable Operators section
332
+ if (operators.length > 0) {
333
+ parts.push('### Pipeable Operators');
334
+ parts.push(`**Total:** ${operators.length}`);
335
+ parts.push(`**Chain:** \`${operators.join(' → ')}\``);
336
+ parts.push('');
337
+ // Categories summary
338
+ parts.push('**Categories:**');
339
+ Object.entries(operatorAnalysis.categories).forEach(([category, count]) => {
340
+ parts.push(`- ${category}: ${count} operator(s)`);
341
+ });
342
+ parts.push('');
343
+ // Operator details
344
+ parts.push('**Details:**');
345
+ operatorAnalysis.operators.forEach((op, i) => {
346
+ parts.push(`${i + 1}. **${op.name}** (${op.category})`);
347
+ parts.push(` - ${op.description}`);
348
+ if (op.marblePattern) {
349
+ parts.push(` - Pattern: \`${op.marblePattern}\``);
350
+ }
351
+ if (op.docUrl) {
352
+ parts.push(` - 📖 [Documentation](${op.docUrl})`);
353
+ }
354
+ });
355
+ parts.push('');
356
+ }
357
+ // Performance section
358
+ if (operatorAnalysis.performance.length > 0) {
359
+ parts.push('### Performance Considerations');
360
+ operatorAnalysis.performance.forEach(perf => parts.push(perf));
361
+ parts.push('');
362
+ }
363
+ // Suggestions section
364
+ if (operatorAnalysis.suggestions.length > 0) {
365
+ parts.push('### Suggestions');
366
+ operatorAnalysis.suggestions.forEach(sug => parts.push(`- ${sug}`));
367
+ parts.push('');
368
+ }
369
+ // Alternatives section
370
+ if (alternatives.length > 0) {
371
+ parts.push('### Alternative Approaches');
372
+ alternatives.forEach(alt => parts.push(alt));
373
+ parts.push('');
374
+ }
375
+ // Documentation reference
376
+ parts.push('---');
377
+ parts.push(`📚 Reference: [RxJS with TypeScript](${DOC_BASE_URL})`);
378
+ return {
379
+ content: [{
380
+ type: 'text',
381
+ text: parts.join('\n'),
382
+ }],
383
+ };
384
+ }
385
+ catch (error) {
386
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
387
+ return {
388
+ content: [{
389
+ type: 'text',
390
+ text: `## Error analyzing code\n\n${errorMessage}`,
391
+ }],
392
+ };
393
+ }
394
+ },
395
+ };
396
+ //# sourceMappingURL=analyze-operators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-operators.js","sourceRoot":"","sources":["../../src/tools/analyze-operators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=execute-stream-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute-stream-worker.d.ts","sourceRoot":"","sources":["../../src/tools/execute-stream-worker.ts"],"names":[],"mappings":""}