next2d-development-mcp 1.1.4 → 1.1.6
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/dist/index.js +1 -1
- package/dist/references/develop-specs.md +17 -3
- package/dist/references/framework-specs.md +201 -68
- package/package.json +11 -11
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import { registerResources } from "./resources/index.js";
|
|
|
6
6
|
import { registerPrompts } from "./prompts/index.js";
|
|
7
7
|
const server = new McpServer({
|
|
8
8
|
"name": "next2d-development-mcp",
|
|
9
|
-
"version": "
|
|
9
|
+
"version": "1.1.6"
|
|
10
10
|
});
|
|
11
11
|
registerTools(server);
|
|
12
12
|
registerResources(server);
|
|
@@ -1626,12 +1626,26 @@ style-src 'self';
|
|
|
1626
1626
|
## Anti-Patterns
|
|
1627
1627
|
|
|
1628
1628
|
```typescript
|
|
1629
|
-
// NG: Viewでビジネスロジック
|
|
1629
|
+
// NG: Viewでビジネスロジック + addEventListener に async 関数を直接渡す
|
|
1630
|
+
// async () => {} を渡すと Promise が返り、@next2d/player がチャンネルを保持したまま
|
|
1631
|
+
// SPA 遷移で閉じられ "A listener indicated an asynchronous response by returning true,
|
|
1632
|
+
// but the message channel closed before a response was received" エラーが発生する。
|
|
1630
1633
|
class BadView extends View {
|
|
1631
1634
|
async initialize() {
|
|
1632
1635
|
btn.addEventListener(PointerEvent.POINTER_DOWN, async () => {
|
|
1633
|
-
const data = await Repository.get(); // NG
|
|
1634
|
-
this.processData(data); // NG
|
|
1636
|
+
const data = await Repository.get(); // NG: ビジネスロジック in View
|
|
1637
|
+
this.processData(data); // NG: ビジネスロジック in View
|
|
1638
|
+
});
|
|
1639
|
+
}
|
|
1640
|
+
}
|
|
1641
|
+
|
|
1642
|
+
// OK: 同期ハンドラ内で void IIFE を使い Promise を捨てる
|
|
1643
|
+
class GoodView extends View {
|
|
1644
|
+
async initialize() {
|
|
1645
|
+
btn.addEventListener(PointerEvent.POINTER_DOWN, () => { // 同期関数
|
|
1646
|
+
void (async () => {
|
|
1647
|
+
await this.vm.onClickButton(); // OK: VMに委譲
|
|
1648
|
+
})();
|
|
1635
1649
|
});
|
|
1636
1650
|
}
|
|
1637
1651
|
}
|
|
@@ -513,9 +513,11 @@ src/config/
|
|
|
513
513
|
└── routing.json # ルーティング設定
|
|
514
514
|
```
|
|
515
515
|
|
|
516
|
+
---
|
|
517
|
+
|
|
516
518
|
## stage.json
|
|
517
519
|
|
|
518
|
-
表示領域(Stage)の設定を行うJSON
|
|
520
|
+
表示領域(Stage)の設定を行うJSONファイルです。アプリ起動時に一度だけ読み込まれ、Stageの初期パラメータとして使用されます。
|
|
519
521
|
|
|
520
522
|
```json
|
|
521
523
|
{
|
|
@@ -534,22 +536,30 @@ src/config/
|
|
|
534
536
|
|
|
535
537
|
| プロパティ | 型 | デフォルト | 説明 |
|
|
536
538
|
|-----------|------|----------|------|
|
|
537
|
-
| `width` | number | 240 |
|
|
538
|
-
| `height` | number | 240 |
|
|
539
|
-
| `fps` | number | 60 | 1
|
|
540
|
-
| `options` | object | null |
|
|
539
|
+
| `width` | number | 240 | 表示領域の幅(ピクセル単位)。実際の描画キャンバスの基準幅として使用される |
|
|
540
|
+
| `height` | number | 240 | 表示領域の高さ(ピクセル単位)。実際の描画キャンバスの基準高さとして使用される |
|
|
541
|
+
| `fps` | number | 60 | 1秒間の描画回数。指定可能な範囲は 1〜60 |
|
|
542
|
+
| `options` | object | null | 追加オプション設定。省略可能 |
|
|
541
543
|
|
|
542
|
-
### options設定
|
|
544
|
+
### options 設定
|
|
543
545
|
|
|
544
546
|
| プロパティ | 型 | デフォルト | 説明 |
|
|
545
547
|
|-----------|------|----------|------|
|
|
546
|
-
| `fullScreen` | boolean | false | Stage
|
|
547
|
-
| `tagId` | string | null | ID
|
|
548
|
-
| `bgColor` | string | "transparent" | 背景色を16
|
|
548
|
+
| `fullScreen` | boolean | false | `true` にするとウィンドウ全体にStageを拡張して描画する。`false` の場合は `width`・`height` で指定したサイズで固定描画 |
|
|
549
|
+
| `tagId` | string \| null | null | 描画先とするHTML要素のID。指定したIDのエレメント内部にキャンバスが生成される。`null` の場合は `<body>` 直下に生成される |
|
|
550
|
+
| `bgColor` | string | "transparent" | 背景色を16進数カラーコードで指定(例: `"#1461A0"`)。`"transparent"` を指定すると透明になる |
|
|
551
|
+
|
|
552
|
+
> [!WARNING]
|
|
553
|
+
> `stage.json` で有効なプロパティは上記の `width`・`height`・`fps`・`options` のみです。
|
|
554
|
+
> `align`・`scaleMode` などステージ表示に関わる設定であっても、`stage.json` には存在しないプロパティです。
|
|
555
|
+
> これらの設定が必要な場合は `config.json` に記述してください。
|
|
556
|
+
> 上記以外のプロパティを記述しても、フレームワークは一切処理しません。
|
|
557
|
+
|
|
558
|
+
---
|
|
549
559
|
|
|
550
560
|
## config.json
|
|
551
561
|
|
|
552
|
-
|
|
562
|
+
環境ごとの設定を管理するファイルです。ビルド時に `--env` オプションで指定した環境名のオブジェクトと `all` オブジェクトがマージされ、アプリケーション全体で参照可能な設定として展開されます。
|
|
553
563
|
|
|
554
564
|
```json
|
|
555
565
|
{
|
|
@@ -584,20 +594,68 @@ src/config/
|
|
|
584
594
|
}
|
|
585
595
|
```
|
|
586
596
|
|
|
587
|
-
###
|
|
597
|
+
### 環境キーの仕様
|
|
598
|
+
|
|
599
|
+
`local`・`dev`・`stg`・`prd` などのキー名は任意です(`all` を除く)。ビルド時に `--env=<環境名>` で一致したキーのオブジェクトが読み込まれます。
|
|
600
|
+
|
|
601
|
+
| キー | 説明 |
|
|
602
|
+
|------|------|
|
|
603
|
+
| `all` | すべての環境で共通して読み込まれる設定 |
|
|
604
|
+
| それ以外 | `--env` で指定した環境名と一致したときのみ読み込まれる設定 |
|
|
588
605
|
|
|
589
|
-
|
|
606
|
+
### all 設定(フレームワーク予約済みプロパティ)
|
|
607
|
+
|
|
608
|
+
以下のプロパティはフレームワークが自動的に処理します。
|
|
590
609
|
|
|
591
610
|
| プロパティ | 型 | デフォルト | 説明 |
|
|
592
611
|
|-----------|------|----------|------|
|
|
593
|
-
| `spa` | boolean | true | Single Page Application
|
|
594
|
-
| `defaultTop` | string | "top" |
|
|
595
|
-
| `loading.callback` | string | Loading |
|
|
596
|
-
| `gotoView.callback` | string \|
|
|
612
|
+
| `spa` | boolean | true | `true` にするとSingle Page Applicationとして動作し、ブラウザのURLと連動してView遷移を管理する |
|
|
613
|
+
| `defaultTop` | string | "top" | アプリ起動時に最初に表示するViewの名前。指定しない場合は `TopView` クラスが起動する |
|
|
614
|
+
| `loading.callback` | string | "Loading" | ローディング画面として使用するクラス名。そのクラスの `start()` と `end()` が自動的に呼び出される |
|
|
615
|
+
| `gotoView.callback` | string \| string[] | — | View遷移完了後に呼び出すコールバッククラス名。配列で複数指定でき、async/awaitで順次実行される |
|
|
616
|
+
|
|
617
|
+
### ユーザー定義プロパティ
|
|
597
618
|
|
|
598
|
-
|
|
619
|
+
フレームワークの予約済みプロパティ以外に、任意のプロパティをどの環境キーにも追加できます。追加したプロパティはビルド後に `config` オブジェクトから参照できます。
|
|
599
620
|
|
|
600
|
-
|
|
621
|
+
エンドポイントURLや機能フラグ、表示設定など、環境ごとに変える必要がある値をここで管理します。
|
|
622
|
+
|
|
623
|
+
```json
|
|
624
|
+
{
|
|
625
|
+
"local": {
|
|
626
|
+
"api": {
|
|
627
|
+
"endPoint": "http://localhost:3000/"
|
|
628
|
+
}
|
|
629
|
+
},
|
|
630
|
+
"prd": {
|
|
631
|
+
"api": {
|
|
632
|
+
"endPoint": "https://api.example.com/"
|
|
633
|
+
}
|
|
634
|
+
},
|
|
635
|
+
"all": {
|
|
636
|
+
"spa": true,
|
|
637
|
+
"defaultTop": "top",
|
|
638
|
+
"align": "TL",
|
|
639
|
+
"scaleMode": "noScale"
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
```
|
|
643
|
+
|
|
644
|
+
```typescript
|
|
645
|
+
import { config } from "@/config/Config";
|
|
646
|
+
|
|
647
|
+
// ユーザー定義プロパティへのアクセス
|
|
648
|
+
const align = config.align; // "TL"
|
|
649
|
+
const scaleMode = config.scaleMode; // "noScale"
|
|
650
|
+
```
|
|
651
|
+
|
|
652
|
+
> [!WARNING]
|
|
653
|
+
> `config.json` でフレームワークが自動処理するプロパティは `spa`・`defaultTop`・`loading`・`gotoView` のみです。
|
|
654
|
+
> それ以外のプロパティはフレームワークが直接処理することはありませんが、`config` オブジェクト経由でアプリケーションコードから自由に参照できます。
|
|
655
|
+
|
|
656
|
+
### platform 設定
|
|
657
|
+
|
|
658
|
+
ビルド時の `--platform` で指定した値が自動的にセットされます。設定ファイルに記述する必要はなく、読み取り専用です。
|
|
601
659
|
|
|
602
660
|
対応値: `macos`, `windows`, `linux`, `ios`, `android`, `web`
|
|
603
661
|
|
|
@@ -609,6 +667,8 @@ if (config.platform === "ios") {
|
|
|
609
667
|
}
|
|
610
668
|
```
|
|
611
669
|
|
|
670
|
+
---
|
|
671
|
+
|
|
612
672
|
## routing.json
|
|
613
673
|
|
|
614
674
|
ルーティングの設定ファイルです。詳細は[ルーティング](/ja/reference/framework/routing)を参照してください。
|
|
@@ -630,45 +690,13 @@ if (config.platform === "ios") {
|
|
|
630
690
|
}
|
|
631
691
|
```
|
|
632
692
|
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
コード内で設定値を取得するには`config`オブジェクトを使用します。
|
|
636
|
-
|
|
637
|
-
### Config.tsの例
|
|
693
|
+
---
|
|
638
694
|
|
|
639
|
-
|
|
640
|
-
import stageJson from "./stage.json";
|
|
641
|
-
import configJson from "./config.json";
|
|
642
|
-
|
|
643
|
-
interface IStageConfig {
|
|
644
|
-
width: number;
|
|
645
|
-
height: number;
|
|
646
|
-
fps: number;
|
|
647
|
-
options: {
|
|
648
|
-
fullScreen: boolean;
|
|
649
|
-
tagId: string | null;
|
|
650
|
-
bgColor: string;
|
|
651
|
-
};
|
|
652
|
-
}
|
|
695
|
+
## 設定値の取得
|
|
653
696
|
|
|
654
|
-
|
|
655
|
-
stage: IStageConfig;
|
|
656
|
-
api: {
|
|
657
|
-
endPoint: string;
|
|
658
|
-
};
|
|
659
|
-
content: {
|
|
660
|
-
endPoint: string;
|
|
661
|
-
};
|
|
662
|
-
spa: boolean;
|
|
663
|
-
defaultTop: string;
|
|
664
|
-
platform: string;
|
|
665
|
-
}
|
|
697
|
+
`Config.ts` は `npm start` 実行時に自動生成されるファイルです。手動で作成・編集する必要はありません。
|
|
666
698
|
|
|
667
|
-
|
|
668
|
-
stage: stageJson,
|
|
669
|
-
...configJson
|
|
670
|
-
};
|
|
671
|
-
```
|
|
699
|
+
コード内で設定値を取得するには、自動生成された `config` オブジェクトをインポートして使用します。
|
|
672
700
|
|
|
673
701
|
### 使用例
|
|
674
702
|
|
|
@@ -676,7 +704,7 @@ export const config: IConfig = {
|
|
|
676
704
|
import { config } from "@/config/Config";
|
|
677
705
|
|
|
678
706
|
// ステージ設定
|
|
679
|
-
const stageWidth
|
|
707
|
+
const stageWidth = config.stage.width;
|
|
680
708
|
const stageHeight = config.stage.height;
|
|
681
709
|
|
|
682
710
|
// API設定
|
|
@@ -686,9 +714,11 @@ const apiEndPoint = config.api.endPoint;
|
|
|
686
714
|
const isSpa = config.spa;
|
|
687
715
|
```
|
|
688
716
|
|
|
717
|
+
---
|
|
718
|
+
|
|
689
719
|
## ローディング画面
|
|
690
720
|
|
|
691
|
-
`loading.callback
|
|
721
|
+
`loading.callback` で設定したクラスの `start()` と `end()` が自動的に呼び出されます。
|
|
692
722
|
|
|
693
723
|
```typescript
|
|
694
724
|
export class Loading
|
|
@@ -715,9 +745,11 @@ export class Loading
|
|
|
715
745
|
}
|
|
716
746
|
```
|
|
717
747
|
|
|
718
|
-
|
|
748
|
+
---
|
|
719
749
|
|
|
720
|
-
|
|
750
|
+
## gotoView コールバック
|
|
751
|
+
|
|
752
|
+
`gotoView.callback` で設定したクラスの `execute()` が呼び出されます。配列で複数のクラスを指定でき、async/await で順次実行されます。
|
|
721
753
|
|
|
722
754
|
```typescript
|
|
723
755
|
import { app } from "@next2d/framework";
|
|
@@ -744,6 +776,8 @@ export class Background
|
|
|
744
776
|
}
|
|
745
777
|
```
|
|
746
778
|
|
|
779
|
+
---
|
|
780
|
+
|
|
747
781
|
## ビルドコマンド
|
|
748
782
|
|
|
749
783
|
環境を指定してビルド:
|
|
@@ -767,6 +801,8 @@ npm run build -- --platform=ios
|
|
|
767
801
|
npm run build -- --platform=android
|
|
768
802
|
```
|
|
769
803
|
|
|
804
|
+
---
|
|
805
|
+
|
|
770
806
|
## 設定例
|
|
771
807
|
|
|
772
808
|
### 完全な設定ファイルの例
|
|
@@ -822,11 +858,15 @@ npm run build -- --platform=android
|
|
|
822
858
|
},
|
|
823
859
|
"gotoView": {
|
|
824
860
|
"callback": ["callback.Background"]
|
|
825
|
-
}
|
|
861
|
+
},
|
|
862
|
+
"align": "TL",
|
|
863
|
+
"scaleMode": "noScale"
|
|
826
864
|
}
|
|
827
865
|
}
|
|
828
866
|
```
|
|
829
867
|
|
|
868
|
+
---
|
|
869
|
+
|
|
830
870
|
## 関連項目
|
|
831
871
|
|
|
832
872
|
- [ルーティング](/ja/reference/framework/routing)
|
|
@@ -1068,15 +1108,6 @@ export class HomeDataCallback
|
|
|
1068
1108
|
- 引数を省略した場合は、現在のURLから遷移先が解決されます(SPAの`popstate`時)。
|
|
1069
1109
|
- 遷移開始時に前回の`response`マップはクリアされます。
|
|
1070
1110
|
|
|
1071
|
-
`gotoView`実行シーケンス(詳細):
|
|
1072
|
-
|
|
1073
|
-
1. 前回遷移で保持していた`response`マップを初期化します。
|
|
1074
|
-
2. `name`または現在URLから遷移先ルートを解決し、クエリを分解します。
|
|
1075
|
-
3. `all.spa: true`かつ通常遷移時はHistory API(`pushState`)でURL履歴を更新します。
|
|
1076
|
-
4. 遷移先`requests`を実行し、`name`キー単位で`response`/`cache`へ格納します。
|
|
1077
|
-
5. `requests.callback`と`gotoView.callback`を順次実行します。
|
|
1078
|
-
6. 旧Viewの`onExit`/unbind後に新View/ViewModelをbindし、`initialize`完了後に`onEnter`を呼び出します。
|
|
1079
|
-
|
|
1080
1111
|
```typescript
|
|
1081
1112
|
import { app } from "@next2d/framework";
|
|
1082
1113
|
|
|
@@ -1699,6 +1730,108 @@ homeContentPointerDownEvent(event: PointerEvent): void
|
|
|
1699
1730
|
|
|
1700
1731
|
View内でイベント処理を完結させず、必ずViewModelに委譲します。
|
|
1701
1732
|
|
|
1733
|
+
### 4. `addEventListener` に `async` 関数を直接渡さない
|
|
1734
|
+
|
|
1735
|
+
**NG パターン(Promiseエラーの原因):**
|
|
1736
|
+
|
|
1737
|
+
```typescript
|
|
1738
|
+
btn.addEventListener(PointerEvent.POINTER_DOWN, async () =>
|
|
1739
|
+
{
|
|
1740
|
+
await this.vm.onClickSomething();
|
|
1741
|
+
});
|
|
1742
|
+
```
|
|
1743
|
+
|
|
1744
|
+
`async` 関数は Promise を返します。@next2d/player の内部イベントシステムは、
|
|
1745
|
+
ハンドラが truthy な値を返すと「非同期応答あり」と解釈し、Worker との
|
|
1746
|
+
メッセージチャンネルを保持します。SPA 遷移で `gotoView()` が呼ばれると
|
|
1747
|
+
チャンネルが閉じられ、以下のエラーが `Uncaught (in promise)` として発生します。
|
|
1748
|
+
|
|
1749
|
+
```
|
|
1750
|
+
A listener indicated an asynchronous response by returning true,
|
|
1751
|
+
but the message channel closed before a response was received
|
|
1752
|
+
```
|
|
1753
|
+
|
|
1754
|
+
**OK パターン(`void (async () => {})()` でラップ):**
|
|
1755
|
+
|
|
1756
|
+
```typescript
|
|
1757
|
+
btn.addEventListener(PointerEvent.POINTER_DOWN, () =>
|
|
1758
|
+
{
|
|
1759
|
+
if (!btn.enabled) { return; } // 同期ガードはここで
|
|
1760
|
+
btn.disable();
|
|
1761
|
+
|
|
1762
|
+
void (async () =>
|
|
1763
|
+
{
|
|
1764
|
+
try {
|
|
1765
|
+
await this.vm.onClickSomething();
|
|
1766
|
+
} catch (error) {
|
|
1767
|
+
btn.enable();
|
|
1768
|
+
console.error("[prefix]", "遷移に失敗", error);
|
|
1769
|
+
}
|
|
1770
|
+
})();
|
|
1771
|
+
});
|
|
1772
|
+
```
|
|
1773
|
+
|
|
1774
|
+
ポイント:
|
|
1775
|
+
- 外側のハンドラを **同期関数** にして `void` 以外の戻り値を返さない
|
|
1776
|
+
- `await` が必要な処理は内側の即時実行 async IIFE に閉じ込め、`void` で破棄
|
|
1777
|
+
- `enabled` チェックなど即時判断が必要なガードは **外側の同期ハンドラ** に置く
|
|
1778
|
+
|
|
1779
|
+
### 5. SPA 遷移時の「メッセージチャンネルクローズ」エラーを防ぐ
|
|
1780
|
+
|
|
1781
|
+
**エラーメッセージ:**
|
|
1782
|
+
```
|
|
1783
|
+
Uncaught (in promise) Error: A listener indicated an asynchronous response
|
|
1784
|
+
by returning true, but the message channel closed before a response was received
|
|
1785
|
+
```
|
|
1786
|
+
|
|
1787
|
+
**発生メカニズム(2つの独立した原因):**
|
|
1788
|
+
|
|
1789
|
+
| # | 原因 | 性質 | 対処 |
|
|
1790
|
+
|---|------|------|------|
|
|
1791
|
+
| ① | `addEventListener` に `async` 関数を直接渡した(Promise を返すため) | JavaScript Promise rejection | 設計原則4の `void (async () => {})()` パターンで修正 |
|
|
1792
|
+
| ② | @next2d/player が `app.initialize()` 完了後に DOM 追加する IME 用 `<textarea tabindex="-1">` を Chrome 拡張機能(パスワードマネージャー等)が検出し、SPA 遷移でチャンネルが閉じる | **Chrome 拡張機能のランタイムエラー**(JS Promise rejection ではない) | 初期化後に textarea へ `autocomplete="off"` 等を設定して拡張機能の検出を抑制 |
|
|
1793
|
+
|
|
1794
|
+
> **重要:** 原因②は JavaScript の Promise rejection ではなく Chrome 拡張機能のランタイムエラーです。
|
|
1795
|
+
> そのため `window.addEventListener("unhandledrejection", ...)` では**捕捉・抑制できません**。
|
|
1796
|
+
> `unhandledrejection` ハンドラは原因①(コード起因)の残存ケースに対する安全網として追加します。
|
|
1797
|
+
|
|
1798
|
+
**アプリエントリポイント (`index.ts`) への対処:**
|
|
1799
|
+
|
|
1800
|
+
```typescript
|
|
1801
|
+
// ① コード起因の Promise rejection が残存する場合の安全網(unhandledrejection で捕捉可能)
|
|
1802
|
+
// 原因②(Chrome 拡張起因)はここでは捕捉できないため、別途 textarea 対策が必要
|
|
1803
|
+
window.addEventListener("unhandledrejection", (event) =>
|
|
1804
|
+
{
|
|
1805
|
+
const reason = event.reason;
|
|
1806
|
+
const message = (typeof reason === "string"
|
|
1807
|
+
? reason
|
|
1808
|
+
: (reason as { message?: string } | null)?.message) ?? "";
|
|
1809
|
+
if (message.includes("A listener indicated an asynchronous response by returning true")) {
|
|
1810
|
+
event.preventDefault();
|
|
1811
|
+
}
|
|
1812
|
+
});
|
|
1813
|
+
|
|
1814
|
+
const boot = async (): Promise<void> =>
|
|
1815
|
+
{
|
|
1816
|
+
await app.initialize(config, packages).run();
|
|
1817
|
+
|
|
1818
|
+
// ② @next2d/player の IME 用グローバル textarea に Chrome 拡張が干渉するのを防ぐ
|
|
1819
|
+
// tabIndex="-1" の textarea は @next2d/player が app.initialize() 完了時に DOM 追加する
|
|
1820
|
+
// Chrome の自動補完やパスワードマネージャーがこの textarea を検出すると
|
|
1821
|
+
// SPA 遷移時にメッセージチャンネルエラーが発生する(JS Promise rejection ではなく
|
|
1822
|
+
// Chrome 拡張のランタイムエラーのため unhandledrejection ハンドラでは捕捉不可)
|
|
1823
|
+
const internalTextarea = document.querySelector('textarea[tabindex="-1"]');
|
|
1824
|
+
if (internalTextarea) {
|
|
1825
|
+
internalTextarea.setAttribute("autocomplete", "off");
|
|
1826
|
+
internalTextarea.setAttribute("data-form-type", "other");
|
|
1827
|
+
internalTextarea.setAttribute("role", "presentation");
|
|
1828
|
+
internalTextarea.setAttribute("aria-hidden", "true");
|
|
1829
|
+
}
|
|
1830
|
+
|
|
1831
|
+
await app.gotoView();
|
|
1832
|
+
};
|
|
1833
|
+
```
|
|
1834
|
+
|
|
1702
1835
|
## View/ViewModel作成のテンプレート
|
|
1703
1836
|
|
|
1704
1837
|
### View
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "next2d-development-mcp",
|
|
3
3
|
"displayName": "Next2D Development MCP",
|
|
4
|
-
"version": "1.1.
|
|
4
|
+
"version": "1.1.6",
|
|
5
5
|
"description": "MCP server for Next2D application development assistance",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"author": "Toshiyuki Ienaga <ienaga@next2d.app>",
|
|
@@ -52,19 +52,19 @@
|
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@eslint/js": "^10.0.1",
|
|
55
|
-
"@types/node": "^25.
|
|
56
|
-
"@types/vscode": "^1.
|
|
57
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
58
|
-
"@typescript-eslint/parser": "^8.
|
|
59
|
-
"@vscode/vsce": "^3.
|
|
60
|
-
"eslint": "^10.
|
|
55
|
+
"@types/node": "^25.6.2",
|
|
56
|
+
"@types/vscode": "^1.115.0",
|
|
57
|
+
"@typescript-eslint/eslint-plugin": "^8.59.2",
|
|
58
|
+
"@typescript-eslint/parser": "^8.59.2",
|
|
59
|
+
"@vscode/vsce": "^3.9.1",
|
|
60
|
+
"eslint": "^10.3.0",
|
|
61
61
|
"eslint-plugin-unused-imports": "^4.4.1",
|
|
62
|
-
"globals": "^17.
|
|
63
|
-
"typescript": "^6.0.
|
|
64
|
-
"vitest": "^4.1.
|
|
62
|
+
"globals": "^17.6.0",
|
|
63
|
+
"typescript": "^6.0.3",
|
|
64
|
+
"vitest": "^4.1.5"
|
|
65
65
|
},
|
|
66
66
|
"engines": {
|
|
67
67
|
"node": ">=22.0.0",
|
|
68
|
-
"vscode": "^1.
|
|
68
|
+
"vscode": "^1.115.0"
|
|
69
69
|
}
|
|
70
70
|
}
|