@shuji-bonji/rxjs-mcp 0.5.0 → 0.5.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.
- package/CHANGELOG.md +44 -0
- package/dist/data/patterns.d.ts +9 -1
- package/dist/data/patterns.d.ts.map +1 -1
- package/dist/data/patterns.js +121 -21
- package/dist/data/patterns.js.map +1 -1
- package/dist/shared/subscription-analysis.d.ts +26 -0
- package/dist/shared/subscription-analysis.d.ts.map +1 -1
- package/dist/shared/subscription-analysis.js +34 -3
- package/dist/shared/subscription-analysis.js.map +1 -1
- package/dist/tools/analyze-operators.d.ts.map +1 -1
- package/dist/tools/analyze-operators.js +18 -5
- package/dist/tools/analyze-operators.js.map +1 -1
- package/dist/tools/execute-stream.d.ts.map +1 -1
- package/dist/tools/execute-stream.js +6 -1
- package/dist/tools/execute-stream.js.map +1 -1
- package/dist/tools/marble-diagram.d.ts.map +1 -1
- package/dist/tools/marble-diagram.js +55 -26
- package/dist/tools/marble-diagram.js.map +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,50 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.5.2] - 2026-09-02
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- **`eslint` を 9.39.5 → 10.9.1、`@eslint/js` を 9.39.5 → 10.0.1、`eslint-plugin-rxjs-x` を 0.7.7 → 1.0.6 へ** — この 3 つは同時にしか上げられない。`eslint-plugin-rxjs-x@1.0.6` の peer は `eslint ^10.0.1`、`@eslint/js@10.0.1` の peer は `eslint ^10.0.0` で、どれか 1 つだけを上げると `npm error Conflicting peer dependency` になる。dependabot は 3 つを別々の PR に分けており (#16 / #21、`@eslint/js` は PR 自体が無い)、単独ではいずれもマージできない。`eslint.config.js` (flat config) は eslint 10 で変更なしに動く。
|
|
13
|
+
- **`@types/node` を 20.19.43 → 26.4.1 へ** — `engines.node` は `>=22` なので、型定義が 20 系に留まっている状態を実態に合わせた。
|
|
14
|
+
- **`worker.on('error', ...)` のコールバック引数を `unknown` として扱う** — `@types/node` 26 で EventEmitter のオーバーロードが引数の型を `Error` と約束しなくなり、`error.message` が `TS18046: 'error' is of type 'unknown'` になる。`error instanceof Error` で絞ってから読む形にした。`@types/node` 20 でも同じ動作になる。
|
|
15
|
+
|
|
16
|
+
### Notes
|
|
17
|
+
|
|
18
|
+
- **`typescript` 7.0.2 (#18) は入れていない**。3 つ理由がある。(1) TS 7 は `@types/*` を自動で拾わないため `tsconfig.json` に `"types": ["node"]` が要る (無いと `Cannot find name 'process'` 等が 20 件出る)。(2) TS 7 のパッケージの main entry は `version` と `versionMajorMinor` しか export せず、コンパイラ API は `typescript/unstable/*` に移った。`src/data/patterns.test.ts` はその API を使っているため落ちる。(3) `eslint-plugin-rxjs-x@1.0.6` の peer が `typescript >=4.8.4 <6.1.0` で、上記の eslint 10 系と同時に入らない。(3) は上流が peer を広げるまで解決しない。
|
|
19
|
+
- **`lint_rxjs` のルール台帳と 1.0.6 の差** (この版では未対応、次で整理する) — 1.0.6 は `macro` / `no-compat` / `no-tap` を削除した (いずれも本サーバーは実装していないので影響なし)。1.0.6 の strict は `no-unnecessary-collection` を含むが、本サーバーの strict には無い。逆に本サーバーの strict にある `finnish` は、0.7.7 の strict にも 1.0.6 の strict にも入っていない (版の更新とは無関係の、元からのずれ)。recommended は 20 件で一致、strict は 0.7.7 が 26 件、1.0.6 が 28 件、本サーバーが 28 件。
|
|
20
|
+
- `eslint.config.js` が `src/tools/execute-stream.ts` と `execute-stream-worker.ts` に適用する rxjs-x のルールは 5 件で、0.7.7 と 1.0.6 で変わらない (`--print-config` で確認)。
|
|
21
|
+
|
|
22
|
+
### Infrastructure
|
|
23
|
+
|
|
24
|
+
- **`actions/checkout` と `actions/setup-node` を v4 から v7 へ** (#24 / #25) — `ci.yml` / `release.yml` / `url-validation.yml` の 3 ファイル、各 2 箇所。`release.yml` も対象なので、この版の publish が v7 での最初の実行になる。
|
|
25
|
+
|
|
26
|
+
## [0.5.1] - 2026-09-02
|
|
27
|
+
|
|
28
|
+
v0.5.0 をプラグイン経由で実際に呼んで見つかった 3 件の修正。ツールの入出力の形は変わらない。
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
|
|
32
|
+
- **`suggest_pattern` が構文として通らないコードを返していた** — framework 適応は、フレームワーク非依存のパターン本体を文字列としてクラス本体やフックの中に差し込んでいた。パターン本体の先頭には `import` 文があり、続くのは `const` 宣言と実行文なので、クラス本体に置けば宣言として解釈できず、関数本体に置けば `import` が module のトップレベル以外に来る。測ると、**21 通り (7 パターン × 3 framework) すべてで import が wrapper より後ろにあり、うち Angular の 7 件は `ts.transpileModule` が `Unexpected token. A constructor, method, accessor, or property was expected.` で落ちた**。React / Vue は構文解析は通るが、型検査が `TS1232: An import declaration can only be used at the top level of a namespace or module.` を返す。
|
|
33
|
+
- `import` 文を本体から分離して wrapper の上に出し、同じ module への import は 1 行にまとめる(パターンが `'rxjs'` から複数回 import しており、wrapper 側の import と合わせると重複するため)。
|
|
34
|
+
- 本体は Angular なら `start()` メソッド、React なら `useEffect`、Vue なら composable の関数本体に入れる。宣言と実行文はいずれの位置でも合法になる。
|
|
35
|
+
- React / Vue の wrapper にあった `stream$.subscribe(setData)` を削除した。`stream$` はどのパターンにも存在しない名前で、コード上に定義のない識別子を書いていた。購読を書く位置はコメントで示す。
|
|
36
|
+
- **本体そのものは書き換えない**。`document.getElementById` や `ajax` はラップ後も残る。出力の冒頭コメントで、DOM アクセスをテンプレート束縛に、`ajax` を HttpClient に置き換えるよう名指しする。パターンごとに framework 別の実装を持つまでは、Angular として完成しているように読めて通らないコードを返すより、どこを直すか書いてある方が使える。
|
|
37
|
+
- **`analyze_operators` の `shareReplay` の指摘が引数を見ていなかった** — `operators.includes('shareReplay')` が真なら常に「`shareReplay()` without buffer limit may cause memory issues」を出していた。`shareReplay(1)` にも `shareReplay({ bufferSize: 1, refCount: true })` にも同じ文が出る。バッファ上限の有無と refCount の有無は別の性質で、結果も別(前者は全発行値を保持し続ける、後者は購読者が 0 になっても元のソースの購読が残る)。`shareReplay(1)` は前者を満たし後者を満たさないので、この文は事実と食い違っていた。同じ対象について `detect_memory_leak` は refCount を、`lint_rxjs` の `no-sharereplay` は引数の形を見ており、3 つのツールが違うことを言う状態だった。
|
|
38
|
+
- `src/shared/subscription-analysis.ts` に `analyzeShareReplay()` を追加し、括弧の対応を数えて最初の `shareReplay(...)` の引数を読む(正規表現だと入れ子の config object で切れる)。`{ present, bounded, refCount }` を返し、欠けている方だけを指摘する。
|
|
39
|
+
- 既存の `hasUnsafeShareReplay()` はこの関数に委譲する形にした(`present && !refCount`)。判定は 1 箇所になる。
|
|
40
|
+
- **`generate_marble` が `a` を飛ばし、自明な凡例を出していた** — 記号の割り当てが `97 + Object.keys(valueMap).length` で、その `valueMap` には数字で描いた値も入る。`0` から始まるストリームは次の値が `b` になり、凡例には `0 = 0` という行が出た。
|
|
41
|
+
- 割り当て済みの英字を数える専用のカウンタに変え、同じ値には同じ記号を割り当てる(同じ値が 2 回出ても凡例は 1 行)。
|
|
42
|
+
- 記号が値をそのまま示している場合(`0`、`"a"`)は凡例に出さない。
|
|
43
|
+
- `-` `|` `#` と空白は図が使う文字なので、1 文字の文字列値でもこれらは記号にせず英字を割り当てる。値 `'|'` が完了記号として描かれることが無くなる。
|
|
44
|
+
- 既に使われている文字は英字割り当てでも飛ばす。値 `'a'` と複雑な値が同じ図にあっても衝突しない。
|
|
45
|
+
- **`generate_marble` の図が完了記号の後ろに 1 フレーム余っていた** — 図の長さが常に `maxTime + scale * 2` だったため、最後のイベントが `complete` / `error` のとき `|` や `#` の後ろに `-` が残った。終端するストリームは記号の 1 フレームだけを足すようにした。あわせて `duration || ...` を `duration !== undefined && duration > 0 ? ... : ...` に変え、`duration: 0` が既定値に落ちる経路をなくした。
|
|
46
|
+
|
|
47
|
+
### Added
|
|
48
|
+
|
|
49
|
+
- **`src/data/patterns.test.ts`** — framework 適応が出す TypeScript を `ts.transpileModule` に通し、21 通りすべてで構文エラーが 0 件であることを見る 6 ケース。既存のテストはすべて部分文字列の照合だったため、45 行のコードが 1 行も parse できない状態を誰も見ていなかった。**この検査は v0.5.0 の実装に対して 7/21 で落ちる**ことを確認済み。import の位置と 1 module 1 行も同時に検査する。
|
|
50
|
+
- `analyze_operators` の shareReplay について 4 ケース(引数なし / `shareReplay(1)` / `{ bufferSize, refCount }` / `{ refCount }` のみ)、`generate_marble` の記号割り当てと図の長さについて 7 ケースを追加。テストは 239 件から 255 件になった。
|
|
51
|
+
|
|
8
52
|
## [0.5.0] - 2026-09-02
|
|
9
53
|
|
|
10
54
|
### Changed
|
package/dist/data/patterns.d.ts
CHANGED
|
@@ -4,7 +4,15 @@ import { PatternSuggestion } from '../types.js';
|
|
|
4
4
|
*/
|
|
5
5
|
export declare const patterns: Record<string, PatternSuggestion>;
|
|
6
6
|
/**
|
|
7
|
-
* Adapt pattern for specific framework
|
|
7
|
+
* Adapt a pattern for a specific framework.
|
|
8
|
+
*
|
|
9
|
+
* The framework-neutral body is moved into a service method or a hook, and its
|
|
10
|
+
* imports are hoisted above the wrapper. What this does NOT do is rewrite the
|
|
11
|
+
* body: a pattern that reaches the DOM with `document.getElementById` or calls
|
|
12
|
+
* `ajax` still does so after wrapping, and the comment in the output names that
|
|
13
|
+
* as the part to replace. Until each pattern carries a per-framework
|
|
14
|
+
* implementation, saying so is more use than a wrapper that reads as finished
|
|
15
|
+
* Angular but does not compile.
|
|
8
16
|
*/
|
|
9
17
|
export declare function adaptPatternForFramework(pattern: PatternSuggestion, framework: string): PatternSuggestion;
|
|
10
18
|
//# sourceMappingURL=patterns.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/data/patterns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CA4YtD,CAAC;
|
|
1
|
+
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/data/patterns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CA4YtD,CAAC;AAqFF;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,MAAM,GAChB,iBAAiB,CA0GnB"}
|
package/dist/data/patterns.js
CHANGED
|
@@ -393,19 +393,109 @@ class CachedDataService {
|
|
|
393
393
|
},
|
|
394
394
|
};
|
|
395
395
|
/**
|
|
396
|
-
*
|
|
396
|
+
* Separate the import lines of a pattern from the statements that follow.
|
|
397
|
+
*
|
|
398
|
+
* The framework wrappers put the body inside a class method or a hook, and an
|
|
399
|
+
* `import` is a module-level declaration — leaving them mixed produces code
|
|
400
|
+
* that does not parse. Blank lines left where the imports were are dropped so
|
|
401
|
+
* the body does not start with a gap.
|
|
402
|
+
*/
|
|
403
|
+
function splitImports(code) {
|
|
404
|
+
const imports = [];
|
|
405
|
+
const bodyLines = [];
|
|
406
|
+
for (const line of code.split('\n')) {
|
|
407
|
+
const named = /^\s*import\s*\{([^}]*)\}\s*from\s*['"]([^'"]+)['"]\s*;?\s*$/.exec(line);
|
|
408
|
+
if (named) {
|
|
409
|
+
imports.push({
|
|
410
|
+
names: named[1].split(',').map(n => n.trim()).filter(Boolean),
|
|
411
|
+
from: named[2],
|
|
412
|
+
raw: line.trim(),
|
|
413
|
+
});
|
|
414
|
+
continue;
|
|
415
|
+
}
|
|
416
|
+
if (/^\s*import\s/.test(line)) {
|
|
417
|
+
imports.push({ names: [], from: '', raw: line.trim() });
|
|
418
|
+
continue;
|
|
419
|
+
}
|
|
420
|
+
bodyLines.push(line);
|
|
421
|
+
}
|
|
422
|
+
while (bodyLines.length > 0 && bodyLines[0].trim() === '')
|
|
423
|
+
bodyLines.shift();
|
|
424
|
+
while (bodyLines.length > 0 && bodyLines[bodyLines.length - 1].trim() === '')
|
|
425
|
+
bodyLines.pop();
|
|
426
|
+
return { imports, body: bodyLines.join('\n') };
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Render import lines with one line per module specifier.
|
|
430
|
+
*
|
|
431
|
+
* A pattern often imports from `'rxjs'` more than once, and the wrapper adds
|
|
432
|
+
* its own imports on top. Emitting them unmerged gives duplicate bindings.
|
|
433
|
+
*/
|
|
434
|
+
function renderImports(imports) {
|
|
435
|
+
const byModule = new Map();
|
|
436
|
+
const verbatim = [];
|
|
437
|
+
for (const entry of imports) {
|
|
438
|
+
if (entry.names.length === 0) {
|
|
439
|
+
if (!verbatim.includes(entry.raw))
|
|
440
|
+
verbatim.push(entry.raw);
|
|
441
|
+
continue;
|
|
442
|
+
}
|
|
443
|
+
const existing = byModule.get(entry.from) ?? [];
|
|
444
|
+
for (const name of entry.names) {
|
|
445
|
+
if (!existing.includes(name))
|
|
446
|
+
existing.push(name);
|
|
447
|
+
}
|
|
448
|
+
byModule.set(entry.from, existing);
|
|
449
|
+
}
|
|
450
|
+
const lines = [...verbatim];
|
|
451
|
+
byModule.forEach((names, from) => {
|
|
452
|
+
lines.push(`import { ${names.join(', ')} } from '${from}';`);
|
|
453
|
+
});
|
|
454
|
+
return lines.join('\n');
|
|
455
|
+
}
|
|
456
|
+
/** Indent every non-empty line of a block. */
|
|
457
|
+
function indent(code, spaces) {
|
|
458
|
+
const pad = ' '.repeat(spaces);
|
|
459
|
+
return code
|
|
460
|
+
.split('\n')
|
|
461
|
+
.map(line => (line.trim() === '' ? '' : pad + line))
|
|
462
|
+
.join('\n');
|
|
463
|
+
}
|
|
464
|
+
/**
|
|
465
|
+
* Adapt a pattern for a specific framework.
|
|
466
|
+
*
|
|
467
|
+
* The framework-neutral body is moved into a service method or a hook, and its
|
|
468
|
+
* imports are hoisted above the wrapper. What this does NOT do is rewrite the
|
|
469
|
+
* body: a pattern that reaches the DOM with `document.getElementById` or calls
|
|
470
|
+
* `ajax` still does so after wrapping, and the comment in the output names that
|
|
471
|
+
* as the part to replace. Until each pattern carries a per-framework
|
|
472
|
+
* implementation, saying so is more use than a wrapper that reads as finished
|
|
473
|
+
* Angular but does not compile.
|
|
397
474
|
*/
|
|
398
475
|
export function adaptPatternForFramework(pattern, framework) {
|
|
399
476
|
const adapted = { ...pattern };
|
|
477
|
+
const { imports, body } = splitImports(pattern.code);
|
|
400
478
|
if (framework === 'angular') {
|
|
401
|
-
|
|
479
|
+
const header = renderImports([
|
|
480
|
+
{ names: ['Injectable', 'OnDestroy'], from: '@angular/core', raw: '' },
|
|
481
|
+
{ names: ['Subject'], from: 'rxjs', raw: '' },
|
|
482
|
+
...imports,
|
|
483
|
+
]);
|
|
484
|
+
adapted.code = `// Angular — the framework-neutral pattern, moved into a service.
|
|
485
|
+
// Replace the DOM access with a template binding or a signal, and \`ajax\` with
|
|
486
|
+
// HttpClient. End each pipe with \`takeUntil(this.destroy$)\` so it stops with
|
|
487
|
+
// the service.
|
|
488
|
+
${header}
|
|
489
|
+
|
|
402
490
|
@Injectable({ providedIn: 'root' })
|
|
403
491
|
export class RxJSPatternService implements OnDestroy {
|
|
404
|
-
private destroy$ = new Subject<void>();
|
|
492
|
+
private readonly destroy$ = new Subject<void>();
|
|
405
493
|
|
|
406
|
-
|
|
494
|
+
start(): void {
|
|
495
|
+
${indent(body, 4)}
|
|
496
|
+
}
|
|
407
497
|
|
|
408
|
-
ngOnDestroy() {
|
|
498
|
+
ngOnDestroy(): void {
|
|
409
499
|
this.destroy$.next();
|
|
410
500
|
this.destroy$.complete();
|
|
411
501
|
}
|
|
@@ -418,18 +508,25 @@ ${pattern.code}
|
|
|
418
508
|
];
|
|
419
509
|
}
|
|
420
510
|
else if (framework === 'react') {
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
511
|
+
const header = renderImports([
|
|
512
|
+
{ names: ['useEffect', 'useState', 'useRef'], from: 'react', raw: '' },
|
|
513
|
+
{ names: ['Subscription'], from: 'rxjs', raw: '' },
|
|
514
|
+
...imports,
|
|
515
|
+
]);
|
|
516
|
+
adapted.code = `// React — the framework-neutral pattern, moved into a hook.
|
|
517
|
+
// Replace the DOM access with a ref or controlled input, and \`ajax\` with your
|
|
518
|
+
// data-fetching layer. Subscribe the stream the body builds where the comment
|
|
519
|
+
// below says so, and the cleanup will tear it down.
|
|
520
|
+
${header}
|
|
424
521
|
|
|
425
522
|
export function useRxJSPattern() {
|
|
426
523
|
const [data, setData] = useState(null);
|
|
427
524
|
const subscription = useRef<Subscription>();
|
|
428
525
|
|
|
429
526
|
useEffect(() => {
|
|
430
|
-
${
|
|
527
|
+
${indent(body, 4)}
|
|
431
528
|
|
|
432
|
-
subscription.current = stream
|
|
529
|
+
// subscription.current = <the stream built above>.subscribe(setData);
|
|
433
530
|
|
|
434
531
|
return () => {
|
|
435
532
|
subscription.current?.unsubscribe();
|
|
@@ -446,22 +543,25 @@ ${pattern.code.split('\n').map(line => ' ' + line).join('\n')}
|
|
|
446
543
|
];
|
|
447
544
|
}
|
|
448
545
|
else if (framework === 'vue') {
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
546
|
+
const header = renderImports([
|
|
547
|
+
{ names: ['ref', 'onBeforeUnmount'], from: 'vue', raw: '' },
|
|
548
|
+
{ names: ['Subject', 'takeUntil'], from: 'rxjs', raw: '' },
|
|
549
|
+
...imports,
|
|
550
|
+
]);
|
|
551
|
+
adapted.code = `// Vue 3 Composition API — the framework-neutral pattern, moved into a composable.
|
|
552
|
+
// Replace the DOM access with a template ref, and \`ajax\` with your data-fetching
|
|
553
|
+
// layer. End each pipe with \`takeUntil(destroy$)\` so it stops with the component.
|
|
554
|
+
${header}
|
|
453
555
|
|
|
454
556
|
export function useRxJSPattern() {
|
|
455
|
-
const destroy$ = new Subject();
|
|
557
|
+
const destroy$ = new Subject<void>();
|
|
456
558
|
const data = ref(null);
|
|
457
559
|
|
|
458
|
-
${
|
|
560
|
+
${indent(body, 2)}
|
|
459
561
|
|
|
460
|
-
stream
|
|
461
|
-
|
|
462
|
-
)
|
|
463
|
-
data.value = value;
|
|
464
|
-
});
|
|
562
|
+
// <the stream built above>.pipe(takeUntil(destroy$)).subscribe(value => {
|
|
563
|
+
// data.value = value;
|
|
564
|
+
// });
|
|
465
565
|
|
|
466
566
|
onBeforeUnmount(() => {
|
|
467
567
|
destroy$.next();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../src/data/patterns.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../src/data/patterns.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,6 +71,32 @@ export interface SubscriptionSafetyReport {
|
|
|
71
71
|
* over-report on modern, idiomatic code.
|
|
72
72
|
*/
|
|
73
73
|
export declare function analyzeSubscriptionSafety(code: string, framework?: Framework): SubscriptionSafetyReport;
|
|
74
|
+
/**
|
|
75
|
+
* What a `shareReplay(...)` call in the code actually declares.
|
|
76
|
+
*
|
|
77
|
+
* The two properties are independent and have different consequences, so they
|
|
78
|
+
* are reported separately rather than folded into one "unsafe" flag:
|
|
79
|
+
*
|
|
80
|
+
* - `bounded: false` — no buffer size given, so every emission is retained for
|
|
81
|
+
* the lifetime of the shared subscription.
|
|
82
|
+
* - `refCount: false` — the subscription to the source stays open after the
|
|
83
|
+
* last subscriber leaves. `shareReplay(1)` is bounded but still has this.
|
|
84
|
+
*/
|
|
85
|
+
export interface ShareReplayReport {
|
|
86
|
+
/** A `shareReplay(` call appears in the code. */
|
|
87
|
+
present: boolean;
|
|
88
|
+
/** A buffer size is given, as `shareReplay(N)` or `{ bufferSize: N }`. */
|
|
89
|
+
bounded: boolean;
|
|
90
|
+
/** `{ refCount: true }` is given. */
|
|
91
|
+
refCount: boolean;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Read the arguments of the first `shareReplay(...)` in the code.
|
|
95
|
+
*
|
|
96
|
+
* Argument scanning is bracket-counting rather than a regular expression, so a
|
|
97
|
+
* config object nested inside the call does not truncate the match.
|
|
98
|
+
*/
|
|
99
|
+
export declare function analyzeShareReplay(code: string): ShareReplayReport;
|
|
74
100
|
/** `shareReplay` without explicit `refCount: true`. Memory-leak risk. */
|
|
75
101
|
export declare function hasUnsafeShareReplay(code: string): boolean;
|
|
76
102
|
/** `fromEvent(...)` — DOM listener that requires explicit cleanup. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription-analysis.d.ts","sourceRoot":"","sources":["../../src/shared/subscription-analysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAO3D;AAMD,yDAAyD;AACzD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,+CAA+C;AAC/C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKzD;AAED,qCAAqC;AACrC,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAMD,MAAM,WAAW,wBAAwB;IACvC,4FAA4F;IAC5F,cAAc,EAAE,OAAO,CAAC;IACxB,iEAAiE;IACjE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,SAAkB,GAC5B,wBAAwB,CAqC1B;AAED,yEAAyE;AACzE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG1D;AAED,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,oDAAoD;AACpD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD"}
|
|
1
|
+
{"version":3,"file":"subscription-analysis.d.ts","sourceRoot":"","sources":["../../src/shared/subscription-analysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAO3D;AAMD,yDAAyD;AACzD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,+CAA+C;AAC/C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKzD;AAED,qCAAqC;AACrC,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAMD,MAAM,WAAW,wBAAwB;IACvC,4FAA4F;IAC5F,cAAc,EAAE,OAAO,CAAC;IACxB,iEAAiE;IACjE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,SAAkB,GAC5B,wBAAwB,CAqC1B;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,OAAO,EAAE,OAAO,CAAC;IACjB,qCAAqC;IACrC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CA0BlE;AAED,yEAAyE;AACzE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG1D;AAED,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,oDAAoD;AACpD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD"}
|
|
@@ -122,11 +122,42 @@ export function analyzeSubscriptionSafety(code, framework = 'none') {
|
|
|
122
122
|
frameworkPattern,
|
|
123
123
|
};
|
|
124
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Read the arguments of the first `shareReplay(...)` in the code.
|
|
127
|
+
*
|
|
128
|
+
* Argument scanning is bracket-counting rather than a regular expression, so a
|
|
129
|
+
* config object nested inside the call does not truncate the match.
|
|
130
|
+
*/
|
|
131
|
+
export function analyzeShareReplay(code) {
|
|
132
|
+
const match = /shareReplay\s*\(/.exec(code);
|
|
133
|
+
if (!match) {
|
|
134
|
+
return { present: false, bounded: false, refCount: false };
|
|
135
|
+
}
|
|
136
|
+
let depth = 0;
|
|
137
|
+
let end = -1;
|
|
138
|
+
const start = match.index + match[0].length;
|
|
139
|
+
for (let i = start - 1; i < code.length; i++) {
|
|
140
|
+
if (code[i] === '(')
|
|
141
|
+
depth++;
|
|
142
|
+
else if (code[i] === ')') {
|
|
143
|
+
depth--;
|
|
144
|
+
if (depth === 0) {
|
|
145
|
+
end = i;
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
const args = (end === -1 ? code.slice(start) : code.slice(start, end)).trim();
|
|
151
|
+
return {
|
|
152
|
+
present: true,
|
|
153
|
+
bounded: /^\d+/.test(args) || /bufferSize\s*:\s*\d+/.test(args),
|
|
154
|
+
refCount: /refCount\s*:\s*true/.test(args),
|
|
155
|
+
};
|
|
156
|
+
}
|
|
125
157
|
/** `shareReplay` without explicit `refCount: true`. Memory-leak risk. */
|
|
126
158
|
export function hasUnsafeShareReplay(code) {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
return !/refCount\s*:\s*true/.test(code);
|
|
159
|
+
const report = analyzeShareReplay(code);
|
|
160
|
+
return report.present && !report.refCount;
|
|
130
161
|
}
|
|
131
162
|
/** `fromEvent(...)` — DOM listener that requires explicit cleanup. */
|
|
132
163
|
export function countFromEvent(code) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription-analysis.js","sourceRoot":"","sources":["../../src/shared/subscription-analysis.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"subscription-analysis.js","sourceRoot":"","sources":["../../src/shared/subscription-analysis.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze-operators.d.ts","sourceRoot":"","sources":["../../src/tools/analyze-operators.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAoD,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"analyze-operators.d.ts","sourceRoot":"","sources":["../../src/tools/analyze-operators.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAoD,MAAM,aAAa,CAAC;AAgPnG,eAAO,MAAM,oBAAoB,EAAE,kBA4IlC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { creationFunctionDatabase } from '../data/creation-functions.js';
|
|
3
3
|
import { operatorDatabase } from '../data/operators.js';
|
|
4
|
+
import { analyzeShareReplay } from '../shared/subscription-analysis.js';
|
|
4
5
|
// Input schema
|
|
5
6
|
const inputSchema = z.object({
|
|
6
7
|
code: z.string().describe('RxJS operator chain code to analyze'),
|
|
@@ -121,7 +122,7 @@ function analyzeCreationFunctions(functions) {
|
|
|
121
122
|
});
|
|
122
123
|
}
|
|
123
124
|
// Analyze operator chain
|
|
124
|
-
function analyzeOperatorChain(operators, checkPerformance) {
|
|
125
|
+
function analyzeOperatorChain(operators, checkPerformance, code) {
|
|
125
126
|
const analysis = {
|
|
126
127
|
operators: operators.map(op => {
|
|
127
128
|
const info = operatorDatabase[op];
|
|
@@ -167,9 +168,21 @@ function analyzeOperatorChain(operators, checkPerformance) {
|
|
|
167
168
|
if (!hasErrorHandling && operators.some(op => ['switchMap', 'mergeMap', 'concatMap'].includes(op))) {
|
|
168
169
|
analysis.suggestions.push('Consider adding error handling with `catchError()` or `retry()`');
|
|
169
170
|
}
|
|
170
|
-
// Check for potential memory leaks
|
|
171
|
-
|
|
172
|
-
|
|
171
|
+
// Check for potential memory leaks.
|
|
172
|
+
//
|
|
173
|
+
// The two properties of shareReplay are independent: `shareReplay(1)` gives
|
|
174
|
+
// a buffer size but no refCount, and `shareReplay({ refCount: true })` gives
|
|
175
|
+
// refCount but no buffer size. Reporting whichever is missing — instead of
|
|
176
|
+
// one fixed sentence for every call — is what keeps this from contradicting
|
|
177
|
+
// detect_memory_leak and the no-sharereplay rule in lint_rxjs.
|
|
178
|
+
const shareReplay = analyzeShareReplay(code);
|
|
179
|
+
if (shareReplay.present) {
|
|
180
|
+
if (!shareReplay.bounded) {
|
|
181
|
+
analysis.performance.push('⚠️ `shareReplay()` without a buffer size retains every emission for the lifetime of the shared subscription');
|
|
182
|
+
}
|
|
183
|
+
if (!shareReplay.refCount) {
|
|
184
|
+
analysis.performance.push('⚠️ `shareReplay()` without `refCount: true` keeps the source subscribed after the last subscriber leaves — use `shareReplay({ bufferSize: 1, refCount: true })`');
|
|
185
|
+
}
|
|
173
186
|
}
|
|
174
187
|
// Check for missing takeUntil
|
|
175
188
|
if (!operators.some(op => op.startsWith('take')) && operators.length > 3) {
|
|
@@ -216,7 +229,7 @@ export const analyzeOperatorsTool = {
|
|
|
216
229
|
};
|
|
217
230
|
}
|
|
218
231
|
const creationAnalysis = analyzeCreationFunctions(creationFunctions);
|
|
219
|
-
const operatorAnalysis = analyzeOperatorChain(operators, input.checkPerformance);
|
|
232
|
+
const operatorAnalysis = analyzeOperatorChain(operators, input.checkPerformance, input.code);
|
|
220
233
|
const alternatives = input.includeAlternatives ? suggestAlternatives(operators) : [];
|
|
221
234
|
const parts = [
|
|
222
235
|
'## RxJS Code Analysis',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze-operators.js","sourceRoot":"","sources":["../../src/tools/analyze-operators.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analyze-operators.js","sourceRoot":"","sources":["../../src/tools/analyze-operators.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-stream.d.ts","sourceRoot":"","sources":["../../src/tools/execute-stream.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,kBAAkB,EAInB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"execute-stream.d.ts","sourceRoot":"","sources":["../../src/tools/execute-stream.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,kBAAkB,EAInB,MAAM,aAAa,CAAC;AA+LrB,eAAO,MAAM,iBAAiB,EAAE,kBAmC/B,CAAC"}
|
|
@@ -77,9 +77,14 @@ async function executeRxJSCodeInWorker(code, takeCount, timeoutMs) {
|
|
|
77
77
|
}
|
|
78
78
|
worker.terminate();
|
|
79
79
|
});
|
|
80
|
+
// The listener argument is typed `unknown` from @types/node 26 onward — the
|
|
81
|
+
// EventEmitter overloads no longer promise an Error — so the message is read
|
|
82
|
+
// through a narrowing check instead of off the parameter. This also holds on
|
|
83
|
+
// @types/node 20, where the parameter was already an Error.
|
|
80
84
|
worker.on('error', (error) => {
|
|
81
85
|
clearTimeout(hardTimeout);
|
|
82
|
-
|
|
86
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
87
|
+
resolve(createErrorResult(message || 'Worker execution error'));
|
|
83
88
|
worker.terminate();
|
|
84
89
|
});
|
|
85
90
|
worker.on('exit', (code) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-stream.js","sourceRoot":"","sources":["../../src/tools/execute-stream.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"execute-stream.js","sourceRoot":"","sources":["../../src/tools/execute-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marble-diagram.d.ts","sourceRoot":"","sources":["../../src/tools/marble-diagram.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAqC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"marble-diagram.d.ts","sourceRoot":"","sources":["../../src/tools/marble-diagram.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAqC,MAAM,aAAa,CAAC;AA8LpF,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAgCvD;AAGD,eAAO,MAAM,kBAAkB,EAAE,kBAsDhC,CAAC"}
|
|
@@ -14,16 +14,64 @@ const inputSchema = z.object({
|
|
|
14
14
|
function generateMarbleDiagram(events, duration, scale = 50, showValues = true) {
|
|
15
15
|
// Sort events by time
|
|
16
16
|
const sortedEvents = [...events].sort((a, b) => a.time - b.time);
|
|
17
|
-
// Determine diagram duration
|
|
17
|
+
// Determine diagram duration.
|
|
18
|
+
//
|
|
19
|
+
// A stream that ends with `complete` or `error` needs one frame for that
|
|
20
|
+
// marker and nothing after it; anything else gets two frames of tail so the
|
|
21
|
+
// last emission is not flush against the edge.
|
|
18
22
|
const maxTime = sortedEvents.length > 0
|
|
19
23
|
? Math.max(...sortedEvents.map(e => e.time))
|
|
20
24
|
: 0;
|
|
21
|
-
const
|
|
25
|
+
const lastEvent = sortedEvents[sortedEvents.length - 1];
|
|
26
|
+
const terminates = lastEvent?.type === 'complete' || lastEvent?.type === 'error';
|
|
27
|
+
const diagramDuration = duration !== undefined && duration > 0
|
|
28
|
+
? duration
|
|
29
|
+
: maxTime + scale * (terminates ? 1 : 2);
|
|
22
30
|
// Calculate diagram width
|
|
23
31
|
const width = Math.floor(diagramDuration / scale);
|
|
24
32
|
// Build the timeline
|
|
25
33
|
let timeline = '-'.repeat(width);
|
|
26
|
-
|
|
34
|
+
/** Characters the diagram itself owns — never handed out as a value marker. */
|
|
35
|
+
const RESERVED = new Set(['-', '|', '#', ' ']);
|
|
36
|
+
/** Serialized value → marker, so the same value always draws the same character. */
|
|
37
|
+
const markerForValue = new Map();
|
|
38
|
+
/** Every marker already placed, so a letter is never handed out twice. */
|
|
39
|
+
const usedMarkers = new Set();
|
|
40
|
+
/** Marker → serialized value, in the order the markers were allocated. Only
|
|
41
|
+
* markers that do not show their own value get an entry: `0` needs no legend
|
|
42
|
+
* line saying `0 = 0`, but `a = {"id":1}` does. */
|
|
43
|
+
const legend = new Map();
|
|
44
|
+
let letterIndex = 0;
|
|
45
|
+
/** Next unused letter a–z, wrapping. */
|
|
46
|
+
function nextLetter() {
|
|
47
|
+
for (let attempt = 0; attempt < 26; attempt++) {
|
|
48
|
+
const letter = String.fromCharCode(97 + (letterIndex++ % 26));
|
|
49
|
+
if (!usedMarkers.has(letter))
|
|
50
|
+
return letter;
|
|
51
|
+
}
|
|
52
|
+
return '?';
|
|
53
|
+
}
|
|
54
|
+
/** The character that stands for this value on the timeline. */
|
|
55
|
+
function markerFor(value) {
|
|
56
|
+
const serialized = JSON.stringify(value);
|
|
57
|
+
const existing = markerForValue.get(serialized);
|
|
58
|
+
if (existing)
|
|
59
|
+
return existing;
|
|
60
|
+
let marker;
|
|
61
|
+
if (typeof value === 'string' && value.length === 1 && !RESERVED.has(value) && !usedMarkers.has(value)) {
|
|
62
|
+
marker = value;
|
|
63
|
+
}
|
|
64
|
+
else if (typeof value === 'number' && Number.isInteger(value) && value >= 0 && value <= 9 && !usedMarkers.has(String(value))) {
|
|
65
|
+
marker = value.toString();
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
marker = nextLetter();
|
|
69
|
+
legend.set(marker, serialized);
|
|
70
|
+
}
|
|
71
|
+
markerForValue.set(serialized, marker);
|
|
72
|
+
usedMarkers.add(marker);
|
|
73
|
+
return marker;
|
|
74
|
+
}
|
|
27
75
|
// Place events on timeline
|
|
28
76
|
sortedEvents.forEach(event => {
|
|
29
77
|
const position = Math.floor(event.time / scale);
|
|
@@ -37,26 +85,11 @@ function generateMarbleDiagram(events, duration, scale = 50, showValues = true)
|
|
|
37
85
|
marker = '|';
|
|
38
86
|
break;
|
|
39
87
|
default:
|
|
40
|
-
|
|
41
|
-
if (typeof event.value === 'string' && event.value.length === 1) {
|
|
42
|
-
marker = event.value;
|
|
43
|
-
}
|
|
44
|
-
else if (typeof event.value === 'number' && event.value >= 0 && event.value <= 9) {
|
|
45
|
-
marker = event.value.toString();
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
// Use letters a-z for complex values
|
|
49
|
-
const charCode = 97 + (Object.keys(valueMap).length % 26);
|
|
50
|
-
marker = String.fromCharCode(charCode);
|
|
51
|
-
valueMap[position] = JSON.stringify(event.value);
|
|
52
|
-
}
|
|
88
|
+
marker = markerFor(event.value);
|
|
53
89
|
break;
|
|
54
90
|
}
|
|
55
91
|
// Replace character at position
|
|
56
92
|
timeline = timeline.substring(0, position) + marker + timeline.substring(position + 1);
|
|
57
|
-
if (event.type === 'next' && !valueMap[position]) {
|
|
58
|
-
valueMap[position] = JSON.stringify(event.value);
|
|
59
|
-
}
|
|
60
93
|
}
|
|
61
94
|
});
|
|
62
95
|
// Build the complete diagram
|
|
@@ -64,15 +97,11 @@ function generateMarbleDiagram(events, duration, scale = 50, showValues = true)
|
|
|
64
97
|
// Add timeline
|
|
65
98
|
parts.push(timeline);
|
|
66
99
|
// Add value references if needed
|
|
67
|
-
if (showValues &&
|
|
100
|
+
if (showValues && legend.size > 0) {
|
|
68
101
|
parts.push('');
|
|
69
102
|
parts.push('Values:');
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const marker = timeline[position];
|
|
73
|
-
if (marker && marker !== '-' && marker !== '|' && marker !== '#') {
|
|
74
|
-
parts.push(` ${marker} = ${value}`);
|
|
75
|
-
}
|
|
103
|
+
legend.forEach((value, marker) => {
|
|
104
|
+
parts.push(` ${marker} = ${value}`);
|
|
76
105
|
});
|
|
77
106
|
}
|
|
78
107
|
// Generate explanation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marble-diagram.js","sourceRoot":"","sources":["../../src/tools/marble-diagram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAe;AACf,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;QACvE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACrD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;KACvE,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC5C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACjF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IACzF,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC;CACvG,CAAC,CAAC;AAEH,gCAAgC;AAChC,SAAS,qBAAqB,CAC5B,MAA0D,EAC1D,QAAiB,EACjB,QAAgB,EAAE,EAClB,aAAsB,IAAI;IAE1B,sBAAsB;IACtB,MAAM,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IAEjE,
|
|
1
|
+
{"version":3,"file":"marble-diagram.js","sourceRoot":"","sources":["../../src/tools/marble-diagram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAe;AACf,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;QACvE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACrD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;KACvE,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC5C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACjF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IACzF,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC;CACvG,CAAC,CAAC;AAEH,gCAAgC;AAChC,SAAS,qBAAqB,CAC5B,MAA0D,EAC1D,QAAiB,EACjB,QAAgB,EAAE,EAClB,aAAsB,IAAI;IAE1B,sBAAsB;IACtB,MAAM,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IAEjE,8BAA8B;IAC9B,EAAE;IACF,yEAAyE;IACzE,4EAA4E;IAC5E,+CAA+C;IAC/C,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC;QACrC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC,CAAC;IACN,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,SAAS,EAAE,IAAI,KAAK,UAAU,IAAI,SAAS,EAAE,IAAI,KAAK,OAAO,CAAC;IACjF,MAAM,eAAe,GACnB,QAAQ,KAAK,SAAS,IAAI,QAAQ,GAAG,CAAC;QACpC,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,OAAO,GAAG,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7C,0BAA0B;IAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC;IAElD,qBAAqB;IACrB,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEjC,+EAA+E;IAC/E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/C,oFAAoF;IACpF,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IACjD,0EAA0E;IAC1E,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC;;wDAEoD;IACpD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,wCAAwC;IACxC,SAAS,UAAU;QACjB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;YAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,OAAO,MAAM,CAAC;QAC9C,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,gEAAgE;IAChE,SAAS,SAAS,CAAC,KAAc;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAE9B,IAAI,MAAc,CAAC;QACnB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACvG,MAAM,GAAG,KAAK,CAAC;QACjB,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC/H,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,UAAU,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACjC,CAAC;QAED,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACvC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,2BAA2B;IAC3B,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;QAChD,IAAI,QAAQ,GAAG,KAAK,EAAE,CAAC;YACrB,IAAI,MAAc,CAAC;YAEnB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,OAAO;oBACV,MAAM,GAAG,GAAG,CAAC;oBACb,MAAM;gBACR,KAAK,UAAU;oBACb,MAAM,GAAG,GAAG,CAAC;oBACb,MAAM;gBACR;oBACE,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAChC,MAAM;YACV,CAAC;YAED,gCAAgC;YAChC,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACzF,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,6BAA6B;IAC7B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,eAAe;IACf,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAErB,iCAAiC;IACjC,IAAI,UAAU,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,MAAM,KAAK,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,uBAAuB;IACvB,MAAM,WAAW,GAAG,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAE7D,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACzB,WAAW;QACX,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;KACpE,CAAC;AACJ,CAAC;AAED,sCAAsC;AACtC,SAAS,mBAAmB,CAAC,MAA0D,EAAE,KAAa;IACpG,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,gCAAgC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC;IAErD,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC;QAClC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,OAAO;gBACV,KAAK,CAAC,IAAI,CAAC,cAAc,OAAO,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBACpD,MAAM;YACR,KAAK,UAAU;gBACb,KAAK,CAAC,IAAI,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAC;gBACxC,MAAM;YACR;gBACE,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;gBACrE,MAAM;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,mBAAmB;IACnB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC/D,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;YAC5E,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;YAE9E,IAAI,SAAS,EAAE,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC,mCAAmC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC7E,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,wCAAwC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,4BAA4B;AAC5B,EAAE;AACF,2EAA2E;AAC3E,wEAAwE;AACxE,qEAAqE;AACrE,8DAA8D;AAC9D,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,MAAgC;IAEhC,MAAM,MAAM,GAA0D,EAAE,CAAC;IACzE,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC,qBAAqB;IAE3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,GAAG,SAAS,CAAC;QAE3B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,GAAG;gBACN,2BAA2B;gBAC3B,MAAM;YACR,KAAK,GAAG;gBACN,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC1D,MAAM;YACR,KAAK,GAAG;gBACN,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,GAAG,CAAC;YACT,KAAK,GAAG;gBACN,2BAA2B;gBAC3B,MAAM;YACR,OAAO,CAAC,CAAC,CAAC;gBACR,iBAAiB;gBACjB,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC3C,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,sBAAsB;AACtB,MAAM,CAAC,MAAM,kBAAkB,GAAuB;IACpD,UAAU,EAAE;QACV,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,6EAA6E;QAC1F,WAAW,EAAE,WAAW;QACxB,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,IAAI;SACrB;KACF;IACD,OAAO,EAAE,KAAK,EAAE,IAAa,EAAyB,EAAE;QACtD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,qBAAqB,CAClC,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,UAAU,CACjB,CAAC;YAEF,MAAM,MAAM,GAAG;gBACb,mBAAmB;gBACnB,EAAE;gBACF,KAAK;gBACL,MAAM,CAAC,OAAO;gBACd,KAAK;gBACL,EAAE;gBACF,iBAAiB;gBACjB,MAAM,CAAC,WAAW;gBAClB,EAAE;gBACF,YAAY;gBACZ,uCAAuC,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK;gBAC7D,2BAA2B;gBAC3B,eAAe;gBACf,mCAAmC;aACpC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEb,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,MAAM;qBACb,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAC9E,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,yCAAyC,YAAY,EAAE;qBAC9D,CAAC;aACH,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shuji-bonji/rxjs-mcp",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "RxJS MCP Server - Execute, debug, and visualize RxJS streams for AI assistants",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mcp",
|
|
@@ -57,11 +57,11 @@
|
|
|
57
57
|
"zod": "^4.2.0"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
|
-
"@eslint/js": "^
|
|
60
|
+
"@eslint/js": "^10.0.1",
|
|
61
61
|
"@modelcontextprotocol/client": "^2.0.0",
|
|
62
|
-
"@types/node": "^
|
|
63
|
-
"eslint": "^9.
|
|
64
|
-
"eslint-plugin-rxjs-x": "^0.
|
|
62
|
+
"@types/node": "^26.4.1",
|
|
63
|
+
"eslint": "^10.9.1",
|
|
64
|
+
"eslint-plugin-rxjs-x": "^1.0.6",
|
|
65
65
|
"tsx": "^4.7.0",
|
|
66
66
|
"typescript": "^5.3.0",
|
|
67
67
|
"typescript-eslint": "^8.0.0",
|