memrise 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +109 -7
- package/dist/index.d.ts +139 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +386 -98
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +54 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +6 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -95,7 +95,14 @@ await client.deleteLevel("level-id");
|
|
|
95
95
|
// Remove a thing from a level
|
|
96
96
|
await client.deleteThingFromLevel("level-id", "thing-id");
|
|
97
97
|
|
|
98
|
-
//
|
|
98
|
+
// List every thing in a level, with the thing IDs deleteThingFromLevel needs
|
|
99
|
+
const levelThings = await client.getLevelThings("course-id", "level-id");
|
|
100
|
+
|
|
101
|
+
// Or just the thing IDs, with no extra request for the text
|
|
102
|
+
const thingIds = await client.getLevelThingIds("course-id", "level-id");
|
|
103
|
+
|
|
104
|
+
// Search pool. At least one non-empty column value is required -- Memrise has
|
|
105
|
+
// no "return everything" mode, use getLevelThings to enumerate instead.
|
|
99
106
|
const results = await client.searchPool("pool-id", {
|
|
100
107
|
"1": "search term",
|
|
101
108
|
});
|
|
@@ -116,7 +123,8 @@ new MemriseClient(username: string, password: string, clientId?: string)
|
|
|
116
123
|
|
|
117
124
|
**Course Management:**
|
|
118
125
|
|
|
119
|
-
- `
|
|
126
|
+
- `getAllMyCourses(limit?)` - Every course on your dashboard, following pagination
|
|
127
|
+
- `getMyCourses(limit?, offset?)` - One raw page of courses (the API caps `limit` at 9)
|
|
120
128
|
- `getCourseById(courseId)` - Get course by ID
|
|
121
129
|
- `getCourseBySlug(slug)` - Get course by slug
|
|
122
130
|
- `getCourseLevels(courseId)` - Get levels for a course
|
|
@@ -125,15 +133,22 @@ new MemriseClient(username: string, password: string, clientId?: string)
|
|
|
125
133
|
|
|
126
134
|
**Reading Items:**
|
|
127
135
|
|
|
128
|
-
- `getCourseItems(courseId, limit?)` -
|
|
129
|
-
- `getLevelItems(courseId,
|
|
136
|
+
- `getCourseItems(courseId, limit?)` - Every item in a course, each tagged with its thingId and the levelIds it belongs to
|
|
137
|
+
- `getLevelItems(courseId, levelNumber, limit?)` - Get items from a level by its Memrise number (1-based)
|
|
138
|
+
- `getLevelByNumber(courseId, levelNumber)` - Resolve a level by its Memrise number
|
|
130
139
|
- `getLearnable(learnableId)` - Get a single learnable item
|
|
140
|
+
- `getLearnables(learnableIds)` - Fetch many learnables in one batched request
|
|
141
|
+
- `getLevel(courseId, levelId)` - Look up a single level
|
|
142
|
+
- `getLevelThingIds(courseId, levelId)` - Thing IDs attached to a level, in level order
|
|
143
|
+
- `getLevelThings(courseId, levelId)` - Things in a level, each with its thing ID and the learnable text
|
|
144
|
+
- `getLevelColumnPair(courseId, levelId)` - Which columns a level tests
|
|
145
|
+
- `getLearnableIdInLevel(courseId, levelId, thingId)` - Learnable ID for a thing in a level, or null
|
|
131
146
|
|
|
132
147
|
**Adding Items:**
|
|
133
148
|
|
|
134
|
-
- `addThingToCourse(courseId, columns,
|
|
149
|
+
- `addThingToCourse(courseId, columns, levelNumber?)` - Add item to course (default: level 1)
|
|
135
150
|
- `addThingToLevel(levelId, columns)` - Add item to specific level
|
|
136
|
-
- `bulkAddToCourse(courseId, rows,
|
|
151
|
+
- `bulkAddToCourse(courseId, rows, levelNumber?, delimiter?)` - Bulk add items to a course (default: level 1)
|
|
137
152
|
- `bulkAddToLevel(levelId, rows, delimiter?)` - Bulk add items to a specific level
|
|
138
153
|
- `bulkAddToPool(poolId, rows, delimiter?)` - Bulk add items to a pool (not attached to a level)
|
|
139
154
|
- `addLevelToCourse(courseId, poolId?, kind?)` - Add a new level to a course
|
|
@@ -143,8 +158,95 @@ new MemriseClient(username: string, password: string, clientId?: string)
|
|
|
143
158
|
|
|
144
159
|
**Pool Operations:**
|
|
145
160
|
|
|
146
|
-
- `searchPool(poolId, columns, excludeThingIds?, originalOnly?)` - Search pool
|
|
161
|
+
- `searchPool(poolId, columns, excludeThingIds?, originalOnly?)` - Search pool. Requires at least one non-empty column value; an empty filter throws (the endpoint answers 500)
|
|
147
162
|
- `getPool(poolId)` - Get pool information
|
|
163
|
+
- `getPoolIdForLevelId(levelId)` - Pool behind a level, without needing the course ID
|
|
164
|
+
- `resolveColumnKeys(poolId, row)` - Translate column names to numeric keys
|
|
165
|
+
|
|
166
|
+
## Column names
|
|
167
|
+
|
|
168
|
+
Memrise stores columns under numeric keys, but you can use their labels:
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
await client.bulkAddToLevel(levelId, [
|
|
172
|
+
{ Word: "หมา (maa)", Definition: "dog" },
|
|
173
|
+
{ Word: "แมว (maew)", Definition: "cat" },
|
|
174
|
+
]);
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Names are matched case-insensitively and resolved against the pool, which is
|
|
178
|
+
looked up once and cached. Numeric keys still work and skip the lookup
|
|
179
|
+
entirely, so nothing gets slower:
|
|
180
|
+
|
|
181
|
+
```typescript
|
|
182
|
+
await client.bulkAddToLevel(levelId, [{ "1": "หมา (maa)", "2": "dog" }]);
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
A name that does not exist fails with the list of ones that do:
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
Pool 7778482 has no column named "Wrod". Available columns: word, definition, audio.
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## Level numbers
|
|
192
|
+
|
|
193
|
+
Level numbers are the 1-based numbers Memrise shows in the editor, and they are
|
|
194
|
+
matched against each level's own `index`:
|
|
195
|
+
|
|
196
|
+
```typescript
|
|
197
|
+
await client.getLevelItems(courseId, 3);
|
|
198
|
+
await client.getLevelByNumber(courseId, 3);
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
This matters because the levels endpoint **omits empty levels** while the
|
|
202
|
+
survivors keep their real numbers. Counting positions in the returned array
|
|
203
|
+
drifts by however many empty levels precede it. Asking for a number that is
|
|
204
|
+
empty or missing is an error naming the numbers that do exist, rather than
|
|
205
|
+
silently returning the wrong level.
|
|
206
|
+
|
|
207
|
+
## Thing IDs and learnable IDs
|
|
208
|
+
|
|
209
|
+
Memrise exposes two identifiers for what looks like the same item:
|
|
210
|
+
|
|
211
|
+
- **thing** — the row in the pool database. `deleteThingFromLevel`,
|
|
212
|
+
`searchPool` and the `addThing*` responses all speak thing IDs.
|
|
213
|
+
- **learnable** — a thing *plus* the pair of columns being tested. Levels and
|
|
214
|
+
the course-facing APIs report learnable IDs.
|
|
215
|
+
|
|
216
|
+
A learnable ID packs both together: the thing ID sits in the high bits and the
|
|
217
|
+
low 16 bits hold the column pair, so `0x...0102` means "column 1 prompts
|
|
218
|
+
column 2". `thingIdFromLearnableId(learnableId)` recovers the thing ID without
|
|
219
|
+
another request, which is how `getLevelThingIds` works. The reverse direction
|
|
220
|
+
is not derivable, since it needs the column pair.
|
|
221
|
+
|
|
222
|
+
This packing is an undocumented implementation detail, so treat it as a fast
|
|
223
|
+
path rather than a guarantee: it is safe to use for lookups and membership
|
|
224
|
+
checks, where a wrong answer surfaces as "not found", but never derive an ID
|
|
225
|
+
for a destructive call that was not confirmed against the API first.
|
|
226
|
+
|
|
227
|
+
The SDK keeps these apart for you rather than making you remember which is
|
|
228
|
+
which:
|
|
229
|
+
|
|
230
|
+
- **Types that carry both.** `getLevelThings()` returns `{ thingId,
|
|
231
|
+
learnableId, … }`, so you never unpack an ID by hand.
|
|
232
|
+
- **The compiler catches mix-ups.** `ThingId` and `LearnableId` are branded
|
|
233
|
+
types. They erase to plain numbers at runtime, but passing one where the
|
|
234
|
+
other belongs is a compile error. Use `asThingId()` / `asLearnableId()` to
|
|
235
|
+
brand a number from elsewhere.
|
|
236
|
+
- **So does the runtime.** Passing a learnable ID to `deleteThingFromLevel`
|
|
237
|
+
throws immediately with the thing ID you probably meant, rather than failing
|
|
238
|
+
somewhere downstream.
|
|
239
|
+
|
|
240
|
+
Only one direction is derivable without a request:
|
|
241
|
+
|
|
242
|
+
| Direction | Call |
|
|
243
|
+
| --- | --- |
|
|
244
|
+
| learnable → thing | `thingIdFromLearnableId(learnableId)` |
|
|
245
|
+
| learnable → columns tested | `columnPairFromLearnableId(learnableId)` |
|
|
246
|
+
| thing → learnable | `client.getLearnableIdInLevel(courseId, levelId, thingId)` |
|
|
247
|
+
|
|
248
|
+
See [docs/api.md](docs/api.md) for the evidence behind this, the full endpoint
|
|
249
|
+
reference, and the quirks worth knowing before adding new calls.
|
|
148
250
|
|
|
149
251
|
## License
|
|
150
252
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
|
-
|
|
1
|
+
export { asLearnableId, asThingId } from "./types";
|
|
2
|
+
export type * from "./types";
|
|
3
|
+
import type { AccessTokenResponse, ColumnPair, CourseItem, LearnableId, ThingId, AddLevelResponse, AddThingResponse, AuthWebResponse, BulkAddResponse, BulkThingRow, BulkThingRows, BulkWordDelimiter, CourseLevel, DashboardCourse, DeleteLevelResponse, DeleteThingResponse, GetDashboardCoursesResponse, GetPoolResponse, Learnable, LevelThing, PoolColumnConfig, SearchPoolResponse, SetLevelTitleResponse } from "./types";
|
|
4
|
+
/**
|
|
5
|
+
* Choose a delimiter that appears in none of the values.
|
|
6
|
+
*
|
|
7
|
+
* Bulk adds are serialised as delimiter-separated text, so a definition
|
|
8
|
+
* containing the delimiter would silently misalign the columns. Commas are
|
|
9
|
+
* common in definitions, tabs and semicolons much less so.
|
|
10
|
+
*/
|
|
11
|
+
export declare function pickBulkDelimiter(rows: BulkThingRow[]): BulkWordDelimiter;
|
|
2
12
|
export declare function formatBulkThingData(rows: BulkThingRows, delimiter?: BulkWordDelimiter): string;
|
|
13
|
+
/**
|
|
14
|
+
* Recover the thing ID a learnable was built from.
|
|
15
|
+
*
|
|
16
|
+
* Pure arithmetic, no request. The reverse needs the column pair, so see
|
|
17
|
+
* {@link learnableIdFromThingId} and {@link MemriseClient.getLearnableIdInLevel}.
|
|
18
|
+
*/
|
|
19
|
+
export declare function thingIdFromLearnableId(learnableId: number): ThingId;
|
|
20
|
+
/**
|
|
21
|
+
* Which pair of columns a learnable tests, e.g. column 1 prompting column 2.
|
|
22
|
+
*/
|
|
23
|
+
export declare function columnPairFromLearnableId(learnableId: number): ColumnPair;
|
|
24
|
+
/**
|
|
25
|
+
* Build a learnable ID from a thing and the column pair being tested.
|
|
26
|
+
*
|
|
27
|
+
* The column pair belongs to the level, not the thing: one pool can feed
|
|
28
|
+
* levels that test different pairings. Prefer
|
|
29
|
+
* {@link MemriseClient.getLearnableIdInLevel}, which reads the pair from the
|
|
30
|
+
* level and checks the thing is actually in it, over calling this directly.
|
|
31
|
+
*/
|
|
32
|
+
export declare function learnableIdFromThingId(thingId: number, pair: ColumnPair): LearnableId;
|
|
33
|
+
/**
|
|
34
|
+
* Guard a value that must be a thing ID.
|
|
35
|
+
*
|
|
36
|
+
* This exists for the error message, not for correctness -- callers that
|
|
37
|
+
* mutate a level still verify membership. It turns the most common mistake
|
|
38
|
+
* into an answer instead of a confusing failure downstream.
|
|
39
|
+
*/
|
|
40
|
+
export declare function assertThingId(id: number, context?: string): ThingId;
|
|
3
41
|
export declare class MemriseClient {
|
|
4
42
|
private client;
|
|
5
43
|
private cookie;
|
|
@@ -7,6 +45,8 @@ export declare class MemriseClient {
|
|
|
7
45
|
private accessToken;
|
|
8
46
|
private cookieJar;
|
|
9
47
|
private authReady;
|
|
48
|
+
private poolIdByLevel;
|
|
49
|
+
private columnKeysByPool;
|
|
10
50
|
constructor(username: string, password: string, clientId?: string);
|
|
11
51
|
private authenticateWithCredentials;
|
|
12
52
|
private mergeSetCookieCookies;
|
|
@@ -16,25 +56,118 @@ export declare class MemriseClient {
|
|
|
16
56
|
getCsrfToken(): Promise<string | null>;
|
|
17
57
|
getAccessToken(username: string, password: string, clientId?: string): Promise<AccessTokenResponse>;
|
|
18
58
|
authenticateWeb(token: string): Promise<AuthWebResponse>;
|
|
19
|
-
addThingToLevel(levelId: string, columns: Record<string, string>): Promise<AddThingResponse>;
|
|
59
|
+
addThingToLevel(levelId: string | number, columns: Record<string, string>): Promise<AddThingResponse>;
|
|
20
60
|
addLevelToCourse(courseId: string | number, poolId?: string | number, kind?: string): Promise<AddLevelResponse>;
|
|
21
61
|
setLevelTitle(levelId: string | number, newTitle: string): Promise<SetLevelTitleResponse>;
|
|
22
62
|
deleteLevel(levelId: string | number): Promise<DeleteLevelResponse>;
|
|
23
63
|
deleteThingFromLevel(levelId: string | number, thingId: string | number): Promise<DeleteThingResponse>;
|
|
24
|
-
|
|
64
|
+
/**
|
|
65
|
+
* Add one item to a course, addressed by the level number Memrise shows.
|
|
66
|
+
*/
|
|
67
|
+
addThingToCourse(courseId: string | number, columns: Record<string, string>, levelNumber?: number): Promise<AddThingResponse>;
|
|
25
68
|
bulkAddToPool(poolId: string | number, rows: BulkThingRows, delimiter?: BulkWordDelimiter): Promise<BulkAddResponse>;
|
|
26
69
|
bulkAddToLevel(levelId: string | number, rows: BulkThingRows, delimiter?: BulkWordDelimiter): Promise<BulkAddResponse>;
|
|
27
|
-
|
|
70
|
+
/**
|
|
71
|
+
* Bulk add to a course, addressed by the level number Memrise shows.
|
|
72
|
+
*/
|
|
73
|
+
bulkAddToCourse(courseId: string | number, rows: BulkThingRows, levelNumber?: number, delimiter?: BulkWordDelimiter): Promise<BulkAddResponse>;
|
|
28
74
|
searchPool(poolId: string | number, columns: Record<string, string>, excludeThingIds?: string[], originalOnly?: boolean): Promise<SearchPoolResponse>;
|
|
29
75
|
getPool(poolId: string | number): Promise<GetPoolResponse>;
|
|
30
76
|
getMyCourses(limit?: number, offset?: number): Promise<GetDashboardCoursesResponse>;
|
|
77
|
+
/**
|
|
78
|
+
* Every course on your dashboard, following pagination.
|
|
79
|
+
*
|
|
80
|
+
* getMyCourses exposes the API's own page size, which silently truncates
|
|
81
|
+
* at nine. This walks the pages so callers see the whole list.
|
|
82
|
+
*/
|
|
83
|
+
getAllMyCourses(limit?: number): Promise<DashboardCourse[]>;
|
|
31
84
|
getCourseById(courseId: string | number): Promise<DashboardCourse | null>;
|
|
32
85
|
getCourseBySlug(slug: string): Promise<DashboardCourse | null>;
|
|
33
86
|
getCourseLevels(courseId: string | number, slug?: string): Promise<CourseLevel[]>;
|
|
34
87
|
getCourseLevelsIncludingEmpty(courseId: string | number, slug?: string): Promise<CourseLevel[]>;
|
|
35
88
|
getLearnable(learnableId: string | number): Promise<Learnable | null>;
|
|
36
|
-
|
|
37
|
-
|
|
89
|
+
/**
|
|
90
|
+
* Every item in a course, each tagged with the level it sits in.
|
|
91
|
+
*
|
|
92
|
+
* The level mapping is free -- it comes from the same levels response used
|
|
93
|
+
* to collect the IDs -- and without it the result is a dead end, since
|
|
94
|
+
* removing an item needs the level it belongs to.
|
|
95
|
+
*/
|
|
96
|
+
getCourseItems(courseId: string | number, limit?: number): Promise<CourseItem[]>;
|
|
97
|
+
/**
|
|
98
|
+
* Look up a level by the number Memrise shows in the editor.
|
|
99
|
+
*
|
|
100
|
+
* Levels carry their own 1-based `index`, and it is authoritative: the
|
|
101
|
+
* levels endpoint omits empty levels but the survivors keep their real
|
|
102
|
+
* numbers, so counting positions in the returned array drifts by however
|
|
103
|
+
* many empty levels precede it. Always match on `index`.
|
|
104
|
+
*/
|
|
105
|
+
getLevelByNumber(courseId: string | number, levelNumber: number): Promise<CourseLevel>;
|
|
106
|
+
/**
|
|
107
|
+
* Items in a level, addressed by the level number shown in Memrise.
|
|
108
|
+
*/
|
|
109
|
+
getLevelItems(courseId: string | number, levelNumber?: number, limit?: number): Promise<Learnable[]>;
|
|
110
|
+
getLearnables(learnableIds: Array<string | number>): Promise<Learnable[]>;
|
|
111
|
+
/**
|
|
112
|
+
* Look up a single level on a course.
|
|
113
|
+
*/
|
|
114
|
+
getLevel(courseId: string | number, levelId: string | number): Promise<CourseLevel>;
|
|
115
|
+
/**
|
|
116
|
+
* List the thing IDs currently attached to a level, in level order.
|
|
117
|
+
*
|
|
118
|
+
* A level only reports learnable IDs, but a learnable ID embeds the thing
|
|
119
|
+
* it was built from, so no extra request is needed. See
|
|
120
|
+
* {@link thingIdFromLearnableId}.
|
|
121
|
+
*/
|
|
122
|
+
getLevelThingIds(courseId: string | number, levelId: string | number): Promise<ThingId[]>;
|
|
123
|
+
/**
|
|
124
|
+
* List the things attached to a level, with the thing ID needed for
|
|
125
|
+
* deletion alongside the learnable's text.
|
|
126
|
+
*/
|
|
127
|
+
getLevelThings(courseId: string | number, levelId: string | number): Promise<LevelThing[]>;
|
|
128
|
+
/**
|
|
129
|
+
* The pair of columns a level tests, read from its learnables.
|
|
130
|
+
*
|
|
131
|
+
* Uniform within a level, but a pool can host levels with different
|
|
132
|
+
* pairings, so this is a per-level question. Returns null if the level
|
|
133
|
+
* reports no learnables to read the pair from. Note that a wholly empty
|
|
134
|
+
* level is invisible to the levels endpoint and throws instead.
|
|
135
|
+
*/
|
|
136
|
+
getLevelColumnPair(courseId: string | number, levelId: string | number): Promise<ColumnPair | null>;
|
|
137
|
+
/**
|
|
138
|
+
* Find the learnable ID for a thing as it appears in a given level.
|
|
139
|
+
*
|
|
140
|
+
* Returns null when the thing is not in the level, rather than handing back
|
|
141
|
+
* an ID that does not resolve.
|
|
142
|
+
*/
|
|
143
|
+
getLearnableIdInLevel(courseId: string | number, levelId: string | number, thingId: string | number): Promise<LearnableId | null>;
|
|
144
|
+
/**
|
|
145
|
+
* The pool behind a level, without needing the course ID.
|
|
146
|
+
*
|
|
147
|
+
* The levels endpoint is course-scoped, so this consults a cache that every
|
|
148
|
+
* getCourseLevels call populates, and falls back to sweeping the courses on
|
|
149
|
+
* your dashboard. All JSON -- no page scraping.
|
|
150
|
+
*
|
|
151
|
+
* A level with no items is invisible to that endpoint. Levels created
|
|
152
|
+
* through addLevelToCourse are cached at creation, but for anything else,
|
|
153
|
+
* pass numeric column keys or use a course-scoped call.
|
|
154
|
+
*/
|
|
155
|
+
getPoolIdForLevelId(levelId: string | number): Promise<number>;
|
|
156
|
+
private columnKeysFor;
|
|
157
|
+
/**
|
|
158
|
+
* Translate a row keyed by column name into the numeric keys Memrise
|
|
159
|
+
* wants. Numeric keys pass through untouched, so callers that already
|
|
160
|
+
* speak the wire format keep working and pay no extra request.
|
|
161
|
+
*
|
|
162
|
+
* Names are matched case-insensitively against the pool's column labels.
|
|
163
|
+
*/
|
|
164
|
+
resolveColumnKeys(poolId: string | number, row: Record<string, string>): Promise<Record<string, string>>;
|
|
165
|
+
/** Resolve named columns in a single row against the pool behind a level. */
|
|
166
|
+
private resolveColumnsForLevel;
|
|
167
|
+
/** Resolve named columns in bulk rows against the pool behind a level. */
|
|
168
|
+
private resolveRowsForLevel;
|
|
169
|
+
/** Resolve named columns in bulk rows against a pool. */
|
|
170
|
+
private resolveRowsForPool;
|
|
38
171
|
getCourseColumns(courseId: string | number): Promise<Record<string, PoolColumnConfig>>;
|
|
39
172
|
}
|
|
40
173
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import axios from "axios";
|
|
2
|
+
import { asLearnableId, asThingId } from "./types";
|
|
3
|
+
export { asLearnableId, asThingId } from "./types";
|
|
2
4
|
const DEFAULT_CLIENT_ID = "1e739f5e77704b57a703";
|
|
3
5
|
const BULK_DELIMITER_CHARS = {
|
|
4
6
|
comma: ",",
|
|
@@ -23,23 +25,106 @@ function orderedValuesFromRecord(row) {
|
|
|
23
25
|
}
|
|
24
26
|
return values;
|
|
25
27
|
}
|
|
26
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Choose a delimiter that appears in none of the values.
|
|
30
|
+
*
|
|
31
|
+
* Bulk adds are serialised as delimiter-separated text, so a definition
|
|
32
|
+
* containing the delimiter would silently misalign the columns. Commas are
|
|
33
|
+
* common in definitions, tabs and semicolons much less so.
|
|
34
|
+
*/
|
|
35
|
+
export function pickBulkDelimiter(rows) {
|
|
36
|
+
const values = rows.flatMap((row) => Array.isArray(row) ? row : orderedValuesFromRecord(row));
|
|
37
|
+
for (const candidate of ["comma", "tab", "semicolon"]) {
|
|
38
|
+
const sep = BULK_DELIMITER_CHARS[candidate];
|
|
39
|
+
if (!values.some((value) => value.includes(sep)))
|
|
40
|
+
return candidate;
|
|
41
|
+
}
|
|
42
|
+
throw new Error("Every supported delimiter (comma, tab, semicolon) appears in the values being added, so the rows cannot be encoded unambiguously. Split the batch or remove the punctuation.");
|
|
43
|
+
}
|
|
44
|
+
export function formatBulkThingData(rows, delimiter) {
|
|
27
45
|
if (typeof rows === "string") {
|
|
28
46
|
return rows;
|
|
29
47
|
}
|
|
30
|
-
const
|
|
48
|
+
const chosen = delimiter ?? pickBulkDelimiter(rows);
|
|
49
|
+
const sep = BULK_DELIMITER_CHARS[chosen];
|
|
31
50
|
return rows
|
|
32
51
|
.map((row) => {
|
|
33
52
|
const values = Array.isArray(row) ? row : orderedValuesFromRecord(row);
|
|
34
53
|
for (const value of values) {
|
|
35
54
|
if (value.includes(sep) || /[\r\n]/.test(value)) {
|
|
36
|
-
throw new Error(`Bulk row value contains the '${
|
|
55
|
+
throw new Error(`Bulk row value contains the '${chosen}' delimiter or a newline: ${JSON.stringify(value)}`);
|
|
37
56
|
}
|
|
38
57
|
}
|
|
39
58
|
return values.join(sep);
|
|
40
59
|
})
|
|
41
60
|
.join("\n");
|
|
42
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Learnable IDs are derived from the thing they were built from: the thing ID
|
|
64
|
+
* occupies the high bits and the low 16 bits identify the column pair the
|
|
65
|
+
* learnable tests (0x0102 = column 1 prompts column 2, and so on). So a thing
|
|
66
|
+
* ID can be recovered from a learnable ID without another request, while the
|
|
67
|
+
* reverse needs to know the column pair.
|
|
68
|
+
*/
|
|
69
|
+
const LEARNABLE_THING_SHIFT = 65536;
|
|
70
|
+
/**
|
|
71
|
+
* Number of learnable IDs per /v1.25/learnables/ request. 400 ids is still
|
|
72
|
+
* accepted and 793 answers 414, so this leaves plenty of headroom.
|
|
73
|
+
*/
|
|
74
|
+
const LEARNABLE_BATCH_SIZE = 200;
|
|
75
|
+
/** /v1.25/dashboard/courses/ rejects a limit above this with a 400. */
|
|
76
|
+
const DASHBOARD_MAX_PAGE_SIZE = 9;
|
|
77
|
+
/**
|
|
78
|
+
* Recover the thing ID a learnable was built from.
|
|
79
|
+
*
|
|
80
|
+
* Pure arithmetic, no request. The reverse needs the column pair, so see
|
|
81
|
+
* {@link learnableIdFromThingId} and {@link MemriseClient.getLearnableIdInLevel}.
|
|
82
|
+
*/
|
|
83
|
+
export function thingIdFromLearnableId(learnableId) {
|
|
84
|
+
return asThingId(Math.floor(learnableId / LEARNABLE_THING_SHIFT));
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Which pair of columns a learnable tests, e.g. column 1 prompting column 2.
|
|
88
|
+
*/
|
|
89
|
+
export function columnPairFromLearnableId(learnableId) {
|
|
90
|
+
const pair = learnableId % LEARNABLE_THING_SHIFT;
|
|
91
|
+
return {
|
|
92
|
+
learningColumn: (pair >> 8) & 0xff,
|
|
93
|
+
definitionColumn: pair & 0xff,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Build a learnable ID from a thing and the column pair being tested.
|
|
98
|
+
*
|
|
99
|
+
* The column pair belongs to the level, not the thing: one pool can feed
|
|
100
|
+
* levels that test different pairings. Prefer
|
|
101
|
+
* {@link MemriseClient.getLearnableIdInLevel}, which reads the pair from the
|
|
102
|
+
* level and checks the thing is actually in it, over calling this directly.
|
|
103
|
+
*/
|
|
104
|
+
export function learnableIdFromThingId(thingId, pair) {
|
|
105
|
+
return asLearnableId(thingId * LEARNABLE_THING_SHIFT +
|
|
106
|
+
((pair.learningColumn & 0xff) << 8) +
|
|
107
|
+
(pair.definitionColumn & 0xff));
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Largest plausible thing ID. Thing IDs are pool row numbers (~2^29 today);
|
|
111
|
+
* learnable IDs start around 2^43 because of the 16 bit shift, so anything
|
|
112
|
+
* above this is a learnable ID that reached the wrong parameter.
|
|
113
|
+
*/
|
|
114
|
+
const MAX_PLAUSIBLE_THING_ID = 0xffffffff;
|
|
115
|
+
/**
|
|
116
|
+
* Guard a value that must be a thing ID.
|
|
117
|
+
*
|
|
118
|
+
* This exists for the error message, not for correctness -- callers that
|
|
119
|
+
* mutate a level still verify membership. It turns the most common mistake
|
|
120
|
+
* into an answer instead of a confusing failure downstream.
|
|
121
|
+
*/
|
|
122
|
+
export function assertThingId(id, context = "This call") {
|
|
123
|
+
if (id > MAX_PLAUSIBLE_THING_ID) {
|
|
124
|
+
throw new Error(`${context} needs a thingId but was given ${id}, which is a learnableId. Did you mean ${thingIdFromLearnableId(id)}? (learnableId = thing plus the column pair being tested; see docs/api.md)`);
|
|
125
|
+
}
|
|
126
|
+
return asThingId(id);
|
|
127
|
+
}
|
|
43
128
|
export class MemriseClient {
|
|
44
129
|
client = axios.create({
|
|
45
130
|
baseURL: "https://community-courses.memrise.com",
|
|
@@ -54,6 +139,8 @@ export class MemriseClient {
|
|
|
54
139
|
accessToken;
|
|
55
140
|
cookieJar;
|
|
56
141
|
authReady;
|
|
142
|
+
poolIdByLevel = new Map();
|
|
143
|
+
columnKeysByPool = new Map();
|
|
57
144
|
constructor(username, password, clientId = DEFAULT_CLIENT_ID) {
|
|
58
145
|
this.cookie = "";
|
|
59
146
|
this.csrfToken = null;
|
|
@@ -243,9 +330,10 @@ export class MemriseClient {
|
|
|
243
330
|
}
|
|
244
331
|
async addThingToLevel(levelId, columns) {
|
|
245
332
|
await this.ensureAuthenticated();
|
|
333
|
+
const resolved = await this.resolveColumnsForLevel(levelId, columns);
|
|
246
334
|
const data = new URLSearchParams();
|
|
247
|
-
data.append("columns", JSON.stringify(
|
|
248
|
-
data.append("level_id", levelId);
|
|
335
|
+
data.append("columns", JSON.stringify(resolved));
|
|
336
|
+
data.append("level_id", String(levelId));
|
|
249
337
|
const response = await this.client.post("/ajax/level/thing/add/", data, {
|
|
250
338
|
headers: {
|
|
251
339
|
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
|
|
@@ -273,6 +361,15 @@ export class MemriseClient {
|
|
|
273
361
|
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
|
|
274
362
|
},
|
|
275
363
|
});
|
|
364
|
+
// The endpoint reports the new level only as an anchor on the redirect
|
|
365
|
+
// URL, e.g. "/course/1/slug/edit/#l_16402418".
|
|
366
|
+
const levelId = Number(/#l_(\d+)/.exec(response.data?.redirect_url ?? "")?.[1]);
|
|
367
|
+
if (Number.isFinite(levelId)) {
|
|
368
|
+
// A new level is empty, so the levels endpoint will not report it
|
|
369
|
+
// yet. Remember its pool so column names still resolve.
|
|
370
|
+
this.poolIdByLevel.set(String(levelId), Number(resolvedPoolId));
|
|
371
|
+
return { ...response.data, levelId };
|
|
372
|
+
}
|
|
276
373
|
return response.data;
|
|
277
374
|
}
|
|
278
375
|
async setLevelTitle(levelId, newTitle) {
|
|
@@ -299,6 +396,7 @@ export class MemriseClient {
|
|
|
299
396
|
return response.data;
|
|
300
397
|
}
|
|
301
398
|
async deleteThingFromLevel(levelId, thingId) {
|
|
399
|
+
assertThingId(Number(thingId), "deleteThingFromLevel");
|
|
302
400
|
await this.ensureAuthenticated();
|
|
303
401
|
const data = new URLSearchParams();
|
|
304
402
|
data.append("level_id", String(levelId));
|
|
@@ -310,30 +408,26 @@ export class MemriseClient {
|
|
|
310
408
|
});
|
|
311
409
|
return response.data;
|
|
312
410
|
}
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
if (levelIndex < 0 || levelIndex >= levels.length) {
|
|
320
|
-
throw new Error(`Level index ${levelIndex} out of range. Course has ${levels.length} levels.`);
|
|
321
|
-
}
|
|
322
|
-
const level = levels[levelIndex];
|
|
323
|
-
if (!level) {
|
|
324
|
-
throw new Error(`Level at index ${levelIndex} not found`);
|
|
325
|
-
}
|
|
326
|
-
const levelId = String(level.id);
|
|
327
|
-
return this.addThingToLevel(levelId, columns);
|
|
411
|
+
/**
|
|
412
|
+
* Add one item to a course, addressed by the level number Memrise shows.
|
|
413
|
+
*/
|
|
414
|
+
async addThingToCourse(courseId, columns, levelNumber = 1) {
|
|
415
|
+
const level = await this.getLevelByNumber(courseId, levelNumber);
|
|
416
|
+
return this.addThingToLevel(level.id, columns);
|
|
328
417
|
}
|
|
329
|
-
async bulkAddToPool(poolId, rows, delimiter
|
|
418
|
+
async bulkAddToPool(poolId, rows, delimiter) {
|
|
330
419
|
await this.ensureAuthenticated();
|
|
331
|
-
const
|
|
420
|
+
const resolvedRows = await this.resolveRowsForPool(poolId, rows);
|
|
421
|
+
const chosenDelimiter = delimiter ??
|
|
422
|
+
(typeof resolvedRows === "string"
|
|
423
|
+
? "comma"
|
|
424
|
+
: pickBulkDelimiter(resolvedRows));
|
|
425
|
+
const payload = formatBulkThingData(resolvedRows, chosenDelimiter);
|
|
332
426
|
if (payload.trim() === "") {
|
|
333
427
|
throw new Error("No rows provided for bulk add");
|
|
334
428
|
}
|
|
335
429
|
const data = new URLSearchParams();
|
|
336
|
-
data.append("word_delimiter",
|
|
430
|
+
data.append("word_delimiter", chosenDelimiter);
|
|
337
431
|
data.append("data", payload);
|
|
338
432
|
data.append("pool_id", String(poolId));
|
|
339
433
|
const response = await this.client.post("/ajax/pool/add_things_in_bulk/", data, {
|
|
@@ -343,14 +437,19 @@ export class MemriseClient {
|
|
|
343
437
|
});
|
|
344
438
|
return response.data;
|
|
345
439
|
}
|
|
346
|
-
async bulkAddToLevel(levelId, rows, delimiter
|
|
440
|
+
async bulkAddToLevel(levelId, rows, delimiter) {
|
|
347
441
|
await this.ensureAuthenticated();
|
|
348
|
-
const
|
|
442
|
+
const resolvedRows = await this.resolveRowsForLevel(levelId, rows);
|
|
443
|
+
const chosenDelimiter = delimiter ??
|
|
444
|
+
(typeof resolvedRows === "string"
|
|
445
|
+
? "comma"
|
|
446
|
+
: pickBulkDelimiter(resolvedRows));
|
|
447
|
+
const payload = formatBulkThingData(resolvedRows, chosenDelimiter);
|
|
349
448
|
if (payload.trim() === "") {
|
|
350
449
|
throw new Error("No rows provided for bulk add");
|
|
351
450
|
}
|
|
352
451
|
const data = new URLSearchParams();
|
|
353
|
-
data.append("word_delimiter",
|
|
452
|
+
data.append("word_delimiter", chosenDelimiter);
|
|
354
453
|
data.append("data", payload);
|
|
355
454
|
data.append("level_id", String(levelId));
|
|
356
455
|
const response = await this.client.post("/ajax/level/add_things_in_bulk/", data, {
|
|
@@ -360,27 +459,24 @@ export class MemriseClient {
|
|
|
360
459
|
});
|
|
361
460
|
return response.data;
|
|
362
461
|
}
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
}
|
|
369
|
-
if (levelIndex < 0 || levelIndex >= levels.length) {
|
|
370
|
-
throw new Error(`Level index ${levelIndex} out of range. Course has ${levels.length} levels.`);
|
|
371
|
-
}
|
|
372
|
-
const level = levels[levelIndex];
|
|
373
|
-
if (!level) {
|
|
374
|
-
throw new Error(`Level at index ${levelIndex} not found`);
|
|
375
|
-
}
|
|
462
|
+
/**
|
|
463
|
+
* Bulk add to a course, addressed by the level number Memrise shows.
|
|
464
|
+
*/
|
|
465
|
+
async bulkAddToCourse(courseId, rows, levelNumber = 1, delimiter) {
|
|
466
|
+
const level = await this.getLevelByNumber(courseId, levelNumber);
|
|
376
467
|
return this.bulkAddToLevel(level.id, rows, delimiter);
|
|
377
468
|
}
|
|
378
469
|
async searchPool(poolId, columns, excludeThingIds = [], originalOnly = false) {
|
|
470
|
+
const resolvedColumns = await this.resolveColumnKeys(poolId, columns);
|
|
471
|
+
const terms = Object.values(resolvedColumns).filter((value) => typeof value === "string" && value.length > 0);
|
|
472
|
+
if (terms.length === 0) {
|
|
473
|
+
throw new Error("searchPool requires at least one non-empty column value. Memrise's /ajax/pool/search/ endpoint has no 'return everything' mode and responds with HTTP 500 for an empty filter. Use getLevelThings(levelId) to enumerate a level's things instead.");
|
|
474
|
+
}
|
|
379
475
|
await this.ensureAuthenticated();
|
|
380
476
|
const params = {
|
|
381
477
|
pool_id: poolId,
|
|
382
478
|
original_only: originalOnly,
|
|
383
|
-
columns: JSON.stringify(
|
|
479
|
+
columns: JSON.stringify(resolvedColumns),
|
|
384
480
|
exclude_thing_ids: JSON.stringify(excludeThingIds),
|
|
385
481
|
_: Date.now(),
|
|
386
482
|
};
|
|
@@ -412,35 +508,42 @@ export class MemriseClient {
|
|
|
412
508
|
});
|
|
413
509
|
return response.data;
|
|
414
510
|
}
|
|
415
|
-
|
|
511
|
+
/**
|
|
512
|
+
* Every course on your dashboard, following pagination.
|
|
513
|
+
*
|
|
514
|
+
* getMyCourses exposes the API's own page size, which silently truncates
|
|
515
|
+
* at nine. This walks the pages so callers see the whole list.
|
|
516
|
+
*/
|
|
517
|
+
async getAllMyCourses(limit) {
|
|
518
|
+
const courses = [];
|
|
519
|
+
// The dashboard endpoint answers 400 for a limit above 9.
|
|
520
|
+
const pageSize = DASHBOARD_MAX_PAGE_SIZE;
|
|
416
521
|
let offset = 0;
|
|
417
|
-
const limit = 9;
|
|
418
522
|
while (true) {
|
|
419
|
-
const
|
|
420
|
-
|
|
421
|
-
if (
|
|
422
|
-
return
|
|
423
|
-
if (!
|
|
424
|
-
|
|
425
|
-
offset +=
|
|
523
|
+
const page = await this.getMyCourses(pageSize, offset);
|
|
524
|
+
courses.push(...page.courses);
|
|
525
|
+
if (limit && courses.length >= limit)
|
|
526
|
+
return courses.slice(0, limit);
|
|
527
|
+
if (!page.has_more_pages || page.courses.length === 0)
|
|
528
|
+
break;
|
|
529
|
+
offset += pageSize;
|
|
426
530
|
}
|
|
531
|
+
return courses;
|
|
532
|
+
}
|
|
533
|
+
async getCourseById(courseId) {
|
|
534
|
+
const courses = await this.getAllMyCourses();
|
|
535
|
+
return courses.find((c) => String(c.id) === String(courseId)) ?? null;
|
|
427
536
|
}
|
|
428
537
|
async getCourseBySlug(slug) {
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
while (true) {
|
|
432
|
-
const response = await this.getMyCourses(limit, offset);
|
|
433
|
-
const course = response.courses.find((c) => c.slug === slug);
|
|
434
|
-
if (course)
|
|
435
|
-
return course;
|
|
436
|
-
if (!response.has_more_pages)
|
|
437
|
-
return null;
|
|
438
|
-
offset += limit;
|
|
439
|
-
}
|
|
538
|
+
const courses = await this.getAllMyCourses();
|
|
539
|
+
return courses.find((c) => c.slug === slug) ?? null;
|
|
440
540
|
}
|
|
441
541
|
async getCourseLevels(courseId, slug) {
|
|
442
542
|
await this.ensureAuthenticated();
|
|
443
543
|
const response = await this.client.get(`/v1.25/courses/${courseId}/levels/`);
|
|
544
|
+
for (const level of response.data.levels) {
|
|
545
|
+
this.poolIdByLevel.set(String(level.id), level.pool_id);
|
|
546
|
+
}
|
|
444
547
|
return response.data.levels;
|
|
445
548
|
}
|
|
446
549
|
async getCourseLevelsIncludingEmpty(courseId, slug) {
|
|
@@ -494,54 +597,239 @@ export class MemriseClient {
|
|
|
494
597
|
throw error;
|
|
495
598
|
}
|
|
496
599
|
}
|
|
600
|
+
/**
|
|
601
|
+
* Every item in a course, each tagged with the level it sits in.
|
|
602
|
+
*
|
|
603
|
+
* The level mapping is free -- it comes from the same levels response used
|
|
604
|
+
* to collect the IDs -- and without it the result is a dead end, since
|
|
605
|
+
* removing an item needs the level it belongs to.
|
|
606
|
+
*/
|
|
497
607
|
async getCourseItems(courseId, limit) {
|
|
498
608
|
const levels = await this.getCourseLevels(courseId);
|
|
499
|
-
const
|
|
500
|
-
const
|
|
501
|
-
|
|
609
|
+
const levelsByLearnable = new Map();
|
|
610
|
+
for (const level of levels) {
|
|
611
|
+
for (const learnableId of level.learnable_ids ?? []) {
|
|
612
|
+
const existing = levelsByLearnable.get(learnableId);
|
|
613
|
+
if (existing)
|
|
614
|
+
existing.push(level.id);
|
|
615
|
+
else
|
|
616
|
+
levelsByLearnable.set(learnableId, [level.id]);
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
const uniqueIds = [...levelsByLearnable.keys()];
|
|
502
620
|
const idsToFetch = limit ? uniqueIds.slice(0, limit) : uniqueIds;
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
621
|
+
const learnables = await this.getLearnables(idsToFetch);
|
|
622
|
+
return learnables.map((learnable) => ({
|
|
623
|
+
learnableId: asLearnableId(learnable.id),
|
|
624
|
+
thingId: thingIdFromLearnableId(learnable.id),
|
|
625
|
+
levelIds: levelsByLearnable.get(learnable.id) ?? [],
|
|
626
|
+
learningElement: learnable.learning_element,
|
|
627
|
+
definitionElement: learnable.definition_element,
|
|
628
|
+
itemType: learnable.item_type,
|
|
629
|
+
difficulty: learnable.difficulty,
|
|
630
|
+
}));
|
|
631
|
+
}
|
|
632
|
+
/**
|
|
633
|
+
* Look up a level by the number Memrise shows in the editor.
|
|
634
|
+
*
|
|
635
|
+
* Levels carry their own 1-based `index`, and it is authoritative: the
|
|
636
|
+
* levels endpoint omits empty levels but the survivors keep their real
|
|
637
|
+
* numbers, so counting positions in the returned array drifts by however
|
|
638
|
+
* many empty levels precede it. Always match on `index`.
|
|
639
|
+
*/
|
|
640
|
+
async getLevelByNumber(courseId, levelNumber) {
|
|
641
|
+
const levels = await this.getCourseLevels(courseId);
|
|
642
|
+
const level = levels.find((l) => l.index === levelNumber);
|
|
643
|
+
if (level)
|
|
644
|
+
return level;
|
|
645
|
+
const available = levels.map((l) => l.index).join(", ");
|
|
646
|
+
throw new Error(`Course ${courseId} has no level numbered ${levelNumber}. Levels with content are numbered: ${available}. Numbers are 1-based and match the Memrise editor; gaps are empty levels, which the API does not return.`);
|
|
647
|
+
}
|
|
648
|
+
/**
|
|
649
|
+
* Items in a level, addressed by the level number shown in Memrise.
|
|
650
|
+
*/
|
|
651
|
+
async getLevelItems(courseId, levelNumber = 1, limit) {
|
|
652
|
+
const level = await this.getLevelByNumber(courseId, levelNumber);
|
|
653
|
+
const learnableIds = level.learnable_ids || [];
|
|
654
|
+
const idsToFetch = limit ? learnableIds.slice(0, limit) : learnableIds;
|
|
655
|
+
return this.getLearnables(idsToFetch);
|
|
656
|
+
}
|
|
657
|
+
async getLearnables(learnableIds) {
|
|
658
|
+
if (learnableIds.length === 0)
|
|
659
|
+
return [];
|
|
660
|
+
await this.ensureAuthenticated();
|
|
661
|
+
const learnables = [];
|
|
662
|
+
for (let i = 0; i < learnableIds.length; i += LEARNABLE_BATCH_SIZE) {
|
|
663
|
+
const chunk = learnableIds.slice(i, i + LEARNABLE_BATCH_SIZE);
|
|
664
|
+
const response = await this.client.get(`/v1.25/learnables/${chunk.join(",")}/`);
|
|
665
|
+
for (const id of chunk) {
|
|
666
|
+
const learnable = response.data.learnables?.[String(id)];
|
|
667
|
+
if (learnable)
|
|
668
|
+
learnables.push(learnable);
|
|
669
|
+
}
|
|
515
670
|
}
|
|
516
|
-
return
|
|
671
|
+
return learnables;
|
|
517
672
|
}
|
|
518
|
-
|
|
673
|
+
/**
|
|
674
|
+
* Look up a single level on a course.
|
|
675
|
+
*/
|
|
676
|
+
async getLevel(courseId, levelId) {
|
|
519
677
|
const levels = await this.getCourseLevels(courseId);
|
|
520
|
-
|
|
521
|
-
|
|
678
|
+
const level = levels.find((l) => String(l.id) === String(levelId));
|
|
679
|
+
if (!level) {
|
|
680
|
+
throw new Error(`Level ${levelId} was not found on course ${courseId}. Note that the levels endpoint omits empty levels, so a level that exists but has no things will also land here — use getCourseLevelsIncludingEmpty to see those.`);
|
|
522
681
|
}
|
|
523
|
-
|
|
524
|
-
|
|
682
|
+
return level;
|
|
683
|
+
}
|
|
684
|
+
/**
|
|
685
|
+
* List the thing IDs currently attached to a level, in level order.
|
|
686
|
+
*
|
|
687
|
+
* A level only reports learnable IDs, but a learnable ID embeds the thing
|
|
688
|
+
* it was built from, so no extra request is needed. See
|
|
689
|
+
* {@link thingIdFromLearnableId}.
|
|
690
|
+
*/
|
|
691
|
+
async getLevelThingIds(courseId, levelId) {
|
|
692
|
+
const level = await this.getLevel(courseId, levelId);
|
|
693
|
+
return (level.learnable_ids ?? []).map(thingIdFromLearnableId);
|
|
694
|
+
}
|
|
695
|
+
/**
|
|
696
|
+
* List the things attached to a level, with the thing ID needed for
|
|
697
|
+
* deletion alongside the learnable's text.
|
|
698
|
+
*/
|
|
699
|
+
async getLevelThings(courseId, levelId) {
|
|
700
|
+
const level = await this.getLevel(courseId, levelId);
|
|
701
|
+
const learnableIds = level.learnable_ids ?? [];
|
|
702
|
+
const learnables = await this.getLearnables(learnableIds);
|
|
703
|
+
const byId = new Map(learnables.map((l) => [String(l.id), l]));
|
|
704
|
+
return learnableIds.map((learnableId) => {
|
|
705
|
+
const learnable = byId.get(String(learnableId));
|
|
706
|
+
return {
|
|
707
|
+
thingId: thingIdFromLearnableId(learnableId),
|
|
708
|
+
learnableId: asLearnableId(learnableId),
|
|
709
|
+
learningElement: learnable?.learning_element ?? "",
|
|
710
|
+
definitionElement: learnable?.definition_element ?? "",
|
|
711
|
+
itemType: learnable?.item_type ?? "",
|
|
712
|
+
difficulty: learnable?.difficulty ?? "",
|
|
713
|
+
};
|
|
714
|
+
});
|
|
715
|
+
}
|
|
716
|
+
/**
|
|
717
|
+
* The pair of columns a level tests, read from its learnables.
|
|
718
|
+
*
|
|
719
|
+
* Uniform within a level, but a pool can host levels with different
|
|
720
|
+
* pairings, so this is a per-level question. Returns null if the level
|
|
721
|
+
* reports no learnables to read the pair from. Note that a wholly empty
|
|
722
|
+
* level is invisible to the levels endpoint and throws instead.
|
|
723
|
+
*/
|
|
724
|
+
async getLevelColumnPair(courseId, levelId) {
|
|
725
|
+
const level = await this.getLevel(courseId, levelId);
|
|
726
|
+
const first = (level.learnable_ids ?? [])[0];
|
|
727
|
+
return first === undefined ? null : columnPairFromLearnableId(first);
|
|
728
|
+
}
|
|
729
|
+
/**
|
|
730
|
+
* Find the learnable ID for a thing as it appears in a given level.
|
|
731
|
+
*
|
|
732
|
+
* Returns null when the thing is not in the level, rather than handing back
|
|
733
|
+
* an ID that does not resolve.
|
|
734
|
+
*/
|
|
735
|
+
async getLearnableIdInLevel(courseId, levelId, thingId) {
|
|
736
|
+
const level = await this.getLevel(courseId, levelId);
|
|
737
|
+
const wanted = String(thingId);
|
|
738
|
+
const match = (level.learnable_ids ?? []).find((learnableId) => String(thingIdFromLearnableId(learnableId)) === wanted);
|
|
739
|
+
return match === undefined ? null : asLearnableId(match);
|
|
740
|
+
}
|
|
741
|
+
/**
|
|
742
|
+
* The pool behind a level, without needing the course ID.
|
|
743
|
+
*
|
|
744
|
+
* The levels endpoint is course-scoped, so this consults a cache that every
|
|
745
|
+
* getCourseLevels call populates, and falls back to sweeping the courses on
|
|
746
|
+
* your dashboard. All JSON -- no page scraping.
|
|
747
|
+
*
|
|
748
|
+
* A level with no items is invisible to that endpoint. Levels created
|
|
749
|
+
* through addLevelToCourse are cached at creation, but for anything else,
|
|
750
|
+
* pass numeric column keys or use a course-scoped call.
|
|
751
|
+
*/
|
|
752
|
+
async getPoolIdForLevelId(levelId) {
|
|
753
|
+
const key = String(levelId);
|
|
754
|
+
const cached = this.poolIdByLevel.get(key);
|
|
755
|
+
if (cached !== undefined)
|
|
756
|
+
return cached;
|
|
757
|
+
for (const course of (await this.getMyCourses(100, 0)).courses) {
|
|
758
|
+
await this.getCourseLevels(course.id);
|
|
759
|
+
const found = this.poolIdByLevel.get(key);
|
|
760
|
+
if (found !== undefined)
|
|
761
|
+
return found;
|
|
525
762
|
}
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
763
|
+
throw new Error(`Could not find level ${levelId} on any course on your dashboard, so its columns cannot be resolved by name. Empty levels are not listed by the API. Pass numeric column keys instead, or add via the course-scoped call.`);
|
|
764
|
+
}
|
|
765
|
+
async columnKeysFor(poolId) {
|
|
766
|
+
const key = String(poolId);
|
|
767
|
+
const cached = this.columnKeysByPool.get(key);
|
|
768
|
+
if (cached)
|
|
769
|
+
return cached;
|
|
770
|
+
const { pool } = await this.getPool(poolId);
|
|
771
|
+
const byLabel = new Map();
|
|
772
|
+
for (const [columnKey, config] of Object.entries(pool.columns)) {
|
|
773
|
+
byLabel.set(config.label.trim().toLowerCase(), columnKey);
|
|
529
774
|
}
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
}
|
|
775
|
+
this.columnKeysByPool.set(key, byLabel);
|
|
776
|
+
return byLabel;
|
|
777
|
+
}
|
|
778
|
+
/**
|
|
779
|
+
* Translate a row keyed by column name into the numeric keys Memrise
|
|
780
|
+
* wants. Numeric keys pass through untouched, so callers that already
|
|
781
|
+
* speak the wire format keep working and pay no extra request.
|
|
782
|
+
*
|
|
783
|
+
* Names are matched case-insensitively against the pool's column labels.
|
|
784
|
+
*/
|
|
785
|
+
async resolveColumnKeys(poolId, row) {
|
|
786
|
+
if (!Object.keys(row).some((key) => !/^\d+$/.test(key))) {
|
|
787
|
+
return { ...row };
|
|
788
|
+
}
|
|
789
|
+
const byLabel = await this.columnKeysFor(poolId);
|
|
790
|
+
const resolved = {};
|
|
791
|
+
for (const [key, value] of Object.entries(row)) {
|
|
792
|
+
if (/^\d+$/.test(key)) {
|
|
793
|
+
resolved[key] = value;
|
|
794
|
+
continue;
|
|
795
|
+
}
|
|
796
|
+
const numeric = byLabel.get(key.trim().toLowerCase());
|
|
797
|
+
if (!numeric) {
|
|
798
|
+
throw new Error(`Pool ${poolId} has no column named "${key}". Available columns: ${[...byLabel.keys()].join(", ")}.`);
|
|
799
|
+
}
|
|
800
|
+
resolved[numeric] = value;
|
|
801
|
+
}
|
|
802
|
+
return resolved;
|
|
803
|
+
}
|
|
804
|
+
/** Resolve named columns in a single row against the pool behind a level. */
|
|
805
|
+
async resolveColumnsForLevel(levelId, row) {
|
|
806
|
+
if (!Object.keys(row).some((key) => !/^\d+$/.test(key)))
|
|
807
|
+
return { ...row };
|
|
808
|
+
return this.resolveColumnKeys(await this.getPoolIdForLevelId(levelId), row);
|
|
809
|
+
}
|
|
810
|
+
/** Resolve named columns in bulk rows against the pool behind a level. */
|
|
811
|
+
async resolveRowsForLevel(levelId, rows) {
|
|
812
|
+
if (typeof rows === "string")
|
|
813
|
+
return rows;
|
|
814
|
+
const needsLookup = rows.some((row) => !Array.isArray(row) &&
|
|
815
|
+
Object.keys(row).some((key) => !/^\d+$/.test(key)));
|
|
816
|
+
if (!needsLookup)
|
|
817
|
+
return rows;
|
|
818
|
+
return this.resolveRowsForPool(await this.getPoolIdForLevelId(levelId), rows);
|
|
819
|
+
}
|
|
820
|
+
/** Resolve named columns in bulk rows against a pool. */
|
|
821
|
+
async resolveRowsForPool(poolId, rows) {
|
|
822
|
+
if (typeof rows === "string" || Array.isArray(rows) === false)
|
|
823
|
+
return rows;
|
|
824
|
+
const needsLookup = rows.some((row) => !Array.isArray(row) &&
|
|
825
|
+
Object.keys(row).some((key) => !/^\d+$/.test(key)));
|
|
826
|
+
if (!needsLookup)
|
|
827
|
+
return rows;
|
|
828
|
+
const resolved = [];
|
|
829
|
+
for (const row of rows) {
|
|
830
|
+
resolved.push(Array.isArray(row) ? row : await this.resolveColumnKeys(poolId, row));
|
|
543
831
|
}
|
|
544
|
-
return
|
|
832
|
+
return resolved;
|
|
545
833
|
}
|
|
546
834
|
async getCourseColumns(courseId) {
|
|
547
835
|
const levels = await this.getCourseLevels(courseId);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memrise has two ID namespaces that are easy to confuse. These brands are
|
|
3
|
+
* compile-time only -- they erase to plain numbers at runtime -- but they stop
|
|
4
|
+
* a learnable ID being passed where a thing ID belongs.
|
|
5
|
+
*
|
|
6
|
+
* IDs handed back by this SDK are already branded. To brand a number from
|
|
7
|
+
* elsewhere, use `asThingId` / `asLearnableId`, which is deliberately an
|
|
8
|
+
* explicit act.
|
|
9
|
+
*/
|
|
10
|
+
declare const THING_ID: unique symbol;
|
|
11
|
+
declare const LEARNABLE_ID: unique symbol;
|
|
12
|
+
/** A row in a pool. What the mutation endpoints operate on. */
|
|
13
|
+
export type ThingId = number & {
|
|
14
|
+
readonly [THING_ID]: true;
|
|
15
|
+
};
|
|
16
|
+
/** A thing plus the column pair being tested. What levels report. */
|
|
17
|
+
export type LearnableId = number & {
|
|
18
|
+
readonly [LEARNABLE_ID]: true;
|
|
19
|
+
};
|
|
20
|
+
export declare function asThingId(id: number): ThingId;
|
|
21
|
+
export declare function asLearnableId(id: number): LearnableId;
|
|
1
22
|
export interface MemriseColumn {
|
|
2
23
|
val: string;
|
|
3
24
|
kind: string;
|
|
@@ -33,6 +54,9 @@ export interface BulkAddResponse {
|
|
|
33
54
|
}
|
|
34
55
|
export interface AddLevelResponse {
|
|
35
56
|
success: boolean;
|
|
57
|
+
/** ID of the level just created, recovered from the redirect URL. */
|
|
58
|
+
levelId?: number;
|
|
59
|
+
redirect_url?: string;
|
|
36
60
|
level?: CourseLevel;
|
|
37
61
|
rendered_level?: string;
|
|
38
62
|
[key: string]: unknown;
|
|
@@ -59,6 +83,21 @@ export interface SearchPoolResponse {
|
|
|
59
83
|
success: boolean;
|
|
60
84
|
result: SearchPoolResultItem[];
|
|
61
85
|
}
|
|
86
|
+
/** A pair of pool columns: one prompts, the other answers. */
|
|
87
|
+
export interface ColumnPair {
|
|
88
|
+
learningColumn: number;
|
|
89
|
+
definitionColumn: number;
|
|
90
|
+
}
|
|
91
|
+
export interface LevelThing {
|
|
92
|
+
/** Pool-authoring identity. This is what deleteThingFromLevel needs. */
|
|
93
|
+
thingId: ThingId;
|
|
94
|
+
/** Course-facing identity the thing ID was derived from. */
|
|
95
|
+
learnableId: LearnableId;
|
|
96
|
+
learningElement: string;
|
|
97
|
+
definitionElement: string;
|
|
98
|
+
itemType: string;
|
|
99
|
+
difficulty: string;
|
|
100
|
+
}
|
|
62
101
|
export interface PoolColumnConfig {
|
|
63
102
|
kind: string;
|
|
64
103
|
label: string;
|
|
@@ -134,6 +173,20 @@ export interface Learnable {
|
|
|
134
173
|
item_type: string;
|
|
135
174
|
difficulty: string;
|
|
136
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* A learnable as this SDK hands it out: the raw fields plus the thing ID it
|
|
178
|
+
* was built from, so callers never have to unpack the ID themselves.
|
|
179
|
+
*/
|
|
180
|
+
export interface CourseItem {
|
|
181
|
+
learnableId: LearnableId;
|
|
182
|
+
thingId: ThingId;
|
|
183
|
+
/** Levels this item appears in. Normally one, but the API permits more. */
|
|
184
|
+
levelIds: number[];
|
|
185
|
+
learningElement: string;
|
|
186
|
+
definitionElement: string;
|
|
187
|
+
itemType: string;
|
|
188
|
+
difficulty: string;
|
|
189
|
+
}
|
|
137
190
|
export interface GetLearnableResponse {
|
|
138
191
|
learnables: Record<string, Learnable>;
|
|
139
192
|
}
|
|
@@ -161,4 +214,5 @@ export interface AuthWebResponse {
|
|
|
161
214
|
success?: boolean;
|
|
162
215
|
[key: string]: unknown;
|
|
163
216
|
}
|
|
217
|
+
export {};
|
|
164
218
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,SAAS,CAAC,EAAU;IACnC,OAAO,EAAa,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAU;IACvC,OAAO,EAAiB,CAAC;AAC1B,CAAC"}
|