@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.
- package/LICENSE +21 -0
- package/README.ja.md +284 -0
- package/README.md +295 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +94 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/analyze-operators.d.ts +3 -0
- package/dist/tools/analyze-operators.d.ts.map +1 -0
- package/dist/tools/analyze-operators.js +396 -0
- package/dist/tools/analyze-operators.js.map +1 -0
- package/dist/tools/execute-stream-worker.d.ts +2 -0
- package/dist/tools/execute-stream-worker.d.ts.map +1 -0
- package/dist/tools/execute-stream-worker.js +246 -0
- package/dist/tools/execute-stream-worker.js.map +1 -0
- package/dist/tools/execute-stream.d.ts +3 -0
- package/dist/tools/execute-stream.d.ts.map +1 -0
- package/dist/tools/execute-stream.js +219 -0
- package/dist/tools/execute-stream.js.map +1 -0
- package/dist/tools/marble-diagram.d.ts +3 -0
- package/dist/tools/marble-diagram.d.ts.map +1 -0
- package/dist/tools/marble-diagram.js +207 -0
- package/dist/tools/marble-diagram.js.map +1 -0
- package/dist/tools/memory-leak.d.ts +3 -0
- package/dist/tools/memory-leak.d.ts.map +1 -0
- package/dist/tools/memory-leak.js +285 -0
- package/dist/tools/memory-leak.js.map +1 -0
- package/dist/tools/suggest-pattern.d.ts +3 -0
- package/dist/tools/suggest-pattern.d.ts.map +1 -0
- package/dist/tools/suggest-pattern.js +571 -0
- package/dist/tools/suggest-pattern.js.map +1 -0
- package/dist/types.d.ts +85 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"execute-stream-worker.d.ts","sourceRoot":"","sources":["../../src/tools/execute-stream-worker.ts"],"names":[],"mappings":""}
|