@ -0,0 +1,44 @@ | |||
export declare function makeWanikani(apiKey?: string): import("axios-rate-limit").RateLimitedAxiosInstance & { | |||
getKanji(): Promise<{ | |||
id: number; | |||
level: number; | |||
characters: string; | |||
}[]>; | |||
getVocab(): Promise<{ | |||
id: number; | |||
level: number; | |||
characters: string; | |||
sentences: { | |||
ja: string; | |||
en: string; | |||
}[]; | |||
}[]>; | |||
getLearnt(): Promise<{ | |||
id: number; | |||
srsLevel: number; | |||
}[]>; | |||
}; | |||
export declare type WaniKaniAxiosInstance = ReturnType<typeof makeWanikani>; | |||
export interface IResource<T = any> { | |||
id: number; | |||
url: string; | |||
data_updated_at: string; | |||
data: T; | |||
} | |||
export interface ICollection<T = any> { | |||
object: string; | |||
url: string; | |||
pages: { | |||
next_url?: string; | |||
previous_url?: string; | |||
per_page: number; | |||
}; | |||
total_count: number; | |||
data_updated_at: string; | |||
data: T[]; | |||
} | |||
export interface IError { | |||
error: string; | |||
code: number; | |||
} | |||
//# sourceMappingURL=index.d.ts.map |
@ -0,0 +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"} |
@ -0,0 +1,102 @@ | |||
"use strict"; | |||
var __importDefault = (this && this.__importDefault) || function (mod) { | |||
return (mod && mod.__esModule) ? mod : { "default": mod }; | |||
}; | |||
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")); | |||
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/', | |||
headers: { | |||
Authorization: `Bearer ${apiKey}`, | |||
}, | |||
validateStatus: function () { | |||
return true; | |||
}, | |||
}), | |||
/** | |||
* https://docs.api.wanikani.com/20170710/#rate-limit | |||
* Requests per minute 60 | |||
*/ | |||
{ | |||
/** | |||
* Per second | |||
*/ | |||
maxRequests: 1, | |||
perMilliseconds: 1000, | |||
}); | |||
return Object.assign(wkApi, { | |||
async getKanji() { | |||
const allData = []; | |||
let nextUrl = '/subjects'; | |||
while (true) { | |||
const r = await wkApi.get(nextUrl, { | |||
params: { | |||
types: 'kanji', | |||
}, | |||
}); | |||
allData.push(...r.data.data.map((d) => ({ | |||
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 = []; | |||
let nextUrl = '/subjects'; | |||
while (true) { | |||
const r = await wkApi.get(nextUrl, { | |||
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, | |||
}))); | |||
console.error(r.data.url); | |||
nextUrl = r.data.pages.next_url || ''; | |||
if (!nextUrl) { | |||
break; | |||
} | |||
} | |||
return allData; | |||
}, | |||
async getLearnt() { | |||
const allData = []; | |||
let nextUrl = '/assignments'; | |||
while (true) { | |||
const r = await wkApi.get(nextUrl, { | |||
params: { | |||
unlocked: 'true', | |||
}, | |||
}); | |||
console.error(r.data.url); | |||
r.data.data.map((d) => { | |||
allData.push({ | |||
id: d.data.subject_id, | |||
srsLevel: d.data.srs_stage, | |||
}); | |||
}); | |||
nextUrl = r.data.pages.next_url || ''; | |||
if (!nextUrl) { | |||
break; | |||
} | |||
} | |||
return allData; | |||
} | |||
}); | |||
} | |||
exports.makeWanikani = makeWanikani; | |||
//# sourceMappingURL=index.js.map |
@ -0,0 +1 @@ | |||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} |