lemmy-js-client 0.19.4-alpha.9 → 0.19.4
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 +20 -17
- package/dist/http.d.ts +8 -4
- package/dist/http.js +19 -19
- package/dist/index.d.ts +2 -0
- package/dist/types/CommentReplyView.d.ts +1 -0
- package/dist/types/CommentView.d.ts +1 -0
- package/dist/types/EditSite.d.ts +1 -0
- package/dist/types/GetSiteResponse.d.ts +2 -0
- package/dist/types/LemmyErrorType.d.ts +28 -6
- package/dist/types/ListMediaResponse.d.ts +2 -2
- package/dist/types/LocalImageView.d.ts +6 -0
- package/dist/types/LocalSiteUrlBlocklist.d.ts +6 -0
- package/dist/types/PersonMentionView.d.ts +1 -0
- package/dist/types/PostView.d.ts +1 -0
- package/dist/types/Register.d.ts +1 -1
- package/dist/types/Site.d.ts +1 -0
- package/dist/types/VoteView.d.ts +1 -0
- package/package.json +6 -8
- package/dist/types/ImageUpload.d.ts +0 -7
- package/dist/types/SiteMetadata.d.ts +0 -6
- /package/dist/types/{ImageUpload.js → LocalImageView.js} +0 -0
- /package/dist/types/{SiteMetadata.js → LocalSiteUrlBlocklist.js} +0 -0
package/README.md
CHANGED
@@ -22,31 +22,34 @@ A javascript / typescript http client and type system for [Lemmy](https://github
|
|
22
22
|
[LemmyHttp docs](https://join-lemmy.org/api/classes/LemmyHttp.html)
|
23
23
|
|
24
24
|
```ts
|
25
|
-
import { LemmyHttp, Login } from
|
25
|
+
import { LemmyHttp, Login } from "lemmy-js-client";
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
// Build the client
|
28
|
+
const baseUrl = "https://lemmy.ml";
|
29
|
+
const client: LemmyHttp = new LemmyHttp(baseUrl);
|
30
|
+
|
31
|
+
// Build the login form
|
32
|
+
const loginForm: Login = {
|
30
33
|
username_or_email: "my_name",
|
31
34
|
password: "my_pass",
|
32
35
|
};
|
33
|
-
let jwt = await client.login(loginForm).jwt;
|
34
|
-
```
|
35
|
-
|
36
|
-
## Development
|
37
36
|
|
38
|
-
|
37
|
+
// Login and set the client headers with your jwt
|
38
|
+
const { jwt } = await client.login(loginForm);
|
39
|
+
client.setHeaders({ Authorization: `Bearer ${jwt}` });
|
39
40
|
|
41
|
+
// Fetch top posts for the day
|
42
|
+
const getPostsForm: GetPosts = {
|
43
|
+
sort: "TopDay",
|
44
|
+
type_: "Local",
|
45
|
+
};
|
46
|
+
const posts = await client.getPosts(getPostsForm);
|
40
47
|
```
|
41
|
-
pnpm i --global add yalc
|
42
48
|
|
43
|
-
|
44
|
-
yalc publish --push
|
49
|
+
## Development
|
45
50
|
|
46
|
-
|
47
|
-
yalc add lemmy-js-client
|
51
|
+
Use `pnpm add` to develop and test changes locally:
|
48
52
|
|
49
|
-
|
50
|
-
|
51
|
-
yalc publish --push
|
53
|
+
```
|
54
|
+
pnpm add path/to/lemmy-js-client
|
52
55
|
```
|
package/dist/http.d.ts
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
import fetch from "cross-fetch";
|
2
1
|
import { AddAdmin } from "./types/AddAdmin";
|
3
2
|
import { AddAdminResponse } from "./types/AddAdminResponse";
|
4
3
|
import { AddModToCommunity } from "./types/AddModToCommunity";
|
@@ -211,15 +210,15 @@ export declare class LemmyHttp {
|
|
211
210
|
/**
|
212
211
|
* List all the media for your user
|
213
212
|
*
|
214
|
-
* `HTTP.GET /
|
213
|
+
* `HTTP.GET /account/list_media`
|
215
214
|
*/
|
216
|
-
listMedia(form
|
215
|
+
listMedia(form?: ListMedia): Promise<ListMediaResponse>;
|
217
216
|
/**
|
218
217
|
* List all the media known to your instance.
|
219
218
|
*
|
220
219
|
* `HTTP.GET /admin/list_all_media`
|
221
220
|
*/
|
222
|
-
listAllMedia(form
|
221
|
+
listAllMedia(form?: ListMedia): Promise<ListMediaResponse>;
|
223
222
|
/**
|
224
223
|
* Enable / Disable TOTP / two-factor authentication.
|
225
224
|
*
|
@@ -566,6 +565,11 @@ export declare class LemmyHttp {
|
|
566
565
|
* `HTTP.POST /user/login`
|
567
566
|
*/
|
568
567
|
login(form: Login): Promise<LoginResponse>;
|
568
|
+
/**
|
569
|
+
* Invalidate the currently used auth token.
|
570
|
+
*
|
571
|
+
* `HTTP.POST /user/logout`
|
572
|
+
*/
|
569
573
|
logout(): Promise<SuccessResponse>;
|
570
574
|
/**
|
571
575
|
* Get the details for a person.
|
package/dist/http.js
CHANGED
@@ -19,14 +19,9 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
19
19
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
20
20
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
21
21
|
};
|
22
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
23
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
24
|
-
};
|
25
22
|
var _LemmyHttp_instances, _LemmyHttp_apiUrl, _LemmyHttp_headers, _LemmyHttp_pictrsUrl, _LemmyHttp_fetchFunction, _LemmyHttp_buildFullUrl, _LemmyHttp_wrapper;
|
26
23
|
Object.defineProperty(exports, "__esModule", { value: true });
|
27
24
|
exports.LemmyHttp = void 0;
|
28
|
-
const cross_fetch_1 = __importDefault(require("cross-fetch"));
|
29
|
-
const form_data_1 = __importDefault(require("form-data"));
|
30
25
|
const other_types_1 = require("./other_types");
|
31
26
|
var HttpType;
|
32
27
|
(function (HttpType) {
|
@@ -48,7 +43,7 @@ class LemmyHttp {
|
|
48
43
|
_LemmyHttp_apiUrl.set(this, void 0);
|
49
44
|
_LemmyHttp_headers.set(this, {});
|
50
45
|
_LemmyHttp_pictrsUrl.set(this, void 0);
|
51
|
-
_LemmyHttp_fetchFunction.set(this,
|
46
|
+
_LemmyHttp_fetchFunction.set(this, fetch.bind(globalThis));
|
52
47
|
__classPrivateFieldSet(this, _LemmyHttp_apiUrl, `${baseUrl.replace(/\/+$/, "")}/api/${other_types_1.VERSION}`, "f");
|
53
48
|
__classPrivateFieldSet(this, _LemmyHttp_pictrsUrl, `${baseUrl}/pictrs/image`, "f");
|
54
49
|
if (options === null || options === void 0 ? void 0 : options.headers) {
|
@@ -136,17 +131,17 @@ class LemmyHttp {
|
|
136
131
|
/**
|
137
132
|
* List all the media for your user
|
138
133
|
*
|
139
|
-
* `HTTP.GET /
|
134
|
+
* `HTTP.GET /account/list_media`
|
140
135
|
*/
|
141
|
-
listMedia(form) {
|
142
|
-
return __classPrivateFieldGet(this, _LemmyHttp_instances, "m", _LemmyHttp_wrapper).call(this, HttpType.Get, "/
|
136
|
+
listMedia(form = {}) {
|
137
|
+
return __classPrivateFieldGet(this, _LemmyHttp_instances, "m", _LemmyHttp_wrapper).call(this, HttpType.Get, "/account/list_media", form);
|
143
138
|
}
|
144
139
|
/**
|
145
140
|
* List all the media known to your instance.
|
146
141
|
*
|
147
142
|
* `HTTP.GET /admin/list_all_media`
|
148
143
|
*/
|
149
|
-
listAllMedia(form) {
|
144
|
+
listAllMedia(form = {}) {
|
150
145
|
return __classPrivateFieldGet(this, _LemmyHttp_instances, "m", _LemmyHttp_wrapper).call(this, HttpType.Get, "/admin/list_all_media", form);
|
151
146
|
}
|
152
147
|
/**
|
@@ -609,6 +604,11 @@ class LemmyHttp {
|
|
609
604
|
login(form) {
|
610
605
|
return __classPrivateFieldGet(this, _LemmyHttp_instances, "m", _LemmyHttp_wrapper).call(this, HttpType.Post, "/user/login", form);
|
611
606
|
}
|
607
|
+
/**
|
608
|
+
* Invalidate the currently used auth token.
|
609
|
+
*
|
610
|
+
* `HTTP.POST /user/logout`
|
611
|
+
*/
|
612
612
|
logout() {
|
613
613
|
return __classPrivateFieldGet(this, _LemmyHttp_instances, "m", _LemmyHttp_wrapper).call(this, HttpType.Post, "/user/logout", {});
|
614
614
|
}
|
@@ -855,8 +855,8 @@ class LemmyHttp {
|
|
855
855
|
/**
|
856
856
|
* Upload an image to the server.
|
857
857
|
*/
|
858
|
-
uploadImage(
|
859
|
-
return __awaiter(this,
|
858
|
+
uploadImage(_a) {
|
859
|
+
return __awaiter(this, arguments, void 0, function* ({ image }) {
|
860
860
|
const formData = createFormData(image);
|
861
861
|
let url = undefined;
|
862
862
|
let delete_url = undefined;
|
@@ -881,8 +881,8 @@ class LemmyHttp {
|
|
881
881
|
/**
|
882
882
|
* Delete a pictrs image
|
883
883
|
*/
|
884
|
-
deleteImage(
|
885
|
-
return __awaiter(this,
|
884
|
+
deleteImage(_a) {
|
885
|
+
return __awaiter(this, arguments, void 0, function* ({ token, filename }) {
|
886
886
|
const deleteUrl = `${__classPrivateFieldGet(this, _LemmyHttp_pictrsUrl, "f")}/delete/${token}/${filename}`;
|
887
887
|
const response = yield __classPrivateFieldGet(this, _LemmyHttp_fetchFunction, "f").call(this, deleteUrl, {
|
888
888
|
method: HttpType.Get,
|
@@ -902,8 +902,8 @@ exports.LemmyHttp = LemmyHttp;
|
|
902
902
|
_LemmyHttp_apiUrl = new WeakMap(), _LemmyHttp_headers = new WeakMap(), _LemmyHttp_pictrsUrl = new WeakMap(), _LemmyHttp_fetchFunction = new WeakMap(), _LemmyHttp_instances = new WeakSet(), _LemmyHttp_buildFullUrl = function _LemmyHttp_buildFullUrl(endpoint) {
|
903
903
|
return `${__classPrivateFieldGet(this, _LemmyHttp_apiUrl, "f")}${endpoint}`;
|
904
904
|
}, _LemmyHttp_wrapper = function _LemmyHttp_wrapper(type_, endpoint, form) {
|
905
|
-
var _a;
|
906
905
|
return __awaiter(this, void 0, void 0, function* () {
|
906
|
+
var _a;
|
907
907
|
let response;
|
908
908
|
if (type_ === HttpType.Get) {
|
909
909
|
const getUrl = `${__classPrivateFieldGet(this, _LemmyHttp_instances, "m", _LemmyHttp_buildFullUrl).call(this, endpoint)}?${encodeGetParams(form)}`;
|
@@ -936,18 +936,18 @@ _LemmyHttp_apiUrl = new WeakMap(), _LemmyHttp_headers = new WeakMap(), _LemmyHtt
|
|
936
936
|
};
|
937
937
|
function encodeGetParams(p) {
|
938
938
|
return Object.entries(p)
|
939
|
-
.filter(kv =>
|
939
|
+
.filter(kv => kv[1] !== undefined && kv[1] !== null)
|
940
940
|
.map(kv => kv.map(encodeURIComponent).join("="))
|
941
941
|
.join("&");
|
942
942
|
}
|
943
943
|
function createFormData(image) {
|
944
|
-
let formData = new
|
945
|
-
if (image
|
944
|
+
let formData = new FormData();
|
945
|
+
if (image instanceof File) {
|
946
946
|
formData.append("images[]", image);
|
947
947
|
}
|
948
948
|
else {
|
949
949
|
// The filename doesn't affect the file type or file name that ends up in pictrs
|
950
|
-
formData.append("images[]", image, {
|
950
|
+
formData.append("images[]", new Blob([image], { type: "image/jpeg" }), "image.jpg");
|
951
951
|
}
|
952
952
|
return formData;
|
953
953
|
}
|
package/dist/index.d.ts
CHANGED
@@ -137,9 +137,11 @@ export { ListRegistrationApplications } from "./types/ListRegistrationApplicatio
|
|
137
137
|
export { ListRegistrationApplicationsResponse } from "./types/ListRegistrationApplicationsResponse";
|
138
138
|
export { ListingType } from "./types/ListingType";
|
139
139
|
export { LocalImage } from "./types/LocalImage";
|
140
|
+
export { LocalImageView } from "./types/LocalImageView";
|
140
141
|
export { LocalSite } from "./types/LocalSite";
|
141
142
|
export { LocalSiteId } from "./types/LocalSiteId";
|
142
143
|
export { LocalSiteRateLimit } from "./types/LocalSiteRateLimit";
|
144
|
+
export { LocalSiteUrlBlocklist } from "./types/LocalSiteUrlBlocklist";
|
143
145
|
export { LocalUser } from "./types/LocalUser";
|
144
146
|
export { LocalUserId } from "./types/LocalUserId";
|
145
147
|
export { LocalUserView } from "./types/LocalUserView";
|
package/dist/types/EditSite.d.ts
CHANGED
@@ -42,6 +42,7 @@ export interface EditSite {
|
|
42
42
|
captcha_difficulty?: string;
|
43
43
|
allowed_instances?: Array<string>;
|
44
44
|
blocked_instances?: Array<string>;
|
45
|
+
blocked_urls?: Array<string>;
|
45
46
|
taglines?: Array<string>;
|
46
47
|
registration_mode?: RegistrationMode;
|
47
48
|
reports_email_admins?: boolean;
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import type { CustomEmojiView } from "./CustomEmojiView";
|
2
2
|
import type { Language } from "./Language";
|
3
3
|
import type { LanguageId } from "./LanguageId";
|
4
|
+
import type { LocalSiteUrlBlocklist } from "./LocalSiteUrlBlocklist";
|
4
5
|
import type { MyUserInfo } from "./MyUserInfo";
|
5
6
|
import type { PersonView } from "./PersonView";
|
6
7
|
import type { SiteView } from "./SiteView";
|
@@ -14,4 +15,5 @@ export interface GetSiteResponse {
|
|
14
15
|
discussion_languages: Array<LanguageId>;
|
15
16
|
taglines: Array<Tagline>;
|
16
17
|
custom_emojis: Array<CustomEmojiView>;
|
18
|
+
blocked_urls: Array<LocalSiteUrlBlocklist>;
|
17
19
|
}
|
@@ -66,6 +66,26 @@ export type LemmyErrorType = {
|
|
66
66
|
error: "couldnt_find_community";
|
67
67
|
} | {
|
68
68
|
error: "couldnt_find_person";
|
69
|
+
} | {
|
70
|
+
error: "couldnt_find_comment";
|
71
|
+
} | {
|
72
|
+
error: "couldnt_find_comment_report";
|
73
|
+
} | {
|
74
|
+
error: "couldnt_find_post_report";
|
75
|
+
} | {
|
76
|
+
error: "couldnt_find_private_message_report";
|
77
|
+
} | {
|
78
|
+
error: "couldnt_find_local_user";
|
79
|
+
} | {
|
80
|
+
error: "couldnt_find_person_mention";
|
81
|
+
} | {
|
82
|
+
error: "couldnt_find_registration_application";
|
83
|
+
} | {
|
84
|
+
error: "couldnt_find_comment_reply";
|
85
|
+
} | {
|
86
|
+
error: "couldnt_find_private_message";
|
87
|
+
} | {
|
88
|
+
error: "couldnt_find_activity";
|
69
89
|
} | {
|
70
90
|
error: "person_is_blocked";
|
71
91
|
} | {
|
@@ -157,12 +177,10 @@ export type LemmyErrorType = {
|
|
157
177
|
error: "invalid_vote_value";
|
158
178
|
} | {
|
159
179
|
error: "page_does_not_specify_creator";
|
160
|
-
} | {
|
161
|
-
error: "page_does_not_specify_group";
|
162
|
-
} | {
|
163
|
-
error: "no_community_found_in_cc";
|
164
180
|
} | {
|
165
181
|
error: "no_email_setup";
|
182
|
+
} | {
|
183
|
+
error: "local_site_not_setup";
|
166
184
|
} | {
|
167
185
|
error: "email_smtp_server_needs_a_port";
|
168
186
|
} | {
|
@@ -249,6 +267,8 @@ export type LemmyErrorType = {
|
|
249
267
|
error: "couldnt_set_all_email_verified";
|
250
268
|
} | {
|
251
269
|
error: "banned";
|
270
|
+
} | {
|
271
|
+
error: "blocked_url";
|
252
272
|
} | {
|
253
273
|
error: "couldnt_get_comments";
|
254
274
|
} | {
|
@@ -284,8 +304,6 @@ export type LemmyErrorType = {
|
|
284
304
|
error: "invalid_regex";
|
285
305
|
} | {
|
286
306
|
error: "captcha_incorrect";
|
287
|
-
} | {
|
288
|
-
error: "password_reset_limit_reached";
|
289
307
|
} | {
|
290
308
|
error: "couldnt_create_audio_captcha";
|
291
309
|
} | {
|
@@ -308,6 +326,10 @@ export type LemmyErrorType = {
|
|
308
326
|
error: "invalid_bot_action";
|
309
327
|
} | {
|
310
328
|
error: "cant_block_local_instance";
|
329
|
+
} | {
|
330
|
+
error: "url_without_domain";
|
331
|
+
} | {
|
332
|
+
error: "inbox_timeout";
|
311
333
|
} | {
|
312
334
|
error: "unknown";
|
313
335
|
message: string;
|
package/dist/types/PostView.d.ts
CHANGED
package/dist/types/Register.d.ts
CHANGED
package/dist/types/Site.d.ts
CHANGED
package/dist/types/VoteView.d.ts
CHANGED
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "lemmy-js-client",
|
3
3
|
"description": "A javascript / typescript client for Lemmy",
|
4
|
-
"version": "0.19.4
|
4
|
+
"version": "0.19.4",
|
5
5
|
"author": "Dessalines <tyhou13@gmx.com>",
|
6
6
|
"license": "AGPL-3.0",
|
7
7
|
"main": "./dist/index.js",
|
@@ -11,22 +11,18 @@
|
|
11
11
|
"scripts": {
|
12
12
|
"build": "tsc",
|
13
13
|
"docs": "typedoc src/index.ts",
|
14
|
-
"lint": "tsc --noEmit && eslint --report-unused-disable-directives
|
14
|
+
"lint": "tsc --noEmit && eslint --report-unused-disable-directives && prettier --check src",
|
15
15
|
"prepare": "pnpm run build && husky"
|
16
16
|
},
|
17
17
|
"repository": {
|
18
18
|
"type": "git",
|
19
19
|
"url": "git+https://github.com/LemmyNet/lemmy-js-client.git"
|
20
20
|
},
|
21
|
-
"dependencies": {
|
22
|
-
"cross-fetch": "^4.0.0",
|
23
|
-
"form-data": "^4.0.0"
|
24
|
-
},
|
25
21
|
"devDependencies": {
|
26
22
|
"@types/node": "^20.11.19",
|
27
23
|
"@typescript-eslint/eslint-plugin": "^7.0.1",
|
28
24
|
"@typescript-eslint/parser": "^7.0.1",
|
29
|
-
"eslint": "^
|
25
|
+
"eslint": "^9.0.0",
|
30
26
|
"eslint-plugin-prettier": "^5.1.3",
|
31
27
|
"husky": "^9.0.11",
|
32
28
|
"lint-staged": "^15.2.2",
|
@@ -36,8 +32,10 @@
|
|
36
32
|
"prettier-plugin-packagejson": "^2.4.11",
|
37
33
|
"sortpack": "^2.4.0",
|
38
34
|
"typedoc": "^0.25.8",
|
39
|
-
"typescript": "^5.3.3"
|
35
|
+
"typescript": "^5.3.3",
|
36
|
+
"typescript-eslint": "^7.9.0"
|
40
37
|
},
|
38
|
+
"packageManager": "pnpm@9.1.4",
|
41
39
|
"types": "./dist/index.d.ts",
|
42
40
|
"lint-staged": {
|
43
41
|
"*.{ts,tsx,js}": [
|
File without changes
|
File without changes
|