diff --git a/package.json b/package.json index 1b7a513ff0..8868fede5b 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "@koa/multer": "3.0.0", "@koa/router": "9.0.1", "@sinonjs/fake-timers": "6.0.1", - "@syuilo/aiscript": "0.7.2", + "@syuilo/aiscript": "0.8.0", "@types/bcryptjs": "2.4.2", "@types/bull": "3.14.0", "@types/cbor": "5.0.0", diff --git a/src/client/init.ts b/src/client/init.ts index 134285ca8e..b819a16e5a 100644 --- a/src/client/init.ts +++ b/src/client/init.ts @@ -9,6 +9,8 @@ import PortalVue from 'portal-vue'; import VAnimateCss from 'v-animate-css'; import VueI18n from 'vue-i18n'; import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'; +import { AiScript } from '@syuilo/aiscript'; +import { deserialize } from '@syuilo/aiscript/built/serializer'; import VueHotkey from './scripts/hotkey'; import App from './app.vue'; @@ -26,7 +28,6 @@ import createStore from './store'; import { clientDb, get, count } from './db'; import { setI18nContexts } from './scripts/set-i18n-contexts'; import { createPluginEnv } from './scripts/aiscript/api'; -import { AiScript } from '@syuilo/aiscript'; Vue.use(Vuex); Vue.use(VueHotkey); @@ -267,7 +268,7 @@ os.init(async () => { store.commit('initPlugin', { plugin, aiscript }); - aiscript.exec(plugin.ast); + aiscript.exec(deserialize(plugin.ast)); } if (store.getters.isSignedIn) { diff --git a/src/client/pages/preferences/plugins.vue b/src/client/pages/preferences/plugins.vue index ee0ac3652c..8bd522ddc6 100644 --- a/src/client/pages/preferences/plugins.vue +++ b/src/client/pages/preferences/plugins.vue @@ -42,12 +42,13 @@ <script lang="ts"> import Vue from 'vue'; +import { AiScript, parse } from '@syuilo/aiscript'; +import { serialize } from '@syuilo/aiscript/built/serializer'; import { faPlug, faSave, faTrashAlt, faFolderOpen, faDownload, faCog } from '@fortawesome/free-solid-svg-icons'; import MkButton from '../../components/ui/button.vue'; import MkTextarea from '../../components/ui/textarea.vue'; import MkSelect from '../../components/ui/select.vue'; import MkInfo from '../../components/ui/info.vue'; -import { AiScript, parse } from '@syuilo/aiscript'; export default Vue.extend({ components: { @@ -131,7 +132,7 @@ export default Vue.extend({ id, name, version, author, description, permissions, config }, token, - ast // TODO: astにはMapが含まれることがあり、MapはJSONとしてシリアライズできないのでバグる。どうにかする + ast: serialize(ast) }); this.$root.dialog({ diff --git a/yarn.lock b/yarn.lock index cc5c90beac..2000b823ee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -192,10 +192,10 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@syuilo/aiscript@0.7.2": - version "0.7.2" - resolved "https://registry.yarnpkg.com/@syuilo/aiscript/-/aiscript-0.7.2.tgz#2f30adb14ffa9f1180af83c059927ab306b175a5" - integrity sha512-l8HVTJTq9KLzDqGswOIGlBepkacudUp70EScrLjL7nEL2NKcti7Ui5fwZCrmxazxgGz6NrVNX5UBIOFFyrwr0A== +"@syuilo/aiscript@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@syuilo/aiscript/-/aiscript-0.8.0.tgz#3a895ddd9f5bd5afa1648acb5fd3e6f94f434cbb" + integrity sha512-mrZ3awYf1R81D+OWZctRFiAWUt6xL3A5ovBn2OD8+1hZyX3T7S+awqrhYVLoQPhd/cijz1RT6PE8AEUtuR1J8Q== dependencies: autobind-decorator "2.4.0" chalk "4.0.0"