nadesiko3 3.7.21 → 3.7.23
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/README.md +20 -1
- package/batch/command.txt +370 -334
- package/batch/generate_command_list.mjs +102 -0
- package/batch/jsplugin2text.nako3 +1 -1
- package/batch/pickup_command.nako3 +12 -0
- package/batch/search_command.mjs +34 -0
- package/batch/search_command.nako3 +430 -0
- package/core/command/snako.mts +5 -1
- package/core/deno/snako.ts +5 -1
- package/core/package-lock.json +382 -21
- package/core/package.json +7 -4
- package/core/sample/algorithms/README.md +43 -0
- package/core/sample/algorithms/graph/dijkstra.nako3 +47 -0
- package/core/sample/algorithms/graph/kruskal.nako3 +69 -0
- package/core/sample/algorithms/math/euclidean_gcd.nako3 +15 -0
- package/core/sample/algorithms/math/sieve_of_eratosthenes.nako3 +26 -0
- package/core/sample/algorithms/search/binary_search.nako3 +17 -0
- package/core/sample/algorithms/search/breadth_first_search.nako3 +33 -0
- package/core/sample/algorithms/search/depth_first_search.nako3 +25 -0
- package/core/sample/algorithms/sort/heap_sort.nako3 +37 -0
- package/core/sample/algorithms/sort/insertion_sort.nako3 +18 -0
- package/core/sample/algorithms/sort/merge_sort.nako3 +40 -0
- package/core/sample/algorithms/sort/quick_sort.nako3 +36 -0
- package/core/sample/algorithms/string/knuth_morris_pratt.nako3 +50 -0
- package/core/sample/algorithms/string/run_length_encoding.nako3 +25 -0
- package/core/src/nako3.mts +178 -614
- package/core/src/nako_basic_plugins.mts +39 -0
- package/core/src/nako_core_version.mts +2 -2
- package/core/src/nako_csv.mts +0 -1
- package/core/src/nako_event.mts +49 -0
- package/core/src/nako_gen.mts +320 -209
- package/core/src/nako_global.mts +18 -0
- package/core/src/nako_indent_inline.mts +2 -2
- package/core/src/nako_lex_rules.mts +1 -1
- package/core/src/nako_parser3.mts +111 -166
- package/core/src/nako_parser_async.mts +165 -0
- package/core/src/nako_parser_base.mts +4 -55
- package/core/src/nako_parser_message.mts +105 -0
- package/core/src/nako_parser_operator.mts +93 -0
- package/core/src/nako_plugin_manager.mts +260 -0
- package/core/src/nako_require.mts +292 -0
- package/core/src/nako_runner.mts +208 -0
- package/core/src/nako_tokenizer.mts +221 -0
- package/core/src/plugin_csv.mts +1 -1
- package/core/src/plugin_system.mts +34 -3259
- package/core/src/plugin_system_array.mts +699 -0
- package/core/src/plugin_system_datetime.mts +368 -0
- package/core/src/plugin_system_debug.mts +403 -0
- package/core/src/plugin_system_dict.mts +85 -0
- package/core/src/plugin_system_json.mts +73 -0
- package/core/src/plugin_system_math.mts +383 -0
- package/core/src/plugin_system_regexp.mts +120 -0
- package/core/src/plugin_system_stdio.mts +86 -0
- package/core/src/plugin_system_string.mts +666 -0
- package/core/src/plugin_system_timer.mts +152 -0
- package/core/src/plugin_system_types.mts +151 -0
- package/core/src/plugin_system_url.mts +193 -0
- package/core/src/plugin_toml.mts +3 -3
- package/core/test/algorithm_samples_test.mjs +58 -0
- package/core/test/algorithms/graph/dijkstra_test.nako3 +21 -0
- package/core/test/algorithms/graph/kruskal_test.nako3 +21 -0
- package/core/test/algorithms/helper.mjs +13 -0
- package/core/test/algorithms/math/euclidean_gcd_test.nako3 +13 -0
- package/core/test/algorithms/math/sieve_of_eratosthenes_test.nako3 +10 -0
- package/core/test/algorithms/search/binary_search_test.nako3 +15 -0
- package/core/test/algorithms/search/breadth_first_search_test.nako3 +13 -0
- package/core/test/algorithms/search/depth_first_search_test.nako3 +13 -0
- package/core/test/algorithms/sort/heap_sort_test.nako3 +13 -0
- package/core/test/algorithms/sort/insertion_sort_test.nako3 +13 -0
- package/core/test/algorithms/sort/merge_sort_test.nako3 +18 -0
- package/core/test/algorithms/sort/quick_sort_test.nako3 +34 -0
- package/core/test/algorithms/string/knuth_morris_pratt_test.nako3 +16 -0
- package/core/test/algorithms/string/run_length_encoding_test.nako3 +13 -0
- package/core/test/array_test.mjs +3 -0
- package/core/test/fixtures/README.md +39 -0
- package/core/test/fixtures/make_parser_ast_golden.mjs +31 -0
- package/core/test/fixtures/parser_ast_golden.json +8027 -0
- package/core/test/fixtures/parser_corpus.mjs +120 -0
- package/core/test/func_call.mjs +18 -0
- package/core/test/func_test.mjs +28 -0
- package/core/test/indent_test.mjs +6 -0
- package/core/test/nako_basic_plugins_test.mjs +44 -0
- package/core/test/nako_event_test.mjs +127 -0
- package/core/test/nako_gen_perf_test.mjs +178 -0
- package/core/test/nako_parser_async_test.mjs +385 -0
- package/core/test/nako_parser_test.mjs +160 -0
- package/core/test/nako_plugin_manager_test.mjs +185 -0
- package/core/test/nako_require_test.mjs +153 -0
- package/core/test/nako_runner_test.mjs +174 -0
- package/core/test/nako_tokenizer_test.mjs +115 -0
- package/core/test/plugin_system_debug_test.mjs +138 -0
- package/core/test/plugin_system_split_test.mjs +179 -0
- package/core/test/plugin_system_test.mjs +6 -0
- package/core/tsconfig.json +0 -1
- package/demo/browsers.html +1 -1
- package/doc/SETUP.md +1 -1
- package/doc/ai-code-generation.md +136 -0
- package/doc/browsers.md +1 -1
- package/doc/command_list.json +16842 -0
- package/doc/search_command.md +222 -0
- package/doc/syntax-nako3.md +344 -0
- package/package.json +29 -26
- package/release/_hash.txt +40 -40
- package/release/_script-tags.txt +16 -16
- package/release/command.json +1 -1
- package/release/command.json.js +1 -1
- package/release/command_cnako3.json +1 -1
- package/release/command_list.json +1 -1
- package/release/edit_main.js +6 -6
- package/release/edit_main.js.map +3 -3
- package/release/editor.js +6 -6
- package/release/plugin_caniuse.js +1 -1
- package/release/plugin_caniuse.js.map +2 -2
- package/release/plugin_keigo.js.map +3 -3
- package/release/plugin_markup.js +46 -46
- package/release/plugin_markup.js.map +3 -3
- package/release/plugin_weykturtle3d.js +1 -1
- package/release/plugin_weykturtle3d.js.map +3 -3
- package/release/version.js +2 -2
- package/release/version_main.js +2 -2
- package/release/version_main.js.map +1 -1
- package/release/wnako3.js +219 -230
- package/release/wnako3.js.map +4 -4
- package/release/wnako3webworker.js +193 -204
- package/release/wnako3webworker.js.map +4 -4
- package/src/browsers.mjs +1 -1
- package/src/browsers.txt +0 -1
- package/src/cnako3mod.mjs +7 -2
- package/src/cnako3mod.mts +7 -2
- package/src/nako_version.mjs +2 -2
- package/src/nako_version.mts +2 -2
- package/src/plugin_browser_ajax.mjs +4 -4
- package/src/plugin_browser_ajax.mts +4 -4
- package/src/plugin_browser_audio.mjs +10 -10
- package/src/plugin_browser_audio.mts +10 -10
- package/src/plugin_browser_camera.mjs +4 -4
- package/src/plugin_browser_camera.mts +4 -4
- package/src/plugin_browser_canvas.mjs +2 -2
- package/src/plugin_browser_canvas.mts +2 -2
- package/src/plugin_browser_crypto.mjs +3 -3
- package/src/plugin_browser_crypto.mts +3 -3
- package/src/plugin_browser_dom_event.mjs +1 -1
- package/src/plugin_browser_dom_event.mts +1 -1
- package/src/plugin_browser_geolocation.mjs +1 -1
- package/src/plugin_browser_geolocation.mts +1 -1
- package/src/plugin_browser_hotkey.mjs +1 -1
- package/src/plugin_browser_hotkey.mts +1 -1
- package/src/plugin_browser_html.mjs +1 -1
- package/src/plugin_browser_html.mts +1 -1
- package/src/plugin_browser_location.mjs +1 -1
- package/src/plugin_browser_location.mts +1 -1
- package/src/plugin_browser_speech.mjs +1 -1
- package/src/plugin_browser_speech.mts +1 -1
- package/src/plugin_browser_storage.mjs +2 -2
- package/src/plugin_browser_storage.mts +2 -2
- package/src/plugin_httpserver.mjs +3 -3
- package/src/plugin_httpserver.mts +3 -3
- package/src/plugin_keigo.mjs +2 -2
- package/src/plugin_keigo.mts +2 -2
- package/src/plugin_node.mjs +48 -48
- package/src/plugin_node.mts +53 -53
- package/src/plugin_weykturtle3d.mjs +56 -56
- package/src/plugin_weykturtle3d.mts +56 -56
- package/src/wnako3.mjs +1 -1
- package/src/wnako3.mts +1 -1
- package/src/wnako3_editor.mjs +5 -5
- package/src/wnako3_editor.mts +5 -5
- package/src/wnako3mod.mjs +2 -2
- package/src/wnako3mod.mts +2 -2
- package/test/nako3edit/index_nako3_test.mjs +282 -0
- package/test/nako3server/index_nako3_test.mjs +239 -0
- package/test/node/ai_code_generation_guide_test.mjs +29 -0
- package/test/node/node_version_support_test.mjs +45 -0
- package/test/node/search_command_test.mjs +174 -0
- package/tools/nako3edit/AGENTS.md +23 -0
- package/tools/nako3edit/index.nako3 +404 -0
- package/tools/nako3server/AGENTS.md +23 -0
- package/tools/nako3server/index.nako3 +156 -23
- package/core/src/nako3.mjs +0 -1021
- package/core/src/nako_ast.mjs +0 -4
- package/core/src/nako_colors.mjs +0 -77
- package/core/src/nako_core_version.mjs +0 -8
- package/core/src/nako_csv.mjs +0 -193
- package/core/src/nako_errors.mjs +0 -166
- package/core/src/nako_from_dncl.mjs +0 -285
- package/core/src/nako_from_dncl2.mjs +0 -347
- package/core/src/nako_gen.mjs +0 -2500
- package/core/src/nako_global.mjs +0 -138
- package/core/src/nako_indent.mjs +0 -442
- package/core/src/nako_indent_chars.mjs +0 -29
- package/core/src/nako_indent_inline.mjs +0 -361
- package/core/src/nako_josi_list.mjs +0 -47
- package/core/src/nako_lex_rules.mjs +0 -319
- package/core/src/nako_lexer.mjs +0 -794
- package/core/src/nako_logger.mjs +0 -221
- package/core/src/nako_parser3.mjs +0 -3250
- package/core/src/nako_parser_base.mjs +0 -403
- package/core/src/nako_parser_const.mjs +0 -37
- package/core/src/nako_prepare.mjs +0 -329
- package/core/src/nako_reserved_words.mjs +0 -42
- package/core/src/nako_source_mapping.mjs +0 -207
- package/core/src/nako_test.mjs +0 -37
- package/core/src/nako_token.mjs +0 -1
- package/core/src/nako_tools.mjs +0 -53
- package/core/src/nako_types.mjs +0 -14
- package/core/src/plugin_api.mjs +0 -4
- package/core/src/plugin_csv.mjs +0 -97
- package/core/src/plugin_math.mjs +0 -352
- package/core/src/plugin_promise.mjs +0 -102
- package/core/src/plugin_system.mjs +0 -3810
- package/core/src/plugin_test.mjs +0 -52
- package/core/src/plugin_toml.mjs +0 -39
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
# 命令検索CLI (search:command) 仕様
|
|
2
|
+
|
|
3
|
+
なでしこ3に用意されている命令(`doc/command_list.json`)を、ターミナルやAIエージェントから
|
|
4
|
+
手軽に検索するためのコマンドラインツールの仕様です。([Issue #2385](https://github.com/kujirahand/nadesiko3/issues/2385))
|
|
5
|
+
|
|
6
|
+
検索処理の本体は、なでしこ3自身(`batch/search_command.nako3`)で記述します。
|
|
7
|
+
|
|
8
|
+
## 目的
|
|
9
|
+
|
|
10
|
+
- 人間が「こんな命令あったかな?」とターミナルからすぐ調べられるようにする
|
|
11
|
+
- AIエージェントが、コード生成の前に必要な命令だけを取得できるようにする
|
|
12
|
+
([Issue #2377](https://github.com/kujirahand/nadesiko3/issues/2377) のAIコード生成ガイドから参照する)
|
|
13
|
+
|
|
14
|
+
## 使い方
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
# 命令名・読み方・説明から部分一致検索
|
|
18
|
+
npm run search:command -- ファイル
|
|
19
|
+
|
|
20
|
+
# Node.js版で使える命令だけを検索
|
|
21
|
+
npm run search:command -- ファイル --target cnako
|
|
22
|
+
|
|
23
|
+
# ブラウザ版の基本プラグインだけを検索
|
|
24
|
+
npm run search:command -- DOM --target wnako --group basic
|
|
25
|
+
|
|
26
|
+
# JSON形式で出力(AIや別ツール向け)
|
|
27
|
+
npm run search:command -- CSV --json
|
|
28
|
+
|
|
29
|
+
# 使い方を表示
|
|
30
|
+
npm run search:command -- --help
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
npmスクリプトを使わずに、直接実行することもできます。
|
|
34
|
+
|
|
35
|
+
```sh
|
|
36
|
+
node batch/search_command.mjs ファイル --target cnako
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## コマンドライン仕様
|
|
40
|
+
|
|
41
|
+
### 書式
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
search_command [検索語...] [オプション]
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
- 検索語は複数指定できます。複数指定した場合はAND条件(すべてを含む命令だけ)になります。
|
|
48
|
+
- 検索語を1つも指定せず、絞り込みオプションだけを指定した場合は、その条件に合う命令をすべて対象とします。
|
|
49
|
+
- 検索語も絞り込みオプションも指定しない場合は、ヘルプを表示して終了コード`2`で終了します。
|
|
50
|
+
|
|
51
|
+
### オプション
|
|
52
|
+
|
|
53
|
+
| オプション | 説明 |
|
|
54
|
+
|---|---|
|
|
55
|
+
| `--target <名前>` | 実行環境で絞り込む。`cnako` / `wnako` / `phpnako` / `enako` |
|
|
56
|
+
| `--group <名前>` | プラグイン種別で絞り込む。`basic`(基本プラグイン) / `extra`(拡張プラグイン)。日本語の`基本プラグイン`/`拡張プラグイン`も指定可 |
|
|
57
|
+
| `--plugin <名前>` | プラグイン名で絞り込む(部分一致)。例: `plugin_node` |
|
|
58
|
+
| `--type <種類>` | 命令の種類で絞り込む。`関数` / `変数` / `定数` |
|
|
59
|
+
| `--limit <件数>` | 表示する最大件数(既定値は`50`)。`0`を指定すると無制限 |
|
|
60
|
+
| `--json` | JSON形式で出力する |
|
|
61
|
+
| `--help` | 使い方を表示する |
|
|
62
|
+
|
|
63
|
+
- 値を取るオプションは、`--target cnako`のほか`--target=cnako`の形式でも指定できます。
|
|
64
|
+
- オプションの指定が不正なとき(未知のオプション、値が必要なのに値がない、値が正しくない)は、
|
|
65
|
+
エラーメッセージを表示して終了コード`2`で終了します。
|
|
66
|
+
|
|
67
|
+
### 検索の仕様
|
|
68
|
+
|
|
69
|
+
- 検索対象のフィールドは `name`(命令名)、`yomi`(読み方)、`description`(説明)の3つです。
|
|
70
|
+
- 部分一致で検索します。英字は大文字・小文字を区別しません。
|
|
71
|
+
- 検索語の前後の空白は無視します。
|
|
72
|
+
|
|
73
|
+
### 並び順
|
|
74
|
+
|
|
75
|
+
1. 命令名が検索語と完全一致するものを先頭にする
|
|
76
|
+
2. 次に、命令名の前方一致
|
|
77
|
+
3. 次に、命令名の部分一致
|
|
78
|
+
4. 最後に、説明・読み方だけが一致したもの
|
|
79
|
+
|
|
80
|
+
同じ優先度の中では、`doc/command_list.json`に登場する順序を保ちます。
|
|
81
|
+
|
|
82
|
+
## 出力
|
|
83
|
+
|
|
84
|
+
### 通常出力(既定)
|
|
85
|
+
|
|
86
|
+
1件につき2行で表示します。
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
[関数] ファイル読む (FILEを/FILEから) plugin_node <cnako>
|
|
90
|
+
ファイルFILEを読む
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
- 1行目: `[種類] 命令名 (引数と助詞) プラグイン名 <対象環境>`
|
|
94
|
+
- 引数がないときは `()` を表示しません。
|
|
95
|
+
- 対象環境は`target`をカンマ区切りで表示します。
|
|
96
|
+
- 2行目: 説明(インデント4文字)。説明がないときは省略します。
|
|
97
|
+
|
|
98
|
+
先頭に検索条件と件数のサマリを表示します。
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
検索: 『ファイル』 (target=cnako)
|
|
102
|
+
38件見つかりました。
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
`--limit`で表示を打ち切った場合は、末尾にその旨を表示します。
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
... 他 30件(すべて表示するには --limit 0 を指定してください)
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### JSON出力(`--json`)
|
|
112
|
+
|
|
113
|
+
命令オブジェクトの配列を出力します。出力するキーは次の通りで、冗長にならないよう
|
|
114
|
+
`url`など検索結果として不要な項目は含めません。
|
|
115
|
+
|
|
116
|
+
```json
|
|
117
|
+
[
|
|
118
|
+
{
|
|
119
|
+
"type": "関数",
|
|
120
|
+
"name": "ファイル読む",
|
|
121
|
+
"args": "FILEを/FILEから",
|
|
122
|
+
"yomi": "ふぁいるよむ",
|
|
123
|
+
"description": "ファイルFILEを読む",
|
|
124
|
+
"plugin": "plugin_node",
|
|
125
|
+
"group": "拡張プラグイン",
|
|
126
|
+
"target": ["cnako"]
|
|
127
|
+
}
|
|
128
|
+
]
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
- JSON以外の文字(サマリなど)は出力しません。そのまま`JSON.parse`できます。
|
|
132
|
+
- 一致がない場合は空配列`[]`を出力します。
|
|
133
|
+
|
|
134
|
+
## 終了コード
|
|
135
|
+
|
|
136
|
+
| コード | 意味 |
|
|
137
|
+
|---|---|
|
|
138
|
+
| `0` | 1件以上見つかった |
|
|
139
|
+
| `1` | 一致する命令が0件だった(通常出力では「一致する命令は見つかりませんでした。」と表示) |
|
|
140
|
+
| `2` | 引数・オプションの指定が不正、または検索条件が1つも指定されなかった(`--help`の表示は`0`) |
|
|
141
|
+
| `3` | `doc/command_list.json`が読めない、JSONとして壊れている等の実行時エラー |
|
|
142
|
+
|
|
143
|
+
Ctrl+Cなどのシグナルで中断された場合は、シェルの慣習にならって`128 + シグナル番号`
|
|
144
|
+
(SIGINTなら`130`)を返します。検索結果を表す`1`と区別できるようにするためです。
|
|
145
|
+
|
|
146
|
+
## 実装方針
|
|
147
|
+
|
|
148
|
+
### ファイル構成
|
|
149
|
+
|
|
150
|
+
| ファイル | 役割 |
|
|
151
|
+
|---|---|
|
|
152
|
+
| `batch/search_command.nako3` | 検索本体(なでしこ3で記述)。引数解析・検索・絞り込み・整形・終了コード設定 |
|
|
153
|
+
| `batch/search_command.mjs` | 起動用のごく短いラッパー。`src/cnako3.mjs`で上記を実行する |
|
|
154
|
+
| `test/node/search_command_test.mjs` | CLIのテスト |
|
|
155
|
+
| `doc/search_command.md` | 本ドキュメント |
|
|
156
|
+
|
|
157
|
+
`package.json`に次のスクリプトを追加します。
|
|
158
|
+
|
|
159
|
+
```json
|
|
160
|
+
"search:command": "node batch/search_command.mjs"
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### なぜラッパー(.mjs)が必要か
|
|
164
|
+
|
|
165
|
+
`cnako3`は、なでしこのスクリプト名より後ろの引数も含めて、コマンドライン全体を自前の
|
|
166
|
+
オプション解析(`src/commander_ja.mts`)にかけます。そのため、
|
|
167
|
+
`node src/cnako3.mjs batch/search_command.nako3 --help` と実行すると、
|
|
168
|
+
検索CLIではなく**cnako3自身のヘルプ**が表示されて終了してしまいます
|
|
169
|
+
(`-h` `-v` `-o` など、cnako3が使う短いオプションも同様に横取りされます)。
|
|
170
|
+
|
|
171
|
+
そこで、ラッパーでは次の処理だけを行います。
|
|
172
|
+
|
|
173
|
+
1. 利用者が指定した引数(`process.argv.slice(2)`)をJSON文字列にして、
|
|
174
|
+
環境変数`NAKO3_SEARCH_ARGS`に格納する
|
|
175
|
+
2. `src/cnako3.mjs batch/search_command.nako3` を子プロセスとして起動する
|
|
176
|
+
(利用者の引数はcnako3には渡さない)
|
|
177
|
+
3. 子プロセスの終了コードをそのまま返す
|
|
178
|
+
|
|
179
|
+
これにより、検索CLIは`--help`を含む任意のオプションを自由に定義できます。
|
|
180
|
+
ラッパーは起動処理だけを担当し、検索のロジックはすべてなでしこ3側に置きます。
|
|
181
|
+
|
|
182
|
+
### なでしこ3側の処理の流れ
|
|
183
|
+
|
|
184
|
+
1. `「NAKO3_SEARCH_ARGS」の環境変数取得` で引数を受け取り、`JSONデコード`して配列にする
|
|
185
|
+
(環境変数がない場合は空配列として扱う)
|
|
186
|
+
2. 引数を解析して、検索語の配列とオプションの辞書に分ける
|
|
187
|
+
3. `母艦パス`をもとに `../doc/command_list.json` を`開く`で読み込み、`JSONデコード`する
|
|
188
|
+
4. 絞り込み(`target` / `group` / `plugin` / `type`)→ 検索語による部分一致 → 並び替え
|
|
189
|
+
5. `--json`の有無で出力を切り替えて`表示`する
|
|
190
|
+
6. 一致0件のときは `「process.exitCode=1」をJS実行` で終了コードを設定する
|
|
191
|
+
(なでしこには終了コードを指定する命令がないため、`JS実行`を利用する)
|
|
192
|
+
|
|
193
|
+
`doc/command_list.json`は`npm run build:command`で生成される成果物であり、
|
|
194
|
+
検索用に別のデータを持つことはしません(データの二重管理をしない)。
|
|
195
|
+
|
|
196
|
+
## テスト
|
|
197
|
+
|
|
198
|
+
`test/node/search_command_test.mjs` で、ラッパーを子プロセスとして実行して検証します。
|
|
199
|
+
|
|
200
|
+
- 検索語での部分一致検索ができ、終了コードが`0`であること
|
|
201
|
+
- 命令名が完全一致するものが先頭に表示されること
|
|
202
|
+
- 検索語を複数指定するとAND条件になること
|
|
203
|
+
- `--target`での絞り込みが効くこと(結果すべての`target`に指定値が含まれる)
|
|
204
|
+
- `--group`での絞り込みが効くこと(`basic`のような英語指定と日本語指定の結果が一致すること)
|
|
205
|
+
- 拡張プラグインの命令は環境によって有無が変わるため、件数そのものには依存しないテストにしています
|
|
206
|
+
- `--plugin`と`--type`での絞り込みが効くこと
|
|
207
|
+
- `--option=値`の形式でも指定できること
|
|
208
|
+
- `--limit`で表示件数を制限できること
|
|
209
|
+
- 一致0件のとき、終了コードが`1`になること
|
|
210
|
+
- `--json`の出力が`JSON.parse`でき、期待するキーだけを持つこと
|
|
211
|
+
- `--json`かつ一致0件のとき、`[]`が出力され終了コードが`1`になること
|
|
212
|
+
- `--help`で使い方が表示され、終了コードが`0`になること
|
|
213
|
+
- 引数なし・未知のオプション・値なし・不正な値のとき、終了コードが`2`になること
|
|
214
|
+
|
|
215
|
+
テストは`npm run test:node`(または`npm test`)で実行されます。
|
|
216
|
+
`src/cnako3.mjs`が必要なので、事前に`npm run build`(または`npx tsc`)を実行してください。
|
|
217
|
+
|
|
218
|
+
## 関連ドキュメント
|
|
219
|
+
|
|
220
|
+
- [README.md](../README.md)
|
|
221
|
+
- [doc/files.md](files.md)
|
|
222
|
+
- [doc/syntax-nako3.md](syntax-nako3.md)
|
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
# なでしこの文法
|
|
2
|
+
|
|
3
|
+
この文章は、主にAIエージェントに向けて書いた、なでしこ3の文法です。なでしこのプログラムを作る際、この文法を参考にして作ってください。
|
|
4
|
+
|
|
5
|
+
## なでしこの基本
|
|
6
|
+
|
|
7
|
+
なでしこのプログラムは、日本語で可読性の高いものにします。ただし、自然言語ではなく、以下の文法に沿って動作します。
|
|
8
|
+
|
|
9
|
+
### 単語の区切り
|
|
10
|
+
|
|
11
|
+
トークンは、助詞や句読点、記号やスペースによって区切られます。文章を区切る助詞は、次のようなものです。
|
|
12
|
+
|
|
13
|
+
```json
|
|
14
|
+
["について","くらい","なのか","までを","までの","による","として","とは","から","まで","だけ","より","ほど","など","いて","えて","きて","けて","して","って","にて","みて","めて","ねて","では","には","んで","ずつ","は","を","に","へ","で","と","が","の","でなければ","なければ","ならば","なら","たら","れば","こと","である","です","します","でした","にゃん"]
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### 命令文の基本的な文形について
|
|
18
|
+
|
|
19
|
+
なでしこのプログラムの構造は、以下のような形式になっています。
|
|
20
|
+
|
|
21
|
+
```md
|
|
22
|
+
引数+助詞、引数+助詞、 …関数名。
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
引数に計算式を記述することもできます。計算式は、`()`で囲むことで安全な引数として扱うことができます。
|
|
26
|
+
|
|
27
|
+
```md
|
|
28
|
+
(計算式)+助詞、(計算式)+助詞、 …関数名。
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
引数の中で、命令文を使うことができます。その際、命令文を丸カッコで囲むことで、正しい引数として扱うことができます。
|
|
32
|
+
|
|
33
|
+
```md
|
|
34
|
+
(引数+助詞、引数+助詞、関数名)+助詞、引数+助詞、 …関数名。
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### コメント
|
|
38
|
+
|
|
39
|
+
- `#`から改行までをコメントと見なします。
|
|
40
|
+
- また、`/*`から`*/`までの範囲をコメントと見なします。
|
|
41
|
+
|
|
42
|
+
### 計算と演算子
|
|
43
|
+
|
|
44
|
+
利用できる計算と演算子は次の通り:
|
|
45
|
+
|
|
46
|
+
- `+` or `+` --- 加算
|
|
47
|
+
- `-` or `-` --- 減算
|
|
48
|
+
- `*` or `×` --- 乗算
|
|
49
|
+
- `/` or `÷` --- 除算
|
|
50
|
+
- `%` or `%` --- 剰余
|
|
51
|
+
- `**` or `^` --- べき乗
|
|
52
|
+
|
|
53
|
+
比較演算子は次の通り:
|
|
54
|
+
|
|
55
|
+
- `==` or `=` --- 等しい
|
|
56
|
+
- `!=` or `≠` or `<>` --- 等しくない
|
|
57
|
+
- `>` or `>` --- より大きい
|
|
58
|
+
- `<` or `<` --- より小さい
|
|
59
|
+
- `>=` or `≧` --- 以上
|
|
60
|
+
- `<=` or `≦` --- 以下
|
|
61
|
+
|
|
62
|
+
論理演算子は次の通り:
|
|
63
|
+
|
|
64
|
+
- `&&` or `かつ` --- 論理積
|
|
65
|
+
- `||` or `または` --- 論理和
|
|
66
|
+
|
|
67
|
+
ビット演算子は次の通り:
|
|
68
|
+
|
|
69
|
+
- `<<` --- 左ビットシフト
|
|
70
|
+
- `>>` --- 右ビットシフト
|
|
71
|
+
- `>>>` --- 右ビットシフト(左ビット0埋め)
|
|
72
|
+
|
|
73
|
+
### 値表現について
|
|
74
|
+
|
|
75
|
+
- 整数は、10進数、16進数(0xXX)、8進数(0oXX)、2進数(0bXXXX)で表現できます。
|
|
76
|
+
- 真偽値は、`真` と `偽` で表現できます。それぞれ、なでしこ3では、JavaScriptの`true`と`false`に変換されて実行されます。
|
|
77
|
+
- 文字列は、`「...」`(展開あり) or `『...』`(展開なし)、または、`"..."`(展開あり) or `'...'`(展開なし)で囲むことで表現できます。
|
|
78
|
+
- 展開あり文字列の中では、`「{改行}」` や `「{タブ}」` などのエスケープシーケンスを使うことができます。また、`「{変数名}」` のように書くことで、変数の値を展開することができます。
|
|
79
|
+
- `改行`や`タブ`、`CR`、`LF`などが指定できますが、これは、変数として定義されています。
|
|
80
|
+
- JSONは、プログラム中に、そのまま、辞書型・配列型として表現できます。JSONの中では、`{"キー": 値}`または、`[値1, 値2, ...]`のように書くことができます。
|
|
81
|
+
- 範囲を、`A…B` or `A...B` or `AからBの範囲`のように書くことで、AからBまでの範囲を表現できます。
|
|
82
|
+
|
|
83
|
+
### 変数について
|
|
84
|
+
|
|
85
|
+
- 「リンゴ値段」と「リンゴ個数」という変数を定義して、プログラムの中で使えます。
|
|
86
|
+
- ただし、変数名に助詞を含めることはできません。変数名は、助詞を除いた文字列で定義してください。
|
|
87
|
+
- プログラムを分かりやすくするために助詞を使いたい時は、`《バナナの値段》`のように、変数名を括弧で囲むことで、助詞を含めた変数名として扱うことができます。
|
|
88
|
+
- 配列変数は、`変数[インデックス]`のように、角括弧で囲むことで表現できます。インデックスは、0から始まる整数で指定します。
|
|
89
|
+
- `変数@要素番号`のように記述することもできます。
|
|
90
|
+
- 配列変数の要素数は、`変数の要素数`のように記述することで取得できます。
|
|
91
|
+
- `Aの3…5を参照`のように記述して、配列の一部を参照することもできます。
|
|
92
|
+
- 辞書型配列は、`変数[キー]`のように、角括弧で囲むことで表現できます。キーは、文字列で指定します。
|
|
93
|
+
- `変数@キー`のように記述することもできます。
|
|
94
|
+
|
|
95
|
+
## 制御構文
|
|
96
|
+
|
|
97
|
+
### 代入文
|
|
98
|
+
|
|
99
|
+
以下のように代入文を記述できます。以下の4行は同じ意味です。
|
|
100
|
+
|
|
101
|
+
```nako3
|
|
102
|
+
値段は3000 # 推奨
|
|
103
|
+
値段 = 3000
|
|
104
|
+
値段=3000
|
|
105
|
+
値段に3000を代入
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
複数代入文は下記のように記述します。
|
|
109
|
+
|
|
110
|
+
```nako3
|
|
111
|
+
変数[A,B,C] = [1,2,3]
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 定数の定義
|
|
115
|
+
|
|
116
|
+
定数は次のように記述できます。
|
|
117
|
+
|
|
118
|
+
```nako3
|
|
119
|
+
定数の値段は320 # 推奨
|
|
120
|
+
値段を320に定める
|
|
121
|
+
定数[値段1, 値段2] = [320, 640]
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### ifに相当する条件分岐
|
|
125
|
+
|
|
126
|
+
次の書式で記述します。Python風にインデントして構文を書く事ができます。
|
|
127
|
+
|
|
128
|
+
```nako3
|
|
129
|
+
もし、(比較式)ならば:
|
|
130
|
+
(処理)
|
|
131
|
+
違えば:
|
|
132
|
+
(処理)
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
単文の場合は、次のように書くこともできます。
|
|
136
|
+
|
|
137
|
+
```nako3
|
|
138
|
+
もし、(比較式)ならば、(処理)
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
ただし、一行で書く`もし`文には、実行する文を1単文だけしか記述できません。複数の文を続けて書くことや、`違えば`を記述することはできません。
|
|
142
|
+
|
|
143
|
+
複数の文を実行する場合や、`違えば`が必要な複雑な条件分岐は、必ず複数行で記述してください。
|
|
144
|
+
|
|
145
|
+
```nako3
|
|
146
|
+
もし、(比較式)ならば
|
|
147
|
+
(処理1)
|
|
148
|
+
(処理2)
|
|
149
|
+
違えば
|
|
150
|
+
(別の処理)
|
|
151
|
+
ここまで
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### switchに相当する条件分岐
|
|
155
|
+
|
|
156
|
+
多分岐は、次のように書くことができます。
|
|
157
|
+
|
|
158
|
+
```nako3
|
|
159
|
+
値で条件分岐:
|
|
160
|
+
1ならば:
|
|
161
|
+
「1」と表示。
|
|
162
|
+
2ならば:
|
|
163
|
+
「2」と表示。
|
|
164
|
+
違えば:
|
|
165
|
+
「その他」と表示。
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### 単純なループ
|
|
169
|
+
|
|
170
|
+
指定回数の繰り返し
|
|
171
|
+
|
|
172
|
+
```nako3
|
|
173
|
+
N回:
|
|
174
|
+
#ここにN回繰り返したいプログラム
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
条件文を指定した繰り返し
|
|
178
|
+
|
|
179
|
+
```nako3
|
|
180
|
+
(条件)の間:
|
|
181
|
+
#ここに条件が真の間繰り返したいプログラム
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### 範囲指定したループ
|
|
185
|
+
|
|
186
|
+
指定範囲を指定した繰り返し:
|
|
187
|
+
|
|
188
|
+
```nako3
|
|
189
|
+
(変数名)で開始値から終了値まで繰り返す:
|
|
190
|
+
# ここに繰り返したいプログラム
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
範囲を指定した繰り返し
|
|
194
|
+
|
|
195
|
+
```nako3
|
|
196
|
+
(変数名)で開始値…終了値まで繰り返す:
|
|
197
|
+
# ここに繰り返したいプログラム
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
なお、変数名は省略できます。省略した場合、`それ`という変数名に回数が代入されます。
|
|
201
|
+
|
|
202
|
+
### 反復ループ(forEachに相当)
|
|
203
|
+
|
|
204
|
+
```nako3
|
|
205
|
+
(変数名)で(値)を反復:
|
|
206
|
+
# ここに繰り返したいプログラム
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
変数名は省略できます。省略した場合、`対象`という変数名に値が代入されます。
|
|
210
|
+
|
|
211
|
+
### エラー制御
|
|
212
|
+
|
|
213
|
+
```nako3
|
|
214
|
+
エラー監視:
|
|
215
|
+
# ここに監視対象のプログラム
|
|
216
|
+
エラーならば:
|
|
217
|
+
# ここにエラー時の処理
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
例外を発生させる場合は、次のように記述します。
|
|
221
|
+
|
|
222
|
+
```nako3
|
|
223
|
+
「エラー内容」のエラー発生
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
## ブロック表現について
|
|
227
|
+
|
|
228
|
+
インデント構文では、半角スペースと全角スペースが使えます。全角スペースは、半角2つ分と数えます。
|
|
229
|
+
|
|
230
|
+
```nako3
|
|
231
|
+
もし、A>Bならば:
|
|
232
|
+
「AはBより大きい」と表示。
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
ただし、インデント構文では、`:`の後に改行が必要です。改行せずに、同じ行に書く場合、ブロックの終端に`ここまで`を記述する必要があります。
|
|
236
|
+
|
|
237
|
+
```nako3
|
|
238
|
+
もし、A>Bならば
|
|
239
|
+
「AはBより大きい」と表示。
|
|
240
|
+
ここまで
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
ただし、末尾に`:`をつけるインデント構文が見やすく推奨しています。
|
|
244
|
+
|
|
245
|
+
## 関数の定義
|
|
246
|
+
|
|
247
|
+
関数の定義は以下のように記述します。
|
|
248
|
+
|
|
249
|
+
```nako3
|
|
250
|
+
関数 (引数1, 引数2, ...)関数名とは:
|
|
251
|
+
# ここに関数の処理
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
なお、引数の部分は、それぞれ`変数名+助詞`で記述します。
|
|
255
|
+
例えば、足し算をするだけの関数`加算処理`を定義する場合は、次のように記述します。
|
|
256
|
+
|
|
257
|
+
```nako3
|
|
258
|
+
関数 (AとBの)加算処理とは:
|
|
259
|
+
A+Bを戻す。
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
関数のエイリアスが`●`です。
|
|
263
|
+
|
|
264
|
+
```nako3
|
|
265
|
+
●(AとBの)加算処理とは:
|
|
266
|
+
A+Bを戻す。
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### ユーザー定義関数とローカル変数の命名
|
|
270
|
+
|
|
271
|
+
なでしこの標準命令では、原則として命令名の末尾に`処理`を付けません。標準命令とユーザー定義関数を区別しやすくするため、ユーザー定義関数には、`最大値計算処理`や`クイックソート処理`のように、内容を表す名前の末尾へ`処理`を付けることを推奨します。
|
|
272
|
+
|
|
273
|
+
また、関数内で定義するローカル変数には、`F左値`や`F中央値`のように、名前の先頭へ`F`を付けることを推奨します。引数、グローバル変数、標準命令との名前の衝突を避け、関数内だけで使う変数であることを分かりやすくするためです。
|
|
274
|
+
|
|
275
|
+
```nako3
|
|
276
|
+
●(対象配列を)クイックソート処理とは:
|
|
277
|
+
変数のF左値は0
|
|
278
|
+
変数のF右値は対象配列の要素数-1
|
|
279
|
+
変数のF中央値はINT((F左値+F右値)/2)
|
|
280
|
+
# クイックソートの処理を記述
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### 関数の呼び出し
|
|
284
|
+
|
|
285
|
+
関数の呼び出しは、次のように記述します。
|
|
286
|
+
|
|
287
|
+
```nako3
|
|
288
|
+
(引数1+助詞、引数2+助詞、...)関数名。
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
### ローカル変数
|
|
292
|
+
|
|
293
|
+
以下のように、「変数のF値=50」のように書いて、関数内でローカル変数を定義することができます。ローカル変数名には、先頭に`F`を付けることを推奨します。
|
|
294
|
+
|
|
295
|
+
```nako3
|
|
296
|
+
●ローカルテスト処理とは:
|
|
297
|
+
変数のF値=50
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### 戻り値について
|
|
301
|
+
|
|
302
|
+
関数の戻り値は、`戻す`や`戻る`という命令で返すことができます。`戻る`がない場合、最後の関数呼び出しが戻り値となります。
|
|
303
|
+
|
|
304
|
+
```nako3
|
|
305
|
+
関数 (AとBの)加算処理とは:
|
|
306
|
+
AにBを足すこと
|
|
307
|
+
|
|
308
|
+
3と5の加算処理を表示 # →8
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
または、連文を使うこともできます。
|
|
312
|
+
|
|
313
|
+
```nako3
|
|
314
|
+
関数 (AとBの)加算処理とは:
|
|
315
|
+
AにBを足して戻す
|
|
316
|
+
|
|
317
|
+
3と5の加算処理を表示 # →8
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
### 連文
|
|
321
|
+
|
|
322
|
+
連文`AしてB`を使うと、Aの結果をBの最初の引数として渡すことができます。連文は、関数の戻り値を次の関数の引数として渡す場合に便利です。
|
|
323
|
+
|
|
324
|
+
```nako3
|
|
325
|
+
3と5を足して表示 # 3と5を足すの結果が表示の最初の引数になる
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
## 取り込む
|
|
329
|
+
|
|
330
|
+
外部のなでしこのプログラムや、JavaScriptで書かれたなでしこ用プラグインを取り込んでモジュールとして利用できます。
|
|
331
|
+
|
|
332
|
+
```nako3
|
|
333
|
+
!「ファイル名」を取り込む。
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
全ての変数は「ファイル名__変数名」のルールで管理されます。ファイル「A.nako3」とファイル「B.nako3」で同名の変数「価格」を宣言した場合、それぞれ「A__価格」と「B__価格」という名前で変数にアクセスが可能です。
|
|
337
|
+
|
|
338
|
+
## なでしこで使える関数について
|
|
339
|
+
|
|
340
|
+
なでしこで使える命令を調べる際は、`doc/command_list.json`を参照してください。このJSONには、命令名、引数と助詞、説明、読み方、プラグイン、対象となる実行環境、カテゴリ、ソースコードのURLなどがまとめられています。
|
|
341
|
+
|
|
342
|
+
命令の有無や使い方を確認するときは、まず`doc/command_list.json`を命令名や読み方などで検索してください。できるだけTypeScriptのソースコードを探さず、このJSONに記載された情報を利用してください。
|
|
343
|
+
|
|
344
|
+
JSONの情報だけでは実装の詳細が分からない場合に限り、各項目の`url`に示されたソースコードや、`core/src/plugin_system.mts`、`src/plugin_node.mts`、`src/plugin_browser.mts`などの関連ファイルを確認してください。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nadesiko3",
|
|
3
|
-
"version": "3.7.
|
|
3
|
+
"version": "3.7.23",
|
|
4
4
|
"description": "Japanese Programming Language",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.mjs",
|
|
@@ -11,12 +11,14 @@
|
|
|
11
11
|
},
|
|
12
12
|
"scripts": {
|
|
13
13
|
"start": "node tools/nako3server/index.mjs",
|
|
14
|
-
"nako3server": "node tools/nako3server/index.
|
|
15
|
-
"nako3edit": "node tools/nako3edit/index.
|
|
16
|
-
"test": "npm run test:core && npm run test:node && npm run test:common",
|
|
14
|
+
"nako3server": "node src/cnako3.mjs tools/nako3server/index.nako3",
|
|
15
|
+
"nako3edit": "node src/cnako3.mjs tools/nako3edit/index.nako3",
|
|
16
|
+
"test": "npm run test:core && npm run test:node && npm run test:common && npm run test:nako3server && npm run test:nako3edit",
|
|
17
17
|
"test:core": "cross-env TZ=Asia/Tokyo node --test --test-concurrency=1 --test-timeout=15000 --test-force-exit --test-reporter=spec --import ./test/node-test-globals.mjs core/test/*.mjs",
|
|
18
18
|
"test:node": "node --test --test-concurrency=1 --test-timeout=15000 --test-force-exit --test-reporter=spec --import ./test/node-test-globals.mjs test/node/*.mjs",
|
|
19
19
|
"test:common": "cross-env TZ=Asia/Tokyo node --test --test-concurrency=1 --test-timeout=15000 --test-force-exit --test-reporter=spec --import ./test/node-test-globals.mjs test/common/*.mjs",
|
|
20
|
+
"test:nako3server": "node --test --test-concurrency=1 --test-timeout=90000 --test-force-exit --test-reporter=spec --import ./test/node-test-globals.mjs test/nako3server/*.mjs",
|
|
21
|
+
"test:nako3edit": "node --test --test-concurrency=1 --test-timeout=90000 --test-force-exit --test-reporter=spec --import ./test/node-test-globals.mjs test/nako3edit/*.mjs",
|
|
20
22
|
"test:async": "node --test --test-concurrency=1 --test-timeout=15000 --test-force-exit --test-reporter=spec --import ./test/node-test-globals.mjs --test-name-pattern aysnc_basic_test test/async/*.mjs",
|
|
21
23
|
"test:e": "node --test --test-concurrency=1 --test-timeout=15000 --test-force-exit --test-reporter=spec --import ./test/node-test-globals.mjs test/node/wnako3_editor_test.mjs",
|
|
22
24
|
"test:all": "npm run test && npm run test:async && npm run test:e",
|
|
@@ -29,12 +31,15 @@
|
|
|
29
31
|
"tsc": "tsc --watch",
|
|
30
32
|
"build:esbuild": "tsc && node bundle_esbuild.js",
|
|
31
33
|
"check:command": "node src/cnako3.mjs batch/pickup_command.nako3",
|
|
32
|
-
"
|
|
34
|
+
"search:command": "node batch/search_command.mjs",
|
|
35
|
+
"build:command": "cross-env REPORT_ERR=1 npm run check:command && node src/cnako3.mjs batch/build_command.nako3 && node batch/generate_command_list.mjs",
|
|
33
36
|
"build:browsers": "browserslist > src/browsers.txt && node src/cnako3.mjs batch/build_browsers.nako3",
|
|
34
37
|
"publish:desc": "node -e \"console.log('Please exec => npm run build && npm run test:all && npm publish && npm run publish:version')",
|
|
35
38
|
"publish:version": "node src/cnako3.mjs batch/publish_version.nako3 && node src/cnako3.mjs batch/copy_core.nako3",
|
|
36
|
-
"
|
|
37
|
-
"
|
|
39
|
+
"lint": "oxlint src/*.mts core/src/*.mts",
|
|
40
|
+
"lint:fix": "oxlint src/*.mts core/src/*.mts --fix",
|
|
41
|
+
"eslint": "npm run lint",
|
|
42
|
+
"eslint:fix": "npm run lint:fix",
|
|
38
43
|
"extlib:clean": "rm -f -r demo/extlib/*",
|
|
39
44
|
"extlib:install": "node src/cnako3.mjs batch/download-extlib.nako3",
|
|
40
45
|
"check_new_version": "node src/cnako3.mjs tools/check_new_version.nako3",
|
|
@@ -74,8 +79,12 @@
|
|
|
74
79
|
"Firefox ESR",
|
|
75
80
|
"maintained node versions",
|
|
76
81
|
"not dead",
|
|
77
|
-
"not IE 11"
|
|
82
|
+
"not IE 11",
|
|
83
|
+
"not node < 22"
|
|
78
84
|
],
|
|
85
|
+
"engines": {
|
|
86
|
+
"node": ">=22.0.0"
|
|
87
|
+
},
|
|
79
88
|
"homepage": "https://github.com/kujirahand/nadesiko3#readme",
|
|
80
89
|
"_moduleAliases": {
|
|
81
90
|
"root": ".",
|
|
@@ -84,44 +93,38 @@
|
|
|
84
93
|
"utils": "/utils"
|
|
85
94
|
},
|
|
86
95
|
"devDependencies": {
|
|
87
|
-
"@eslint/js": "^9.39.3",
|
|
88
96
|
"@types/fs-extra": "^11.0.4",
|
|
89
|
-
"@types/node": "^26.
|
|
97
|
+
"@types/node": "^26.1.2",
|
|
90
98
|
"@types/opener": "^1.4.3",
|
|
91
99
|
"@types/shell-quote": "^1.7.5",
|
|
92
100
|
"ace-builds": "^1.44.0",
|
|
93
101
|
"body-parser": "^2.3.0",
|
|
94
|
-
"browserslist": "^4.28.
|
|
102
|
+
"browserslist": "^4.28.7",
|
|
95
103
|
"buffer": "^6.0.3",
|
|
96
104
|
"chai": "^6.2.2",
|
|
97
105
|
"cross-env": "^10.1.0",
|
|
98
106
|
"esbuild": "0.28.1",
|
|
99
|
-
"eslint": "^9.39.3",
|
|
100
|
-
"eslint-plugin-import": "^2.32.0",
|
|
101
|
-
"eslint-plugin-n": "^18.1.0",
|
|
102
|
-
"eslint-plugin-promise": "^7.3.0",
|
|
103
|
-
"express": "^5.2.1",
|
|
104
107
|
"fetch-mock": "^12.6.0",
|
|
105
108
|
"hotkeys-js": "^4.0.4",
|
|
106
109
|
"module-alias": "^2.3.4",
|
|
107
110
|
"multer": "^2.2.0",
|
|
108
|
-
"npm-check-updates": "^
|
|
111
|
+
"npm-check-updates": "^23.0.0",
|
|
112
|
+
"oxlint": "^1.76.0",
|
|
109
113
|
"prop-types": "^15.8.1",
|
|
110
|
-
"react": "^19.2.
|
|
111
|
-
"react-dom": "^19.2.
|
|
114
|
+
"react": "^19.2.8",
|
|
115
|
+
"react-dom": "^19.2.8",
|
|
112
116
|
"testdouble": "^3.20.2",
|
|
113
|
-
"typescript": "^
|
|
114
|
-
"typescript-eslint": "^8.61.1",
|
|
117
|
+
"typescript": "^7.0.2",
|
|
115
118
|
"util": "^0.12.5"
|
|
116
119
|
},
|
|
117
120
|
"dependencies": {
|
|
118
121
|
"dayjs": "^1.11.21",
|
|
119
|
-
"fs-extra": "^11.
|
|
122
|
+
"fs-extra": "^11.4.0",
|
|
120
123
|
"html": "^1.0.0",
|
|
121
|
-
"iconv-lite": "^0.7.
|
|
122
|
-
"marked": "^18.0.
|
|
124
|
+
"iconv-lite": "^0.7.3",
|
|
125
|
+
"marked": "^18.0.7",
|
|
123
126
|
"opener": "^1.5.2",
|
|
124
|
-
"shell-quote": "^1.
|
|
125
|
-
"smol-toml": "1.7.
|
|
127
|
+
"shell-quote": "^1.10.0",
|
|
128
|
+
"smol-toml": "1.7.1"
|
|
126
129
|
}
|
|
127
130
|
}
|