kopia lustrzana https://github.com/activitypub-js/activitypub-models
Update README.md
rodzic
21dd474678
commit
7c54ed84aa
115
README.md
115
README.md
|
@ -1,113 +1,2 @@
|
||||||
# ActivityPub Models
|
# 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
|
||||||
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)
|
|
||||||
|
|
Ładowanie…
Reference in New Issue