nadesiko3 3.3.67 → 3.3.68

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.
@@ -27,13 +27,9 @@ jobs:
27
27
 
28
28
  steps:
29
29
  - name: Checkout
30
- uses: actions/checkout@v2
31
- with:
32
- fetch-depth: 0
33
- token: ${{ secrets.SUBMODULE_TOKEN }}
34
- submodules: recursive
30
+ uses: actions/checkout@v3
35
31
  - name: Use Node.js ${{ matrix.node-version }}
36
- uses: actions/setup-node@v1
32
+ uses: actions/setup-node@v3
37
33
  with:
38
34
  node-version: ${{ matrix.node-version }}
39
35
  # 各種ライブラリをインストール
@@ -5,7 +5,7 @@
5
5
  # ●説明
6
6
  # package.json の内容を読んで ./src/nako_core_version.mts を生成
7
7
  # -----------------------------------------------------
8
- 母艦パス取得してパス抽出して基本パスに代入。
8
+ 母艦パスからパス抽出して、基本パスに代入。
9
9
  「{基本パス}/package.json」を読んでJSONデコードして、Pに代入。
10
10
  VER=P@"version"
11
11
  定数[MAJOR,MINOR,PATCH]=(VERを「.」で区切る)
@@ -0,0 +1,102 @@
1
+ /**
2
+ * file: plugin_snako.js
3
+ * 簡単なファイル読み書きのプラグイン
4
+ */
5
+ import fs from 'fs';
6
+ import { execSync } from 'child_process';
7
+ import path from 'path';
8
+ export default {
9
+ '初期化': {
10
+ type: 'func',
11
+ josi: [],
12
+ pure: true,
13
+ fn: function (sys) {
14
+ sys.__getBokanPath = () => {
15
+ let nakofile;
16
+ const cmd = path.basename(process.argv[1]);
17
+ if (cmd.indexOf('snako') < 0) {
18
+ nakofile = process.argv[1];
19
+ }
20
+ else {
21
+ nakofile = process.argv[2];
22
+ }
23
+ return path.dirname(path.resolve(nakofile));
24
+ };
25
+ sys.__v0['コマンドライン'] = process.argv;
26
+ sys.__v0['ナデシコランタイムパス'] = process.argv[0];
27
+ sys.__v0['ナデシコランタイム'] = path.basename(process.argv[0]);
28
+ sys.__v0['母艦パス'] = sys.__getBokanPath();
29
+ }
30
+ },
31
+ // @SNAKO
32
+ 'コマンドライン': { type: 'const', value: '' },
33
+ 'ナデシコランタイムパス': { type: 'const', value: '' },
34
+ 'ナデシコランタイム': { type: 'const', value: '' },
35
+ '母艦パス': { type: 'const', value: '' },
36
+ '読': {
37
+ type: 'func',
38
+ josi: [['を', 'から']],
39
+ pure: true,
40
+ fn: function (f) {
41
+ return '' + fs.readFileSync(f);
42
+ }
43
+ },
44
+ '開': {
45
+ type: 'func',
46
+ josi: [['を', 'から']],
47
+ pure: true,
48
+ fn: function (f) {
49
+ return '' + fs.readFileSync(f);
50
+ }
51
+ },
52
+ '保存': {
53
+ type: 'func',
54
+ josi: [['を'], ['に', 'へ']],
55
+ pure: true,
56
+ fn: function (s, f) {
57
+ fs.writeFileSync(f, s, 'utf-8');
58
+ },
59
+ return_none: true
60
+ },
61
+ '起動待機': {
62
+ type: 'func',
63
+ josi: [['を']],
64
+ pure: true,
65
+ fn: function (s) {
66
+ const r = execSync(s);
67
+ return r.toString();
68
+ }
69
+ },
70
+ 'ファイル名抽出': {
71
+ type: 'func',
72
+ josi: [['から', 'の']],
73
+ pure: true,
74
+ fn: function (s) {
75
+ return path.basename(s);
76
+ }
77
+ },
78
+ 'パス抽出': {
79
+ type: 'func',
80
+ josi: [['から', 'の']],
81
+ pure: true,
82
+ fn: function (s) {
83
+ return path.dirname(s);
84
+ }
85
+ },
86
+ '絶対パス変換': {
87
+ type: 'func',
88
+ josi: [['を', 'の']],
89
+ pure: true,
90
+ fn: function (a) {
91
+ return path.resolve(a);
92
+ }
93
+ },
94
+ '相対パス展開': {
95
+ type: 'func',
96
+ josi: [['を'], ['で']],
97
+ pure: true,
98
+ fn: function (a, b) {
99
+ return path.resolve(path.join(a, b));
100
+ }
101
+ }
102
+ };
@@ -0,0 +1,98 @@
1
+ /**
2
+ * file: plugin_snako.js
3
+ * 簡単なファイル読み書きのプラグイン
4
+ */
5
+ import fs from 'fs'
6
+ import { execSync } from 'child_process'
7
+ import path from 'path'
8
+
9
+ export default {
10
+ '初期化': {
11
+ type: 'func',
12
+ josi: [],
13
+ pure: true,
14
+ fn: function (sys: any) {
15
+ sys.__getBokanPath = () => {
16
+ let nakofile
17
+ const cmd = path.basename(process.argv[1])
18
+ if (cmd.indexOf('snako') < 0) { nakofile = process.argv[1] } else { nakofile = process.argv[2] }
19
+ return path.dirname(path.resolve(nakofile))
20
+ }
21
+ sys.__v0['コマンドライン'] = process.argv
22
+ sys.__v0['ナデシコランタイムパス'] = process.argv[0]
23
+ sys.__v0['ナデシコランタイム'] = path.basename(process.argv[0])
24
+ sys.__v0['母艦パス'] = sys.__getBokanPath()
25
+ }
26
+ },
27
+ // @SNAKO
28
+ 'コマンドライン': { type: 'const', value: '' },
29
+ 'ナデシコランタイムパス': { type: 'const', value: '' },
30
+ 'ナデシコランタイム': { type: 'const', value: '' },
31
+ '母艦パス': { type: 'const', value: '' },
32
+ '読': { // @ ファイルFの内容を読む // @よむ
33
+ type: 'func',
34
+ josi: [['を', 'から']],
35
+ pure: true,
36
+ fn: function (f: string): string {
37
+ return '' + fs.readFileSync(f)
38
+ }
39
+ },
40
+ '開': { // @ ファイルFの内容を読む // @ひらく
41
+ type: 'func',
42
+ josi: [['を', 'から']],
43
+ pure: true,
44
+ fn: function (f: string): string {
45
+ return '' + fs.readFileSync(f)
46
+ }
47
+ },
48
+ '保存': { // @ 文字列SをファイルFに保存 // @ほぞん
49
+ type: 'func',
50
+ josi: [['を'], ['に', 'へ']],
51
+ pure: true,
52
+ fn: function (s: string, f: string): void {
53
+ fs.writeFileSync(f, s, 'utf-8')
54
+ },
55
+ return_none: true
56
+ },
57
+ '起動待機': { // @シェルコマンドSを起動し実行終了まで待機する // @きどうたいき
58
+ type: 'func',
59
+ josi: [['を']],
60
+ pure: true,
61
+ fn: function (s: string) {
62
+ const r = execSync(s)
63
+ return r.toString()
64
+ }
65
+ },
66
+ 'ファイル名抽出': { // @フルパスのファイル名Sからファイル名部分を抽出して返す // @ふぁいるめいちゅうしゅつ
67
+ type: 'func',
68
+ josi: [['から', 'の']],
69
+ pure: true,
70
+ fn: function (s: string) {
71
+ return path.basename(s)
72
+ }
73
+ },
74
+ 'パス抽出': { // @ファイル名Sからパス部分を抽出して返す // @ぱすちゅうしゅつ
75
+ type: 'func',
76
+ josi: [['から', 'の']],
77
+ pure: true,
78
+ fn: function (s: string) {
79
+ return path.dirname(s)
80
+ }
81
+ },
82
+ '絶対パス変換': { // @相対パスから絶対パスに変換して返す // @ぜったいぱすへんかん
83
+ type: 'func',
84
+ josi: [['を', 'の']],
85
+ pure: true,
86
+ fn: function (a: string) {
87
+ return path.resolve(a)
88
+ }
89
+ },
90
+ '相対パス展開': { // @ファイル名AからパスBを展開して返す // @そうたいぱすてんかい
91
+ type: 'func',
92
+ josi: [['を'], ['で']],
93
+ pure: true,
94
+ fn: function (a: string, b: string) {
95
+ return path.resolve(path.join(a, b))
96
+ }
97
+ }
98
+ }
@@ -4,6 +4,7 @@ import path from 'path';
4
4
  import com from '../index.mjs';
5
5
  import * as url from 'url';
6
6
  import { NakoGenOptions } from '../src/nako_gen.mjs';
7
+ import PluginSnako from './plugin_snako.mjs';
7
8
  const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
8
9
  /** コマンドラインオプション */
9
10
  class CommandOptions {
@@ -17,7 +18,7 @@ class CommandOptions {
17
18
  }
18
19
  }
19
20
  /** メイン処理 */
20
- function main(argvOrg) {
21
+ async function main(argvOrg) {
21
22
  // コマンドラインオプションを確認
22
23
  const argv = [...argvOrg];
23
24
  const opt = new CommandOptions();
@@ -43,6 +44,7 @@ function main(argvOrg) {
43
44
  }
44
45
  // なでしこのコンパイラを生成
45
46
  const nako = new com.NakoCompiler();
47
+ nako.addPluginObject('PluginSnako', PluginSnako);
46
48
  // 実行前にイベントを挟みたいとき
47
49
  nako.addListener('beforeRun', (g) => {
48
50
  g.__varslist[0]['ナデシコ種類'] = 'snako';
@@ -59,7 +61,7 @@ function main(argvOrg) {
59
61
  });
60
62
  // -e オプションを実行したとき
61
63
  if (opt.evalStr) {
62
- nako.run(opt.evalStr);
64
+ await nako.runAsync(opt.evalStr, 'main.nako3');
63
65
  return;
64
66
  }
65
67
  // パラメータが空だったとき
@@ -74,7 +76,7 @@ function main(argvOrg) {
74
76
  convert(nako, code, opt);
75
77
  }
76
78
  // 実行
77
- nako.run(code, opt.filename);
79
+ await nako.runAsync(code, opt.filename);
78
80
  }
79
81
  // -c オプションを指定したとき
80
82
  function convert(nako, code, opt) {
@@ -7,6 +7,7 @@ import { NakoGlobal } from '../src/nako_global.mjs'
7
7
  import * as url from 'url'
8
8
  import { NakoGenOptions } from '../src/nako_gen.mjs'
9
9
  import { NakoCompiler } from '../src/nako3.mjs'
10
+ import PluginSnako from './plugin_snako.mjs'
10
11
  const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
11
12
 
12
13
  /** コマンドラインオプション */
@@ -28,7 +29,7 @@ class CommandOptions {
28
29
  }
29
30
 
30
31
  /** メイン処理 */
31
- function main (argvOrg: string[]): void {
32
+ async function main (argvOrg: string[]) {
32
33
  // コマンドラインオプションを確認
33
34
  const argv: string[] = [...argvOrg]
34
35
  const opt: CommandOptions = new CommandOptions()
@@ -52,6 +53,7 @@ function main (argvOrg: string[]): void {
52
53
  }
53
54
  // なでしこのコンパイラを生成
54
55
  const nako = new com.NakoCompiler()
56
+ nako.addPluginObject('PluginSnako', PluginSnako)
55
57
  // 実行前にイベントを挟みたいとき
56
58
  nako.addListener('beforeRun', (g: NakoGlobal) => {
57
59
  g.__varslist[0]['ナデシコ種類'] = 'snako'
@@ -68,7 +70,7 @@ function main (argvOrg: string[]): void {
68
70
  })
69
71
  // -e オプションを実行したとき
70
72
  if (opt.evalStr) {
71
- nako.run(opt.evalStr)
73
+ await nako.runAsync(opt.evalStr, 'main.nako3')
72
74
  return
73
75
  }
74
76
  // パラメータが空だったとき
@@ -81,14 +83,14 @@ function main (argvOrg: string[]): void {
81
83
  // -c オプションが指定されたとき
82
84
  if (opt.flagConvert) { convert(nako, code, opt) }
83
85
  // 実行
84
- nako.run(code, opt.filename)
86
+ await nako.runAsync(code, opt.filename)
85
87
  }
86
88
 
87
89
  // -c オプションを指定したとき
88
90
  function convert (nako: NakoCompiler, code: string, opt: CommandOptions): void {
89
91
  // オプションを指定
90
92
  const genOpt = new NakoGenOptions(
91
- false,
93
+ false,
92
94
  ['nako_errors.mjs', 'nako_core_version.mjs', 'plugin_system.mjs'],
93
95
  'self.__varslist[0][\'ナデシコ種類\'] = \'snako\'')
94
96
  // スタンドアロンコードを生成
package/core/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nadesiko3core",
3
- "version": "3.3.67",
3
+ "version": "3.3.68",
4
4
  "description": "Japanese Programming Language Nadesiko v3 core",
5
5
  "main": "index.mjs",
6
6
  "type": "module",
@@ -10,9 +10,10 @@
10
10
  "test:indent": "mocha ./test/indent_test.mjs",
11
11
  "test:indent_inline": "mocha ./test/inline_indent_test.mjs",
12
12
  "tsc": "tsc --watch",
13
- "build": "cnako3 batch/build_nako_version.nako3 && tsc",
13
+ "build": "node command/snako.mjs batch/build_nako_version.nako3 && tsc",
14
14
  "eslint": "eslint ./src/*.mts",
15
- "eslint:fix": "eslint ./src/*.mts --fix"
15
+ "eslint:fix": "eslint ./src/*.mts --fix",
16
+ "hello": "node command/snako.mjs -e '「hello」を表示'"
16
17
  },
17
18
  "bin": {
18
19
  "snako": "command/snako.mjs"
@@ -46,5 +47,8 @@
46
47
  "eslint-plugin-promise": "^5.2.0",
47
48
  "mocha": "^10.0.0",
48
49
  "typescript": "^4.6.4"
50
+ },
51
+ "dependencies": {
52
+ "cross-env": "^7.0.3"
49
53
  }
50
54
  }
@@ -1,8 +1,8 @@
1
1
  // 実際のバージョン定義 (自動生成されるので以下を編集しない)
2
2
  const coreVersion = {
3
- version: '3.3.65',
3
+ version: '3.3.68',
4
4
  major: 3,
5
5
  minor: 3,
6
- patch: 65
6
+ patch: 68
7
7
  };
8
8
  export default coreVersion;
@@ -11,9 +11,9 @@ export interface NakoCoreVersion {
11
11
  }
12
12
  // 実際のバージョン定義 (自動生成されるので以下を編集しない)
13
13
  const coreVersion: NakoCoreVersion = {
14
- version: '3.3.65',
14
+ version: '3.3.68',
15
15
  major: 3,
16
16
  minor: 3,
17
- patch: 65
17
+ patch: 68
18
18
  }
19
19
  export default coreVersion
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nadesiko3",
3
- "version": "3.3.67",
3
+ "version": "3.3.68",
4
4
  "description": "Japanese Programming Language",
5
5
  "type": "module",
6
6
  "main": "src/index.mjs",
package/release/_hash.txt CHANGED
@@ -9,10 +9,10 @@ editor.js:
9
9
  sha256(base64): meY0nvrwNcht1QBIC5BP8hDvLnMGjZCTqklZ4O0ibeo=
10
10
  sha512(base64): IckQnpyhPJ4H5l2ID6ZePflH18kAmm8e/o/tlAbwAHwzhKWQMai+L1ThLPpuKHBP/LTqBOmW0UE5MeYUtnXg4Q==
11
11
  nako_gen_async.js:
12
- md5(hex): b1c581efd01bac1f3ce8f4c09362a3c0
13
- sha256(hex): 2b3d669dd4ea5edfbd3a8f460f72954fbb5934f6ac705a26c726d097ee672c8d
14
- sha256(base64): Kz1mndTqXt+9Oo9GD3KVT7tZNPascFomxybQl+5nLI0=
15
- sha512(base64): yCOOfusBLt4RAMKDaa6K9SO4JwavUdoUHUZTusICJW0+gAGs4qWuDJyQQ8mVJ2+j4f5fNmp5XBRim/54n8Fo/w==
12
+ md5(hex): eb6fe7f404690b75f964e17166fa2826
13
+ sha256(hex): ad5122b3f080030a42395b7a75bc04ae15082983831d55ca5d56760e3ca9bbb6
14
+ sha256(base64): rVEis/CAAwpCOVt6dbwErhUIKYODHVXKXVZ2Djypu7Y=
15
+ sha512(base64): mDRpRyIRS7v/AwZv9aR/4ANuty6RUIBzbLC0HTnsk5tBopoSavgCCTnpglFj+4x+eXe1+jGTyTuWucFZ4rUazg==
16
16
  plugin_caniuse.js:
17
17
  md5(hex): 95a7a5c98a92a46b6435e577daba3241
18
18
  sha256(hex): 57638b3979be70b45ab8085861f6b2ece43200bd6aa92765d73caf76b9e6fea9
@@ -54,17 +54,17 @@ plugin_weykturtle3d.js:
54
54
  sha256(base64): ND/1JqYrFVGTIPYsbBk+tScnF8RVzgYPM0/E2aE8GRw=
55
55
  sha512(base64): T4B8Cvhn9j5YdMGk4rwPInfqmcXtGEjD2g6X6wSqXvYyIXuSy+t1RVf1viZ2zljHlk3wN6pwKvvg/NIJvfMAzw==
56
56
  version.js:
57
- md5(hex): 024642fb08c836921c1309ed39255f2d
58
- sha256(hex): 3afffdaf0b40108fce8bda1a53670747cb1e4611e43c0e9bc4609c70b6fd7c21
59
- sha256(base64): Ov/9rwtAEI/Oi9oaU2cHR8seRhHkPA6bxGCccLb9fCE=
60
- sha512(base64): vxLm7xggPOFwLqxWXSGYt0bezj3ieQXBzltoIGtyOFBixvzUttgyXvilYK2aCWBIA8mcSO//LHaMR6sN51aF6Q==
57
+ md5(hex): 2658a3c3e9fccfa3066b805e7283834f
58
+ sha256(hex): 5f4a2beee6c81fb8438c325e3f34b1a98cc5120faf7ae657a83af47e0bcd85cc
59
+ sha256(base64): X0or7ubIH7hDjDJePzSxqYzFEg+veuZXqDr0fgvNhcw=
60
+ sha512(base64): yt2JfcwCHs3XvDy2m3Sfjf0U8PHjxr6FZJ2bmilVE6hjvFjS9qto9nry3zUSNZYg5y4QRRjpvvN4h9dJZNJJ/g==
61
61
  wnako3.js:
62
- md5(hex): 26790125290bb36b30446c54eaa53c3e
63
- sha256(hex): 95f8baa101f307c2edd6a72e1223a541fba57a1572f5f3a6174bdec07a9268da
64
- sha256(base64): lfi6oQHzB8Lt1qcuEiOlQfulehVy9fOmF0vewHqSaNo=
65
- sha512(base64): 692pReW5fCUZn+wx/nDuDSOdZiIPYvRhhsjt0haOzb0enW33rxIhfuaOILjdEw4FqdsAcsUVMJiPgUilSqo0Hg==
62
+ md5(hex): dc02a400479860ea18764facc2f3edc4
63
+ sha256(hex): 2a786bae1d0fb93be79dd748390dfc6c7d655030e4cff3c4d4ec87fa0cb95eae
64
+ sha256(base64): Knhrrh0PuTvnnddIOQ38bH1lUDDkz/PE1OyH+gy5Xq4=
65
+ sha512(base64): mtoApmdyCXEDZH147+pB6Kw5upNTzb+ve62Fp+eDcImGmYLnakV0XJpdgWMbSxJxnKVCUonhOsDDf+B0w/EN6g==
66
66
  wnako3webworker.js:
67
- md5(hex): 9b72a086332fd445ed9067e7e224daac
68
- sha256(hex): 3ee2f14535f814efdd1af78794d0854d03363c9b7b5f160159da7e3ac5432573
69
- sha256(base64): PuLxRTX4FO/dGveHlNCFTQM2PJt7XxYBWdp+OsVDJXM=
70
- sha512(base64): PQuNXfW+5GFHwHDbYqBAnpghAyp3NOB59wuT8oJOaH+e3gUM1crtcivp2YMFO1v3Y7DM506qCnoIjXbxk1pvEA==
67
+ md5(hex): 0bb4af9bfefa675dbd36d42bc1b45298
68
+ sha256(hex): 71096306e045b2a85ad734e83970758396983e336576799a490dc7cdba534e6d
69
+ sha256(base64): cQljBuBFsqha1zToOXB1g5aYPjNldnmaSQ3HzbpTTm0=
70
+ sha512(base64): xyntPtRYTnN5QxsVod99K+MQUSSdx7XTa3MdQoU1mZEKWfTSU9juFkn+JewIDRbRiIurqPp19wzt21t908chjg==
@@ -1,14 +1,14 @@
1
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.67&f=release/command.json.js" integrity="sha512-AivQgz9aYmlGgnj6n5APSr5a77xVlEZi8YVh8OTrLTDE57FRkKKeY9DHB0mkL4CoDPaBsXjuSFIzm7rko9cZTg==" crossorigin="anonymous"></script>
2
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.67&f=release/editor.js" integrity="sha512-IckQnpyhPJ4H5l2ID6ZePflH18kAmm8e/o/tlAbwAHwzhKWQMai+L1ThLPpuKHBP/LTqBOmW0UE5MeYUtnXg4Q==" crossorigin="anonymous"></script>
3
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.67&f=release/nako_gen_async.js" integrity="sha512-yCOOfusBLt4RAMKDaa6K9SO4JwavUdoUHUZTusICJW0+gAGs4qWuDJyQQ8mVJ2+j4f5fNmp5XBRim/54n8Fo/w==" crossorigin="anonymous"></script>
4
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.67&f=release/plugin_caniuse.js" integrity="sha512-NbX6BKUNq1J8xwtv5CThQC54Lb/KxaPlimRpsF745nxqjYeuGD7S70j4yOgNm4Uwd7AN5FgezS6NDyhlvoJF2w==" crossorigin="anonymous"></script>
5
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.67&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.3.67&f=release/plugin_datetime.js" integrity="sha512-1ADTZFkcfU6vpEEJZEYmIbqS6G2XViooDFD4198P61n7VKZ0PhEVj9l8ULFGrW7woSbDqfSPZmkZ7yvcRqPKYA==" crossorigin="anonymous"></script>
7
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.67&f=release/plugin_kansuji.js" integrity="sha512-tXC9Q6LejwYG+HUbXcwBHFmhwTsqiMHOBohLNcSx8b02hxk3waPUEQRWeNP7QxAFMv5BOAY+Grruf+XKmmU26g==" crossorigin="anonymous"></script>
8
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.67&f=release/plugin_markup.js" integrity="sha512-pvb+QYO9LMUH055nPJJ5QaWyEYR3wDkHHilV5LLNyxObs7enlHGiF7Jt3Csd93JTdJ3n9hxFbTqWa1QuzVmTfQ==" crossorigin="anonymous"></script>
9
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.67&f=release/plugin_turtle.js" integrity="sha512-3/BlAe3uVDBgJrgFWzLJa3bvNQVhAQuL343Icict5hI3LndcPjV6mAD8KoWRlxmF8A8S6n8eKnmrh6NFWTjyEw==" crossorigin="anonymous"></script>
10
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.67&f=release/plugin_webworker.js" integrity="sha512-JLlIg9cW9UgM2AT+qMgEuKvea3t8R+1jihhlN/QGDQe7iCaGEfXfKG5gpvRb0IUyisNfzncUN8AfLn9wyxGGiw==" crossorigin="anonymous"></script>
11
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.67&f=release/plugin_weykturtle3d.js" integrity="sha512-T4B8Cvhn9j5YdMGk4rwPInfqmcXtGEjD2g6X6wSqXvYyIXuSy+t1RVf1viZ2zljHlk3wN6pwKvvg/NIJvfMAzw==" crossorigin="anonymous"></script>
12
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.67&f=release/version.js" integrity="sha512-vxLm7xggPOFwLqxWXSGYt0bezj3ieQXBzltoIGtyOFBixvzUttgyXvilYK2aCWBIA8mcSO//LHaMR6sN51aF6Q==" crossorigin="anonymous"></script>
13
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.67&f=release/wnako3.js" integrity="sha512-692pReW5fCUZn+wx/nDuDSOdZiIPYvRhhsjt0haOzb0enW33rxIhfuaOILjdEw4FqdsAcsUVMJiPgUilSqo0Hg==" crossorigin="anonymous"></script>
14
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.67&f=release/wnako3webworker.js" integrity="sha512-PQuNXfW+5GFHwHDbYqBAnpghAyp3NOB59wuT8oJOaH+e3gUM1crtcivp2YMFO1v3Y7DM506qCnoIjXbxk1pvEA==" crossorigin="anonymous"></script>
1
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.68&f=release/command.json.js" integrity="sha512-AivQgz9aYmlGgnj6n5APSr5a77xVlEZi8YVh8OTrLTDE57FRkKKeY9DHB0mkL4CoDPaBsXjuSFIzm7rko9cZTg==" crossorigin="anonymous"></script>
2
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.68&f=release/editor.js" integrity="sha512-IckQnpyhPJ4H5l2ID6ZePflH18kAmm8e/o/tlAbwAHwzhKWQMai+L1ThLPpuKHBP/LTqBOmW0UE5MeYUtnXg4Q==" crossorigin="anonymous"></script>
3
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.68&f=release/nako_gen_async.js" integrity="sha512-mDRpRyIRS7v/AwZv9aR/4ANuty6RUIBzbLC0HTnsk5tBopoSavgCCTnpglFj+4x+eXe1+jGTyTuWucFZ4rUazg==" crossorigin="anonymous"></script>
4
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.68&f=release/plugin_caniuse.js" integrity="sha512-NbX6BKUNq1J8xwtv5CThQC54Lb/KxaPlimRpsF745nxqjYeuGD7S70j4yOgNm4Uwd7AN5FgezS6NDyhlvoJF2w==" crossorigin="anonymous"></script>
5
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.68&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.3.68&f=release/plugin_datetime.js" integrity="sha512-1ADTZFkcfU6vpEEJZEYmIbqS6G2XViooDFD4198P61n7VKZ0PhEVj9l8ULFGrW7woSbDqfSPZmkZ7yvcRqPKYA==" crossorigin="anonymous"></script>
7
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.68&f=release/plugin_kansuji.js" integrity="sha512-tXC9Q6LejwYG+HUbXcwBHFmhwTsqiMHOBohLNcSx8b02hxk3waPUEQRWeNP7QxAFMv5BOAY+Grruf+XKmmU26g==" crossorigin="anonymous"></script>
8
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.68&f=release/plugin_markup.js" integrity="sha512-pvb+QYO9LMUH055nPJJ5QaWyEYR3wDkHHilV5LLNyxObs7enlHGiF7Jt3Csd93JTdJ3n9hxFbTqWa1QuzVmTfQ==" crossorigin="anonymous"></script>
9
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.68&f=release/plugin_turtle.js" integrity="sha512-3/BlAe3uVDBgJrgFWzLJa3bvNQVhAQuL343Icict5hI3LndcPjV6mAD8KoWRlxmF8A8S6n8eKnmrh6NFWTjyEw==" crossorigin="anonymous"></script>
10
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.68&f=release/plugin_webworker.js" integrity="sha512-JLlIg9cW9UgM2AT+qMgEuKvea3t8R+1jihhlN/QGDQe7iCaGEfXfKG5gpvRb0IUyisNfzncUN8AfLn9wyxGGiw==" crossorigin="anonymous"></script>
11
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.68&f=release/plugin_weykturtle3d.js" integrity="sha512-T4B8Cvhn9j5YdMGk4rwPInfqmcXtGEjD2g6X6wSqXvYyIXuSy+t1RVf1viZ2zljHlk3wN6pwKvvg/NIJvfMAzw==" crossorigin="anonymous"></script>
12
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.68&f=release/version.js" integrity="sha512-yt2JfcwCHs3XvDy2m3Sfjf0U8PHjxr6FZJ2bmilVE6hjvFjS9qto9nry3zUSNZYg5y4QRRjpvvN4h9dJZNJJ/g==" crossorigin="anonymous"></script>
13
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.68&f=release/wnako3.js" integrity="sha512-mtoApmdyCXEDZH147+pB6Kw5upNTzb+ve62Fp+eDcImGmYLnakV0XJpdgWMbSxJxnKVCUonhOsDDf+B0w/EN6g==" crossorigin="anonymous"></script>
14
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.68&f=release/wnako3webworker.js" integrity="sha512-xyntPtRYTnN5QxsVod99K+MQUSSdx7XTa3MdQoU1mZEKWfTSU9juFkn+JewIDRbRiIurqPp19wzt21t908chjg==" crossorigin="anonymous"></script>