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
|
@@ -1,36 +1,169 @@
|
|
|
1
|
+
#!/usr/bin/env cnako3
|
|
2
|
+
# 超簡易サーバ(なでしこ3だけで簡単HTTPサーバ)
|
|
3
|
+
# もともと index.mjs (Node.js) で書かれていたものを、なでしこ3で書き直したものです。
|
|
1
4
|
!「plugin_httpserver.mjs」を取り込む。
|
|
2
5
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
+
# --- 定数 ---
|
|
7
|
+
定数のルートパス=母艦パスを「../../」で相対パス展開。
|
|
8
|
+
定数のデモパス=「{ルートパス}/demo」
|
|
9
|
+
定数の既定ポート=3000
|
|
10
|
+
定数の環境変数一覧=環境変数一覧取得。
|
|
11
|
+
# デモフォルダへ割り当てるエイリアス
|
|
12
|
+
定数のエイリアス一覧=["/extlib", "/css", "/image"]
|
|
13
|
+
# MIMEタイプの一覧
|
|
14
|
+
定数のMIME一覧={
|
|
15
|
+
".html": "text/html; charset=utf-8",
|
|
16
|
+
".css": "text/css",
|
|
17
|
+
".js": "text/javascript",
|
|
18
|
+
".png": "image/png",
|
|
19
|
+
".gif": "image/gif",
|
|
20
|
+
".svg": "image/svg+xml"
|
|
21
|
+
}
|
|
6
22
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
23
|
+
# --- 小さな便利関数 ---
|
|
24
|
+
|
|
25
|
+
# 文字列Sが文字列Pで始まるかどうかを調べる
|
|
26
|
+
●(SがPで)先頭一致とは
|
|
27
|
+
((Sで1からPを文字検索)=1)を戻す。
|
|
10
28
|
ここまで。
|
|
11
29
|
|
|
12
|
-
#
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
30
|
+
# 環境変数KEYの値を返す。未設定なら既定値Dを返す。
|
|
31
|
+
●(KEYとDの)環境変数参照とは
|
|
32
|
+
もし、(環境変数一覧のKEYが辞書キー存在)ならば
|
|
33
|
+
(環境変数一覧[KEY])を戻す。
|
|
34
|
+
ここまで。
|
|
35
|
+
Dを戻す。
|
|
16
36
|
ここまで。
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
37
|
+
|
|
38
|
+
# パスPATHからMIMEタイプを求めて返す
|
|
39
|
+
●(PATHの)MIMEタイプ取得とは
|
|
40
|
+
拡張子=「.txt」
|
|
41
|
+
部品=PATHを「.」で区切る。
|
|
42
|
+
もし、((部品の要素数)>1)ならば
|
|
43
|
+
拡張子=「.{(部品[(部品の要素数)-1])を小文字変換}」
|
|
44
|
+
ここまで。
|
|
45
|
+
もし、(MIME一覧の拡張子が辞書キー存在)ならば
|
|
46
|
+
(MIME一覧[拡張子])を戻す。
|
|
47
|
+
ここまで。
|
|
48
|
+
「text/plain; charset=utf-8」を戻す。
|
|
20
49
|
ここまで。
|
|
21
50
|
|
|
22
|
-
#
|
|
23
|
-
「/release」を「{ルート}/release」に簡易HTTPサーバ静的パス指定。
|
|
24
|
-
「/demo」をDEMOパスに簡易HTTPサーバ静的パス指定。
|
|
25
|
-
「/src」を「{ルート}/src」に簡易HTTPサーバ静的パス指定。
|
|
26
|
-
「/css」を「{DEMOパス}/css」に簡易HTTPサーバ静的パス指定。
|
|
27
|
-
「/extlib」を「{DEMOパス}/extlib」に簡易HTTPサーバ静的パス指定。
|
|
28
|
-
「/static」を母艦パスに簡易HTTPサーバ静的パス指定。
|
|
51
|
+
# --- 起動前の準備 ---
|
|
29
52
|
|
|
30
|
-
#
|
|
31
|
-
|
|
32
|
-
|
|
53
|
+
# ポート番号を検証して、安全な値のみを利用する
|
|
54
|
+
●サーバポート解決とは
|
|
55
|
+
生ポート=「PORT」と「」の環境変数参照。
|
|
56
|
+
# 環境変数になければコマンドライン引数を見る(cnako3ではスクリプト名の次が引数)
|
|
57
|
+
もし、(生ポート=「」)ならば
|
|
58
|
+
もし、((コマンドラインの要素数)>3)ならば
|
|
59
|
+
生ポート=コマンドライン[3]
|
|
60
|
+
ここまで。
|
|
61
|
+
ここまで。
|
|
62
|
+
もし、(生ポート=「」)ならば
|
|
63
|
+
既定ポートを戻す。
|
|
64
|
+
ここまで。
|
|
65
|
+
ポート番号=生ポートを整数変換。
|
|
66
|
+
もし、((ポート番号を非数判定)または(ポート番号<0)または(ポート番号>65535))ならば
|
|
67
|
+
「[ERROR] 無効なポート番号です: {生ポート}」と表示。
|
|
68
|
+
「[ERROR] 環境変数 PORT またはコマンドライン引数には 0 から 65535 の整数を指定してください。」と表示。
|
|
69
|
+
終了。
|
|
70
|
+
ここまで。
|
|
71
|
+
ポート番号を戻す。
|
|
72
|
+
ここまで。
|
|
73
|
+
|
|
74
|
+
# ライブラリ(extlib)があるかチェックして、なければダウンロードする
|
|
75
|
+
●外部ライブラリ確認とは
|
|
76
|
+
テストファイル=「{デモパス}/extlib/pure-min.css」
|
|
77
|
+
もし、(テストファイルが存在)ならば、戻る。
|
|
78
|
+
「try to download extlib」と表示。
|
|
79
|
+
エラー監視
|
|
80
|
+
「npm run extlib:install」を起動待機。
|
|
81
|
+
エラーならば
|
|
82
|
+
エラーメッセージを表示。
|
|
83
|
+
ここまで。
|
|
33
84
|
ここまで。
|
|
34
85
|
|
|
86
|
+
# --- リクエストの処理 ---
|
|
87
|
+
|
|
88
|
+
# 404エラーを返す
|
|
89
|
+
●(URIとFPATHで)エラー404返信とは
|
|
90
|
+
「[ERROR] 404 {URI}」と表示。
|
|
91
|
+
「| file= {FPATH}」と表示。
|
|
92
|
+
ヘッダ={"Content-Type": "text/html; charset=utf-8"}
|
|
93
|
+
404でヘッダを簡易HTTPサーバヘッダ出力。
|
|
94
|
+
「<html><meta charset="utf-8"><body><h1>404 残念(ToT) ファイルがありません。</h1></body></html>」を簡易HTTPサーバ出力。
|
|
95
|
+
ここまで。
|
|
35
96
|
|
|
97
|
+
# URIを元にして返信すべきファイルのパスを求める
|
|
98
|
+
●(URIの)ファイルパス取得とは
|
|
99
|
+
# サニタイズ - 上のフォルダは許さない
|
|
100
|
+
安全URI=URIの「..」を「」に置換。
|
|
101
|
+
# ファイルパスを生成
|
|
102
|
+
基準パス=ルートパス
|
|
103
|
+
# エイリアス(demoフォルダ以下へ割り当てる)
|
|
104
|
+
エイリアス一覧を反復
|
|
105
|
+
もし、(安全URIが対象で先頭一致)ならば
|
|
106
|
+
基準パス=デモパス
|
|
107
|
+
ここまで。
|
|
108
|
+
ここまで。
|
|
109
|
+
FPATH=(「{基準パス}/{安全URI}」の「//」を「/」に置換)
|
|
110
|
+
# フォルダなら index.html を足す
|
|
111
|
+
もし、(FPATHがフォルダ存在)ならば
|
|
112
|
+
FPATH=(「{FPATH}/index.html」の「//」を「/」に置換)
|
|
113
|
+
ここまで。
|
|
114
|
+
FPATHを戻す。
|
|
115
|
+
ここまで。
|
|
36
116
|
|
|
117
|
+
# リクエストされたURIを処理して返信する
|
|
118
|
+
●(URIの)リクエスト処理とは
|
|
119
|
+
「[ようこそ] {URIをJSONエンコード}」と表示。
|
|
120
|
+
# root なら "demo/" へリダイレクト
|
|
121
|
+
もし、(URI=「/」)ならば
|
|
122
|
+
「/demo/」へ簡易HTTPサーバ移動。
|
|
123
|
+
戻る。
|
|
124
|
+
ここまで。
|
|
125
|
+
FPATH=URIのファイルパス取得。
|
|
126
|
+
# ファイルの存在確認
|
|
127
|
+
もし、((FPATHが存在)=偽)ならば
|
|
128
|
+
URIとFPATHでエラー404返信。
|
|
129
|
+
戻る。
|
|
130
|
+
ここまで。
|
|
131
|
+
# ファイルを読んで返す
|
|
132
|
+
読込成功=真
|
|
133
|
+
エラー監視
|
|
134
|
+
データ=FPATHをバイナリ読。
|
|
135
|
+
エラーならば
|
|
136
|
+
読込成功=偽
|
|
137
|
+
ここまで。
|
|
138
|
+
もし、(読込成功=偽)ならば
|
|
139
|
+
ヘッダ={"Content-Type": "text/plain; charset=utf-8"}
|
|
140
|
+
500でヘッダを簡易HTTPサーバヘッダ出力。
|
|
141
|
+
「Failed to read file.」を簡易HTTPサーバ出力。
|
|
142
|
+
戻る。
|
|
143
|
+
ここまで。
|
|
144
|
+
ヘッダ={"Content-Type": ""}
|
|
145
|
+
ヘッダ["Content-Type"]=FPATHのMIMEタイプ取得。
|
|
146
|
+
200でヘッダを簡易HTTPサーバヘッダ出力。
|
|
147
|
+
データを簡易HTTPサーバ出力。
|
|
148
|
+
ここまで。
|
|
149
|
+
|
|
150
|
+
# --- ここからメイン処理 ---
|
|
151
|
+
外部ライブラリ確認。
|
|
152
|
+
定数のサーバポート=サーバポート解決。
|
|
153
|
+
定数のサーバホスト=「NAKO3SERVER_HOST」と「localhost」の環境変数参照。
|
|
154
|
+
定数の自動起動=「NAKO3SERVER_OPEN」と「1」の環境変数参照。
|
|
155
|
+
|
|
156
|
+
# サーバを起動
|
|
157
|
+
サーバポートで簡易HTTPサーバ起動時には
|
|
158
|
+
サーバURL=「http://{サーバホスト}:{サーバポート}」
|
|
159
|
+
「### 超簡易Webサーバが起動しました」と表示。
|
|
160
|
+
「[URL] {サーバURL}」と表示。
|
|
161
|
+
もし、(自動起動≠「0」)ならば
|
|
162
|
+
サーバURLをブラウザ起動。
|
|
163
|
+
ここまで。
|
|
164
|
+
ここまで。
|
|
165
|
+
|
|
166
|
+
# すべてのリクエストを受け取って処理する
|
|
167
|
+
「/」で簡易HTTPサーバ受信した時には
|
|
168
|
+
(GETデータ["?URL"])のリクエスト処理。
|
|
169
|
+
ここまで。
|