← Timeline
Avatar
Tigra
Тьюториал по использованию Typescript библиотеки moeralib для Node.js для постинга в Moera

Я (был) практически не знаком с Typescript и c Node.js. Более того, я всю эту ерунду ненавижу. Однако - захотел кое-что попробовать, повайбкодить, и поковырял (мы вместе с Claude поковыряли), Shmuel Leib Melamud растолковал непонятные моменты. В качестве побочного эффекта получился тьюториал.

Вкратце, создаем токен с необходимыми пермишенами, конфигурируем проект (что для меня как неофита тайпскрипта и ноды было нетривиально), конфигурируем аутентификацию и создаём пост, а потом вытягиваем его.

Для того, чтобы втолковать Клоду, что есть moeralib, я спаковал репу typescript-moeralib с помощью утилиты repomix с "компрессией" и исключением автоматически сгенерированных файлов. Кое-что при этом пришлось копипастить из документации, если галюцинировал.

Так как тьюториал по результатам изысканий сгенерировал Claude, и он его редактировал после того, как отредактировал я (попросил его почистить примеры аутпутов от реальных айдишников, дайджестов и тому подобного), я был бы признателен, если кто-то прогонит его у себя и протестирует. В том числе, адекватны ли реальным примеры аутпутов.

Также приветствуются коррективы и дополнения другого рода.

How to post to Moera using Typescript moeralib library
How to post to Moera using Typescript moeralib library - moera-typescript-client-tutorial.md
GistGIST.GITHUB.COM
GitHub - MoeraOrg/typescript-moeralib: TypeScript (or JavaScript) library t…
TypeScript (or JavaScript) library to interact with Moera decentralized social network - MoeraOrg/typescript-moeralib
GitHubGITHUB.COM
💯👍3
To react or comment  View in Web Client
Comments (9)
Avatar placeholder

не обещаю, может быть в эти выходные посмотрю

👍1
Avatar

Заодно я обнаружил, что забыл везде await в примерах на TypeScript 🤦

👍1
Avatar placeholder

const util = require('util'); в примере index.ts - не используется

а в advanced не используется MoeraNaming из строки
const { MoeraNaming, resolve } = require('moeralib/naming');

можно удалить их, чтобы линт не ругался


можно добавить файл .env с двумя переменными:

NODE_URL='https://твоёимя.moera.blog'
ADMIN_TOKEN='токен-многа-букв-и-цифр'

а в начале файла:

import dotenv from 'dotenv';
dotenv.config();
const NODE_URL = process.env.NODE_URL;
const ADMIN_TOKEN = process.env.ADMIN_TOKEN;
if (!NODE_NAME || !ADMIN_TOKEN) {
console.error('Error: Missing required environment variables.');
console.error('Please ensure both NODE_NAME and ADMIN_TOKEN are set.');
process.exit(1);
}

👍1
Avatar placeholder

advanced с первой попытки не взлетел


~/prg/js/moera_app$ npm run advanced

> moera_app@1.0.0 advanced
> ts-node src/advanced.ts

Resolving node URL for name: zmila
Node resolved to URL: https://zmila.moera.blog/moera
Node configured for authentication - will be used in API calls
Creating new post with timestamp: 2025-03-23T09:56:16.000Z
Error: MoeraNodeApiError: createPosting: Node error: Authentication required
at MoeraNode.<anonymous> (/home/dzmitry_laptsionak/prg/js/moera_app/node_modules/moeralib/lib/node/caller.js:343:23)
at Generator.next (<anonymous>)
at fulfilled (/home/dzmitry_laptsionak/prg/js/moera_app/node_modules/moeralib/lib/node/caller.js:5:58)
at processTicksAndRejections (node:internal/process/task_queues:95:5) {
errorCode: 'authentication.required'
}
Error code: authentication.required


вечером посмотрю глубже

Avatar placeholder

сделал второй токен, выбрав "All permissions" - и advanced сработал. пост создался и появился в ленте.
видимо, надо найти какое ещё разрешение нужно добавить к тем 3, что указаны в инструкции.

Avatar
Avatar

Надо бы это название поправить, а то непонятно, что добавление stories в ленту тоже сюда включено.

👍1
Avatar
Avatar

Я уже поменял описание в документации. В интерфейсе будет такое же.

To react or comment  View in Web Client