@shuji-bonji/rxjs-mcp 0.2.1 → 0.2.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
CHANGED
|
@@ -5,6 +5,12 @@ 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.2.2] - 2026-05-16
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- **suggest_pattern**: パターンテンプレート内の `import { ... } from 'rxjs/operators'` を `from 'rxjs'` に修正。RxJS 7.2+ 推奨の統一インポートスタイルに合わせ、AI アシスタントが古い import を提案する問題を解消。対象パターン: `http-retry`, `search-typeahead`, `polling`, `websocket-reconnect`, `form-validation`, `state-management`, `cache-refresh`, `adaptPatternForFramework` (Vue)
|
|
12
|
+
- **analyze_operators**: `ajax` と `fromFetch` の `docUrl` のパスセグメント `creation-functions/http/` を `creation-functions/http-communication/` に修正。ガイドサイトへのリンクが 404 になっていた問題を解消
|
|
13
|
+
|
|
8
14
|
## [0.2.1] - 2026-05-09
|
|
9
15
|
|
|
10
16
|
### Build
|
|
@@ -53,13 +53,13 @@ export const creationFunctionDatabase = {
|
|
|
53
53
|
name: 'ajax',
|
|
54
54
|
category: 'http',
|
|
55
55
|
description: 'Creates an Observable for AJAX requests',
|
|
56
|
-
docUrl: `${DOC_BASE_URL}/creation-functions/http/ajax`,
|
|
56
|
+
docUrl: `${DOC_BASE_URL}/creation-functions/http-communication/ajax`,
|
|
57
57
|
},
|
|
58
58
|
'fromFetch': {
|
|
59
59
|
name: 'fromFetch',
|
|
60
60
|
category: 'http',
|
|
61
61
|
description: 'Creates an Observable from Fetch API',
|
|
62
|
-
docUrl: `${DOC_BASE_URL}/creation-functions/http/fromFetch`,
|
|
62
|
+
docUrl: `${DOC_BASE_URL}/creation-functions/http-communication/fromFetch`,
|
|
63
63
|
},
|
|
64
64
|
// combination
|
|
65
65
|
'concat': {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creation-functions.js","sourceRoot":"","sources":["../../src/data/creation-functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,YAAY,EAAE,MAAM,aAAa,CAAC;AAEjE;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAyC;IAC5E,QAAQ;IACR,IAAI,EAAE;QACJ,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,iDAAiD;QAC9D,MAAM,EAAE,GAAG,YAAY,8BAA8B;KACtD;IACD,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,2DAA2D;QACxE,MAAM,EAAE,GAAG,YAAY,gCAAgC;KACxD;IACD,WAAW,EAAE;QACX,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,uCAAuC;QACpD,MAAM,EAAE,GAAG,YAAY,qCAAqC;KAC7D;IACD,UAAU,EAAE;QACV,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,kDAAkD;QAC/D,MAAM,EAAE,GAAG,YAAY,oCAAoC;KAC5D;IACD,OAAO,EAAE;QACP,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,mDAAmD;QAChE,MAAM,EAAE,GAAG,YAAY,iCAAiC;KACzD;IAED,OAAO;IACP,OAAO,EAAE;QACP,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,4CAA4C;QACzD,MAAM,EAAE,GAAG,YAAY,gCAAgC;KACxD;IACD,UAAU,EAAE;QACV,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,mDAAmD;QAChE,MAAM,EAAE,GAAG,YAAY,mCAAmC;KAC3D;IAED,OAAO;IACP,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,yCAAyC;QACtD,MAAM,EAAE,GAAG,YAAY
|
|
1
|
+
{"version":3,"file":"creation-functions.js","sourceRoot":"","sources":["../../src/data/creation-functions.ts"],"names":[],"mappings":"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"}
|
package/dist/data/patterns.js
CHANGED
|
@@ -10,7 +10,7 @@ export const patterns = {
|
|
|
10
10
|
code: `// HTTP request with exponential backoff retry
|
|
11
11
|
import { throwError, timer, of } from 'rxjs';
|
|
12
12
|
import { ajax } from 'rxjs/ajax';
|
|
13
|
-
import { retryWhen, mergeMap, catchError, finalize } from 'rxjs
|
|
13
|
+
import { retryWhen, mergeMap, catchError, finalize } from 'rxjs';
|
|
14
14
|
|
|
15
15
|
const apiCall$ = ajax.getJSON('/api/data').pipe(
|
|
16
16
|
retryWhen(errors =>
|
|
@@ -46,7 +46,7 @@ const apiCall$ = ajax.getJSON('/api/data').pipe(
|
|
|
46
46
|
code: `// Search typeahead implementation
|
|
47
47
|
import { fromEvent, of, EMPTY } from 'rxjs';
|
|
48
48
|
import { ajax } from 'rxjs/ajax';
|
|
49
|
-
import { debounceTime, distinctUntilChanged, switchMap, catchError, filter, map } from 'rxjs
|
|
49
|
+
import { debounceTime, distinctUntilChanged, switchMap, catchError, filter, map } from 'rxjs';
|
|
50
50
|
|
|
51
51
|
const searchBox = document.getElementById('search');
|
|
52
52
|
const search$ = fromEvent(searchBox, 'input').pipe(
|
|
@@ -83,7 +83,7 @@ search$.subscribe(results => {
|
|
|
83
83
|
code: `// Smart polling with exponential backoff on errors
|
|
84
84
|
import { interval, timer, throwError, EMPTY } from 'rxjs';
|
|
85
85
|
import { ajax } from 'rxjs/ajax';
|
|
86
|
-
import { switchMap, retry, catchError, takeWhile, expand, tap } from 'rxjs
|
|
86
|
+
import { switchMap, retry, catchError, takeWhile, expand, tap } from 'rxjs';
|
|
87
87
|
|
|
88
88
|
let errorCount = 0;
|
|
89
89
|
const maxErrors = 3;
|
|
@@ -129,7 +129,7 @@ const dynamicPolling$ = ajax.getJSON('/api/data').pipe(
|
|
|
129
129
|
operators: ['webSocket', 'retryWhen', 'delay', 'tap', 'catchError'],
|
|
130
130
|
code: `// WebSocket with automatic reconnection
|
|
131
131
|
import { webSocket } from 'rxjs/webSocket';
|
|
132
|
-
import { retry, retryWhen, delay, tap, catchError } from 'rxjs
|
|
132
|
+
import { retry, retryWhen, delay, tap, catchError } from 'rxjs';
|
|
133
133
|
import { EMPTY } from 'rxjs';
|
|
134
134
|
|
|
135
135
|
const createWebSocketSubject = () =>
|
|
@@ -184,7 +184,7 @@ resilientSocket$.subscribe({
|
|
|
184
184
|
operators: ['combineLatest', 'debounceTime', 'distinctUntilChanged', 'switchMap', 'map'],
|
|
185
185
|
code: `// Reactive form validation
|
|
186
186
|
import { fromEvent, combineLatest, of, timer } from 'rxjs';
|
|
187
|
-
import { debounceTime, distinctUntilChanged, switchMap, map, startWith } from 'rxjs
|
|
187
|
+
import { debounceTime, distinctUntilChanged, switchMap, map, startWith } from 'rxjs';
|
|
188
188
|
import { ajax } from 'rxjs/ajax';
|
|
189
189
|
|
|
190
190
|
const emailInput = document.getElementById('email') as HTMLInputElement;
|
|
@@ -247,7 +247,7 @@ formValid$.subscribe(validation => {
|
|
|
247
247
|
operators: ['scan', 'shareReplay', 'distinctUntilChanged', 'pluck'],
|
|
248
248
|
code: `// Simple state management with RxJS
|
|
249
249
|
import { BehaviorSubject, Subject, merge } from 'rxjs';
|
|
250
|
-
import { scan, shareReplay, distinctUntilChanged, map } from 'rxjs
|
|
250
|
+
import { scan, shareReplay, distinctUntilChanged, map } from 'rxjs';
|
|
251
251
|
|
|
252
252
|
interface AppState {
|
|
253
253
|
user: { id: string; name: string } | null;
|
|
@@ -333,7 +333,7 @@ state$.subscribe(state => console.log('State updated:', state));`,
|
|
|
333
333
|
operators: ['shareReplay', 'merge', 'switchMap', 'startWith'],
|
|
334
334
|
code: `// Cache with refresh strategy
|
|
335
335
|
import { BehaviorSubject, Subject, timer, merge } from 'rxjs';
|
|
336
|
-
import { switchMap, shareReplay, startWith, tap } from 'rxjs
|
|
336
|
+
import { switchMap, shareReplay, startWith, tap } from 'rxjs';
|
|
337
337
|
import { ajax } from 'rxjs/ajax';
|
|
338
338
|
|
|
339
339
|
class CachedDataService {
|
|
@@ -449,7 +449,7 @@ ${pattern.code.split('\n').map(line => ' ' + line).join('\n')}
|
|
|
449
449
|
adapted.code = `// Vue 3 Composition API implementation
|
|
450
450
|
import { ref, onBeforeUnmount } from 'vue';
|
|
451
451
|
import { Subject } from 'rxjs';
|
|
452
|
-
import { takeUntil } from 'rxjs
|
|
452
|
+
import { takeUntil } from 'rxjs';
|
|
453
453
|
|
|
454
454
|
export function useRxJSPattern() {
|
|
455
455
|
const destroy$ = new Subject();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shuji-bonji/rxjs-mcp",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "RxJS MCP Server - Execute, debug, and visualize RxJS streams for AI assistants",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mcp",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"@modelcontextprotocol/sdk": "^1.25.0",
|
|
53
|
-
"rxjs": "^7.8.
|
|
53
|
+
"rxjs": "^7.8.2",
|
|
54
54
|
"zod": "^3.23.0",
|
|
55
55
|
"zod-to-json-schema": "^3.25.0"
|
|
56
56
|
},
|