deno-anki
機能
fork元からの変更点
node対応を外した
TypeScriptで書き換えた
Denoに対応した
scrapboxから使うときは、まとめてbundleするのではなくCDN経由で注入したいため
API設計を元repoから変える
設定を予め全部JSONで決めて、一発で作らせる?
一番汎用性がありそう
immutableなAPIにする
code:ts
export const makeAnkiDB: (init: {
decks: {
/** used as deck ID */
created: number;
updated?: number;
name: string;
description?: string;
}[];
notes: {
guid: string;
/** used as note ID */
created: number;
updated?: number;
noteTypeId: string;
tags: string[];
fields: string[];
}[];
noteTypes: {
/** used as model(aka. note type) ID */
created: number;
updated?: number;
/** @default 1 */
deckId?: number;
fields: {
name: string;
rtl?: boolean;
font?: string;
fontSize?: number;
}[] | string[];
templates: {
name: string;
question: string;
answer: string;
}[];
css?: string;
isCloze?: boolean;
}[];
}, sql: SQLDatabase) => Promise<Uint8Array>
export const makeApkg: (
ankiDB: Uint8Array,
media:
Record<string, InputFormat> | Map<string, InputFormat>,
jsZip: :JSZip,
) => Promise<Uint8Array>;
やること
✅函数名変更
makecollectionとmakepackage
✅idgenでミスってたとこ
jsdoc
後回し
testコードを綺麗にする
後回し
testケースを増やす
後回し
modはmillisecondsだった
wikiの説明が古かったようだ
課題
JSZip.prototype.generatorAsync()で止まっていることはわかっている
JSZipのみの単体テストを試してみるか
example/server/server.tsが<C-c>で強制終了しないと終了しない現象との関連性も気になる
memory leaksが原因かも
なんでだろtakker.icon
20行目のhttps://code2svg.vercel.app/svg/L20/https://raw.githubusercontent.com/takker99/deno-anki/2a3ed108e2ec4f25b27c40a287c01be7ce05dd6e/deps.ts#.svg
https://code2svg.vercel.app/svg/L10-26/https://raw.githubusercontent.com/takker99/deno-anki/2a3ed108e2ec4f25b27c40a287c01be7ce05dd6e/deps.ts#.svg
エラーメッセージに、なぜかnpmjs.comからimportされたファイルパスが写っていた
多分この型のせいだろう
どうせNode.jsをサポートする予定はないし、InputByTypeから削ってしまうか
rustとpythonによる実装もあったみたい
どちらも解説がくわしい
code:mod.ts