Update README.md

main
Kirill 2023-03-11 15:36:38 +03:00 zatwierdzone przez GitHub
rodzic 21dd474678
commit 7c54ed84aa
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
1 zmienionych plików z 2 dodań i 113 usunięć

115
README.md
Wyświetl plik

@ -1,113 +1,2 @@
# ActivityPub Models
Extendable ActivityPub JS/TS models with official docs
## Table of Contents
- [Features](#features)
- [Docs](#docs)
- [Roadmap](#future-plans)
- [Contact](#contact)
- [License](#license)
## Features
- All models implemented
- In-code documentation
- Ability to create/extend own models
- TypeScript and JavaScript support
## Docs
Install with npm:
```
npm i activitypub-models
```
Install with yarn:
```
yarn add activitypub-models
```
Use of models:
```typescript
import { Note, Link, contexts } from 'activitypub-models';
// "type" already provided, but can be rewrited
const imageLink = Link.create({
href: 'https://example.org/martin/image.jpg',
mediaType: 'image/jpeg'
});
const note = Note.create({
'@context': contexts.activityStreamsV2,
mediaType: 'text/plain',
image: imageLink, // supports nested objects
});
note.content = 'some content';
note.content = 123; // TypeError: only string available for "content"
const obj = note.toPlain(); // convert to simple JS object
const json = note.toJSON(); // convert to JSON
```
Creating own models with TypeScript:
```typescript
import { NoteFields, APBase, ASModelType } from 'activitypub-models';
interface CustomNoteFields extends NoteFields {
myField: string | string[];
}
class CustomNote extends APBase<CustomNoteFields> {
static create(fields: CustomNoteFields) {
return APBase._create<CustomNoteFields>({
type: ASModelType.Note,
...fields,
});
}
}
const customNote = CustomNote.create({
myField: 'I am a new field!'
});
```
You also can create models with plain JS, but you will lose types. Can be fixed with .d.ts and jsdoc:
```typescript
// CustomNote.d.ts
import { APBase, NoteFields, WithContext } from "activitypub-models";
export interface CustomNotesFields extends NoteFields {
myField: string | string[];
}
export type CustomNoteType = APBase<CustomNotesFields> & CustomNotesFields & WithContext;
// CustomNote.js
import {APBase, ASModelType} from "activitypub-models";
class CustomNote extends APBase {
static create(fields) {
return APBase._create({
type: ASModelType.Note,
...fields,
});
}
}
/** @type {CustomNoteType} */
const customNote = CustomNote.create({
myField: 'I am a new field!'
});
```
## Future plans
You can check current tasks [here](https://github.com/orgs/activitypub-js/projects/1)
## Contact
You can contact me via [matrix](https://matrix.to/#/@siranweb:matrix.org) or [telegram](https://t.me/KirillG_web)
## License
[MIT](LICENSE)
# Check new repo
Please use [activitypub-types](https://github.com/SiranWeb/activitypub-types) instead. It contains all ActivityPub types as Typescript interfaces, so you can write your model logic as you want