From 5ab5081956f9a6ea64e8267436b1f66d46441119 Mon Sep 17 00:00:00 2001 From: SiRanWeb Date: Sat, 29 Oct 2022 21:52:51 +0300 Subject: [PATCH] add Article, Document, Event, Group and Note types --- src/common/common.types.ts | 7 ++++++- src/models/activity/Activity.model.ts | 4 ++-- src/models/application/Application.model.ts | 4 ++-- src/models/article/Article.model.ts | 14 ++++++++++++++ src/models/article/Article.types.ts | 3 +++ src/models/asEvent/ASEvent.model.ts | 14 ++++++++++++++ src/models/asEvent/ASEvent.types.ts | 3 +++ src/models/asObject/ASObject.model.ts | 4 ++-- src/models/document/Document.model.ts | 14 ++++++++++++++ src/models/document/Document.types.ts | 3 +++ src/models/group/Group.model.ts | 14 ++++++++++++++ src/models/group/Group.types.ts | 3 +++ .../IntransitiveActivity.model.ts | 4 ++-- src/models/note/Note.model.ts | 14 ++++++++++++++ src/models/note/Note.types.ts | 3 +++ 15 files changed, 99 insertions(+), 9 deletions(-) create mode 100644 src/models/article/Article.model.ts create mode 100644 src/models/article/Article.types.ts create mode 100644 src/models/asEvent/ASEvent.model.ts create mode 100644 src/models/asEvent/ASEvent.types.ts create mode 100644 src/models/document/Document.model.ts create mode 100644 src/models/document/Document.types.ts create mode 100644 src/models/group/Group.model.ts create mode 100644 src/models/group/Group.types.ts create mode 100644 src/models/note/Note.model.ts create mode 100644 src/models/note/Note.types.ts diff --git a/src/common/common.types.ts b/src/common/common.types.ts index 2c40312..2d55d9c 100644 --- a/src/common/common.types.ts +++ b/src/common/common.types.ts @@ -1,10 +1,15 @@ import { Link } from "../models/Link.model"; import {ASObject} from "../models/asObject/ASObject.model"; -export enum ModelType { +export enum ASModelType { Object = 'Object', Activity = 'Activity', Application = 'Application', + Article = 'Article', + Document = 'Document', + Event = 'Event', + Group = 'Group', + Note = 'Note', } // TODO: implement diff --git a/src/models/activity/Activity.model.ts b/src/models/activity/Activity.model.ts index efef621..4a7e6b7 100644 --- a/src/models/activity/Activity.model.ts +++ b/src/models/activity/Activity.model.ts @@ -1,6 +1,6 @@ import {ASBase} from "../ASBase.model"; import { ActivityFields } from "./Activity.types"; -import {ModelType} from "../../common/common.types"; +import {ASModelType} from "../../common/common.types"; /** * An Activity is a subtype of Object that describes some form of action that may happen, @@ -12,6 +12,6 @@ import {ModelType} from "../../common/common.types"; */ export class Activity extends ASBase{ constructor(fields: ActivityFields) { - super(ModelType.Activity, fields); + super(ASModelType.Activity, fields); } } \ No newline at end of file diff --git a/src/models/application/Application.model.ts b/src/models/application/Application.model.ts index 3fa17d8..5785a09 100644 --- a/src/models/application/Application.model.ts +++ b/src/models/application/Application.model.ts @@ -1,5 +1,5 @@ import {ASBase} from "../ASBase.model"; -import {ModelType} from "../../common/common.types"; +import {ASModelType} from "../../common/common.types"; import {ApplicationFields} from "./Application.types"; /** @@ -9,6 +9,6 @@ import {ApplicationFields} from "./Application.types"; */ export class Application extends ASBase{ constructor(fields: ApplicationFields) { - super(ModelType.Application, fields); + super(ASModelType.Application, fields); } } \ No newline at end of file diff --git a/src/models/article/Article.model.ts b/src/models/article/Article.model.ts new file mode 100644 index 0000000..250f042 --- /dev/null +++ b/src/models/article/Article.model.ts @@ -0,0 +1,14 @@ +import {ASBase} from "../ASBase.model"; +import {ASModelType} from "../../common/common.types"; +import {ArticleFields} from "./Article.types"; + +/** + * Represents any kind of multi-paragraph written work + * + * {@link https://www.w3.org/ns/activitystreams#Article Docs} + */ +export class Article extends ASBase{ + constructor(fields: ArticleFields) { + super(ASModelType.Article, fields); + } +} \ No newline at end of file diff --git a/src/models/article/Article.types.ts b/src/models/article/Article.types.ts new file mode 100644 index 0000000..6faf317 --- /dev/null +++ b/src/models/article/Article.types.ts @@ -0,0 +1,3 @@ +import {ASObjectFields} from "../asObject/ASObject.types"; + +export interface ArticleFields extends ASObjectFields {} diff --git a/src/models/asEvent/ASEvent.model.ts b/src/models/asEvent/ASEvent.model.ts new file mode 100644 index 0000000..f87d6de --- /dev/null +++ b/src/models/asEvent/ASEvent.model.ts @@ -0,0 +1,14 @@ +import {ASBase} from "../ASBase.model"; +import {ASModelType} from "../../common/common.types"; +import {ASEventFields} from "./ASEvent.types"; + +/** + * Represents any kind of event + * + * {@link https://www.w3.org/ns/activitystreams#Event Docs} + */ +export class ASEvent extends ASBase{ + constructor(fields: ASEventFields) { + super(ASModelType.Event, fields); + } +} \ No newline at end of file diff --git a/src/models/asEvent/ASEvent.types.ts b/src/models/asEvent/ASEvent.types.ts new file mode 100644 index 0000000..53eea20 --- /dev/null +++ b/src/models/asEvent/ASEvent.types.ts @@ -0,0 +1,3 @@ +import {ASObjectFields} from "../asObject/ASObject.types"; + +export interface ASEventFields extends ASObjectFields {} diff --git a/src/models/asObject/ASObject.model.ts b/src/models/asObject/ASObject.model.ts index 956dfe9..b6c10ad 100644 --- a/src/models/asObject/ASObject.model.ts +++ b/src/models/asObject/ASObject.model.ts @@ -1,6 +1,6 @@ import {ASBase} from "../ASBase.model"; import { ASObjectFields } from "./ASObject.types"; -import {ModelType} from "../../common/common.types"; +import {ASModelType} from "../../common/common.types"; /** * Describes an object of any kind. The Object type serves as the base type for most of @@ -11,6 +11,6 @@ import {ModelType} from "../../common/common.types"; */ export class ASObject extends ASBase{ constructor(fields: ASObjectFields) { - super(ModelType.Object, fields); + super(ASModelType.Object, fields); } } \ No newline at end of file diff --git a/src/models/document/Document.model.ts b/src/models/document/Document.model.ts new file mode 100644 index 0000000..1957303 --- /dev/null +++ b/src/models/document/Document.model.ts @@ -0,0 +1,14 @@ +import {ASBase} from "../ASBase.model"; +import {ASModelType} from "../../common/common.types"; +import {DocumentFields} from "./Document.types"; + +/** + * Represents a document of any kind + * + * {@link https://www.w3.org/ns/activitystreams#Document Docs} + */ +export class Document extends ASBase{ + constructor(fields: DocumentFields) { + super(ASModelType.Document, fields); + } +} \ No newline at end of file diff --git a/src/models/document/Document.types.ts b/src/models/document/Document.types.ts new file mode 100644 index 0000000..2583559 --- /dev/null +++ b/src/models/document/Document.types.ts @@ -0,0 +1,3 @@ +import {ASObjectFields} from "../asObject/ASObject.types"; + +export interface DocumentFields extends ASObjectFields {} diff --git a/src/models/group/Group.model.ts b/src/models/group/Group.model.ts new file mode 100644 index 0000000..995de73 --- /dev/null +++ b/src/models/group/Group.model.ts @@ -0,0 +1,14 @@ +import {ASBase} from "../ASBase.model"; +import {ASModelType} from "../../common/common.types"; +import {GroupFields} from "./Group.types"; + +/** + * Represents a formal or informal collective of Actors + * + * {@link https://www.w3.org/ns/activitystreams#Group Docs} + */ +export class Group extends ASBase{ + constructor(fields: GroupFields) { + super(ASModelType.Group, fields); + } +} \ No newline at end of file diff --git a/src/models/group/Group.types.ts b/src/models/group/Group.types.ts new file mode 100644 index 0000000..8a600d9 --- /dev/null +++ b/src/models/group/Group.types.ts @@ -0,0 +1,3 @@ +import {ASObjectFields} from "../asObject/ASObject.types"; + +export interface GroupFields extends ASObjectFields {} diff --git a/src/models/intransitiveActivity/IntransitiveActivity.model.ts b/src/models/intransitiveActivity/IntransitiveActivity.model.ts index 5b99422..0394637 100644 --- a/src/models/intransitiveActivity/IntransitiveActivity.model.ts +++ b/src/models/intransitiveActivity/IntransitiveActivity.model.ts @@ -1,6 +1,6 @@ import {ASBase} from "../ASBase.model"; import {IntransitiveActivityFields} from './IntransitiveActivity.types'; -import {ModelType} from "../../common/common.types"; +import {ASModelType} from "../../common/common.types"; /** * Instances of intransitiveActivity are a subtype of @@ -11,6 +11,6 @@ import {ModelType} from "../../common/common.types"; */ export class IntransitiveActivity extends ASBase{ constructor(fields: IntransitiveActivityFields) { - super(ModelType.Activity, fields); + super(ASModelType.Activity, fields); } } \ No newline at end of file diff --git a/src/models/note/Note.model.ts b/src/models/note/Note.model.ts new file mode 100644 index 0000000..8a25c81 --- /dev/null +++ b/src/models/note/Note.model.ts @@ -0,0 +1,14 @@ +import {ASBase} from "../ASBase.model"; +import {ASModelType} from "../../common/common.types"; +import {NoteFields} from "./Note.types"; + +/** + * Represents a short written work typically less than a single paragraph in length. + * + * {@link https://www.w3.org/ns/activitystreams#Note Docs} + */ +export class Note extends ASBase{ + constructor(fields: NoteFields) { + super(ASModelType.Note, fields); + } +} \ No newline at end of file diff --git a/src/models/note/Note.types.ts b/src/models/note/Note.types.ts new file mode 100644 index 0000000..07d2d7b --- /dev/null +++ b/src/models/note/Note.types.ts @@ -0,0 +1,3 @@ +import {ASObjectFields} from "../asObject/ASObject.types"; + +export interface NoteFields extends ASObjectFields {}