diff --git a/checksum b/checksum index e7017f6..3cbad6e 100644 --- a/checksum +++ b/checksum @@ -1,3 +1,3 @@ -185429368a2ee8a18ef1437e88de4b56 public/rime.data -9eb1e7b57b665f9cdb82d0aa5b866407 public/rime.js -f44908380a0f747edc0f20693393af94 public/rime.wasm +ebbb49f63e95479887b70c0de04f3d2a public/rime.data +fc04446bfceb2450f05c201d1c204295 public/rime.js +e77712e8aff7bd886fb3b647282e98ce public/rime.wasm diff --git a/doc/deploy.md b/doc/deploy.md index a57b29f..487878c 100644 --- a/doc/deploy.md +++ b/doc/deploy.md @@ -8,9 +8,9 @@ Either provide or * a plum target -(e.g. rime/rime-luna-pinyin) +(e.g. `rime/rime-luna-pinyin`) and a list of schema Ids -(e.g. luna_pinyin). +(e.g. `luna_pinyin`, `luna_pinyin_fluency`). Click `Install`. @@ -29,6 +29,6 @@ After making changes, click `Deploy`. > **_NOTE:_** Because MEMFS is used, all changes will be lost after refresh. Some conventions: -* The rime directory is `/rime`. +* The user data directory is `/rime`. +* The shared data directory is `/usr/share/rime-data`. * OpenCC files are at `/usr/share/opencc`. -* All files in [rime-config](../rime-config/) will be available at `/rime` after you execute `pnpm run wasm`. diff --git a/scripts/build_wasm.mjs b/scripts/build_wasm.mjs index 77a3af9..82d6577 100644 --- a/scripts/build_wasm.mjs +++ b/scripts/build_wasm.mjs @@ -15,7 +15,7 @@ const compileArgs = [ '-s', 'EXPORTED_FUNCTIONS=_init,_set_schema_name,_set_option,_set_ime,_process,_select_candidate_on_current_page,_deploy', '-s', 'EXPORTED_RUNTIME_METHODS=["ccall","FS"]', '--preload-file', `${OPENCC_HOST}@${OPENCC_TARGET}`, - '--preload-file', `${RIME_PATH}/build/default.yaml@rime/build/default.yaml`, + '--preload-file', `${RIME_PATH}/build/default.yaml@/usr/share/rime-data/build/default.yaml`, '-I', 'build/sysroot/usr/include', '-o', 'public/rime.js' ] diff --git a/src/components/MyEditor.vue b/src/components/MyEditor.vue index 44c2981..02ebbc3 100644 --- a/src/components/MyEditor.vue +++ b/src/components/MyEditor.vue @@ -25,7 +25,8 @@ onMounted(() => { '/rime/', '/usr/', '/usr/share/', - '/usr/share/opencc/' + '/usr/share/opencc/', + '/usr/share/rime-data/' ].forEach(wc.value!.expandFolder) }) diff --git a/src/worker.ts b/src/worker.ts index 0546324..b794ef5 100644 --- a/src/worker.ts +++ b/src/worker.ts @@ -51,7 +51,7 @@ async function fetchPrebuilt (schemaId: string) { } const files = getFiles(schemaId) await Promise.all(files.map(async ({ name, target, md5 }) => { - const path = `build/${name}` + const path = `/usr/share/rime-data/build/${name}` try { Module.FS.lookupPath(path) } catch (e) { // not exists @@ -71,7 +71,6 @@ async function setIME (schemaId: string) { const readyPromise = loadWasm('rime.js', { url: '__LIBRESERVICE_CDN__', init () { - Module.FS.chdir('rime') // set up user/shared dir for init Module.ccall('init', 'null', [], []) for (const [schema, name] of Object.entries(schemaName)) { Module.ccall('set_schema_name', 'null', ['string', 'string'], [schema, name]) diff --git a/wasm/api.cpp b/wasm/api.cpp index 876cdc6..e1f2fdb 100644 --- a/wasm/api.cpp +++ b/wasm/api.cpp @@ -56,7 +56,10 @@ void handler(void *context_object, RimeSessionId session_id, std::string get_schema_name(std::string schema) { return schema_name[schema]; } void startRime() { - RimeInitialize(NULL); + RIME_STRUCT(RimeTraits, traits); + traits.user_data_dir = "/rime"; + traits.shared_data_dir = "/usr/share/rime-data"; + RimeInitialize(&traits); RimeSetNotificationHandler(handler, NULL); }