FoundKey/packages/foundkey-js
Norm 9470e12424
All checks were successful
ci/woodpecker/push/lint-backend Pipeline was successful
ci/woodpecker/push/lint-client Pipeline was successful
ci/woodpecker/push/lint-foundkey-js Pipeline was successful
ci/woodpecker/push/build Pipeline was successful
ci/woodpecker/push/test Pipeline was successful
Merge pull request 'Revert "Use native shell commands for clean/clean-all"' (#170) from revert-native-clean into main
Reviewed-on: #170
2022-09-23 22:15:29 +00:00
..
etc Add 'packages/foundkey-js/' from commit '637c6f1411c9c03f204f21da12e1f8e390d05cb8' 2022-08-25 21:39:55 -04:00
src add column: muted types in thread 2022-09-21 15:52:14 +02:00
test Add 'packages/foundkey-js/' from commit '637c6f1411c9c03f204f21da12e1f8e390d05cb8' 2022-08-25 21:39:55 -04:00
test-d Add 'packages/foundkey-js/' from commit '637c6f1411c9c03f204f21da12e1f8e390d05cb8' 2022-08-25 21:39:55 -04:00
.editorconfig Add 'packages/foundkey-js/' from commit '637c6f1411c9c03f204f21da12e1f8e390d05cb8' 2022-08-25 21:39:55 -04:00
.eslintignore migrate to Yarn 3.2.3 2022-08-26 15:24:29 -04:00
.eslintrc.cjs migrate to Yarn 3.2.3 2022-08-26 15:24:29 -04:00
.gitignore Add 'packages/foundkey-js/' from commit '637c6f1411c9c03f204f21da12e1f8e390d05cb8' 2022-08-25 21:39:55 -04:00
api-extractor.json Add 'packages/foundkey-js/' from commit '637c6f1411c9c03f204f21da12e1f8e390d05cb8' 2022-08-25 21:39:55 -04:00
CHANGELOG.md foundkey-js: make DriveFile.comment nullable 2022-08-31 06:55:31 -04:00
jest.config.ts Add 'packages/foundkey-js/' from commit '637c6f1411c9c03f204f21da12e1f8e390d05cb8' 2022-08-25 21:39:55 -04:00
LICENSE Add 'packages/foundkey-js/' from commit '637c6f1411c9c03f204f21da12e1f8e390d05cb8' 2022-08-25 21:39:55 -04:00
package.json Revert "Use native shell commands for clean/clean-all" 2022-09-22 13:48:06 -04:00
README.md update foundkey-js readme 2022-09-13 17:17:47 +02:00
tsconfig.json foundkey-js: fix build errors 2022-09-09 00:08:21 -04:00

foundkey-js

foundkey-js is a fork of misskey-js that is more up to date.

The following is provided:

  • User authentication
  • API requests
  • Streaming
  • Utility functions
  • Various foundkey type definitions

This library is designed to work with FoundKey. It should also work with Misskey 12+ but compatibility is not guaranteed.

Install

This package is not currently published to npmjs.

Usage

To use foundkey-js in your code, use the following import:

import * as foundkey from 'foundkey-js';

For convenience, the following code examples are based on the assumption that the code is imported as * as foundkey as shown above.

However, since tree-shaking is not possible with this import method, we recommend the following individual import for use cases where code size is important.

import { api as foundkeyApi } from 'foundkey-js';

Authenticate

todo

API request

When using the API, initialize an instance of the APIClient class by providing information on the server to be used and an access token, and make a request by calling the request method of the instance.

const cli = new foundkey.api.APIClient({
	origin: 'https://foundkey.example',
	credential: 'TOKEN',
});

const meta = await cli.request('meta', { detail: true });

The first argument of request is the name of the endpoint to call, and the second argument is a parameter object. The response is returned as a Promise.

Streaming

Two classes are provided for streaming in foundkey-js.

One is the Stream class, which handles the streaming connection itself, and the other is the Channel class, which represents the concept of a channel on the streaming.

When using streaming, you first initialize an instance of the Stream class, and then use the methods of the Stream instance to get an instance of the Channel class.

const stream = new foundkey.Stream('https://foundkey.example', { token: 'TOKEN' });
const mainChannel = stream.useChannel('main');
mainChannel.on('notification', notification => {
	console.log('notification received', notification);
});

If a connection is lost, it is automatically reconnected.

Connecting to a channel

Connection to a channel is made using the useChannel method of the Stream class.

No parameters

const stream = new foundkey.Stream('https://foundkey.example', { token: 'TOKEN' });

const mainChannel = stream.useChannel('main');

With parameters

const stream = new foundkey.Stream('https://foundkey.example', { token: 'TOKEN' });

const messagingChannel = stream.useChannel('messaging', {
	otherparty: 'xxxxxxxxxx',
});

Disconnect from a channel

Call the dispose method of the Channel class.

const stream = new foundkey.Stream('https://foundkey.example', { token: 'TOKEN' });

const mainChannel = stream.useChannel('main');

mainChannel.dispose();

Receiving messages

The Channel class inherits from EventEmitter and when a message is received from the server, it emits a payload with the name of the event received.

const stream = new foundkey.Stream('https://foundkey.example', { token: 'TOKEN' });
const mainChannel = stream.useChannel('main');
mainChannel.on('notification', notification => {
	console.log('notification received', notification);
});

Sending messages

Messages can be sent to the server using the send method of the Channel class.

const stream = new foundkey.Stream('https://foundkey.example', { token: 'TOKEN' });
const messagingChannel = stream.useChannel('messaging', {
	otherparty: 'xxxxxxxxxx',
});

messagingChannel.send('read', {
	id: 'xxxxxxxxxx'
});

_connected_ event

The _connected_ event of the Stream class is available.

const stream = new foundkey.Stream('https://foundkey.example', { token: 'TOKEN' });
stream.on('_connected_', () => {
	console.log('connected');
});

_disconnected_ event

The _disconnected_ event of the Stream class is available.

const stream = new foundkey.Stream('https://foundkey.example', { token: 'TOKEN' });
stream.on('_disconnected_', () => {
	console.log('disconnected');
});

Connection state

You can check the state property of the Stream class.

  • initializing: before connection is established
  • connected: connected.
  • reconnecting: reconnecting.