diff --git a/package.json b/package.json
index a323584..fd271f0 100644
--- a/package.json
+++ b/package.json
@@ -21,6 +21,7 @@
"chrono-node": "^2.6.3",
"fast-glob": "^3.2.12",
"glob": "^7.2.3",
+ "js-yaml": "^4.1.0",
"minimist": "^1.2.8",
"rollup-plugin-livereload": "^2.0.5",
"sass": "^1.62.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7838a3a..bd9af8a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -23,6 +23,9 @@ devDependencies:
glob:
specifier: ^7.2.3
version: 7.2.3
+ js-yaml:
+ specifier: ^4.1.0
+ version: 4.1.0
minimist:
specifier: ^1.2.8
version: 1.2.8
@@ -34,13 +37,13 @@ devDependencies:
version: 1.62.1
siyuan:
specifier: ^0.9.0
- version: registry.npmmirror.com/siyuan@0.9.0
+ version: 0.9.0
svelte:
specifier: ^3.57.0
version: 3.57.0
sy-plugin-changelog:
specifier: ^0.0.7
- version: registry.npmmirror.com/sy-plugin-changelog@0.0.7
+ version: 0.0.7
ts-node:
specifier: ^10.9.1
version: 10.9.1(@types/node@20.2.0)(typescript@5.0.4)
@@ -49,7 +52,7 @@ devDependencies:
version: 5.0.4
vite:
specifier: ^4.5.2
- version: registry.npmmirror.com/vite@4.5.2(@types/node@20.2.0)(sass@1.62.1)
+ version: 4.5.2(@types/node@20.2.0)(sass@1.62.1)
vite-plugin-static-copy:
specifier: ^0.15.0
version: 0.15.0(vite@4.5.2)
@@ -66,6 +69,204 @@ packages:
'@jridgewell/trace-mapping': 0.3.9
dev: true
+ /@esbuild/android-arm64@0.18.20:
+ resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-arm@0.18.20:
+ resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-x64@0.18.20:
+ resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/darwin-arm64@0.18.20:
+ resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/darwin-x64@0.18.20:
+ resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/freebsd-arm64@0.18.20:
+ resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/freebsd-x64@0.18.20:
+ resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-arm64@0.18.20:
+ resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-arm@0.18.20:
+ resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-ia32@0.18.20:
+ resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-loong64@0.18.20:
+ resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-mips64el@0.18.20:
+ resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-ppc64@0.18.20:
+ resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-riscv64@0.18.20:
+ resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-s390x@0.18.20:
+ resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-x64@0.18.20:
+ resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/netbsd-x64@0.18.20:
+ resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/openbsd-x64@0.18.20:
+ resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/sunos-x64@0.18.20:
+ resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-arm64@0.18.20:
+ resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-ia32@0.18.20:
+ resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-x64@0.18.20:
+ resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@jridgewell/resolve-uri@3.1.1:
resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
engines: {node: '>=6.0.0'}
@@ -116,7 +317,7 @@ packages:
magic-string: 0.29.0
svelte: 3.57.0
svelte-hmr: 0.15.2(svelte@3.57.0)
- vite: registry.npmmirror.com/vite@4.5.2(@types/node@20.2.0)(sass@1.62.1)
+ vite: 4.5.2(@types/node@20.2.0)(sass@1.62.1)
vitefu: 0.2.4(vite@4.5.2)
transitivePeerDependencies:
- supports-color
@@ -169,6 +370,10 @@ packages:
resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
dev: true
+ /argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+ dev: true
+
/balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true
@@ -204,7 +409,7 @@ packages:
normalize-path: 3.0.0
readdirp: 3.6.0
optionalDependencies:
- fsevents: registry.npmmirror.com/fsevents@2.3.3
+ fsevents: 2.3.3
dev: true
/chrono-node@2.6.3:
@@ -252,6 +457,36 @@ packages:
engines: {node: '>=0.3.1'}
dev: true
+ /esbuild@0.18.20:
+ resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ optionalDependencies:
+ '@esbuild/android-arm': 0.18.20
+ '@esbuild/android-arm64': 0.18.20
+ '@esbuild/android-x64': 0.18.20
+ '@esbuild/darwin-arm64': 0.18.20
+ '@esbuild/darwin-x64': 0.18.20
+ '@esbuild/freebsd-arm64': 0.18.20
+ '@esbuild/freebsd-x64': 0.18.20
+ '@esbuild/linux-arm': 0.18.20
+ '@esbuild/linux-arm64': 0.18.20
+ '@esbuild/linux-ia32': 0.18.20
+ '@esbuild/linux-loong64': 0.18.20
+ '@esbuild/linux-mips64el': 0.18.20
+ '@esbuild/linux-ppc64': 0.18.20
+ '@esbuild/linux-riscv64': 0.18.20
+ '@esbuild/linux-s390x': 0.18.20
+ '@esbuild/linux-x64': 0.18.20
+ '@esbuild/netbsd-x64': 0.18.20
+ '@esbuild/openbsd-x64': 0.18.20
+ '@esbuild/sunos-x64': 0.18.20
+ '@esbuild/win32-arm64': 0.18.20
+ '@esbuild/win32-ia32': 0.18.20
+ '@esbuild/win32-x64': 0.18.20
+ dev: true
+
/fast-glob@3.2.12:
resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
engines: {node: '>=8.6.0'}
@@ -289,6 +524,14 @@ packages:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
dev: true
+ /fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
@@ -358,12 +601,19 @@ packages:
resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
dev: true
+ /js-yaml@4.1.0:
+ resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
+ hasBin: true
+ dependencies:
+ argparse: 2.0.1
+ dev: true
+
/jsonfile@6.1.0:
resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
dependencies:
universalify: 2.0.0
optionalDependencies:
- graceful-fs: registry.npmmirror.com/graceful-fs@4.2.11
+ graceful-fs: 4.2.11
dev: true
/jszip@3.10.1:
@@ -442,6 +692,12 @@ packages:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
dev: true
+ /nanoid@3.3.7:
+ resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+ dev: true
+
/normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
@@ -475,6 +731,15 @@ packages:
engines: {node: '>=8.6'}
dev: true
+ /postcss@8.4.33:
+ resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==}
+ engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ nanoid: 3.3.7
+ picocolors: 1.0.0
+ source-map-js: 1.0.2
+ dev: true
+
/process-nextick-args@2.0.1:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
dev: true
@@ -517,6 +782,14 @@ packages:
- utf-8-validate
dev: true
+ /rollup@3.29.4:
+ resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==}
+ engines: {node: '>=14.18.0', npm: '>=8.0.0'}
+ hasBin: true
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: true
+
/run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
dependencies:
@@ -541,6 +814,10 @@ packages:
resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
dev: true
+ /siyuan@0.9.0:
+ resolution: {integrity: sha512-pE1zKCMErl9EOTxmGxT7YlgZe8tC5C0MgwVXL+zUrEaMUDUdMYK6XR0e9YHgSUY96VoTbtSkHpZinkNg1/8zaQ==}
+ dev: true
+
/source-map-js@1.0.2:
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
engines: {node: '>=0.10.0'}
@@ -566,6 +843,10 @@ packages:
engines: {node: '>= 8'}
dev: true
+ /sy-plugin-changelog@0.0.7:
+ resolution: {integrity: sha512-2xiSeiyp1OzMW+iuYGcQ8R+/3cxf6a4DEXwGxWXhdvDp6MdPJYsgyza/M++YoLP7B0TdDQneVWyMMMCA4y4vQg==}
+ dev: true
+
/to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
@@ -633,7 +914,7 @@ packages:
fast-glob: 3.2.12
fs-extra: 11.1.1
picocolors: 1.0.0
- vite: registry.npmmirror.com/vite@4.5.2(@types/node@20.2.0)(sass@1.62.1)
+ vite: 4.5.2(@types/node@20.2.0)(sass@1.62.1)
dev: true
/vite-plugin-zip-pack@1.0.5(vite@4.5.2):
@@ -642,7 +923,44 @@ packages:
vite: '>=2.x'
dependencies:
jszip: 3.10.1
- vite: registry.npmmirror.com/vite@4.5.2(@types/node@20.2.0)(sass@1.62.1)
+ vite: 4.5.2(@types/node@20.2.0)(sass@1.62.1)
+ dev: true
+
+ /vite@4.5.2(@types/node@20.2.0)(sass@1.62.1):
+ resolution: {integrity: sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': '>= 14'
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ dependencies:
+ '@types/node': 20.2.0
+ esbuild: 0.18.20
+ postcss: 8.4.33
+ rollup: 3.29.4
+ sass: 1.62.1
+ optionalDependencies:
+ fsevents: 2.3.3
dev: true
/vitefu@0.2.4(vite@4.5.2):
@@ -653,7 +971,7 @@ packages:
vite:
optional: true
dependencies:
- vite: registry.npmmirror.com/vite@4.5.2(@types/node@20.2.0)(sass@1.62.1)
+ vite: 4.5.2(@types/node@20.2.0)(sass@1.62.1)
dev: true
/wrappy@1.0.2:
@@ -677,389 +995,3 @@ packages:
resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
engines: {node: '>=6'}
dev: true
-
- registry.npmmirror.com/@esbuild/android-arm64@0.18.20:
- resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz}
- name: '@esbuild/android-arm64'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [android]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/@esbuild/android-arm@0.18.20:
- resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz}
- name: '@esbuild/android-arm'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [arm]
- os: [android]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/@esbuild/android-x64@0.18.20:
- resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz}
- name: '@esbuild/android-x64'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [x64]
- os: [android]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/@esbuild/darwin-arm64@0.18.20:
- resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz}
- name: '@esbuild/darwin-arm64'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/@esbuild/darwin-x64@0.18.20:
- resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz}
- name: '@esbuild/darwin-x64'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [x64]
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/@esbuild/freebsd-arm64@0.18.20:
- resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz}
- name: '@esbuild/freebsd-arm64'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [freebsd]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/@esbuild/freebsd-x64@0.18.20:
- resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz}
- name: '@esbuild/freebsd-x64'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [x64]
- os: [freebsd]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/@esbuild/linux-arm64@0.18.20:
- resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz}
- name: '@esbuild/linux-arm64'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/@esbuild/linux-arm@0.18.20:
- resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz}
- name: '@esbuild/linux-arm'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [arm]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/@esbuild/linux-ia32@0.18.20:
- resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz}
- name: '@esbuild/linux-ia32'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/@esbuild/linux-loong64@0.18.20:
- resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz}
- name: '@esbuild/linux-loong64'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [loong64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/@esbuild/linux-mips64el@0.18.20:
- resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz}
- name: '@esbuild/linux-mips64el'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [mips64el]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/@esbuild/linux-ppc64@0.18.20:
- resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz}
- name: '@esbuild/linux-ppc64'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/@esbuild/linux-riscv64@0.18.20:
- resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz}
- name: '@esbuild/linux-riscv64'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [riscv64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/@esbuild/linux-s390x@0.18.20:
- resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz}
- name: '@esbuild/linux-s390x'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [s390x]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/@esbuild/linux-x64@0.18.20:
- resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz}
- name: '@esbuild/linux-x64'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [x64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/@esbuild/netbsd-x64@0.18.20:
- resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz}
- name: '@esbuild/netbsd-x64'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [x64]
- os: [netbsd]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/@esbuild/openbsd-x64@0.18.20:
- resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz}
- name: '@esbuild/openbsd-x64'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [x64]
- os: [openbsd]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/@esbuild/sunos-x64@0.18.20:
- resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz}
- name: '@esbuild/sunos-x64'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [x64]
- os: [sunos]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/@esbuild/win32-arm64@0.18.20:
- resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz}
- name: '@esbuild/win32-arm64'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/@esbuild/win32-ia32@0.18.20:
- resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz}
- name: '@esbuild/win32-ia32'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/@esbuild/win32-x64@0.18.20:
- resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz}
- name: '@esbuild/win32-x64'
- version: 0.18.20
- engines: {node: '>=12'}
- cpu: [x64]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/esbuild@0.18.20:
- resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild/-/esbuild-0.18.20.tgz}
- name: esbuild
- version: 0.18.20
- engines: {node: '>=12'}
- hasBin: true
- requiresBuild: true
- optionalDependencies:
- '@esbuild/android-arm': registry.npmmirror.com/@esbuild/android-arm@0.18.20
- '@esbuild/android-arm64': registry.npmmirror.com/@esbuild/android-arm64@0.18.20
- '@esbuild/android-x64': registry.npmmirror.com/@esbuild/android-x64@0.18.20
- '@esbuild/darwin-arm64': registry.npmmirror.com/@esbuild/darwin-arm64@0.18.20
- '@esbuild/darwin-x64': registry.npmmirror.com/@esbuild/darwin-x64@0.18.20
- '@esbuild/freebsd-arm64': registry.npmmirror.com/@esbuild/freebsd-arm64@0.18.20
- '@esbuild/freebsd-x64': registry.npmmirror.com/@esbuild/freebsd-x64@0.18.20
- '@esbuild/linux-arm': registry.npmmirror.com/@esbuild/linux-arm@0.18.20
- '@esbuild/linux-arm64': registry.npmmirror.com/@esbuild/linux-arm64@0.18.20
- '@esbuild/linux-ia32': registry.npmmirror.com/@esbuild/linux-ia32@0.18.20
- '@esbuild/linux-loong64': registry.npmmirror.com/@esbuild/linux-loong64@0.18.20
- '@esbuild/linux-mips64el': registry.npmmirror.com/@esbuild/linux-mips64el@0.18.20
- '@esbuild/linux-ppc64': registry.npmmirror.com/@esbuild/linux-ppc64@0.18.20
- '@esbuild/linux-riscv64': registry.npmmirror.com/@esbuild/linux-riscv64@0.18.20
- '@esbuild/linux-s390x': registry.npmmirror.com/@esbuild/linux-s390x@0.18.20
- '@esbuild/linux-x64': registry.npmmirror.com/@esbuild/linux-x64@0.18.20
- '@esbuild/netbsd-x64': registry.npmmirror.com/@esbuild/netbsd-x64@0.18.20
- '@esbuild/openbsd-x64': registry.npmmirror.com/@esbuild/openbsd-x64@0.18.20
- '@esbuild/sunos-x64': registry.npmmirror.com/@esbuild/sunos-x64@0.18.20
- '@esbuild/win32-arm64': registry.npmmirror.com/@esbuild/win32-arm64@0.18.20
- '@esbuild/win32-ia32': registry.npmmirror.com/@esbuild/win32-ia32@0.18.20
- '@esbuild/win32-x64': registry.npmmirror.com/@esbuild/win32-x64@0.18.20
- dev: true
-
- registry.npmmirror.com/fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz}
- name: fsevents
- version: 2.3.3
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/graceful-fs@4.2.11:
- resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz}
- name: graceful-fs
- version: 4.2.11
- requiresBuild: true
- dev: true
- optional: true
-
- registry.npmmirror.com/nanoid@3.3.7:
- resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz}
- name: nanoid
- version: 3.3.7
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
- dev: true
-
- registry.npmmirror.com/picocolors@1.0.0:
- resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz}
- name: picocolors
- version: 1.0.0
- dev: true
-
- registry.npmmirror.com/postcss@8.4.33:
- resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss/-/postcss-8.4.33.tgz}
- name: postcss
- version: 8.4.33
- engines: {node: ^10 || ^12 || >=14}
- dependencies:
- nanoid: registry.npmmirror.com/nanoid@3.3.7
- picocolors: registry.npmmirror.com/picocolors@1.0.0
- source-map-js: registry.npmmirror.com/source-map-js@1.0.2
- dev: true
-
- registry.npmmirror.com/rollup@3.29.4:
- resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rollup/-/rollup-3.29.4.tgz}
- name: rollup
- version: 3.29.4
- engines: {node: '>=14.18.0', npm: '>=8.0.0'}
- hasBin: true
- optionalDependencies:
- fsevents: registry.npmmirror.com/fsevents@2.3.3
- dev: true
-
- registry.npmmirror.com/siyuan@0.9.0:
- resolution: {integrity: sha512-pE1zKCMErl9EOTxmGxT7YlgZe8tC5C0MgwVXL+zUrEaMUDUdMYK6XR0e9YHgSUY96VoTbtSkHpZinkNg1/8zaQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/siyuan/-/siyuan-0.9.0.tgz}
- name: siyuan
- version: 0.9.0
- dev: true
-
- registry.npmmirror.com/source-map-js@1.0.2:
- resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz}
- name: source-map-js
- version: 1.0.2
- engines: {node: '>=0.10.0'}
- dev: true
-
- registry.npmmirror.com/sy-plugin-changelog@0.0.7:
- resolution: {integrity: sha512-2xiSeiyp1OzMW+iuYGcQ8R+/3cxf6a4DEXwGxWXhdvDp6MdPJYsgyza/M++YoLP7B0TdDQneVWyMMMCA4y4vQg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/sy-plugin-changelog/-/sy-plugin-changelog-0.0.7.tgz}
- name: sy-plugin-changelog
- version: 0.0.7
- dev: true
-
- registry.npmmirror.com/vite@4.5.2(@types/node@20.2.0)(sass@1.62.1):
- resolution: {integrity: sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vite/-/vite-4.5.2.tgz}
- id: registry.npmmirror.com/vite/4.5.2
- name: vite
- version: 4.5.2
- engines: {node: ^14.18.0 || >=16.0.0}
- hasBin: true
- peerDependencies:
- '@types/node': '>= 14'
- less: '*'
- lightningcss: ^1.21.0
- sass: '*'
- stylus: '*'
- sugarss: '*'
- terser: ^5.4.0
- peerDependenciesMeta:
- '@types/node':
- optional: true
- less:
- optional: true
- lightningcss:
- optional: true
- sass:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
- dependencies:
- '@types/node': 20.2.0
- esbuild: registry.npmmirror.com/esbuild@0.18.20
- postcss: registry.npmmirror.com/postcss@8.4.33
- rollup: registry.npmmirror.com/rollup@3.29.4
- sass: 1.62.1
- optionalDependencies:
- fsevents: registry.npmmirror.com/fsevents@2.3.3
- dev: true
diff --git a/src/i18n/en_US.json b/src/i18n/en_US.json
deleted file mode 100644
index 5de957b..0000000
--- a/src/i18n/en_US.json
+++ /dev/null
@@ -1,198 +0,0 @@
-{
- "Name": "Daily Note Today",
- "NewVer": " new version",
- "Setting": {
- "name": "Setting",
- "OpenOnStart": {
- "title": "Auto-open Daily Note",
- "text": "Open Today's daily note automatically when the plugin is loaded"
- },
- "AutoOpenAfterSync": {
- "title": "Auto create DN only after synchronization 🧪Experimental Features",
- "text": "To solve the document conflict problem caused by synchronization + automatic opening of DN, try opening DN automatically after synchronization.
This feature is experimental and lacks sufficient testing, so please use it at your discretion.
Practical tests shown it not very useful, not recommended "
- },
- "DefaultNotebook": {
- "title": "Default Notebook ID",
- "text": "The notebook where the daily note is created by default, use the first notebook if blank",
- "placeholder": "Please copy from notebook's ID"
- },
- "DisableAutoCreateOnMobile": {
- "title": "Disable Auto Create Diary On Mobile",
- "text": "This feature is mainly to avoid the problem of inconvenient handling when generating conflict diaries in mobile; if this option is turned on, \"Open Today's Diary Automatically\" will not work on mobile."
- },
- "NotebookBlacklist": {
- "title": "Notebook Blacklist",
- "text": "Notebook in the blacklist will not be shown in the dropdown menu. Default notebook can not be in the blacklist",
- "button": "Set it"
- },
- "update": {
- "title": "Update Status",
- "text": "Update the status of the notebook when the notebook configuration changes",
- "button": "Update"
- },
- "NotebookSort": {
- "title": "Notebook Sorting Scheme",
- "text": "1. Same what document tree shows 2. Same the order defined in custom sorting mode",
- "options": {
- "doc-tree": "Same as document tree",
- "custom-sort": "Same as custom sorting"
- }
- },
- "IconPosition": {
- "title": "Icon Position",
- "text": "Take effect after reloading",
- "options": {
- "left": "Topbar left",
- "right": "Topbar right"
- }
- },
- "EnableMove": {
- "title": "Enable \"Move Block\" in menu",
- "text": "When enabled, the \"Move Block\" item will be added to the menu after clicking on the block icon"
- },
- "EnableReserve": {
- "title": "Enable \"Reserve Block\" in menu",
- "text": "When enabled, the \"Reserve Block\" item will be added to the menu after clicking on the block icon"
- },
- "EnableResvDock": {
- "title": "Enable \"Show reservations\" in dock menu",
- "text": "When enabled, the \"Show reservations\" pannel will be added to the dock menu at the right bottom side of the dock bar"
- },
- "ExpandGutterMenu": {
- "title": "Expand all block menu items",
- "text": "When enabled, the plugin's block menu items are expanded to appear as a separate secondary menu under the plugin menu"
- },
- "PopupReserveDialog": {
- "title": "Popup Confirmation Window When Reserving a Block",
- "text": "Automatically displays a confirmation window when reserving a block to ensure the date is correct."
- },
- "ResvEmbedAt": {
- "title": "Insert reservations at",
- "text": "Insert reservations at top or bottom of today's daily note",
- "options": {
- "top": "Top of the document",
- "bottom": "Bottom of the document"
- }
- },
- "RetvType": {
- "title": "Insert reservations as",
- "text": "Target block's type for reservations, could be embed block, link, or reference",
- "options": {
- "embed": "Embed",
- "link": "Link",
- "ref": "Ref"
- }
- },
- "SetPastDailyNoteAttr": {
- "title": "Add document attribute to past daily notes",
- "text": "✨ Adding the custom-dailynote attribute to past daily notes for compatibility with SiYuan versions prior to 2.11.1.
If you don't understand what this button is for, it is recommended that you press it, and it won't bring you any extra trouble!
Note: Clicking this button once is enough.",
- "button": "GO!"
- },
- "HighlightResv": {
- "title": "Highlight reservation icon",
- "text": "Highlight reservation icon in dock bar when there is a reservation on the day"
- },
- "AutoHandleDuplicate": {
- "title": "Auto-handle duplicates",
- "text": "Automatically handel with duplicate daily notes while detected, without popup dialog"
- },
- "AutoHandleDuplicateMethod": {
- "title": "Auto-handle duplicates' method",
- "text": "When detected duplicate daily notes, how to handle with them",
- "options": {
- "AllMerge": "Merge all",
- "TrashDup": "Move to trash",
- "SmartMerge": "Merge smartly",
- "DeleteDup": "Delete directly"
- }
- }
- },
- "SettingGroups": {
- "enable": "Enable",
- "interact": "Interact",
- "dailynote": "Daily Note",
- "reservation": "Reservation"
- },
- "TrashBinDocContent": "- This is a trash bin document created by the \"Daily Note Today\" plugin.\n- The reason you see this document is that you used the \"Move to Trash\" feature in the plugin to automatically handle duplicate daily note documents.\n- All documents under this document are daily notes that were previously detected as duplicate documents by the \"Daily Note Today\" plugin.\n- If you find this trash bin document bothersome, you can delete it entirely. The plugin will recreate the trash bin document when needed.",
- "Open": "Open daily note",
- "Create": "Create daily note",
- "UpdateAll": "Notebook status updated",
- "InvalidDefaultNotebook": "
Sorry, but the plugin can not find a notebook that corresponds to this ID; perhaps it is an illegitimate ID, or the corresponding notebook has been closed by yourself.
We suggest that you double-check the plugin's settings.
Ooops!??It should have been reservation blocks here, but the blocks are not found
Maybe they were deleted or the notebook is closed
" - }, - "ConflictDiary": { - "part1": [ - "#### Note: Duplicate daily notes detected", - "Conflict files are listed below, the last line, indicated in bold, represents the earliest dailynote and will be treated as the main dailynote for auto-handeling", - "| Document ID | Title | Created | Updated | Notebook |", - "| --- | --- | --- | --- | --- |" - ], - "part2": [ - "- **Why does this happen?**", - " You may have created a daily note on another device before and then created a daily note on this device, resulting in a synchronization conflict.", - "- **How to solve it manually?**", - " Please merge and delete redundant diaries manually: Open today's daily note, locate the daily note document, and the conflicting document will be nearby.", - "- **What do the following buttons mean?**", - " Auto-handeling method, please refer to the plugin documentation for details." - ], - "part3": [ - "", - "We found that in addition to the dailynote document conflict, the parent document at the upper level seems to be in conflict as well, the \"Auto Handler\" cannot handle this complexity of merging document trees.", - "
", - "", - "You can still to use the \"Auto Handler\" feature, while it is recommended that you manually deal with duplicate parent documents after auto-handling.", - "
" - ], - "AutoMerge": "Auto merge", - "HeadingMarkdown": "# Duplicate diaries are listed below", - "success": "Success", - "fail": "Fail due to unknown reason, please merge them manually" - }, - "DockReserve": { - "arial": "Daily Note Today Reservations", - "title": "Reservations", - "refresh": "refresh", - "expand": "expand", - "collapse": "collapse", - "min": "minimize", - "emptyContent": "No related content found", - "PopupResv": "Inspect reservations" - }, - "Blacklist": { - "name": "Blacklist", - "toggle": "Add to blacklist", - "update": "Update blacklist" - } -} \ No newline at end of file diff --git a/src/i18n/en_US.yaml b/src/i18n/en_US.yaml new file mode 100644 index 0000000..daadd9b --- /dev/null +++ b/src/i18n/en_US.yaml @@ -0,0 +1,209 @@ +--- +Name: Daily Note Today +NewVer: " new version" +Setting: + name: Setting + OpenOnStart: + title: Auto-open Daily Note + text: Open Today's daily note automatically when the plugin is loaded + AutoOpenAfterSync: + title: + "Auto create DN only after synchronization \U0001F9EAExperimental Features" + text: + To solve the document conflict problem caused by synchronization + automatic + opening of DN, try opening DN automatically after synchronization.Sorry, but the plugin can not find a notebook that corresponds + to this ID; perhaps it is an illegitimate ID, or the corresponding notebook has + been closed by yourself.
We suggest that you double-check the plugin's settings. +
Ooops!??It should have been reservation blocks here, but the + blocks are not found
Maybe they were deleted or the notebook is closed
" +ConflictDiary: + part1: + - "#### Note: Duplicate daily notes detected" + - Conflict files are listed below, the last line, indicated in bold, represents + the earliest dailynote and will be treated as the main dailynote for auto-handeling + - "| Document ID | Title | Created | Updated | Notebook |" + - "| --- | --- | --- | --- | --- |" + part2: + - "- **Why does this happen?**" + - " You may have created a daily note on another device before and then created + a daily note on this device, resulting in a synchronization conflict." + - "- **How to solve it manually?**" + - " Please merge and delete redundant diaries manually: Open today's daily note, + locate the daily note document, and the conflicting document will be nearby." + - "- **What do the following buttons mean?**" + - " Auto-handeling method, please refer to the plugin documentation for details." + part3: + - '' + - We found that in addition to the dailynote document conflict, the parent document + at the upper level seems to be in conflict as well, the "Auto Handler" cannot + handle this complexity of merging document trees. + - "
" + - '' + - You can still to use the "Auto Handler" feature, while it is recommended + that you manually deal with duplicate parent documents after auto-handling. + - "
" + AutoMerge: Auto merge + HeadingMarkdown: "# Duplicate diaries are listed below" + success: Success + fail: Fail due to unknown reason, please merge them manually +DockReserve: + arial: Daily Note Today Reservations + title: Reservations + refresh: refresh + expand: expand + collapse: collapse + min: minimize + emptyContent: No related content found + PopupResv: Inspect reservations +Blacklist: + name: Blacklist + toggle: Add to blacklist + update: Update blacklist diff --git a/src/i18n/zh_CN.json b/src/i18n/zh_CN.json deleted file mode 100644 index 2c030f5..0000000 --- a/src/i18n/zh_CN.json +++ /dev/null @@ -1,199 +0,0 @@ -{ - "Name": "今日笔记", - "NewVer": "新版本", - "Setting": { - "name": "设置", - "OpenOnStart": { - "title": "自动打开 Daily Note", - "text": "插件启动后自动打开今日的 Daily Note" - }, - "AutoOpenAfterSync": { - "title": "同步后再创建日记 🧪实验性功能", - "text": "为了解决同步+自动打开日记造成的文件冲突问题,尝试在同步之后在自动打开日记。很抱歉, 插件没有找对应这个 ID 的笔记本; 可能这是一个不合法的 ID, 或对应的笔记本被你关闭了。
建议你仔细检查插件的设置。
", - "ContextMenu": { - "PruneResv": "清理无效预约" - }, - "MoveMenu": { - "Move": "移动到", - "NotLi": "不可以移动单独的列表项,请移动整个列表!", - "VerIssue": "当前版本不支持移动块功能(≥ 2.8.8)", - "NotMoveDiary": "请不要移动日记本身!" - }, - "ReserveMenu": { - "name": "预约此块", - "Match": "匹配到日期", - "Title": "确认将目标块预约到", - "Date404": "没有找到可用于预约的日期!", - "DateInvalid": "不是一个合法的日期!", - "DatePast": "预约日期只能是未来!", - "Success": "预约成功!" - }, - "DeReserveMenu": { - "name": "取消预约", - "Success": "成功取消预约!" - }, - "NewDay": [ - "今天是", - "笔记状态已更新" - ], - "ChangeLog": { - "name": "更新日志", - "file": "CHANGELOG_zh_CN" - }, - "Msg": { - "PruneResv": "清理完成", - "Resv404": "本来今天是有预约的, 但是我们发现预约块都不见了
可能是被删除了或者对应的笔记本已经关闭
你可以在顶栏图标中选择清理无用的预约
" - }, - "ConflictDiary": { - "part1": [ - "#### 注意: 检测到重复的日记", - "冲突文件如下, 其中最后一行加粗的项目为最早的日记, 将被视为主日记来处理:", - "| 文档 ID | 标题 | 创建时间 | 更新时间 | 笔记本 |", - "| --- | --- | --- | --- | --- |" - ], - "part2": [ - "- **为什么会出现这种情况?**", - " 你可能之前已经在别的设备上创建了日记, 然后在这个设备尚又创建了日记,从而导致同步冲突", - "- **应该如何处理?**", - " 请自行合并删除多余的日记: 打开今日的日记, 然后定位日记文档, 冲突的文档就在一旁", - "- **以下几个按钮是什么意思?**", - " 几个不同的自动处理方法, 详情请查看插件文档" - ], - "part3": [ - "", - "我们发现除了日记文档冲突外,上层的父文档似乎也出现了冲突,「自动处理」功能无法处理这种涉及合并文档树的复杂情况", - "
", - "", - "你还是可以继续使用「自动处理」功能,但是建议你在自动合并后手动处理一下重复的父文档", - "
" - ], - "AutoMerge": "自动合并", - "HeadingMarkdown": "# 以下为其他重复的日记", - "success": "自动处理成功", - "fail": "由于未知原因, 自动处理失败, 请手动处理" - }, - "DockReserve": { - "arial": "今日笔记预约", - "title": "预约", - "refresh": "刷新", - "expand": "展开", - "collapse": "折叠", - "min": "最小化", - "emptyContent": "未找到相关内容", - "PopupResv": "查看当日预约" - }, - "Blacklist": { - "name": "黑名单", - "toggle": "加入黑名单", - "update": "更新黑名单" - } -} \ No newline at end of file diff --git a/src/i18n/zh_CN.yaml b/src/i18n/zh_CN.yaml new file mode 100644 index 0000000..b6d9374 --- /dev/null +++ b/src/i18n/zh_CN.yaml @@ -0,0 +1,166 @@ +--- +Name: 今日笔记 +NewVer: 新版本 +Setting: + name: 设置 + OpenOnStart: + title: 自动打开 Daily Note + text: 插件启动后自动打开当日的 Daily Note + AutoOpenAfterSync: + title: "同步后再创建日记 \U0001F9EA实验性功能" + text: + 为了解决同步+自动打开日记造成的文件冲突问题,尝试在同步之后在自动打开日记。很抱歉, 插件没有找对应这个 ID 的笔记本; 可能这是一个不合法的 ID, 或对应的笔记本被你关闭了。
建议你仔细检查插件的设置。
" +ContextMenu: + PruneResv: 清理无效预约 +MoveMenu: + Move: 移动到 + NotLi: 不可以移动单独的列表项,请移动整个列表! + VerIssue: 当前版本不支持移动块功能(≥ 2.8.8) + NotMoveDiary: 请不要移动日记本身! +ReserveMenu: + name: 预约此块 + Match: 匹配到日期 + Title: 确认将目标块预约到 + Date404: 没有找到可用于预约的日期! + DateInvalid: 不是一个合法的日期! + DatePast: 预约日期只能是未来! + Success: 预约成功! +DeReserveMenu: + name: 取消预约 + Success: 成功取消预约! +NewDay: + - 今天是 + - 笔记状态已更新 +ChangeLog: + name: 更新日志 + file: CHANGELOG_zh_CN +Msg: + PruneResv: 清理完成 + Resv404: "本来今天是有预约的, 但是我们发现预约块都不见了
可能是被删除了或者对应的笔记本已经关闭
你可以在顶栏图标中选择清理无用的预约
" +ConflictDiary: + part1: + - "#### 注意: 检测到重复的日记" + - "冲突文件如下, 其中最后一行加粗的项目为最早的日记, 将被视为主日记来处理:" + - "| 文档 ID | 标题 | 创建时间 | 更新时间 | 笔记本 |" + - "| --- | --- | --- | --- | --- |" + part2: + - "- **为什么会出现这种情况?**" + - " 你可能之前已经在别的设备上创建了日记, 然后在这个设备尚又创建了日记,从而导致同步冲突" + - "- **应该如何处理?**" + - " 请自行合并删除多余的日记: 打开今日的日记, 然后定位日记文档, 冲突的文档就在一旁" + - "- **以下几个按钮是什么意思?**" + - " 几个不同的自动处理方法, 详情请查看插件文档" + part3: + - '' + - 我们发现除了日记文档冲突外,上层的父文档似乎也出现了冲突,「自动处理」功能无法处理这种涉及合并文档树的复杂情况 + - "
" + - '' + - "你还是可以继续使用「自动处理」功能,但是建议你在自动合并后手动处理一下重复的父文档" + - "
" + AutoMerge: 自动合并 + HeadingMarkdown: "# 以下为其他重复的日记" + success: 自动处理成功 + fail: 由于未知原因, 自动处理失败, 请手动处理 +DockReserve: + arial: 今日笔记预约 + title: 预约 + refresh: 刷新 + expand: 展开 + collapse: 折叠 + min: 最小化 + emptyContent: 未找到相关内容 + PopupResv: 查看当日预约 +Blacklist: + name: 黑名单 + toggle: 加入黑名单 + update: 更新黑名单 diff --git a/src/utils.ts b/src/utils.ts index 7e8373a..d08b1e6 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,27 +1,15 @@ -import zh_Hans from "./i18n/zh_CN.json"; -import en_US from "./i18n/en_US.json"; +// import zh_Hans from "./i18n/zh_CN.json"; +// // import en_US from "./i18n/en_US.json"; +import zh_Hans from '../dev/i18n/zh_CN.json'; + + import { App, Plugin } from "siyuan"; //@ts-ignore export const lute = window.Lute!.New(); export type I18N = typeof zh_Hans; +// export type I18N = any; -export function checkI18n(): boolean { - function checkKeys(obj1: any, obj2: any): boolean { - if (typeof obj1 !== typeof obj2) return false; - if (typeof obj1 === "object") { - for (const key in obj1) { - if (!checkKeys(obj1[key], obj2[key])) return false; - } - } - return true; - } - return checkKeys(zh_Hans, en_US); -} - -// if (!checkI18n()) { -// showMessage('i18n check failed', 5000, 'error'); -// } export function debug(...msg: any[]): void { console.debug(`[DailyNoteToday][DEBUG] ${msg}`); diff --git a/vite.config.ts b/vite.config.ts index 3696972..2ebd89b 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -7,10 +7,12 @@ import { svelte } from "@sveltejs/vite-plugin-svelte" import zipPack from "vite-plugin-zip-pack"; import fg from 'fast-glob'; +import vitePluginYamlI18n from './yaml-plugin'; + const args = minimist(process.argv.slice(2)) const isWatch = args.watch || args.w || false -const devDistDir = "./dev" -const distDir = isWatch ? devDistDir : "./dist" +const devDistDir = "dev" +const distDir = isWatch ? devDistDir : "dist" console.log("isWatch=>", isWatch) console.log("distDir=>", distDir) @@ -44,6 +46,11 @@ export default defineConfig({ plugins: [ svelte(), + vitePluginYamlI18n({ + inDir: 'src/i18n', + outDir: isWatch ? 'dev/i18n' : 'dist/i18n', + }), + viteStaticCopy({ targets: [ { @@ -77,7 +84,11 @@ export default defineConfig({ dest: "./", }, { - src: "./src/i18n/**", + src: "./src/i18n/*.json", + dest: "./i18n/" + }, + { + src: "./src/i18n/*.md", dest: "./i18n/", transform: transformMdFile }, @@ -105,7 +116,8 @@ export default defineConfig({ // 或是用来指定是应用哪种混淆器 // boolean | 'terser' | 'esbuild' // 不压缩,用于调试 - minify: !isWatch, + // minify: !isWatch, + minify: false, lib: { // Could also be a dictionary or array of multiple entry points @@ -126,6 +138,7 @@ export default defineConfig({ console.log('watch-external buildStart'); const files = await fg([ 'src/i18n/*.json', + 'src/i18n/*.yaml', './README.md', './plugin.json' ]); diff --git a/yaml-plugin.js b/yaml-plugin.js new file mode 100644 index 0000000..59b1c80 --- /dev/null +++ b/yaml-plugin.js @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2024 by frostime. All Rights Reserved. + * @Author : frostime + * @Date : 2024-04-05 21:27:55 + * @FilePath : /yaml-plugin.js + * @LastEditTime : 2024-04-05 21:58:22 + * @Description : 去妮玛的 json i18n,我就是要用 yaml + */ +// plugins/vite-plugin-parse-yaml.js +import fs from 'fs'; +import yaml from 'js-yaml'; +import { resolve } from 'path'; + +export default function vitePluginYamlI18n(options = {}) { + // Default options with a fallback + const DefaultOptions = { + inDir: 'src/i18n', + outDir: 'dist/i18n', + }; + + const finalOptions = { ...DefaultOptions, ...options }; + + return { + name: 'vite-plugin-yaml-i18n', + buildStart() { + console.log('🌈 解析 I18n: YAML to JSON..'); + const i18nPath = finalOptions.inDir; + const outputPath = finalOptions.outDir + + if (!fs.existsSync(outputPath)) { + fs.mkdirSync(outputPath, { recursive: true }); + } + + const files = fs.readdirSync(i18nPath); + for (const file of files) { + if (file.endsWith('.yaml') || file.endsWith('.yml')) { + console.log(`-- Parsing ${file}`) + //检查是否有同名的json文件 + const jsonFile = file.replace(/\.(yaml|yml)$/, '.json'); + if (files.includes(jsonFile)) { + console.log(`---- File ${jsonFile} already exists, skipping...`); + // continue; + } + try { + const filePath = resolve(i18nPath, file); + const fileContents = fs.readFileSync(filePath, 'utf8'); + const parsed = yaml.load(fileContents); + const jsonContent = JSON.stringify(parsed, null, 2); + const outputFilePath = resolve(outputPath, file.replace(/\.(yaml|yml)$/, '.json')); + console.log(`---- Writing to ${outputFilePath}`); + fs.writeFileSync(outputFilePath, jsonContent); + } catch (error) { + this.error(`Error parsing YAML file ${file}: ${error.message}`); + } + } + } + }, + }; +}