nadesiko3 3.7.20 → 3.7.22

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 (162) hide show
  1. package/batch/command.txt +483 -445
  2. package/batch/jsplugin2text.nako3 +1 -1
  3. package/batch/pickup_command.nako3 +12 -0
  4. package/core/command/snako.mts +5 -1
  5. package/core/deno/snako.ts +5 -1
  6. package/core/package-lock.json +382 -21
  7. package/core/package.json +4 -4
  8. package/core/src/README.md +98 -0
  9. package/core/src/nako3.mts +178 -614
  10. package/core/src/nako_basic_plugins.mts +39 -0
  11. package/core/src/nako_core_version.mts +2 -2
  12. package/core/src/nako_csv.mts +0 -1
  13. package/core/src/nako_event.mts +49 -0
  14. package/core/src/nako_gen.mts +291 -202
  15. package/core/src/nako_indent_inline.mts +2 -2
  16. package/core/src/nako_lex_rules.mts +1 -1
  17. package/core/src/nako_parser3.mts +106 -165
  18. package/core/src/nako_parser_async.mts +97 -0
  19. package/core/src/nako_parser_base.mts +4 -55
  20. package/core/src/nako_parser_message.mts +105 -0
  21. package/core/src/nako_parser_operator.mts +93 -0
  22. package/core/src/nako_plugin_manager.mts +260 -0
  23. package/core/src/nako_require.mts +292 -0
  24. package/core/src/nako_runner.mts +191 -0
  25. package/core/src/nako_tokenizer.mts +221 -0
  26. package/core/src/plugin_csv.mts +1 -1
  27. package/core/src/plugin_system.mts +34 -3259
  28. package/core/src/plugin_system_array.mts +699 -0
  29. package/core/src/plugin_system_datetime.mts +368 -0
  30. package/core/src/plugin_system_debug.mts +403 -0
  31. package/core/src/plugin_system_dict.mts +85 -0
  32. package/core/src/plugin_system_json.mts +73 -0
  33. package/core/src/plugin_system_math.mts +383 -0
  34. package/core/src/plugin_system_regexp.mts +120 -0
  35. package/core/src/plugin_system_stdio.mts +86 -0
  36. package/core/src/plugin_system_string.mts +666 -0
  37. package/core/src/plugin_system_timer.mts +152 -0
  38. package/core/src/plugin_system_types.mts +151 -0
  39. package/core/src/plugin_system_url.mts +193 -0
  40. package/core/src/plugin_toml.mts +3 -3
  41. package/core/test/fixtures/README.md +39 -0
  42. package/core/test/fixtures/make_parser_ast_golden.mjs +31 -0
  43. package/core/test/fixtures/parser_ast_golden.json +8027 -0
  44. package/core/test/fixtures/parser_corpus.mjs +120 -0
  45. package/core/test/indent_test.mjs +6 -0
  46. package/core/test/nako_basic_plugins_test.mjs +44 -0
  47. package/core/test/nako_event_test.mjs +85 -0
  48. package/core/test/nako_gen_perf_test.mjs +178 -0
  49. package/core/test/nako_parser_async_test.mjs +112 -0
  50. package/core/test/nako_parser_test.mjs +160 -0
  51. package/core/test/nako_plugin_manager_test.mjs +185 -0
  52. package/core/test/nako_require_test.mjs +153 -0
  53. package/core/test/nako_runner_test.mjs +114 -0
  54. package/core/test/nako_tokenizer_test.mjs +115 -0
  55. package/core/test/plugin_system_debug_test.mjs +141 -0
  56. package/core/test/plugin_system_split_test.mjs +179 -0
  57. package/core/test/plugin_system_test.mjs +6 -0
  58. package/core/tsconfig.json +0 -1
  59. package/package.json +24 -34
  60. package/release/_hash.txt +40 -40
  61. package/release/_script-tags.txt +16 -16
  62. package/release/command.json +1 -1
  63. package/release/command.json.js +1 -1
  64. package/release/command_cnako3.json +1 -1
  65. package/release/command_list.json +1 -1
  66. package/release/edit_main.js +6 -6
  67. package/release/edit_main.js.map +3 -3
  68. package/release/editor.js +6 -6
  69. package/release/plugin_datetime.js +1 -1
  70. package/release/plugin_datetime.js.map +3 -3
  71. package/release/plugin_keigo.js.map +3 -3
  72. package/release/plugin_markup.js +47 -47
  73. package/release/plugin_markup.js.map +3 -3
  74. package/release/plugin_weykturtle3d.js +1 -1
  75. package/release/plugin_weykturtle3d.js.map +3 -3
  76. package/release/version.js +2 -2
  77. package/release/version_main.js +2 -2
  78. package/release/version_main.js.map +2 -2
  79. package/release/wnako3.js +187 -214
  80. package/release/wnako3.js.map +4 -4
  81. package/release/wnako3webworker.js +172 -199
  82. package/release/wnako3webworker.js.map +4 -4
  83. package/src/cnako3mod.mjs +8 -4
  84. package/src/cnako3mod.mts +8 -4
  85. package/src/nako_version.mjs +2 -2
  86. package/src/nako_version.mts +2 -2
  87. package/src/plugin_browser_ajax.mjs +4 -4
  88. package/src/plugin_browser_ajax.mts +4 -4
  89. package/src/plugin_browser_audio.mjs +10 -10
  90. package/src/plugin_browser_audio.mts +10 -10
  91. package/src/plugin_browser_camera.mjs +4 -4
  92. package/src/plugin_browser_camera.mts +4 -4
  93. package/src/plugin_browser_canvas.mjs +2 -2
  94. package/src/plugin_browser_canvas.mts +2 -2
  95. package/src/plugin_browser_crypto.mjs +3 -3
  96. package/src/plugin_browser_crypto.mts +3 -3
  97. package/src/plugin_browser_dom_event.mjs +1 -1
  98. package/src/plugin_browser_dom_event.mts +1 -1
  99. package/src/plugin_browser_geolocation.mjs +1 -1
  100. package/src/plugin_browser_geolocation.mts +1 -1
  101. package/src/plugin_browser_hotkey.mjs +1 -1
  102. package/src/plugin_browser_hotkey.mts +1 -1
  103. package/src/plugin_browser_html.mjs +1 -1
  104. package/src/plugin_browser_html.mts +1 -1
  105. package/src/plugin_browser_location.mjs +1 -1
  106. package/src/plugin_browser_location.mts +1 -1
  107. package/src/plugin_browser_speech.mjs +1 -1
  108. package/src/plugin_browser_speech.mts +1 -1
  109. package/src/plugin_browser_storage.mjs +2 -2
  110. package/src/plugin_browser_storage.mts +2 -2
  111. package/src/plugin_httpserver.mjs +186 -15
  112. package/src/plugin_httpserver.mts +178 -12
  113. package/src/plugin_keigo.mjs +2 -2
  114. package/src/plugin_keigo.mts +2 -2
  115. package/src/plugin_node.mjs +48 -49
  116. package/src/plugin_node.mts +53 -54
  117. package/src/plugin_weykturtle3d.mjs +56 -56
  118. package/src/plugin_weykturtle3d.mts +56 -56
  119. package/src/wnako3.mjs +1 -1
  120. package/src/wnako3.mts +1 -1
  121. package/src/wnako3_editor.mjs +5 -5
  122. package/src/wnako3_editor.mts +5 -5
  123. package/src/wnako3mod.mjs +5 -2
  124. package/src/wnako3mod.mts +5 -2
  125. package/test/common/wnako3mod_test.mjs +48 -0
  126. package/test/node/package_json_test.mjs +17 -0
  127. package/test/node/plugin_httpserver_test.mjs +239 -0
  128. package/tools/nako3server/index.nako3 +4 -2
  129. package/core/src/nako3.mjs +0 -1021
  130. package/core/src/nako_ast.mjs +0 -4
  131. package/core/src/nako_colors.mjs +0 -77
  132. package/core/src/nako_core_version.mjs +0 -8
  133. package/core/src/nako_csv.mjs +0 -193
  134. package/core/src/nako_errors.mjs +0 -166
  135. package/core/src/nako_from_dncl.mjs +0 -285
  136. package/core/src/nako_from_dncl2.mjs +0 -347
  137. package/core/src/nako_gen.mjs +0 -2500
  138. package/core/src/nako_global.mjs +0 -138
  139. package/core/src/nako_indent.mjs +0 -442
  140. package/core/src/nako_indent_chars.mjs +0 -29
  141. package/core/src/nako_indent_inline.mjs +0 -361
  142. package/core/src/nako_josi_list.mjs +0 -47
  143. package/core/src/nako_lex_rules.mjs +0 -319
  144. package/core/src/nako_lexer.mjs +0 -794
  145. package/core/src/nako_logger.mjs +0 -221
  146. package/core/src/nako_parser3.mjs +0 -3250
  147. package/core/src/nako_parser_base.mjs +0 -403
  148. package/core/src/nako_parser_const.mjs +0 -37
  149. package/core/src/nako_prepare.mjs +0 -329
  150. package/core/src/nako_reserved_words.mjs +0 -42
  151. package/core/src/nako_source_mapping.mjs +0 -207
  152. package/core/src/nako_test.mjs +0 -37
  153. package/core/src/nako_token.mjs +0 -1
  154. package/core/src/nako_tools.mjs +0 -53
  155. package/core/src/nako_types.mjs +0 -14
  156. package/core/src/plugin_api.mjs +0 -4
  157. package/core/src/plugin_csv.mjs +0 -97
  158. package/core/src/plugin_math.mjs +0 -352
  159. package/core/src/plugin_promise.mjs +0 -102
  160. package/core/src/plugin_system.mjs +0 -3810
  161. package/core/src/plugin_test.mjs +0 -52
  162. package/core/src/plugin_toml.mjs +0 -39
@@ -288,9 +288,9 @@ class Turtle3D extends TypedTurtle3DEventTarget implements Turtle3DEventTarget {
288
288
  this.disposal = true
289
289
  this.flagLoaded = true
290
290
  this.raiseModelChanged()
291
- }, (xhr: XMLHttpRequest) => {
291
+ }, (_xhr: XMLHttpRequest) => {
292
292
  // nothing
293
- }, (xhr: XMLHttpRequest) => {
293
+ }, (_xhr: XMLHttpRequest) => {
294
294
  this.discardModel()
295
295
  this.f_visible = false
296
296
  this.obj.visible = false
@@ -404,7 +404,7 @@ class Turtle3D extends TypedTurtle3DEventTarget implements Turtle3DEventTarget {
404
404
  const euler = new this.three.Euler()
405
405
  euler.fromArray(m.angle)
406
406
 
407
- const dir = new this.three.Quaternion()
407
+ const _dir = new this.three.Quaternion()
408
408
  this.obj.quaternion.setFromEuler(euler)
409
409
  }
410
410
  if (que instanceof CommandPromise) {
@@ -600,7 +600,7 @@ class WeykTurtle3DSystem {
600
600
  const three = this.getThree()
601
601
  const id = this.turtles.length
602
602
  const tt = new Turtle3D(three, id)
603
- tt.addEventListener('modelChanged', (e) => {
603
+ tt.addEventListener('modelChanged', (_e) => {
604
604
  const redraw = !!this.sys.__getSysVar('T3D自動描画')
605
605
  if (redraw) {
606
606
  this.doDraw(true)
@@ -766,7 +766,7 @@ class WeykTurtle3DSystem {
766
766
 
767
767
  const scene = this.getScene()
768
768
 
769
- const camera = this.getCamera()
769
+ const _camera = this.getCamera()
770
770
 
771
771
  if (scene && this._lines) {
772
772
  scene.add(this._lines)
@@ -878,7 +878,7 @@ class WeykTurtle3DSystem {
878
878
  }
879
879
 
880
880
  animationStart():void {
881
- const wait = this.getWait()
881
+ const _wait = this.getWait()
882
882
  const macrorun = !!this.sys.__getSysVar('T3D自動実行')
883
883
  if (!macrorun) {
884
884
  return
@@ -938,7 +938,7 @@ class WeykTurtle3DSystem {
938
938
  return hasNext
939
939
  }
940
940
 
941
- animationFrame(callback: () => void, element?: Element) {
941
+ animationFrame(callback: () => void, _element?: Element) {
942
942
  window.setTimeout(callback, 1000 / 60)
943
943
  }
944
944
 
@@ -1076,7 +1076,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1076
1076
  asyncFn: true,
1077
1077
  pure: true,
1078
1078
  fn: async function(plugins: string[], sys: NakoSystem):Promise<void> {
1079
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1079
+ const [_turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1080
1080
  const l = plugins.length
1081
1081
  if (l === 0) {
1082
1082
  return
@@ -1123,7 +1123,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1123
1123
  josi: [['に'], ['を']],
1124
1124
  pure: true,
1125
1125
  fn: function(callback: CallbackType<void>, plugins: string[], sys: NakoSystem):void {
1126
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1126
+ const [_turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1127
1127
  const l = plugins.length
1128
1128
  if (l === 0) {
1129
1129
  callback()
@@ -1132,7 +1132,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1132
1132
  const baseUrl = sys.__getSysVar('T3DベースURL')
1133
1133
  const callbacks = (function(callback, total) {
1134
1134
  let count = 0
1135
- return function(success: boolean) {
1135
+ return function(_success: boolean) {
1136
1136
  count += 1
1137
1137
  if (count === total) {
1138
1138
  callback()
@@ -1162,7 +1162,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1162
1162
  josi: [],
1163
1163
  pure: true,
1164
1164
  fn: function(sys: NakoSystem): number {
1165
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1165
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1166
1166
  turtle3d.initTurtle()
1167
1167
  const modelUrl = sys.__getSysVar('T3DカメモデルURL')
1168
1168
  const id = turtle3d.createTurtle(modelUrl)
@@ -1175,7 +1175,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1175
1175
  josi: [['に', 'へ', 'の']],
1176
1176
  pure: true,
1177
1177
  fn: function(id: number, sys: NakoSystem):void {
1178
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1178
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1179
1179
  turtle3d.target = id
1180
1180
  },
1181
1181
  return_none: true
@@ -1187,7 +1187,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1187
1187
  josi: [['に', 'へ']],
1188
1188
  pure: true,
1189
1189
  fn: function(url: string, sys: NakoSystem):Promise<number> {
1190
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1190
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1191
1191
  return turtle3d.queCurrentTurtle(new CommandModel(url))
1192
1192
  },
1193
1193
  return_none: false
@@ -1217,7 +1217,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1217
1217
  josi: [],
1218
1218
  pure: true,
1219
1219
  fn: function(sys: NakoSystem): Promise<number> {
1220
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1220
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1221
1221
  return turtle3d.queCurrentTurtle(new CommandHome('set'))
1222
1222
  },
1223
1223
  return_none: false
@@ -1227,7 +1227,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1227
1227
  josi: [],
1228
1228
  pure: true,
1229
1229
  fn: function(sys: NakoSystem): Promise<number> {
1230
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1230
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1231
1231
  return turtle3d.queCurrentTurtle(new CommandHome('jump'))
1232
1232
  },
1233
1233
  return_none: false
@@ -1247,7 +1247,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1247
1247
  josi: [['だけ']],
1248
1248
  pure: true,
1249
1249
  fn: function(l: number, sys: NakoSystem): Promise<number> {
1250
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1250
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1251
1251
  return turtle3d.queCurrentTurtle(new CommandMoveDirection('f', l))
1252
1252
  },
1253
1253
  return_none: false
@@ -1257,7 +1257,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1257
1257
  josi: [['だけ']],
1258
1258
  pure: true,
1259
1259
  fn: function(l: number, sys: NakoSystem): Promise<number> {
1260
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1260
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1261
1261
  return turtle3d.queCurrentTurtle(new CommandMoveDirection('b', l))
1262
1262
  },
1263
1263
  return_none: false
@@ -1267,7 +1267,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1267
1267
  josi: [['だけ']],
1268
1268
  pure: true,
1269
1269
  fn: function(l: number, sys: NakoSystem): Promise<number> {
1270
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1270
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1271
1271
  return turtle3d.queCurrentTurtle(new CommandMoveDirection('u', l))
1272
1272
  },
1273
1273
  return_none: false
@@ -1277,7 +1277,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1277
1277
  josi: [['だけ']],
1278
1278
  pure: true,
1279
1279
  fn: function(l: number, sys: NakoSystem): Promise<number> {
1280
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1280
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1281
1281
  return turtle3d.queCurrentTurtle(new CommandMoveDirection('d', l))
1282
1282
  },
1283
1283
  return_none: false
@@ -1287,7 +1287,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1287
1287
  josi: [['だけ']],
1288
1288
  pure: true,
1289
1289
  fn: function(l: number, sys: NakoSystem): Promise<number> {
1290
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1290
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1291
1291
  return turtle3d.queCurrentTurtle(new CommandMoveDirection('l', l))
1292
1292
  },
1293
1293
  return_none: false
@@ -1297,7 +1297,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1297
1297
  josi: [['だけ']],
1298
1298
  pure: true,
1299
1299
  fn: function(l: number, sys: NakoSystem): Promise<number> {
1300
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1300
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1301
1301
  return turtle3d.queCurrentTurtle(new CommandMoveDirection('r', l))
1302
1302
  },
1303
1303
  return_none: false
@@ -1307,7 +1307,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1307
1307
  josi: [['へ', 'に'], ['だけ']],
1308
1308
  pure: true,
1309
1309
  fn: function(dir:string, l: number, sys: NakoSystem): Promise<number> {
1310
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1310
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1311
1311
  let cmd:MoveDirection
1312
1312
  if (dir === '前' || dir === 'FORWARD' || dir === 'まえ') {
1313
1313
  cmd = 'f'
@@ -1333,7 +1333,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1333
1333
  josi: [['に', 'へ', 'の']],
1334
1334
  pure: true,
1335
1335
  fn: function(angle: THREENS.EulerArray, sys: NakoSystem): Promise<number> {
1336
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1336
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1337
1337
  return turtle3d.queCurrentTurtle(new CommandAngle(angle))
1338
1338
  },
1339
1339
  return_none: false
@@ -1343,7 +1343,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1343
1343
  josi: [['だけ']],
1344
1344
  pure: true,
1345
1345
  fn: function(a: number, sys: NakoSystem): Promise<number> {
1346
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1346
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1347
1347
  return turtle3d.queCurrentTurtle(new CommandRotate('r', a))
1348
1348
  },
1349
1349
  return_none: false
@@ -1353,7 +1353,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1353
1353
  josi: [['だけ']],
1354
1354
  pure: true,
1355
1355
  fn: function(a: number, sys: NakoSystem): Promise<number> {
1356
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1356
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1357
1357
  return turtle3d.queCurrentTurtle(new CommandRotate('l', a))
1358
1358
  },
1359
1359
  return_none: false
@@ -1363,7 +1363,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1363
1363
  josi: [['だけ']],
1364
1364
  pure: true,
1365
1365
  fn: function(a: number, sys: NakoSystem): Promise<number> {
1366
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1366
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1367
1367
  return turtle3d.queCurrentTurtle(new CommandRotate('u', a))
1368
1368
  },
1369
1369
  return_none: false
@@ -1373,7 +1373,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1373
1373
  josi: [['だけ']],
1374
1374
  pure: true,
1375
1375
  fn: function(a: number, sys: NakoSystem): Promise<number> {
1376
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1376
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1377
1377
  return turtle3d.queCurrentTurtle(new CommandRotate('d', a))
1378
1378
  },
1379
1379
  return_none: false
@@ -1383,7 +1383,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1383
1383
  josi: [['へ', 'に'], ['だけ']],
1384
1384
  pure: true,
1385
1385
  fn: function(dir: string, a: number, sys: NakoSystem): Promise<number> {
1386
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1386
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1387
1387
  let cmd:RotateDirection
1388
1388
  if (dir === '上' || dir === 'UP' || dir === 'うえ') {
1389
1389
  cmd = 'u'
@@ -1405,7 +1405,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1405
1405
  josi: [['だけ']],
1406
1406
  pure: true,
1407
1407
  fn: function(a: number, sys: NakoSystem): Promise<number> {
1408
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1408
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1409
1409
  return turtle3d.queCurrentTurtle(new CommandRoll('r', a))
1410
1410
  },
1411
1411
  return_none: false
@@ -1415,7 +1415,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1415
1415
  josi: [['だけ']],
1416
1416
  pure: true,
1417
1417
  fn: function(a: number, sys: NakoSystem): Promise<number> {
1418
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1418
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1419
1419
  return turtle3d.queCurrentTurtle(new CommandRoll('l', a))
1420
1420
  },
1421
1421
  return_none: false
@@ -1425,7 +1425,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1425
1425
  josi: [['に', 'へ'], ['だけ']],
1426
1426
  pure: true,
1427
1427
  fn: function(dir: string, a: number, sys: NakoSystem): Promise<number> {
1428
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1428
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1429
1429
  let cmd:RollDirection
1430
1430
  if (dir === '右' || dir === 'RIGHT' || dir === 'みぎ') {
1431
1431
  cmd = 'r'
@@ -1454,7 +1454,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1454
1454
  josi: [['に', 'へ']],
1455
1455
  pure: true,
1456
1456
  fn: function(w: number, sys: NakoSystem): Promise<number> {
1457
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1457
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1458
1458
  return turtle3d.queCurrentTurtle(new CommandPenWidth(w))
1459
1459
  },
1460
1460
  return_none: false
@@ -1464,7 +1464,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1464
1464
  josi: [['に', 'へ']],
1465
1465
  pure: true,
1466
1466
  fn: function(w: boolean|number, sys: NakoSystem): Promise<number> {
1467
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1467
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1468
1468
  return turtle3d.queCurrentTurtle(new CommandPenEnable(!!w))
1469
1469
  },
1470
1470
  return_none: false
@@ -1474,7 +1474,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1474
1474
  josi: [],
1475
1475
  pure: true,
1476
1476
  fn: function(sys: NakoSystem):void {
1477
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1477
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1478
1478
  turtle3d.clearAll()
1479
1479
  },
1480
1480
  return_none: true
@@ -1484,7 +1484,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1484
1484
  josi: [],
1485
1485
  pure: true,
1486
1486
  fn: function(sys: NakoSystem): Promise<number> {
1487
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1487
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1488
1488
  return turtle3d.queCurrentTurtle(new CommandVisible(false))
1489
1489
  },
1490
1490
  return_none: false
@@ -1494,7 +1494,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1494
1494
  josi: [],
1495
1495
  pure: true,
1496
1496
  fn: function(sys: NakoSystem): Promise<number> {
1497
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1497
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1498
1498
  return turtle3d.queCurrentTurtle(new CommandVisible(true))
1499
1499
  },
1500
1500
  return_none: false
@@ -1504,7 +1504,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1504
1504
  josi: [['に', 'へ']],
1505
1505
  pure: true,
1506
1506
  fn: function(n: number, sys: NakoSystem):void {
1507
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1507
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1508
1508
  if (n < 0 || n >= turtle3d.turtles.length) {
1509
1509
  throw Error('指定された番号のカメはいません。')
1510
1510
  }
@@ -1521,7 +1521,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1521
1521
  josi: [['に', 'へ']],
1522
1522
  pure: true,
1523
1523
  fn: function(to: string|Element|null, sys: NakoSystem):THREENS.WebGLRenderer {
1524
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1524
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1525
1525
 
1526
1526
  if (typeof to === 'string') { to = document.querySelector(to) || document.getElementById(to) }
1527
1527
  if (!to) { throw new Error('T3D描画準備に指定した描画先に誤りがあります') }
@@ -1537,7 +1537,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1537
1537
  josi: [],
1538
1538
  pure: true,
1539
1539
  fn: function(sys: NakoSystem):void {
1540
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1540
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1541
1541
  turtle3d.doDraw(true)
1542
1542
  },
1543
1543
  return_none: true
@@ -1547,7 +1547,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1547
1547
  josi: [],
1548
1548
  pure: true,
1549
1549
  fn: function(sys: NakoSystem):void {
1550
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1550
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1551
1551
  turtle3d.doDraw(false)
1552
1552
  },
1553
1553
  return_none: true
@@ -1557,7 +1557,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1557
1557
  josi: [],
1558
1558
  pure: true,
1559
1559
  fn: function(sys: NakoSystem):void {
1560
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1560
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1561
1561
  turtle3d.animationTick()
1562
1562
  },
1563
1563
  return_none: true
@@ -1567,7 +1567,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1567
1567
  josi: [['に', 'へ']],
1568
1568
  pure: true,
1569
1569
  fn: function(c: number, sys: NakoSystem):void {
1570
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1570
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1571
1571
  const renderer = turtle3d.getRenderer()
1572
1572
  renderer.setClearColor(c)
1573
1573
  turtle3d.animationStart()
@@ -1579,7 +1579,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1579
1579
  josi: [['に', 'へ']],
1580
1580
  pure: true,
1581
1581
  fn: function(a: number, sys: NakoSystem):void {
1582
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1582
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1583
1583
  const renderer = turtle3d.getRenderer()
1584
1584
  renderer.setClearAlpha(a)
1585
1585
  turtle3d.animationStart()
@@ -1591,7 +1591,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1591
1591
  josi: [],
1592
1592
  pure: true,
1593
1593
  fn: function(sys: NakoSystem): null|string {
1594
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1594
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1595
1595
  if (!turtle3d._lines) { return null }
1596
1596
  return JSON.stringify(turtle3d._lines.toJSON())
1597
1597
  },
@@ -1602,7 +1602,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1602
1602
  josi: [],
1603
1603
  pure: true,
1604
1604
  fn: function(sys: NakoSystem):void {
1605
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1605
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1606
1606
  turtle3d.clearRenderer()
1607
1607
  },
1608
1608
  return_none: true
@@ -1612,7 +1612,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1612
1612
  josi: [],
1613
1613
  pure: true,
1614
1614
  fn: function(sys: NakoSystem): THREENS.WebGLRenderer {
1615
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1615
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1616
1616
  return turtle3d.getRenderer()
1617
1617
  },
1618
1618
  return_none: false
@@ -1622,7 +1622,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1622
1622
  josi: [],
1623
1623
  pure: true,
1624
1624
  fn: function(sys: NakoSystem): THREENS.Scene {
1625
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1625
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1626
1626
  return turtle3d.getScene()
1627
1627
  },
1628
1628
  return_none: false
@@ -1632,7 +1632,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1632
1632
  josi: [],
1633
1633
  pure: true,
1634
1634
  fn: function(sys: NakoSystem): THREENS.Camera {
1635
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1635
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1636
1636
  return turtle3d.getCamera()
1637
1637
  },
1638
1638
  return_none: false
@@ -1642,7 +1642,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1642
1642
  josi: [],
1643
1643
  pure: true,
1644
1644
  fn: function(sys: NakoSystem): null|THREENS.Group {
1645
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1645
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1646
1646
  return turtle3d._lines
1647
1647
  },
1648
1648
  return_none: false
@@ -1665,7 +1665,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1665
1665
  josi: [['を']],
1666
1666
  asyncFn: true,
1667
1667
  pure: true,
1668
- fn: function(p: Promise<any>, sys: NakoSystem): Promise<any> {
1668
+ fn: function(p: Promise<any>, _sys: NakoSystem): Promise<any> {
1669
1669
  return p
1670
1670
  },
1671
1671
  return_none: false
@@ -1689,7 +1689,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1689
1689
  josi: [],
1690
1690
  pure: true,
1691
1691
  fn: function(sys: NakoSystem):void {
1692
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1692
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1693
1693
  if (turtle3d._controls) {
1694
1694
  turtle3d._controls.enabled = true
1695
1695
  }
@@ -1701,7 +1701,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1701
1701
  josi: [],
1702
1702
  pure: true,
1703
1703
  fn: function(sys: NakoSystem):void {
1704
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1704
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1705
1705
  if (turtle3d._controls) {
1706
1706
  turtle3d._controls.enabled = false
1707
1707
  }
@@ -1713,7 +1713,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1713
1713
  josi: [],
1714
1714
  pure: true,
1715
1715
  fn: function(sys: NakoSystem):void {
1716
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1716
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1717
1717
  turtle3d.setCameraHelper(true)
1718
1718
  },
1719
1719
  return_none: true
@@ -1723,7 +1723,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1723
1723
  josi: [],
1724
1724
  pure: true,
1725
1725
  fn: function(sys: NakoSystem):void {
1726
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1726
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1727
1727
  turtle3d.setCameraHelper(false)
1728
1728
  },
1729
1729
  return_none: true
@@ -1733,7 +1733,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1733
1733
  josi: [],
1734
1734
  pure: true,
1735
1735
  fn: function(sys: NakoSystem):void {
1736
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1736
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1737
1737
  turtle3d.setAxisHelper(true)
1738
1738
  },
1739
1739
  return_none: true
@@ -1743,7 +1743,7 @@ const PluginWeykTurtle3D: NakoPluginObject = {
1743
1743
  josi: [],
1744
1744
  pure: true,
1745
1745
  fn: function(sys: NakoSystem):void {
1746
- const [turtle3d, three] = WeykTurtle3DSystem.getEnv(sys)
1746
+ const [turtle3d, _three] = WeykTurtle3DSystem.getEnv(sys)
1747
1747
  turtle3d.setAxisHelper(false)
1748
1748
  },
1749
1749
  return_none: true
package/src/wnako3.mjs CHANGED
@@ -3,7 +3,7 @@ import { WebNakoCompiler } from './wnako3mod.mjs';
3
3
  // ブラウザから取り込まれる時 navigator.nako3 になでしこを登録
4
4
  if ((typeof navigator) === 'object' && !navigator.exportWNako3) {
5
5
  const wnako3 = navigator.nako3 = new WebNakoCompiler();
6
- window.addEventListener('DOMContentLoaded', (e) => {
6
+ window.addEventListener('DOMContentLoaded', (_e) => {
7
7
  const isAutoRun = wnako3.checkScriptTagParam();
8
8
  if (isAutoRun) {
9
9
  wnako3.runNakoScript();
package/src/wnako3.mts CHANGED
@@ -4,7 +4,7 @@ import { WebNakoCompiler } from './wnako3mod.mjs'
4
4
  // ブラウザから取り込まれる時 navigator.nako3 になでしこを登録
5
5
  if ((typeof navigator) === 'object' && !(navigator as any).exportWNako3) {
6
6
  const wnako3 = (navigator as any).nako3 = new WebNakoCompiler()
7
- window.addEventListener('DOMContentLoaded', (e) => {
7
+ window.addEventListener('DOMContentLoaded', (_e) => {
8
8
  const isAutoRun = wnako3.checkScriptTagParam()
9
9
 
10
10
  if (isAutoRun) { wnako3.runNakoScript() }
@@ -603,17 +603,17 @@ export class BackgroundTokenizer {
603
603
  }
604
604
  // ace側から呼ばれるが無視するメソッド
605
605
  // @ts-ignore
606
- start(startRow) { }
606
+ start(_startRow) { }
607
607
  // @ts-ignore
608
- fireUpdateEvent(firstRow, lastRow) { }
608
+ fireUpdateEvent(_firstRow, _lastRow) { }
609
609
  // @ts-ignore
610
- setDocument(doc) { }
610
+ setDocument(_doc) { }
611
611
  scheduleStart() { }
612
612
  // @ts-ignore
613
- setTokenizer(tokenizer) { }
613
+ setTokenizer(_tokenizer) { }
614
614
  stop() { }
615
615
  // @ts-ignore
616
- getState(row) { return 'start'; }
616
+ getState(_row) { return 'start'; }
617
617
  }
618
618
  /**
619
619
  * シンタックスハイライト以外のエディタの挙動の定義。
@@ -692,17 +692,17 @@ export class BackgroundTokenizer {
692
692
 
693
693
  // ace側から呼ばれるが無視するメソッド
694
694
  // @ts-ignore
695
- start(startRow) { /* pass */ }
695
+ start(_startRow) { /* pass */ }
696
696
  // @ts-ignore
697
- fireUpdateEvent(firstRow, lastRow) { /* pass */ }
697
+ fireUpdateEvent(_firstRow, _lastRow) { /* pass */ }
698
698
  // @ts-ignore
699
- setDocument(doc) { /* pass */ }
699
+ setDocument(_doc) { /* pass */ }
700
700
  scheduleStart() { /* pass */ }
701
701
  // @ts-ignore
702
- setTokenizer(tokenizer) { /* pass */ }
702
+ setTokenizer(_tokenizer) { /* pass */ }
703
703
  stop() { /* pass */ }
704
704
  // @ts-ignore
705
- getState(row) { return 'start' }
705
+ getState(_row) { return 'start' }
706
706
  }
707
707
 
708
708
  /**
package/src/wnako3mod.mjs CHANGED
@@ -149,7 +149,7 @@ export class WebNakoCompiler extends NakoCompiler {
149
149
  if (this.localFiles && this.localFiles[filePath]) { // ローカルファイルを使う場合
150
150
  return {
151
151
  task: (() => {
152
- return (new Promise((resolve, reject) => {
152
+ return (new Promise((resolve, _reject) => {
153
153
  const s = this.localFiles[filePath];
154
154
  resolve(s);
155
155
  }));
@@ -179,7 +179,7 @@ export class WebNakoCompiler extends NakoCompiler {
179
179
  try {
180
180
  pathname = new URL(name).pathname;
181
181
  }
182
- catch (e) {
182
+ catch {
183
183
  // 単純にパスに変換できなければ、location.hrefを参考にパスを組み立てる
184
184
  try {
185
185
  let baseDir = dirname(fromFile);
@@ -236,6 +236,9 @@ function dirname(s) {
236
236
  }
237
237
  function resolveURL(base, s) {
238
238
  const baseA = base.split('/');
239
+ if (baseA.length > 0 && baseA[baseA.length - 1] === '') {
240
+ baseA.pop();
241
+ }
239
242
  const sA = s.split('/');
240
243
  for (const p of sA) {
241
244
  if (p === '') {
package/src/wnako3mod.mts CHANGED
@@ -166,7 +166,7 @@ export class WebNakoCompiler extends NakoCompiler {
166
166
  if (this.localFiles && this.localFiles[filePath]) { // ローカルファイルを使う場合
167
167
  return {
168
168
  task: (() => {
169
- return (new Promise((resolve, reject) => {
169
+ return (new Promise((resolve, _reject) => {
170
170
  const s: string = this.localFiles[filePath]
171
171
  resolve(s)
172
172
  }))
@@ -194,7 +194,7 @@ export class WebNakoCompiler extends NakoCompiler {
194
194
  } else {
195
195
  try {
196
196
  pathname = new URL(name).pathname
197
- } catch (e) {
197
+ } catch {
198
198
  // 単純にパスに変換できなければ、location.hrefを参考にパスを組み立てる
199
199
  try {
200
200
  let baseDir = dirname(fromFile)
@@ -240,6 +240,9 @@ function dirname(s: string) {
240
240
 
241
241
  function resolveURL(base: string, s: string) {
242
242
  const baseA = base.split('/')
243
+ if (baseA.length > 0 && baseA[baseA.length - 1] === '') {
244
+ baseA.pop()
245
+ }
243
246
  const sA = s.split('/')
244
247
  for (const p of sA) {
245
248
  if (p === '') { continue }
@@ -0,0 +1,48 @@
1
+ import assert from 'assert'
2
+ import { WebNakoCompiler } from '../../src/wnako3mod.mjs'
3
+
4
+ describe('wnako3mod_test', () => {
5
+ let originalWindow
6
+
7
+ before(() => {
8
+ // window のモック
9
+ originalWindow = globalThis.window
10
+ globalThis.window = {
11
+ location: {
12
+ href: 'http://localhost:8888/index.html'
13
+ }
14
+ }
15
+ })
16
+
17
+ after(() => {
18
+ globalThis.window = originalWindow
19
+ })
20
+
21
+ it('resolvePath で baseDir が / のときの // スタートの不具合が修正されていること', () => {
22
+ const compiler = new WebNakoCompiler()
23
+ const token = { file: 'main', line: 1 }
24
+
25
+ // http://localhost:8888/index.html から hoge.nako3 を取り込む想定
26
+ const result = compiler.resolvePath('hoge.nako3', token, '')
27
+ // 結果が /hoge.nako3 になるべき(//hoge.nako3 ではなく)
28
+ assert.strictEqual(result.filePath, '/hoge.nako3')
29
+ })
30
+
31
+ it('resolvePath で baseDir が /dir/ のとき', () => {
32
+ const compiler = new WebNakoCompiler()
33
+ const token = { file: 'main', line: 1 }
34
+
35
+ globalThis.window.location.href = 'http://localhost:8888/dir/index.html'
36
+ const result = compiler.resolvePath('hoge.nako3', token, '')
37
+ assert.strictEqual(result.filePath, '/dir/hoge.nako3')
38
+ })
39
+
40
+ it('resolvePath で baseDir が /dir/subdir/ のとき', () => {
41
+ const compiler = new WebNakoCompiler()
42
+ const token = { file: 'main', line: 1 }
43
+
44
+ globalThis.window.location.href = 'http://localhost:8888/dir/subdir/index.html'
45
+ const result = compiler.resolvePath('hoge.nako3', token, '')
46
+ assert.strictEqual(result.filePath, '/dir/subdir/hoge.nako3')
47
+ })
48
+ })
@@ -0,0 +1,17 @@
1
+ import fs from 'node:fs'
2
+ import assert from 'node:assert'
3
+ import { test } from 'node:test'
4
+
5
+ test('package.json に node-fetch の依存がない', () => {
6
+ const pkgUrl = new URL('../../package.json', import.meta.url)
7
+ const pkg = JSON.parse(fs.readFileSync(pkgUrl, 'utf-8'))
8
+ const dependencySections = [
9
+ 'dependencies',
10
+ 'devDependencies',
11
+ 'optionalDependencies',
12
+ 'peerDependencies'
13
+ ]
14
+ for (const section of dependencySections) {
15
+ assert.equal(pkg[section]?.['node-fetch'], undefined, `${section} に node-fetch が含まれています`)
16
+ }
17
+ })