nadesiko3 3.3.78 → 3.3.79
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 +48 -27
- package/batch/command.txt +177 -169
- package/batch/command_nakopad.txt +8 -0
- package/core/package.json +1 -1
- package/core/src/nako_core_version.mjs +2 -2
- package/core/src/nako_core_version.mts +2 -2
- package/core/src/nako_gen.mjs +6 -3
- package/core/src/nako_gen.mts +6 -3
- package/core/src/nako_parser3.mjs +9 -2
- package/core/src/nako_parser3.mts +5 -2
- package/core/src/nako_types.mts +1 -0
- package/core/src/plugin_system.mjs +77 -1
- package/core/src/plugin_system.mts +69 -1
- package/core/test/array_test.mjs +22 -0
- package/core/test/flow_test.mjs +18 -0
- package/package.json +1 -1
- package/release/_hash.txt +28 -28
- package/release/_script-tags.txt +14 -14
- 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/editor.js +1 -1
- package/release/nako_gen_async.js +1 -1
- package/release/plugin_turtle.js +1 -1
- package/release/stats.json +1 -1
- package/release/version.js +1 -1
- package/release/wnako3.js +1 -1
- package/release/wnako3webworker.js +1 -1
- package/src/nako_version.mjs +2 -2
- package/src/nako_version.mts +2 -2
- package/src/plugin_browser_storage.mjs +2 -3
- package/src/plugin_node.mjs +20 -0
- package/src/plugin_node.mts +20 -0
- package/src/plugin_turtle.mjs +1 -1
- package/test/node/plugin_node_test.mjs +4 -4
package/core/src/nako_gen.mjs
CHANGED
|
@@ -900,6 +900,7 @@ export class NakoGen {
|
|
|
900
900
|
// ループ条件を確認
|
|
901
901
|
const kara = this._convGen(node.from, true);
|
|
902
902
|
const made = this._convGen(node.to, true);
|
|
903
|
+
const flagDown = node.flagDown;
|
|
903
904
|
let inc = '1';
|
|
904
905
|
if (node.inc !== null || node.inc === undefined || node.inc === 'null') {
|
|
905
906
|
inc = this._convGen(node.inc, true);
|
|
@@ -922,9 +923,11 @@ export class NakoGen {
|
|
|
922
923
|
` ${block}\n` +
|
|
923
924
|
' };\n' +
|
|
924
925
|
'} else { // down\n' +
|
|
925
|
-
`
|
|
926
|
-
` ${
|
|
927
|
-
`
|
|
926
|
+
` if (${flagDown}) {` +
|
|
927
|
+
` for (let ${varI} = ${varFrom}; ${varI} >= ${varTo}; ${varI}-= ${inc}) {\n` +
|
|
928
|
+
` ${sorePrefex}${word} = ${varI};` + '\n' +
|
|
929
|
+
` ${block}\n` +
|
|
930
|
+
' }\n' +
|
|
928
931
|
' };\n' +
|
|
929
932
|
`};\n//[/FOR id=${idLoop}]\n`;
|
|
930
933
|
return this.convLineno(node, false) + code;
|
package/core/src/nako_gen.mts
CHANGED
|
@@ -961,6 +961,7 @@ export class NakoGen {
|
|
|
961
961
|
// ループ条件を確認
|
|
962
962
|
const kara = this._convGen(node.from as Ast, true)
|
|
963
963
|
const made = this._convGen(node.to as Ast, true)
|
|
964
|
+
const flagDown = node.flagDown
|
|
964
965
|
let inc = '1'
|
|
965
966
|
if (node.inc !== null || node.inc === undefined || node.inc === 'null') {
|
|
966
967
|
inc = this._convGen(node.inc as Ast, true)
|
|
@@ -984,9 +985,11 @@ export class NakoGen {
|
|
|
984
985
|
` ${block}\n` +
|
|
985
986
|
' };\n' +
|
|
986
987
|
'} else { // down\n' +
|
|
987
|
-
`
|
|
988
|
-
` ${
|
|
989
|
-
`
|
|
988
|
+
` if (${flagDown}) {` +
|
|
989
|
+
` for (let ${varI} = ${varFrom}; ${varI} >= ${varTo}; ${varI}-= ${inc}) {\n` +
|
|
990
|
+
` ${sorePrefex}${word} = ${varI};` + '\n' +
|
|
991
|
+
` ${block}\n` +
|
|
992
|
+
' }\n' +
|
|
990
993
|
' };\n' +
|
|
991
994
|
`};\n//[/FOR id=${idLoop}]\n`
|
|
992
995
|
return this.convLineno(node, false) + code
|
|
@@ -975,6 +975,7 @@ export class NakoParser extends NakoParserBase {
|
|
|
975
975
|
}
|
|
976
976
|
/** @returns {Ast | null} */
|
|
977
977
|
yFor() {
|
|
978
|
+
let flagDown = true; // AからBまでの時、A>=Bを許容するかどうか
|
|
978
979
|
const map = this.peekSourceMap();
|
|
979
980
|
if (this.check('繰返') || this.check('増繰返') || this.check('減繰返')) {
|
|
980
981
|
// pass
|
|
@@ -987,8 +988,10 @@ export class NakoParser extends NakoParserBase {
|
|
|
987
988
|
const incdec = this.stack.pop();
|
|
988
989
|
if (incdec) {
|
|
989
990
|
if (incdec.type === 'word' && (incdec.value === '増' || incdec.value === '減')) {
|
|
990
|
-
|
|
991
|
-
|
|
991
|
+
if (incdec.value === '増') {
|
|
992
|
+
flagDown = false;
|
|
993
|
+
}
|
|
994
|
+
kurikaesu.type = incdec.value + kurikaesu.type; // typeを増繰返 | 減繰返 に変換
|
|
992
995
|
}
|
|
993
996
|
else {
|
|
994
997
|
// 普通の繰り返しの場合
|
|
@@ -998,6 +1001,9 @@ export class NakoParser extends NakoParserBase {
|
|
|
998
1001
|
let vInc = null;
|
|
999
1002
|
if (kurikaesu.type === '増繰返' || kurikaesu.type === '減繰返') {
|
|
1000
1003
|
vInc = this.popStack(['ずつ']);
|
|
1004
|
+
if (kurikaesu.type === '増繰返') {
|
|
1005
|
+
flagDown = false;
|
|
1006
|
+
}
|
|
1001
1007
|
}
|
|
1002
1008
|
const vTo = this.popStack(['まで']);
|
|
1003
1009
|
const vFrom = this.popStack(['から']);
|
|
@@ -1035,6 +1041,7 @@ export class NakoParser extends NakoParserBase {
|
|
|
1035
1041
|
from: vFrom,
|
|
1036
1042
|
to: vTo,
|
|
1037
1043
|
inc: vInc,
|
|
1044
|
+
flagDown,
|
|
1038
1045
|
word,
|
|
1039
1046
|
block: block || [],
|
|
1040
1047
|
josi: '',
|
|
@@ -847,6 +847,7 @@ export class NakoParser extends NakoParserBase {
|
|
|
847
847
|
|
|
848
848
|
/** @returns {Ast | null} */
|
|
849
849
|
yFor (): Ast|null {
|
|
850
|
+
let flagDown = true // AからBまでの時、A>=Bを許容するかどうか
|
|
850
851
|
const map = this.peekSourceMap()
|
|
851
852
|
if (this.check('繰返') || this.check('増繰返') || this.check('減繰返')) {
|
|
852
853
|
// pass
|
|
@@ -858,8 +859,8 @@ export class NakoParser extends NakoParserBase {
|
|
|
858
859
|
const incdec = this.stack.pop()
|
|
859
860
|
if (incdec) {
|
|
860
861
|
if (incdec.type === 'word' && (incdec.value === '増' || incdec.value === '減')) {
|
|
861
|
-
|
|
862
|
-
|
|
862
|
+
if (incdec.value === '増') { flagDown = false }
|
|
863
|
+
kurikaesu.type = incdec.value + kurikaesu.type // typeを増繰返 | 減繰返 に変換
|
|
863
864
|
} else {
|
|
864
865
|
// 普通の繰り返しの場合
|
|
865
866
|
this.stack.push(incdec) // 違ったので改めて追加
|
|
@@ -868,6 +869,7 @@ export class NakoParser extends NakoParserBase {
|
|
|
868
869
|
let vInc = null
|
|
869
870
|
if (kurikaesu.type === '増繰返' || kurikaesu.type === '減繰返') {
|
|
870
871
|
vInc = this.popStack(['ずつ'])
|
|
872
|
+
if (kurikaesu.type === '増繰返') { flagDown = false }
|
|
871
873
|
}
|
|
872
874
|
const vTo = this.popStack(['まで'])
|
|
873
875
|
const vFrom = this.popStack(['から'])
|
|
@@ -899,6 +901,7 @@ export class NakoParser extends NakoParserBase {
|
|
|
899
901
|
from: vFrom,
|
|
900
902
|
to: vTo,
|
|
901
903
|
inc: vInc,
|
|
904
|
+
flagDown,
|
|
902
905
|
word,
|
|
903
906
|
block: block || [],
|
|
904
907
|
josi: '',
|
package/core/src/nako_types.mts
CHANGED
|
@@ -143,7 +143,9 @@ export default {
|
|
|
143
143
|
josi: [],
|
|
144
144
|
pure: false,
|
|
145
145
|
fn: function (sys) {
|
|
146
|
-
sys.__exec
|
|
146
|
+
if (sys.__exec) {
|
|
147
|
+
sys.__exec('全タイマー停止', [sys]);
|
|
148
|
+
}
|
|
147
149
|
if (sys.__genMode === '非同期モード') {
|
|
148
150
|
sys.__stopAsync(sys);
|
|
149
151
|
}
|
|
@@ -1734,6 +1736,14 @@ export default {
|
|
|
1734
1736
|
throw new Error('『配列ポップ』で配列以外の処理。');
|
|
1735
1737
|
}
|
|
1736
1738
|
},
|
|
1739
|
+
'配列プッシュ': {
|
|
1740
|
+
type: 'func',
|
|
1741
|
+
josi: [['に', 'へ'], ['を']],
|
|
1742
|
+
pure: true,
|
|
1743
|
+
fn: function (a, b, sys) {
|
|
1744
|
+
return sys.__exec('配列追加', [a, b, sys]);
|
|
1745
|
+
}
|
|
1746
|
+
},
|
|
1737
1747
|
'配列追加': {
|
|
1738
1748
|
type: 'func',
|
|
1739
1749
|
josi: [['に', 'へ'], ['を']],
|
|
@@ -1800,6 +1810,72 @@ export default {
|
|
|
1800
1810
|
throw new Error('『配列合計』で配列変数以外の値が指定されました。');
|
|
1801
1811
|
}
|
|
1802
1812
|
},
|
|
1813
|
+
'配列連番作成': {
|
|
1814
|
+
type: 'func',
|
|
1815
|
+
josi: [['から'], ['まで', 'の']],
|
|
1816
|
+
pure: true,
|
|
1817
|
+
fn: function (a, b) {
|
|
1818
|
+
const result = [];
|
|
1819
|
+
for (let i = a; i <= b; i++) {
|
|
1820
|
+
result.push(i);
|
|
1821
|
+
}
|
|
1822
|
+
return result;
|
|
1823
|
+
}
|
|
1824
|
+
},
|
|
1825
|
+
'配列要素作成': {
|
|
1826
|
+
type: 'func',
|
|
1827
|
+
josi: [['を'], ['だけ']],
|
|
1828
|
+
pure: true,
|
|
1829
|
+
fn: function (a, b) {
|
|
1830
|
+
const result = [];
|
|
1831
|
+
for (let i = 0; i < b; i++) {
|
|
1832
|
+
result.push(a);
|
|
1833
|
+
}
|
|
1834
|
+
return result;
|
|
1835
|
+
}
|
|
1836
|
+
},
|
|
1837
|
+
'配列関数適用': {
|
|
1838
|
+
type: 'func',
|
|
1839
|
+
josi: [['を'], ['へ', 'に']],
|
|
1840
|
+
pure: true,
|
|
1841
|
+
fn: function (f, a, sys) {
|
|
1842
|
+
let ufunc = f;
|
|
1843
|
+
if (typeof f === 'string') {
|
|
1844
|
+
ufunc = sys.__findFunc(f, '配列関数適用');
|
|
1845
|
+
}
|
|
1846
|
+
const result = [];
|
|
1847
|
+
for (const e of a) {
|
|
1848
|
+
result.push(ufunc(e));
|
|
1849
|
+
}
|
|
1850
|
+
return result;
|
|
1851
|
+
}
|
|
1852
|
+
},
|
|
1853
|
+
'配列マップ': {
|
|
1854
|
+
type: 'func',
|
|
1855
|
+
josi: [['を'], ['へ', 'に']],
|
|
1856
|
+
pure: true,
|
|
1857
|
+
fn: function (f, a, sys) {
|
|
1858
|
+
return sys.__exec('配列関数適用', [f, a, sys]);
|
|
1859
|
+
}
|
|
1860
|
+
},
|
|
1861
|
+
'配列フィルタ': {
|
|
1862
|
+
type: 'func',
|
|
1863
|
+
josi: [['で', 'の'], ['を', 'について']],
|
|
1864
|
+
pure: true,
|
|
1865
|
+
fn: function (f, a, sys) {
|
|
1866
|
+
let ufunc = f;
|
|
1867
|
+
if (typeof f === 'string') {
|
|
1868
|
+
ufunc = sys.__findFunc(f, '配列フィルタ');
|
|
1869
|
+
}
|
|
1870
|
+
const result = [];
|
|
1871
|
+
for (const e of a) {
|
|
1872
|
+
if (ufunc(e)) {
|
|
1873
|
+
result.push(e);
|
|
1874
|
+
}
|
|
1875
|
+
}
|
|
1876
|
+
return result;
|
|
1877
|
+
}
|
|
1878
|
+
},
|
|
1803
1879
|
// @二次元配列処理
|
|
1804
1880
|
'表ソート': {
|
|
1805
1881
|
type: 'func',
|
|
@@ -131,7 +131,7 @@ export default {
|
|
|
131
131
|
josi: [],
|
|
132
132
|
pure: false,
|
|
133
133
|
fn: function (sys: any) {
|
|
134
|
-
sys.__exec('全タイマー停止', [sys])
|
|
134
|
+
if (sys.__exec) { sys.__exec('全タイマー停止', [sys]) }
|
|
135
135
|
if (sys.__genMode === '非同期モード') { sys.__stopAsync(sys) }
|
|
136
136
|
sys.__v0['表示ログ'] = ''
|
|
137
137
|
}
|
|
@@ -1664,6 +1664,14 @@ export default {
|
|
|
1664
1664
|
throw new Error('『配列ポップ』で配列以外の処理。')
|
|
1665
1665
|
}
|
|
1666
1666
|
},
|
|
1667
|
+
'配列プッシュ': { // @配列Aの末尾にNを追加。Aの内容を書き換える。(『配列追加』と同じ) // @はいれつぷっしゅ
|
|
1668
|
+
type: 'func',
|
|
1669
|
+
josi: [['に', 'へ'], ['を']],
|
|
1670
|
+
pure: true,
|
|
1671
|
+
fn: function (a: any, b: any, sys: any) {
|
|
1672
|
+
return sys.__exec('配列追加', [a, b, sys])
|
|
1673
|
+
}
|
|
1674
|
+
},
|
|
1667
1675
|
'配列追加': { // @配列Aの末尾にBを追加して返す。Aの内容を書き換える。 // @はいれつついか
|
|
1668
1676
|
type: 'func',
|
|
1669
1677
|
josi: [['に', 'へ'], ['を']],
|
|
@@ -1728,6 +1736,66 @@ export default {
|
|
|
1728
1736
|
throw new Error('『配列合計』で配列変数以外の値が指定されました。')
|
|
1729
1737
|
}
|
|
1730
1738
|
},
|
|
1739
|
+
'配列連番作成': { // @AからBまでの連番配列を生成して返す。 // @はいれつれんばんさくせい
|
|
1740
|
+
type: 'func',
|
|
1741
|
+
josi: [['から'], ['まで', 'の']],
|
|
1742
|
+
pure: true,
|
|
1743
|
+
fn: function (a: number, b: number) {
|
|
1744
|
+
const result: number[] = []
|
|
1745
|
+
for (let i = a; i <= b; i++) {
|
|
1746
|
+
result.push(i)
|
|
1747
|
+
}
|
|
1748
|
+
return result
|
|
1749
|
+
}
|
|
1750
|
+
},
|
|
1751
|
+
'配列要素作成': { // @値AをB個持つ配列を生成して返す。 // @はいれつようそさくせい
|
|
1752
|
+
type: 'func',
|
|
1753
|
+
josi: [['を'], ['だけ']],
|
|
1754
|
+
pure: true,
|
|
1755
|
+
fn: function (a: number, b: number) {
|
|
1756
|
+
const result: number[] = []
|
|
1757
|
+
for (let i = 0; i < b; i++) {
|
|
1758
|
+
result.push(a)
|
|
1759
|
+
}
|
|
1760
|
+
return result
|
|
1761
|
+
}
|
|
1762
|
+
},
|
|
1763
|
+
'配列関数適用': { // @引数を1つ持つ関数Fを、配列Aの全要素に適用した、新しい配列を返す。 // @はいれつかんすうてきよう
|
|
1764
|
+
type: 'func',
|
|
1765
|
+
josi: [['を'], ['へ', 'に']],
|
|
1766
|
+
pure: true,
|
|
1767
|
+
fn: function (f: any, a: any, sys: any) {
|
|
1768
|
+
let ufunc: any = f
|
|
1769
|
+
if (typeof f === 'string') { ufunc = sys.__findFunc(f, '配列関数適用') }
|
|
1770
|
+
const result: any = []
|
|
1771
|
+
for (const e of a) {
|
|
1772
|
+
result.push(ufunc(e))
|
|
1773
|
+
}
|
|
1774
|
+
return result
|
|
1775
|
+
}
|
|
1776
|
+
},
|
|
1777
|
+
'配列マップ': { // @引数を1つ持つ関数Fを、配列Aの全要素に適用した、新しい配列を返す。(『配列関数適用』と同じ) // @はいれつまっぷ
|
|
1778
|
+
type: 'func',
|
|
1779
|
+
josi: [['を'], ['へ', 'に']],
|
|
1780
|
+
pure: true,
|
|
1781
|
+
fn: function (f: any, a: any, sys: any) {
|
|
1782
|
+
return sys.__exec('配列関数適用', [f, a, sys])
|
|
1783
|
+
}
|
|
1784
|
+
},
|
|
1785
|
+
'配列フィルタ': { // @引数を1つ持ち真偽を返す関数Fを利用して、配列Aの要素をフィルタして、新しい配列として返す。 // @はいれつふぃるた
|
|
1786
|
+
type: 'func',
|
|
1787
|
+
josi: [['で', 'の'], ['を', 'について']],
|
|
1788
|
+
pure: true,
|
|
1789
|
+
fn: function (f: any, a: any, sys: any) {
|
|
1790
|
+
let ufunc: any = f
|
|
1791
|
+
if (typeof f === 'string') { ufunc = sys.__findFunc(f, '配列フィルタ') }
|
|
1792
|
+
const result: any = []
|
|
1793
|
+
for (const e of a) {
|
|
1794
|
+
if (ufunc(e)) { result.push(e) }
|
|
1795
|
+
}
|
|
1796
|
+
return result
|
|
1797
|
+
}
|
|
1798
|
+
},
|
|
1731
1799
|
// @二次元配列処理
|
|
1732
1800
|
'表ソート': { // @二次元配列AでB列目(0起点)(あるいはキー名)をキーに文字列順にソートする。Aの内容を書き換える。 // @ひょうそーと
|
|
1733
1801
|
type: 'func',
|
package/core/test/array_test.mjs
CHANGED
|
@@ -35,4 +35,26 @@ describe('array_test', async () => {
|
|
|
35
35
|
it('配列を「代入」文するとエラーが出る問題 (nadesiko3 #1354)(core #75)', async () => {
|
|
36
36
|
await cmp('Aは[];1に2を足して、A[0]に代入。A[0]を表示。', '3')
|
|
37
37
|
})
|
|
38
|
+
it('配列連番作成 #1361 (core #78)', async () => {
|
|
39
|
+
await cmp('1から3まで配列連番作成してJSONエンコードして表示', '[1,2,3]')
|
|
40
|
+
await cmp('5から7まで配列連番作成してJSONエンコードして表示', '[5,6,7]')
|
|
41
|
+
})
|
|
42
|
+
it('配列関数適用 #1361 (core #78)', async () => {
|
|
43
|
+
await cmp('●(Nを)二倍処理とは;それはN*2;ここまで;A=[1,2,3];Aに「二倍処理」を配列関数適用してJSONエンコードして表示。', '[2,4,6]')
|
|
44
|
+
await cmp('A=[1,2,3];Aへ配列関数適用には(N)\nそれはN*2;ここまで;それをJSONエンコードして表示。', '[2,4,6]')
|
|
45
|
+
await cmp('●(Nを)二倍処理とは;それはN*2;ここまで;A=[1,2,3];Aに「二倍処理」を配列マップしてJSONエンコードして表示。', '[2,4,6]')
|
|
46
|
+
})
|
|
47
|
+
it('配列フィルタ #1361 (core #78)', async () => {
|
|
48
|
+
await cmp('●(Nを)偶数抽出とは;それは(N%2==0);ここまで;A=[1,2,3,4];Aを「偶数抽出」で配列フィルタしてJSONエンコードして表示。', '[2,4]')
|
|
49
|
+
await cmp('●(Nを)偶数抽出とは;それは(N%2==0);ここまで;A=[1,2,3,4];Aについて「偶数抽出」で配列フィルタしてJSONエンコードして表示。', '[2,4]')
|
|
50
|
+
await cmp('A=[1,2,3,4];Aについて配列フィルタには(N)\nそれは(N%2==0);ここまで;それをJSONエンコードして表示。', '[2,4]')
|
|
51
|
+
})
|
|
52
|
+
it('配列プッシュ #1361 (core #78)', async () => {
|
|
53
|
+
await cmp('Aは[];Aに3を配列プッシュ。AをJSONエンコードして表示。', '[3]')
|
|
54
|
+
await cmp('Aは[1];Aに3を配列プッシュ。AをJSONエンコードして表示。', '[1,3]')
|
|
55
|
+
})
|
|
56
|
+
it('配列要素作成 #1361 (core #78)', async () => {
|
|
57
|
+
await cmp('100を3だけ配列要素作成してAに代入。AをJSONエンコードして表示。', '[100,100,100]')
|
|
58
|
+
await cmp('1を5だけ配列要素作成してAに代入。AをJSONエンコードして表示。', '[1,1,1,1,1]')
|
|
59
|
+
})
|
|
38
60
|
})
|
package/core/test/flow_test.mjs
CHANGED
|
@@ -412,4 +412,22 @@ describe('flow_test', async () => {
|
|
|
412
412
|
'ここまで\n' +
|
|
413
413
|
'', 'あ')
|
|
414
414
|
})
|
|
415
|
+
it('「AからBまでNずつ増やし繰り返す」文でBからAまでも実行してしまう問題 #79', async () => {
|
|
416
|
+
await cmp(
|
|
417
|
+
'A="";Nを3から1まで繰り返す\n' +
|
|
418
|
+
' A=A&N\n' +
|
|
419
|
+
'ここまで\n' +
|
|
420
|
+
'Aを表示;', '321')
|
|
421
|
+
// 増やすのに減らさない
|
|
422
|
+
await cmp(
|
|
423
|
+
'A="";Nを3から1まで1ずつ増やし繰り返す\n' +
|
|
424
|
+
' A=A&N\n' +
|
|
425
|
+
'ここまで\n' +
|
|
426
|
+
'Aを表示;', '')
|
|
427
|
+
await cmp(
|
|
428
|
+
'A="";Nを3から1まで1ずつ減らし繰り返す\n' +
|
|
429
|
+
' A=A&N\n' +
|
|
430
|
+
'ここまで\n' +
|
|
431
|
+
'Aを表示;', '321')
|
|
432
|
+
})
|
|
415
433
|
})
|
package/package.json
CHANGED
package/release/_hash.txt
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
command.json.js:
|
|
2
|
-
md5(hex):
|
|
3
|
-
sha256(hex):
|
|
4
|
-
sha256(base64):
|
|
5
|
-
sha512(base64):
|
|
2
|
+
md5(hex): ea3d41e3d426bce7812640f15c6f9e0e
|
|
3
|
+
sha256(hex): 12c6fa9475b20e454b99728bf56afb584fdd05c9cbc359abbabd0ab7fdaf4a28
|
|
4
|
+
sha256(base64): Esb6lHWyDkVLmXKL9Wr7WE/dBcnLw1mrur0Kt/2vSig=
|
|
5
|
+
sha512(base64): x7YKQabM3SMJl4/TjTlSPVw4lbh+Yktf/bq+aBkfKm+cTyi36kxKRK3x3fG46IozKshOfNTGnqcLegshkIRxVw==
|
|
6
6
|
editor.js:
|
|
7
|
-
md5(hex):
|
|
8
|
-
sha256(hex):
|
|
9
|
-
sha256(base64):
|
|
10
|
-
sha512(base64):
|
|
7
|
+
md5(hex): cc5673650b66fbb0358fdb79c6014dcf
|
|
8
|
+
sha256(hex): 9fca3ad1daf729d6a474563991d129f0e02eb576a1d414926ac2c2d0390dc047
|
|
9
|
+
sha256(base64): n8o60dr3KdakdFY5kdEp8OAutXah1BSSasLC0DkNwEc=
|
|
10
|
+
sha512(base64): FMJHzZDBeX6n6CQYRWH6d4OhxTCP48Tr3SAPdhZdNrr5ZwurJX2c4PJAboLBN5gYeYZ6WwdEl1+oCHa8xgS34Q==
|
|
11
11
|
nako_gen_async.js:
|
|
12
|
-
md5(hex):
|
|
13
|
-
sha256(hex):
|
|
14
|
-
sha256(base64):
|
|
15
|
-
sha512(base64): /
|
|
12
|
+
md5(hex): 9dfd63d1f27a4038c1c6b4669702fb71
|
|
13
|
+
sha256(hex): 2124b78a833a8e0e5e657879adb81a954fc8873af2bb93e35fdf1860cb6693c1
|
|
14
|
+
sha256(base64): ISS3ioM6jg5eZXh5rbgalU/Ihzryu5PjX98YYMtmk8E=
|
|
15
|
+
sha512(base64): an36Im7NqvIBKAWnkkkOKWlWQck3jOTbz0IRU/BMtmS6nmRxlOad3bDE7DrS16roPSMuQV3BJbnlLMht2+iF2Q==
|
|
16
16
|
plugin_caniuse.js:
|
|
17
17
|
md5(hex): 95a7a5c98a92a46b6435e577daba3241
|
|
18
18
|
sha256(hex): 57638b3979be70b45ab8085861f6b2ece43200bd6aa92765d73caf76b9e6fea9
|
|
@@ -39,10 +39,10 @@ plugin_markup.js:
|
|
|
39
39
|
sha256(base64): lU+CykifGTgBN2y9Bqqnza/bZI8z4B+sC7vILOnkXo0=
|
|
40
40
|
sha512(base64): pvb+QYO9LMUH055nPJJ5QaWyEYR3wDkHHilV5LLNyxObs7enlHGiF7Jt3Csd93JTdJ3n9hxFbTqWa1QuzVmTfQ==
|
|
41
41
|
plugin_turtle.js:
|
|
42
|
-
md5(hex):
|
|
43
|
-
sha256(hex):
|
|
44
|
-
sha256(base64):
|
|
45
|
-
sha512(base64):
|
|
42
|
+
md5(hex): 87bff5e8ea06216e6a57aa7764074764
|
|
43
|
+
sha256(hex): 6edfa449343e0ffa78a3cc989943f0347b90aaddda4cf35aa423b5a635f103c1
|
|
44
|
+
sha256(base64): bt+kSTQ+D/p4o8yYmUPwNHuQqt3aTPNapCO1pjXxA8E=
|
|
45
|
+
sha512(base64): ADtegZGlBz0Uk7DKn2zzkVUaA7cdVCRbyc4iOGwEFmXdx0KtzYKumgKIHQiniH3AdGMBhgGf6WZI3y7xcLoFmw==
|
|
46
46
|
plugin_webworker.js:
|
|
47
47
|
md5(hex): 5acee287fd2253f301c3521f047d0355
|
|
48
48
|
sha256(hex): 1a5bf85b7f2e1a2dcbf2d32182a60d5caf21938ba453beaf6c36798883bc8486
|
|
@@ -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):
|
|
58
|
-
sha256(hex):
|
|
59
|
-
sha256(base64):
|
|
60
|
-
sha512(base64):
|
|
57
|
+
md5(hex): 48b3e3f69ece954d1ebfb055cb606f36
|
|
58
|
+
sha256(hex): f1022cc8a1fa595cae099f6ff6c3e9245375946e2ed99433c784e6518870040e
|
|
59
|
+
sha256(base64): 8QIsyKH6WVyuCZ9v9sPpJFN1lG4u2ZQzx4TmUYhwBA4=
|
|
60
|
+
sha512(base64): 6TpQlzOQLQ/PMhWPnlH9kzYiqesuv0xMI5TilQLwSQn5F/QXnh6ZkS2a8ZFN7EOXTK0jhj2/rzJcMfdKXDo+rg==
|
|
61
61
|
wnako3.js:
|
|
62
|
-
md5(hex):
|
|
63
|
-
sha256(hex):
|
|
64
|
-
sha256(base64):
|
|
65
|
-
sha512(base64):
|
|
62
|
+
md5(hex): ed0a642fabb952f07c29610114e0cbab
|
|
63
|
+
sha256(hex): 5232eb878c1c45826ed149e00cc961fd51d95c43064b500c3a12b03055d565dc
|
|
64
|
+
sha256(base64): UjLrh4wcRYJu0UngDMlh/VHZXEMGS1AMOhKwMFXVZdw=
|
|
65
|
+
sha512(base64): zFwG7byvdg/qg4bejuQ9zWB6p3N7LfZhEW966oo21QQmeNDXy4a53ZY2AdximF3be2muKUFSxleseJyRx53T8A==
|
|
66
66
|
wnako3webworker.js:
|
|
67
|
-
md5(hex):
|
|
68
|
-
sha256(hex):
|
|
69
|
-
sha256(base64):
|
|
70
|
-
sha512(base64):
|
|
67
|
+
md5(hex): 8728ae278d8b6212b653a4c621770697
|
|
68
|
+
sha256(hex): 9ba89f232705c4c45af345a33272b9ab2d356410fed5b05d1e00531f4fc17c40
|
|
69
|
+
sha256(base64): m6ifIycFxMRa80WjMnK5qy01ZBD+1bBdHgBTH0/BfEA=
|
|
70
|
+
sha512(base64): 5oyn6NH1TW/M3+MjWqCs/QQLYD9nVh5GNdy7rX0UVTrffgwJy8yAYjrRCERSa1/YsR55R/ZG1W2fX8nlydilVQ==
|
package/release/_script-tags.txt
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
2
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
3
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
4
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
5
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
6
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
7
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
8
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
9
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
10
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
11
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
12
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
13
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
14
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
1
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.79&f=release/command.json.js" integrity="sha512-x7YKQabM3SMJl4/TjTlSPVw4lbh+Yktf/bq+aBkfKm+cTyi36kxKRK3x3fG46IozKshOfNTGnqcLegshkIRxVw==" crossorigin="anonymous"></script>
|
|
2
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.79&f=release/editor.js" integrity="sha512-FMJHzZDBeX6n6CQYRWH6d4OhxTCP48Tr3SAPdhZdNrr5ZwurJX2c4PJAboLBN5gYeYZ6WwdEl1+oCHa8xgS34Q==" crossorigin="anonymous"></script>
|
|
3
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.79&f=release/nako_gen_async.js" integrity="sha512-an36Im7NqvIBKAWnkkkOKWlWQck3jOTbz0IRU/BMtmS6nmRxlOad3bDE7DrS16roPSMuQV3BJbnlLMht2+iF2Q==" crossorigin="anonymous"></script>
|
|
4
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.79&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.79&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.79&f=release/plugin_datetime.js" integrity="sha512-1ADTZFkcfU6vpEEJZEYmIbqS6G2XViooDFD4198P61n7VKZ0PhEVj9l8ULFGrW7woSbDqfSPZmkZ7yvcRqPKYA==" crossorigin="anonymous"></script>
|
|
7
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.79&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.79&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.79&f=release/plugin_turtle.js" integrity="sha512-ADtegZGlBz0Uk7DKn2zzkVUaA7cdVCRbyc4iOGwEFmXdx0KtzYKumgKIHQiniH3AdGMBhgGf6WZI3y7xcLoFmw==" crossorigin="anonymous"></script>
|
|
10
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.79&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.79&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.79&f=release/version.js" integrity="sha512-6TpQlzOQLQ/PMhWPnlH9kzYiqesuv0xMI5TilQLwSQn5F/QXnh6ZkS2a8ZFN7EOXTK0jhj2/rzJcMfdKXDo+rg==" crossorigin="anonymous"></script>
|
|
13
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.79&f=release/wnako3.js" integrity="sha512-zFwG7byvdg/qg4bejuQ9zWB6p3N7LfZhEW966oo21QQmeNDXy4a53ZY2AdximF3be2muKUFSxleseJyRx53T8A==" crossorigin="anonymous"></script>
|
|
14
|
+
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.79&f=release/wnako3webworker.js" integrity="sha512-5oyn6NH1TW/M3+MjWqCs/QQLYD9nVh5GNdy7rX0UVTrffgwJy8yAYjrRCERSa1/YsR55R/ZG1W2fX8nlydilVQ==" crossorigin="anonymous"></script>
|