nadesiko3 3.4.13 → 3.4.14

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.
Files changed (51) hide show
  1. package/batch/command.txt +292 -292
  2. package/core/package.json +1 -1
  3. package/core/src/nako_core_version.mjs +2 -2
  4. package/core/src/nako_core_version.mts +2 -2
  5. package/core/src/nako_from_dncl2.mjs +34 -2
  6. package/core/src/nako_from_dncl2.mts +31 -2
  7. package/core/src/nako_gen.mjs +110 -76
  8. package/core/src/nako_gen.mts +114 -75
  9. package/core/src/plugin_system.mjs +13 -3
  10. package/core/src/plugin_system.mts +11 -3
  11. package/core/test/dncl2_test.mjs +161 -152
  12. package/package.json +4 -33
  13. package/release/_hash.txt +20 -20
  14. package/release/_script-tags.txt +14 -14
  15. package/release/nako_gen_async.js +1 -1
  16. package/release/nako_gen_async.js.map +1 -1
  17. package/release/plugin_datetime.js +1 -1
  18. package/release/plugin_datetime.js.map +1 -1
  19. package/release/stats.json +1 -1
  20. package/release/version.js +1 -1
  21. package/release/version.js.map +1 -1
  22. package/release/wnako3.js +1 -1
  23. package/release/wnako3.js.map +1 -1
  24. package/release/wnako3webworker.js +1 -1
  25. package/release/wnako3webworker.js.map +1 -1
  26. package/src/nako_version.mjs +2 -2
  27. package/src/nako_version.mts +2 -2
  28. package/src/plugin_browser.mjs +1 -1
  29. package/src/plugin_browser.mts +1 -1
  30. package/src/plugin_browser_ajax.mjs +6 -6
  31. package/src/plugin_browser_ajax.mts +8 -8
  32. package/src/plugin_browser_canvas.mjs +2 -2
  33. package/src/plugin_browser_canvas.mts +2 -2
  34. package/src/plugin_browser_chart.mjs +17 -13
  35. package/src/plugin_browser_chart.mts +25 -21
  36. package/src/plugin_browser_crypto.mjs +1 -1
  37. package/src/plugin_browser_crypto.mts +2 -2
  38. package/src/plugin_browser_dom_basic.mjs +5 -5
  39. package/src/plugin_browser_dom_basic.mts +5 -5
  40. package/src/plugin_browser_dom_event.mjs +17 -17
  41. package/src/plugin_browser_dom_event.mts +17 -17
  42. package/src/plugin_browser_dom_parts.mjs +21 -21
  43. package/src/plugin_browser_dom_parts.mts +21 -21
  44. package/src/plugin_browser_geolocation.mjs +2 -2
  45. package/src/plugin_browser_geolocation.mts +2 -2
  46. package/src/plugin_browser_storage.mjs +3 -3
  47. package/src/plugin_browser_storage.mts +3 -3
  48. package/src/plugin_datetime.mjs +9 -9
  49. package/src/plugin_node.mjs +3 -3
  50. package/src/plugin_node.mts +3 -3
  51. package/test/node/plugin_node_test.mjs +181 -180
@@ -121,7 +121,14 @@ export default {
121
121
  sys.chk = (value:any, constId: number): any => {
122
122
  if (typeof value === 'undefined') {
123
123
  const cp = sys.constPools[constId]
124
- sys.logger.warn(cp.msg, { file: cp.file, line: cp.line })
124
+ const { msgNo, msgArgs, fileNo, lineNo } = cp
125
+ let msg = sys.constPoolsTemplate[msgNo]
126
+ for (const i in msgArgs) {
127
+ const arg = sys.constPoolsTemplate[msgArgs[i]]
128
+ msg = msg.split(`$${i}`).join(arg)
129
+ }
130
+ const fileStr = sys.constPoolsTemplate[fileNo]
131
+ sys.logger.warn(msg, { file: fileStr, line: lineNo })
125
132
  }
126
133
  return value
127
134
  }
@@ -2190,7 +2197,7 @@ export default {
2190
2197
  '秒後': { // @無名関数(あるいは、文字列で関数名を指定)FをN秒後に実行する。変数『対象』にタイマーIDを代入する。 // @びょうご
2191
2198
  type: 'func',
2192
2199
  josi: [['を'], ['']],
2193
- pure: false,
2200
+ pure: true,
2194
2201
  fn: function (f: any, n: any, sys: any) {
2195
2202
  // 文字列で指定された関数をオブジェクトに変換
2196
2203
  if (typeof f === 'string') { f = sys.__findFunc(f, '秒後') }
@@ -2673,7 +2680,8 @@ export default {
2673
2680
  sys.__v0['__DEBUG強制待機'] = 0
2674
2681
  // ブレイクポイント or __DEBUG強制待機 が指定されたか?
2675
2682
  if (breakpoints.indexOf(curLine) >= 0 || forceLine) {
2676
- console.log('@STOP!!!! cur=', curLine)
2683
+ if (sys.__v0['プラグイン名'] !== 'メイン') { return } // 現状メインのみデバッグする
2684
+ console.log(`@__DEBUG_BP_WAIT(${curLine})`)
2677
2685
  const timerId = setInterval(() => {
2678
2686
  if (sys.__v0['__DEBUG待機フラグ'] === 1) {
2679
2687
  sys.__v0['__DEBUG待機フラグ'] = 0
@@ -13,141 +13,150 @@ describe('dncl2 (core #41)', async () => {
13
13
 
14
14
  it('基本', async () => {
15
15
  await cmp('!DNCL2\n' +
16
- 'A=3\nAを表示', '3')
16
+ 'A=3\nAを表示', '3')
17
17
  })
18
18
  it('繰り返し文([繰り返す]なし)', async () => {
19
19
  await cmp('!DNCL2\n' +
20
- 'C=0\n' +
21
- 'Iを1から10まで1ずつ増やしながら:\n' +
22
- '  C=C+I\n' +
23
- 'Cを表示', '55')
20
+ 'C=0\n' +
21
+ 'Iを1から10まで1ずつ増やしながら:\n' +
22
+ '  C=C+I\n' +
23
+ 'Cを表示', '55')
24
24
  await cmp('!DNCL2\n' +
25
- 'C=10\n' +
26
- 'Iを1から10まで1ずつ減らしながら:\n' +
27
- '  C=C-1\n' +
28
- 'Cを表示', '0')
25
+ 'C=10\n' +
26
+ 'Iを1から10まで1ずつ減らしながら:\n' +
27
+ '  C=C-1\n' +
28
+ 'Cを表示', '0')
29
29
  })
30
30
  it('繰り返し文([繰り返す]あり)', async () => {
31
31
  await cmp('!DNCL2\n' +
32
- 'C=0\n' +
33
- 'Iを1から10まで1ずつ増やしながら繰り返す:\n' +
34
- '  C=C+I\n' +
35
- 'Cを表示', '55')
32
+ 'C=0\n' +
33
+ 'Iを1から10まで1ずつ増やしながら繰り返す:\n' +
34
+ '  C=C+I\n' +
35
+ 'Cを表示', '55')
36
36
  await cmp('!DNCL2\n' +
37
- 'C=10\n' +
38
- 'Iを1から10まで1ずつ減らしながら繰り返す:\n' +
39
- '  C=C-1\n' +
40
- 'Cを表示', '0')
37
+ 'C=10\n' +
38
+ 'Iを1から10まで1ずつ減らしながら繰り返す:\n' +
39
+ '  C=C-1\n' +
40
+ 'Cを表示', '0')
41
41
  await cmp('!DNCL2\n' +
42
- 'C=0\n' +
43
- 'm を 1 から 3 まで 1 ずつ増やしながら繰り返す:\n' +
44
- '  C=C+1\n' +
45
- 'Cを表示', '3')
42
+ 'C=0\n' +
43
+ 'm を 1 から 3 まで 1 ずつ増やしながら繰り返す:\n' +
44
+ '  C=C+1\n' +
45
+ 'Cを表示', '3')
46
46
  })
47
47
  it('もし文', async () => {
48
48
  await cmp('!DNCL2\n' +
49
- 'C=0\n' +
50
- 'もし、C != 1ならば:\n' +
51
- '  「OK」を表示。\n' +
52
- 'そうでなければ:\n' +
53
- '  「NG」を表示。\n' +
54
- '', 'OK')
49
+ 'C=0\n' +
50
+ 'もし、C != 1ならば:\n' +
51
+ '  「OK」を表示。\n' +
52
+ 'そうでなければ:\n' +
53
+ '  「NG」を表示。\n' +
54
+ '', 'OK')
55
55
  await cmp('' +
56
- '!DNCL2\n' +
57
- 'C=2\n' +
58
- 'もし、C == 1ならば:\n' +
59
- '  「NG」を表示。\n' +
60
- 'そうでなければ、もし、C==2ならば:\n' +
61
- '  「OK」を表示。\n' +
62
- 'そうでなければ、もし、C==3ならば:\n' +
63
- '  「NG」を表示。\n' +
64
- '', 'OK')
56
+ '!DNCL2\n' +
57
+ 'C=2\n' +
58
+ 'もし、C == 1ならば:\n' +
59
+ '  「NG」を表示。\n' +
60
+ 'そうでなければ、もし、C==2ならば:\n' +
61
+ '  「OK」を表示。\n' +
62
+ 'そうでなければ、もし、C==3ならば:\n' +
63
+ '  「NG」を表示。\n' +
64
+ '', 'OK')
65
+ await cmp('!DNCL2\n' +
66
+ 'C=1\n' +
67
+ 'もし、C=0ならば:\n' +
68
+ '  「C0」を表示。\n' +
69
+ 'そうでなくもし、C=1ならば:\n' +
70
+ '  「C1」を表示。\n' +
71
+ 'そうでなくもし、C=2ならば:\n' +
72
+ '  「C2」を表示。\n' +
73
+ '', 'C1')
65
74
  })
66
75
  it('もし文(ネスト)', async () => {
67
76
  await cmp('!DNCL2\n' +
68
- 'A=1;B=1\n' +
69
- 'もし、A == 1ならば:\n' +
70
- '  もし、B==1ならば:\n' +
71
- '    「11」と表示\n' +
72
- '  そうでなければ:\n' +
73
- '    「NG」を表示。\n' +
74
- 'そうでなければ:\n' +
75
- '  「NG」を表示\n' +
76
- '', '11')
77
- await cmp('!DNCL2\n' +
78
- 'A=1;B=0\n' +
79
- 'もし、A == 1ならば:\n' +
80
- '  もし、B==1ならば:\n' +
81
- '    「11」と表示\n' +
82
- '  そうでなければ:\n' +
83
- '    「OK」を表示。\n' +
84
- 'そうでなければ:\n' +
85
- '  「A!=1」を表示\n' +
86
- '', 'OK')
77
+ 'A=1;B=1\n' +
78
+ 'もし、A == 1ならば:\n' +
79
+ '  もし、B==1ならば:\n' +
80
+ '    「11」と表示\n' +
81
+ '  そうでなければ:\n' +
82
+ '    「NG」を表示。\n' +
83
+ 'そうでなければ:\n' +
84
+ '  「NG」を表示\n' +
85
+ '', '11')
86
+ await cmp('!DNCL2\n' +
87
+ 'A=1;B=0\n' +
88
+ 'もし、A == 1ならば:\n' +
89
+ '  もし、B==1ならば:\n' +
90
+ '    「11」と表示\n' +
91
+ '  そうでなければ:\n' +
92
+ '    「OK」を表示。\n' +
93
+ 'そうでなければ:\n' +
94
+ '  「A!=1」を表示\n' +
95
+ '', 'OK')
87
96
  })
88
97
  it('繰り返し文(ネスト)', async () => {
89
98
  await cmp('!DNCL2\n' +
90
- 'C=""\n' +
91
- 'Iを0から4まで1ずつ増やしながら繰り返す:\n' +
92
- '  もし、I%2 == 0ならば:\n' +
93
- '    C = C & I\n' +
94
- 'Cを表示;', '024')
99
+ 'C=""\n' +
100
+ 'Iを0から4まで1ずつ増やしながら繰り返す:\n' +
101
+ '  もし、I%2 == 0ならば:\n' +
102
+ '    C = C & I\n' +
103
+ 'Cを表示;', '024')
95
104
  //
96
105
  await cmp('!DNCL2\n' +
97
- 'C=""\n' +
98
- 'Yを0から1まで1ずつ増やしながら繰り返す:\n' +
99
- '  Xを0から1まで1ずつ増やしながら繰り返す:\n' +
100
- '    C=C&"Y{Y}X{X}"\n' +
101
- 'Cを表示;', 'Y0X0Y0X1Y1X0Y1X1')
106
+ 'C=""\n' +
107
+ 'Yを0から1まで1ずつ増やしながら繰り返す:\n' +
108
+ '  Xを0から1まで1ずつ増やしながら繰り返す:\n' +
109
+ '    C=C&"Y{Y}X{X}"\n' +
110
+ 'Cを表示;', 'Y0X0Y0X1Y1X0Y1X1')
102
111
  })
103
112
  it('記号でインデント', async () => {
104
113
  await cmp('!DNCL2\n' +
105
- 'C=0\n' +
106
- 'もし、C != 1ならば:\n' +
107
- '⎿「OK」を表示。\n' +
108
- 'そうでなければ:\n' +
109
- '⎿「NG」を表示。\n', 'OK')
110
- await cmp('!DNCL2\n' +
111
- 'C=2\n' +
112
- 'もし、C == 1ならば:\n' +
113
- '│└「NG」を表示。\n' +
114
- 'そうでなければ、もし、C==2ならば:\n' +
115
- '│└「OK」を表示。\n' +
116
- 'そうでなければ、もし、C==3ならば:\n' +
117
- '│└「NG」を表示。\n' +
118
- '', 'OK')
114
+ 'C=0\n' +
115
+ 'もし、C != 1ならば:\n' +
116
+ '⎿「OK」を表示。\n' +
117
+ 'そうでなければ:\n' +
118
+ '⎿「NG」を表示。\n', 'OK')
119
+ await cmp('!DNCL2\n' +
120
+ 'C=2\n' +
121
+ 'もし、C == 1ならば:\n' +
122
+ '│└「NG」を表示。\n' +
123
+ 'そうでなければ、もし、C==2ならば:\n' +
124
+ '│└「OK」を表示。\n' +
125
+ 'そうでなければ、もし、C==3ならば:\n' +
126
+ '│└「NG」を表示。\n' +
127
+ '', 'OK')
119
128
  })
120
129
  it('記号でインデント2', async () => {
121
130
  await cmp('!DNCL2\n' +
122
- 'C=0\n' +
123
- 'もし、C != 1ならば:\n' +
124
- '| 「OK」を表示。\n' +
125
- 'そうでなければ:\n' +
126
- '| 「NG」を表示。\n' +
127
- '', 'OK')
128
- await cmp('!DNCL2\n' +
129
- 'C=2\n' +
130
- 'もし、C == 1ならば:\n' +
131
- '⎿ 「NG」を表示。\n' +
132
- 'そうでなければ、もし、C==2ならば:\n' +
133
- '⎿ 「OK」を表示。\n' +
134
- 'そうでなければ、もし、C==3ならば:\n' +
135
- '⎿ 「NG」を表示。\n' +
136
- '', 'OK')
131
+ 'C=0\n' +
132
+ 'もし、C != 1ならば:\n' +
133
+ '| 「OK」を表示。\n' +
134
+ 'そうでなければ:\n' +
135
+ '| 「NG」を表示。\n' +
136
+ '', 'OK')
137
+ await cmp('!DNCL2\n' +
138
+ 'C=2\n' +
139
+ 'もし、C == 1ならば:\n' +
140
+ '⎿ 「NG」を表示。\n' +
141
+ 'そうでなければ、もし、C==2ならば:\n' +
142
+ '⎿ 「OK」を表示。\n' +
143
+ 'そうでなければ、もし、C==3ならば:\n' +
144
+ '⎿ 「NG」を表示。\n' +
145
+ '', 'OK')
137
146
  })
138
147
  it('配列の初期化', async () => {
139
148
  await cmp('!DNCL2\n' +
140
- '配列 Hindo のすべての要素に 10 を代入する\n' +
141
- 'Hindo[0]を表示\n', '10')
149
+ '配列 Hindo のすべての要素に 10 を代入する\n' +
150
+ 'Hindo[0]を表示\n', '10')
142
151
  await cmp('!DNCL2\n' +
143
- '配列変数 Hirabun を初期化する\n' +
144
- 'Hirabun[3]を表示\n', '0')
152
+ '配列変数 Hirabun を初期化する\n' +
153
+ 'Hirabun[3]を表示\n', '0')
145
154
  await cmp('!DNCL2\n' +
146
- 'Totuzen[3]=30\n' +
147
- 'Totuzen[3]を表示\n', '30')
155
+ 'Totuzen[3]=30\n' +
156
+ 'Totuzen[3]を表示\n', '30')
148
157
  await cmp('!DNCL2\n' +
149
- '配列 Hindo のすべての値に 55 を代入\n' +
150
- 'Hindo[0]を表示\n', '55')
158
+ '配列 Hindo のすべての値に 55 を代入\n' +
159
+ 'Hindo[0]を表示\n', '55')
151
160
  })
152
161
  it('「情報」試作問題 (検討用イメージ)', async () => {
153
162
  await cmp(
@@ -168,70 +177,70 @@ describe('dncl2 (core #41)', async () => {
168
177
  })
169
178
  it('「情報」サンプル問題-当選数を決めるプログラム2', async () => {
170
179
  await cmp('' +
171
- '!DNCL2\n' +
172
- 'Tomei = ["A党", "B党", "C党", "D党"]\n' +
173
- 'Tokuhyo = [1200, 660, 1440, 180]\n' +
174
- 'sousuu = 0\n' +
175
- 'giseki = 6\n' +
176
- 'm を 0 から 3 まで 1 ずつ増やしながら繰り返す:\n' +
177
- '⎿ sousuu = sousuu + Tokuhyo[m]\n' +
178
- 'kizyunsuu = sousuu / giseki\n' +
179
- 'm を 0 から 3 まで 1 ずつ増やしながら繰り返す:\n' +
180
- '⎿ 表示する(Tomei[m], ":", Tokuhyo[m] / kizyunsuu)\n' +
181
- '\n', 'A党:2.0689655172413794\nB党:1.1379310344827587\nC党:2.4827586206896552\nD党:0.3103448275862069')
180
+ '!DNCL2\n' +
181
+ 'Tomei = ["A党", "B党", "C党", "D党"]\n' +
182
+ 'Tokuhyo = [1200, 660, 1440, 180]\n' +
183
+ 'sousuu = 0\n' +
184
+ 'giseki = 6\n' +
185
+ 'm を 0 から 3 まで 1 ずつ増やしながら繰り返す:\n' +
186
+ '⎿ sousuu = sousuu + Tokuhyo[m]\n' +
187
+ 'kizyunsuu = sousuu / giseki\n' +
188
+ 'm を 0 から 3 まで 1 ずつ増やしながら繰り返す:\n' +
189
+ '⎿ 表示する(Tomei[m], ":", Tokuhyo[m] / kizyunsuu)\n' +
190
+ '\n', 'A党:2.0689655172413794\nB党:1.1379310344827587\nC党:2.4827586206896552\nD党:0.3103448275862069')
182
191
  })
183
192
  it('「情報」サンプル問題-当選数を決めるプログラム2改', async () => {
184
193
  await cmp('' +
185
- '!DNCL2\n' +
186
- 'Tomei = ["A党", "B党", "C党", "D党"]\n' +
187
- 'Tokuhyo = [1200, 660, 1440, 180]\n' +
188
- 'Koho = [5, 4, 2, 3]\n' +
189
- 'Tosen = [0, 0, 0, 0]\n' +
190
- 'tosenkei = 0\n' +
191
- 'giseki = 6\n' +
192
- 'm を 0 から 3 まで 1 ずつ増やしながら繰り返す:\n' +
193
- '⎿ Hikaku[m] = Tokuhyo[m]\n' +
194
- 'tosenkei < giseki の間繰り返す:\n' +
195
- '| max = 0\n' +
196
- '| i を 0 から 3 まで 1 ずつ増やしながら繰り返す:\n' +
197
- '| | もし max < Hikaku[i] and Koho[i] >= Tosen[i] + 1 ならば:\n' +
198
- '| | | max = Hikaku[i]\n' +
199
- '| ⎿ ⎿ maxi = i\n' +
200
- '| Tosen[maxi] = Tosen[maxi] + 1\n' +
201
- '| tosenkei = tosenkei + 1\n' +
202
- '⎿ Hikaku[maxi] = 切り捨て(Tokuhyo[maxi] / tosenkei)\n' +
203
- 'k を 0 から 3 まで 1 ずつ増やしながら繰り返す:\n' +
204
- '⎿ 表示する(Tomei[k], ":", Tosen[k], "名")\n' +
205
- '', 'A党:3名\nB党:1名\nC党:2名\nD党:0名')
194
+ '!DNCL2\n' +
195
+ 'Tomei = ["A党", "B党", "C党", "D党"]\n' +
196
+ 'Tokuhyo = [1200, 660, 1440, 180]\n' +
197
+ 'Koho = [5, 4, 2, 3]\n' +
198
+ 'Tosen = [0, 0, 0, 0]\n' +
199
+ 'tosenkei = 0\n' +
200
+ 'giseki = 6\n' +
201
+ 'm を 0 から 3 まで 1 ずつ増やしながら繰り返す:\n' +
202
+ '⎿ Hikaku[m] = Tokuhyo[m]\n' +
203
+ 'tosenkei < giseki の間繰り返す:\n' +
204
+ '| max = 0\n' +
205
+ '| i を 0 から 3 まで 1 ずつ増やしながら繰り返す:\n' +
206
+ '| | もし max < Hikaku[i] and Koho[i] >= Tosen[i] + 1 ならば:\n' +
207
+ '| | | max = Hikaku[i]\n' +
208
+ '| ⎿ ⎿ maxi = i\n' +
209
+ '| Tosen[maxi] = Tosen[maxi] + 1\n' +
210
+ '| tosenkei = tosenkei + 1\n' +
211
+ '⎿ Hikaku[maxi] = 切り捨て(Tokuhyo[maxi] / tosenkei)\n' +
212
+ 'k を 0 から 3 まで 1 ずつ増やしながら繰り返す:\n' +
213
+ '⎿ 表示する(Tomei[k], ":", Tosen[k], "名")\n' +
214
+ '', 'A党:3名\nB党:1名\nC党:2名\nD党:0名')
206
215
  })
207
216
  it('and/or/not', async () => {
208
217
  const TRUE = '1'
209
218
  const FALSE = '0'
210
219
  await cmp('' +
211
- '!DNCL2\n' +
212
- '(not 真)を表示' +
213
- '\n', FALSE)
220
+ '!DNCL2\n' +
221
+ '(not 真)を表示' +
222
+ '\n', FALSE)
214
223
  await cmp('' +
215
- '!DNCL2\n' +
216
- '(真 and 真)を表示' +
217
- '\n', TRUE)
224
+ '!DNCL2\n' +
225
+ '(真 and 真)を表示' +
226
+ '\n', TRUE)
218
227
  await cmp('' +
219
- '!DNCL2\n' +
220
- '(真 and 偽)を表示' +
221
- '\n', FALSE)
228
+ '!DNCL2\n' +
229
+ '(真 and 偽)を表示' +
230
+ '\n', FALSE)
222
231
  await cmp('' +
223
- '!DNCL2\n' +
224
- '(真 or 偽)を表示' +
225
- '\n', TRUE)
232
+ '!DNCL2\n' +
233
+ '(真 or 偽)を表示' +
234
+ '\n', TRUE)
226
235
  await cmp('' +
227
- '!DNCL2\n' +
228
- '(偽 or 偽)を表示' +
229
- '\n', FALSE)
236
+ '!DNCL2\n' +
237
+ '(偽 or 偽)を表示' +
238
+ '\n', FALSE)
230
239
  })
231
240
  it('演算子「**」(#1424)', async () => {
232
241
  await cmp('' +
233
- '!DNCL2\n' +
234
- '2**3を表示;' +
235
- '', '8')
242
+ '!DNCL2\n' +
243
+ '2**3を表示;' +
244
+ '', '8')
236
245
  })
237
246
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nadesiko3",
3
- "version": "3.4.13",
3
+ "version": "3.4.14",
4
4
  "description": "Japanese Programming Language",
5
5
  "type": "module",
6
6
  "main": "src/index.mjs",
@@ -36,7 +36,7 @@
36
36
  "analyze": "webpack-bundle-analyzer release/stats.json",
37
37
  "publish:desc": "node -e \"console.log('Please exec => npm run build && npm run test:all && npm publish && npm run publish:version')",
38
38
  "publish:version": "node src/cnako3.mjs batch/publish_version.nako3",
39
- "eslint": "eslint . --ext mts",
39
+ "eslint": "eslint src/*.mts core/src/*.mts",
40
40
  "eslint:fix": "eslint . --ext mts --fix",
41
41
  "extlib:clean": "rm -f -r demo/extlib/*",
42
42
  "extlib:install": "node src/cnako3.mjs batch/download-extlib.nako3",
@@ -80,34 +80,6 @@
80
80
  "not dead",
81
81
  "not IE 11"
82
82
  ],
83
- "eslintConfig": {
84
- "parser": "@typescript-eslint/parser",
85
- "extends": [
86
- "standard",
87
- "eslint:recommended",
88
- "plugin:react/recommended"
89
- ],
90
- "env": {
91
- "mocha": true,
92
- "browser": true,
93
- "es2022": true
94
- },
95
- "rules": {
96
- "no-console": "off",
97
- "curly": [
98
- "error",
99
- "all"
100
- ],
101
- "quote-props": "off",
102
- "react/prop-types": "off"
103
- },
104
- "plugins": [
105
- "react"
106
- ],
107
- "parserOptions": {
108
- "ecmaVersion": 13
109
- }
110
- },
111
83
  "homepage": "https://github.com/kujirahand/nadesiko3#readme",
112
84
  "_moduleAliases": {
113
85
  "root": ".",
@@ -122,7 +94,7 @@
122
94
  "@babel/preset-react": "^7.17.12",
123
95
  "@types/fs-extra": "^11.0.1",
124
96
  "@types/mocha": "^10.0.1",
125
- "@types/node": "^18.7.11",
97
+ "@types/node": "^18.15.0",
126
98
  "@types/opener": "^1.4.0",
127
99
  "@types/shell-quote": "^1.7.1",
128
100
  "@typescript-eslint/eslint-plugin": "^5.26.0",
@@ -166,8 +138,7 @@
166
138
  "stats-webpack-plugin": "^0.7.0",
167
139
  "stream-browserify": "^3.0.0",
168
140
  "style-loader": "^3.3.1",
169
- "stylelint": "^14.8.5",
170
- "stylelint-config-standard": "^29.0.0",
141
+ "stylelint": "^14.8",
171
142
  "terser-webpack-plugin": "^5.3.1",
172
143
  "testdouble": "^3.16.5",
173
144
  "typescript": "^4.7.2",
package/release/_hash.txt CHANGED
@@ -9,10 +9,10 @@ editor.js:
9
9
  sha256(base64): GX0x6mAI2Zgnw9HZbRKWqyMEv2/x/OzG0jD/7cAUbxY=
10
10
  sha512(base64): VTy3oPrA2GydInV0OsGHEIgb0iGBVMNEbO2PscFbpXgPPct8CueDan20UtH8L30tvJHmRe1lR35koG1xHZHLRw==
11
11
  nako_gen_async.js:
12
- md5(hex): 60de6fc0419502eac6908b11b09c19b1
13
- sha256(hex): f6466d3dc386dd4c300c9a9e4307d2dc5a731ab8f1ef8c3f7489fee28ffc422d
14
- sha256(base64): 9kZtPcOG3UwwDJqeQwfS3FpzGrjx74w/dIn+4o/8Qi0=
15
- sha512(base64): 6fu8m6QI8J6A0FllBeiG+znxLl6TWu2uuv76OKDkRnehMag4+ifhxCIo2F5LAc+El10e3wrYHC4uUPC5luHFvA==
12
+ md5(hex): b7ab2231dad07431d009f5277d298ed1
13
+ sha256(hex): d392048db1f4df5209da5a02a41428245977c82909b6ff66c7c8ecd08bf18fd5
14
+ sha256(base64): 05IEjbH031IJ2loCpBQoJFl3yCkJtv9mx8js0Ivxj9U=
15
+ sha512(base64): oqjIjLxoC4/UyFiCW8eII5sbiZIEaHzcYA55Z/Pep2TGBm0nX+pt8ZoQN9OT3AACT42o2HK89I6YIrk3XtiSwA==
16
16
  plugin_caniuse.js:
17
17
  md5(hex): b9a7d651b036f1646c76196efc4f220b
18
18
  sha256(hex): 7d50b13fa23b1e4984ae58ace75c08c6db259768649b9fe617025279b3f03a0b
@@ -24,10 +24,10 @@ plugin_csv.js:
24
24
  sha256(base64): Jj35vH/ZfiEIES+e0zdpxDuN/QHzZc0ah4bNDFBrzk8=
25
25
  sha512(base64): mQvmj25L2Nc2L7gN1rTjayHVMMPhc7TCSiBsuKS4JKOQqN+91uj9qpLAOejzR1ib5jIOBdtrhN+secNTU9BJtw==
26
26
  plugin_datetime.js:
27
- md5(hex): 9565e3fa178fab977dcd7e4f25c2ffb5
28
- sha256(hex): 9632b80e3a47c16c6a9f37ac5b507efbc968946ea0677eac13635b4ca452246f
29
- sha256(base64): ljK4DjpHwWxqnzesW1B++8lolG6gZ36sE2NbTKRSJG8=
30
- sha512(base64): x9UUoQVIUvyaxwymD6rNn7jXEXrTzHBTOBDUeFCbCm+lXVutkT2Fww+N4yOa1ZcxF0PcgDxoRIpMiqkJ1AJThA==
27
+ md5(hex): d62878688ae5b6ceb56f42431d54a39a
28
+ sha256(hex): 14a91b4dd769ae3ce9c98fc48df0ed190f1decb5a4cd9eae2ea07f9ae96d07ec
29
+ sha256(base64): FKkbTddprjzpyY/EjfDtGQ8d7LWkzZ6uLqB/multB+w=
30
+ sha512(base64): mDbTx02dkMYvu7Vo2MTRSOoe9h1GP/k+sWz5GAFJYDC4xKIIfJeUSHxC2VAtrNj4yDKTFsOWKaApE/mQj0IhzA==
31
31
  plugin_kansuji.js:
32
32
  md5(hex): 0e173edb14f7612d69ceea94cbd83cf4
33
33
  sha256(hex): b4bafb1a912b04f08b371ce4585d95f7e8f8b83f0042db8609617cb884698e6d
@@ -54,17 +54,17 @@ plugin_weykturtle3d.js:
54
54
  sha256(base64): FO/zhIcbO4hNPDHd+ZxPlHIg2r4/3exT7LNYvG5LwTs=
55
55
  sha512(base64): TH7Xjq3mkiXW4wy88JLUIASpIN7lYEMlPR62yDlFEJ6vx8oKKv13hoW0Oyx/U0OEjUPZ1vI9zGUHck9UKg+mwQ==
56
56
  version.js:
57
- md5(hex): eb2409a9eae87472437cc70500c8c7df
58
- sha256(hex): e37177fb57d4cb7e34f5d3519e363191b61a6cf091c34dfe21743665b3cb5518
59
- sha256(base64): 43F3+1fUy3409dNRnjYxkbYabPCRw03+IXQ2ZbPLVRg=
60
- sha512(base64): 3OhsVBXE5l92SBzhYuB7L9dZQQdVdY0RjsZHn5YrTK7BiDZ9HpCMnkHX8Ocub754w5WrKSBexseSbovQygD9dQ==
57
+ md5(hex): 658ba61c836d51be56a02b29e6a8a207
58
+ sha256(hex): 0abe44e8017a37fc90dd27e16a3ca84878c19a6ad73724d378163a13001b8b59
59
+ sha256(base64): Cr5E6AF6N/yQ3SfhajyoSHjBmmrXNyTTeBY6EwAbi1k=
60
+ sha512(base64): NJ6eSEJe9OYENI8y2E1DyDRMBqqC/WU1gjW9z0ZRZguA+BdF+0KWyUhXefe2QBGXTuIg9WTQiCpWu6g+r/fSyQ==
61
61
  wnako3.js:
62
- md5(hex): 7154652c0e2a0c3bc05dd1497bdaa19a
63
- sha256(hex): f1760bbe16e2750d2ce9627a54b8092799079d69960a8e2e77cad0085aa238da
64
- sha256(base64): 8XYLvhbidQ0s6WJ6VLgJJ5kHnWmWCo4ud8rQCFqiONo=
65
- sha512(base64): AiYgcoRBbaHpvqD3b1/IuE2VfTQ9p6Iz9DSHXo4AsXABGIqh1jFSF5qdkT7iQ0wBQZ9V9MK4dWabtv/oNAy7qw==
62
+ md5(hex): 4e5b49055cf9a1094ac13caa3fa31965
63
+ sha256(hex): 4d010f70048b2e634cf32b37bec4e71acae1c7d063d286a4aafa68c7c1ddc2f8
64
+ sha256(base64): TQEPcASLLmNM8ys3vsTnGsrhx9Bj0oakqvpox8Hdwvg=
65
+ sha512(base64): oSmR0eTxDu+NbMp8jYK9ZvdfEoyjX2hTufdq+S2pr0pPbhgYcmt8oL3aakbtQzBXGHPzfzpbcWP7oVlqvLjYOg==
66
66
  wnako3webworker.js:
67
- md5(hex): e9ba4856a0faf36c48ad11d6992662a5
68
- sha256(hex): 86be02585301f2d63140a89f8d8cf029c91da12f08177391425fc9e2038ba31f
69
- sha256(base64): hr4CWFMB8tYxQKifjYzwKckdoS8IF3ORQl/J4gOLox8=
70
- sha512(base64): qXiDjtWqXgEL/jeIj/3tPq488/TsRYLbvKZu95d2eRJYPmLkixFH2mrywfb10eW6584MkgaZwJk3GSUn7OFlCg==
67
+ md5(hex): 419ce96b50ae7ea4ab1646bc243a7e5b
68
+ sha256(hex): 15973366f14308a26c1cd4ae724da714c6480fd6aab99ddeb8283345b504c400
69
+ sha256(base64): FZczZvFDCKJsHNSuck2nFMZID9aquZ3euCgzRbUExAA=
70
+ sha512(base64): AT9MUIHgww23t7s5NLyu9TD+Q98av/vQbH2gydD0wQYdx6gq8wEKR9T3j7kkSH4KZvl08Ln0jfOtpNa0aj3ngA==
@@ -1,14 +1,14 @@
1
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.13&f=release/command.json.js" integrity="sha512-DK6GVjOAlbwP7cvQcBwAI3RRZHxRR8b2GYemWjuGvhcwaSUTUKJ/JaT5cae2mY57/pNIsuoHLEwWhnvYaSmM4Q==" crossorigin="anonymous"></script>
2
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.13&f=release/editor.js" integrity="sha512-VTy3oPrA2GydInV0OsGHEIgb0iGBVMNEbO2PscFbpXgPPct8CueDan20UtH8L30tvJHmRe1lR35koG1xHZHLRw==" crossorigin="anonymous"></script>
3
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.13&f=release/nako_gen_async.js" integrity="sha512-6fu8m6QI8J6A0FllBeiG+znxLl6TWu2uuv76OKDkRnehMag4+ifhxCIo2F5LAc+El10e3wrYHC4uUPC5luHFvA==" crossorigin="anonymous"></script>
4
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.13&f=release/plugin_caniuse.js" integrity="sha512-DQtRUYbRvs3H90qvSM5jMwOQqg5ZKz5MnXp/549AvjuFrGQuboFhRA5XFvHMtVHNR3co9MIepEHu1PoA4sj2XA==" crossorigin="anonymous"></script>
5
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.13&f=release/plugin_csv.js" integrity="sha512-mQvmj25L2Nc2L7gN1rTjayHVMMPhc7TCSiBsuKS4JKOQqN+91uj9qpLAOejzR1ib5jIOBdtrhN+secNTU9BJtw==" crossorigin="anonymous"></script>
6
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.13&f=release/plugin_datetime.js" integrity="sha512-x9UUoQVIUvyaxwymD6rNn7jXEXrTzHBTOBDUeFCbCm+lXVutkT2Fww+N4yOa1ZcxF0PcgDxoRIpMiqkJ1AJThA==" crossorigin="anonymous"></script>
7
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.13&f=release/plugin_kansuji.js" integrity="sha512-5/TRx8Ke69YV9s8M67sOWrJmhhHK4MMLbMJh5nKg3oV8spmOOTn6tXl/TxYk8YWkTurOTCaXtRFuR9h2yEDt7w==" crossorigin="anonymous"></script>
8
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.13&f=release/plugin_markup.js" integrity="sha512-3gTGPjzEOVBXtYveX8p6mDVfx1wVsYdJclwiWp6qPHIkou9Cyb9PGoZ9yXww4REvRdxKCoHYMF1jHrBIKFDSTg==" crossorigin="anonymous"></script>
9
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.13&f=release/plugin_turtle.js" integrity="sha512-eQGdHJUa8h8N8hu3N4U/7YpdPCeqDH3zw2nAHtnzrFpUtYmIOSclURwNVt9CjtANG6SdzATVIvzY6lBKc7Kagw==" crossorigin="anonymous"></script>
10
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.13&f=release/plugin_webworker.js" integrity="sha512-ckRx+9bm94iJ1vss+zGim86mXAogxinCFrLhHnsvMAofRmlNQqYULQVLqruTp/zLOW9l/zUEU2lS3Rtg7JB9jA==" crossorigin="anonymous"></script>
11
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.13&f=release/plugin_weykturtle3d.js" integrity="sha512-TH7Xjq3mkiXW4wy88JLUIASpIN7lYEMlPR62yDlFEJ6vx8oKKv13hoW0Oyx/U0OEjUPZ1vI9zGUHck9UKg+mwQ==" crossorigin="anonymous"></script>
12
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.13&f=release/version.js" integrity="sha512-3OhsVBXE5l92SBzhYuB7L9dZQQdVdY0RjsZHn5YrTK7BiDZ9HpCMnkHX8Ocub754w5WrKSBexseSbovQygD9dQ==" crossorigin="anonymous"></script>
13
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.13&f=release/wnako3.js" integrity="sha512-AiYgcoRBbaHpvqD3b1/IuE2VfTQ9p6Iz9DSHXo4AsXABGIqh1jFSF5qdkT7iQ0wBQZ9V9MK4dWabtv/oNAy7qw==" crossorigin="anonymous"></script>
14
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.13&f=release/wnako3webworker.js" integrity="sha512-qXiDjtWqXgEL/jeIj/3tPq488/TsRYLbvKZu95d2eRJYPmLkixFH2mrywfb10eW6584MkgaZwJk3GSUn7OFlCg==" crossorigin="anonymous"></script>
1
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.14&f=release/command.json.js" integrity="sha512-DK6GVjOAlbwP7cvQcBwAI3RRZHxRR8b2GYemWjuGvhcwaSUTUKJ/JaT5cae2mY57/pNIsuoHLEwWhnvYaSmM4Q==" crossorigin="anonymous"></script>
2
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.14&f=release/editor.js" integrity="sha512-VTy3oPrA2GydInV0OsGHEIgb0iGBVMNEbO2PscFbpXgPPct8CueDan20UtH8L30tvJHmRe1lR35koG1xHZHLRw==" crossorigin="anonymous"></script>
3
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.14&f=release/nako_gen_async.js" integrity="sha512-oqjIjLxoC4/UyFiCW8eII5sbiZIEaHzcYA55Z/Pep2TGBm0nX+pt8ZoQN9OT3AACT42o2HK89I6YIrk3XtiSwA==" crossorigin="anonymous"></script>
4
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.14&f=release/plugin_caniuse.js" integrity="sha512-DQtRUYbRvs3H90qvSM5jMwOQqg5ZKz5MnXp/549AvjuFrGQuboFhRA5XFvHMtVHNR3co9MIepEHu1PoA4sj2XA==" crossorigin="anonymous"></script>
5
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.14&f=release/plugin_csv.js" integrity="sha512-mQvmj25L2Nc2L7gN1rTjayHVMMPhc7TCSiBsuKS4JKOQqN+91uj9qpLAOejzR1ib5jIOBdtrhN+secNTU9BJtw==" crossorigin="anonymous"></script>
6
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.14&f=release/plugin_datetime.js" integrity="sha512-mDbTx02dkMYvu7Vo2MTRSOoe9h1GP/k+sWz5GAFJYDC4xKIIfJeUSHxC2VAtrNj4yDKTFsOWKaApE/mQj0IhzA==" crossorigin="anonymous"></script>
7
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.14&f=release/plugin_kansuji.js" integrity="sha512-5/TRx8Ke69YV9s8M67sOWrJmhhHK4MMLbMJh5nKg3oV8spmOOTn6tXl/TxYk8YWkTurOTCaXtRFuR9h2yEDt7w==" crossorigin="anonymous"></script>
8
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.14&f=release/plugin_markup.js" integrity="sha512-3gTGPjzEOVBXtYveX8p6mDVfx1wVsYdJclwiWp6qPHIkou9Cyb9PGoZ9yXww4REvRdxKCoHYMF1jHrBIKFDSTg==" crossorigin="anonymous"></script>
9
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.14&f=release/plugin_turtle.js" integrity="sha512-eQGdHJUa8h8N8hu3N4U/7YpdPCeqDH3zw2nAHtnzrFpUtYmIOSclURwNVt9CjtANG6SdzATVIvzY6lBKc7Kagw==" crossorigin="anonymous"></script>
10
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.14&f=release/plugin_webworker.js" integrity="sha512-ckRx+9bm94iJ1vss+zGim86mXAogxinCFrLhHnsvMAofRmlNQqYULQVLqruTp/zLOW9l/zUEU2lS3Rtg7JB9jA==" crossorigin="anonymous"></script>
11
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.14&f=release/plugin_weykturtle3d.js" integrity="sha512-TH7Xjq3mkiXW4wy88JLUIASpIN7lYEMlPR62yDlFEJ6vx8oKKv13hoW0Oyx/U0OEjUPZ1vI9zGUHck9UKg+mwQ==" crossorigin="anonymous"></script>
12
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.14&f=release/version.js" integrity="sha512-NJ6eSEJe9OYENI8y2E1DyDRMBqqC/WU1gjW9z0ZRZguA+BdF+0KWyUhXefe2QBGXTuIg9WTQiCpWu6g+r/fSyQ==" crossorigin="anonymous"></script>
13
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.14&f=release/wnako3.js" integrity="sha512-oSmR0eTxDu+NbMp8jYK9ZvdfEoyjX2hTufdq+S2pr0pPbhgYcmt8oL3aakbtQzBXGHPzfzpbcWP7oVlqvLjYOg==" crossorigin="anonymous"></script>
14
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.14&f=release/wnako3webworker.js" integrity="sha512-AT9MUIHgww23t7s5NLyu9TD+Q98av/vQbH2gydD0wQYdx6gq8wEKR9T3j7kkSH4KZvl08Ln0jfOtpNa0aj3ngA==" crossorigin="anonymous"></script>