diff --git a/lib/index.d.ts b/lib/index.d.ts index 43f30b9..f2ab828 100644 --- a/lib/index.d.ts +++ b/lib/index.d.ts @@ -1,10 +1,20 @@ -export declare function makeWanikani(apiKey?: string): import("axios-rate-limit").RateLimitedAxiosInstance & { - getKanji(): Promise<{ +import { RateLimitedAxiosInstance } from 'axios-rate-limit'; +/** + * https://docs.api.wanikani.com/20170710/#rate-limit + * + * Requests per minute 60 + * + * @param apiKey @default process.env['WANIKANI_API_KEY'] + * @returns + */ +export declare function makeWanikani(apiKey?: string): WaniKaniAxiosInstance; +export interface WaniKaniAxiosInstance extends RateLimitedAxiosInstance { + kanji(params?: any): AsyncGenerator<{ id: number; level: number; characters: string; - }[]>; - getVocab(): Promise<{ + }>; + vocabulary(params?: any): AsyncGenerator<{ id: number; level: number; characters: string; @@ -12,13 +22,19 @@ export declare function makeWanikani(apiKey?: string): import("axios-rate-limit" ja: string; en: string; }[]; - }[]>; - getLearnt(): Promise<{ + }>; + subjects(params?: any): AsyncGenerator<{ + id: number; + object: string; + data_updated_at: string; + url: string; + data: T; + }>; + assignments(params?: any): AsyncGenerator<{ id: number; srsLevel: number; - }[]>; -}; -export declare type WaniKaniAxiosInstance = ReturnType; + }>; +} export interface IResource { id: number; url: string; diff --git a/lib/index.d.ts.map b/lib/index.d.ts.map index c762c72..17fe8c5 100644 --- a/lib/index.d.ts.map +++ b/lib/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,CAAC,MAAM,SAAmC;;YA2B1D,MAAM;eACH,MAAM;oBACD,MAAM;;;YAsCd,MAAM;eACH,MAAM;oBACD,MAAM;mBACP;YACT,EAAE,EAAE,MAAM,CAAA;YACV,EAAE,EAAE,MAAM,CAAA;SACX,EAAE;;;YA2CC,MAAM;kBACA,MAAM;;EAoCvB;AAED,oBAAY,qBAAqB,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAA;AAEnE,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,GAAG;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,CAAC,CAAA;CACR;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,CAAC,EAAE,CAAA;CACV;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAkB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAEtE;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,MAAM,SAAmC,GACxC,qBAAqB,CAmKvB;AAED,MAAM,WAAW,qBAAsB,SAAQ,wBAAwB;IACrE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,cAAc,CAAC;QAClC,EAAE,EAAE,MAAM,CAAA;QACV,KAAK,EAAE,MAAM,CAAA;QACb,UAAU,EAAE,MAAM,CAAA;KACnB,CAAC,CAAA;IACF,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,cAAc,CAAC;QACvC,EAAE,EAAE,MAAM,CAAA;QACV,KAAK,EAAE,MAAM,CAAA;QACb,UAAU,EAAE,MAAM,CAAA;QAClB,SAAS,EAAE;YACT,EAAE,EAAE,MAAM,CAAA;YACV,EAAE,EAAE,MAAM,CAAA;SACX,EAAE,CAAA;KACJ,CAAC,CAAA;IACF,QAAQ,CAAC,CAAC,GAAG,GAAG,EACd,MAAM,CAAC,EAAE,GAAG,GACX,cAAc,CAAC;QAChB,EAAE,EAAE,MAAM,CAAA;QACV,MAAM,EAAE,MAAM,CAAA;QACd,eAAe,EAAE,MAAM,CAAA;QACvB,GAAG,EAAE,MAAM,CAAA;QACX,IAAI,EAAE,CAAC,CAAA;KACR,CAAC,CAAA;IACF,WAAW,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,cAAc,CAAC;QACxC,EAAE,EAAE,MAAM,CAAA;QACV,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAC,CAAA;CACH;AAED,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,GAAG;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,CAAC,CAAA;CACR;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,CAAC,EAAE,CAAA;CACV;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb"} \ No newline at end of file diff --git a/lib/index.js b/lib/index.js index 77e8781..fc95ce4 100644 --- a/lib/index.js +++ b/lib/index.js @@ -6,6 +6,14 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.makeWanikani = void 0; const axios_1 = __importDefault(require("axios")); const axios_rate_limit_1 = __importDefault(require("axios-rate-limit")); +/** + * https://docs.api.wanikani.com/20170710/#rate-limit + * + * Requests per minute 60 + * + * @param apiKey @default process.env['WANIKANI_API_KEY'] + * @returns + */ function makeWanikani(apiKey = process.env['WANIKANI_API_KEY']) { const wkApi = (0, axios_rate_limit_1.default)(axios_1.default.create({ baseURL: 'https://api.wanikani.com/v2/', @@ -15,12 +23,7 @@ function makeWanikani(apiKey = process.env['WANIKANI_API_KEY']) { validateStatus: function () { return true; }, - }), - /** - * https://docs.api.wanikani.com/20170710/#rate-limit - * Requests per minute 60 - */ - { + }), { /** * Per second */ @@ -28,74 +31,94 @@ function makeWanikani(apiKey = process.env['WANIKANI_API_KEY']) { perMilliseconds: 1000, }); return Object.assign(wkApi, { - async getKanji() { - const allData = []; + async *kanji(params = {}) { let nextUrl = '/subjects'; while (true) { const r = await wkApi.get(nextUrl, { params: { + ...params, types: 'kanji', }, }); - allData.push(...r.data.data.map((d) => ({ - id: d.id, - level: d.data.level, - characters: d.data.characters, - }))); + for (const d of r.data.data) { + yield { + id: d.id, + level: d.data.level, + characters: d.data.characters, + }; + } console.error(r.data.url); nextUrl = r.data.pages.next_url || ''; if (!nextUrl) { break; } } - return allData; }, - async getVocab() { - const allData = []; + async *vocabulary(params = {}) { let nextUrl = '/subjects'; while (true) { const r = await wkApi.get(nextUrl, { params: { + ...params, types: 'vocabulary', }, }); - allData.push(...r.data.data.map((d) => ({ - id: d.id, - level: d.data.level, - characters: d.data.characters, - sentences: d.data.context_sentences, - }))); + for (const d of r.data.data) { + yield { + id: d.id, + level: d.data.level, + characters: d.data.characters, + sentences: d.data.context_sentences, + }; + } console.error(r.data.url); nextUrl = r.data.pages.next_url || ''; if (!nextUrl) { break; } } - return allData; }, - async getLearnt() { - const allData = []; + async *subjects(params = {}) { + let nextUrl = '/subjects'; + while (true) { + const r = await wkApi.get(nextUrl, { params }); + for (const d of r.data.data) { + yield { + id: d.id, + data_updated_at: d.data_updated_at, + object: d.object, + url: d.url, + data: d.data, + }; + } + console.error(r.data.url); + nextUrl = r.data.pages.next_url || ''; + if (!nextUrl) { + break; + } + } + }, + async *assignments(params = { + unlocked: 'true', + }) { let nextUrl = '/assignments'; while (true) { const r = await wkApi.get(nextUrl, { - params: { - unlocked: 'true', - }, + params, }); console.error(r.data.url); - r.data.data.map((d) => { - allData.push({ + for (const d of r.data.data) { + yield { id: d.data.subject_id, srsLevel: d.data.srs_stage, - }); - }); + }; + } nextUrl = r.data.pages.next_url || ''; if (!nextUrl) { break; } } - return allData; - } + }, }); } exports.makeWanikani = makeWanikani; diff --git a/lib/index.js.map b/lib/index.js.map index e09b232..35e8353 100644 --- a/lib/index.js.map +++ b/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file