rename & add collections

pull/3/head
SiRanWeb 2022-10-23 20:46:25 +03:00
rodzic 460081d924
commit 423e86f86e
12 zmienionych plików z 104 dodań i 33 usunięć

Wyświetl plik

@ -1,9 +1,9 @@
import { ObjectAP } from './models/Object.model';
import { ASObject } from './models/ASObject.model';
const obj = new ObjectAP({
const obj = new ASObject({
id: 'someId',
});
const obj2 = new ObjectAP({
const obj2 = new ASObject({
cc: '123',
content: obj,
}).addContext();

Wyświetl plik

@ -1,11 +1,12 @@
// TODO: types
// TODO: renaming/refactor
export type Context = string | any[];
export interface ModelBaseAPWithContext {
'@context'?: Context;
}
export class ModelBaseAP<T> {
export class ASBase<T> {
public fields: T & ModelBaseAPWithContext;
constructor(fields: T) {
@ -27,7 +28,7 @@ export class ModelBaseAP<T> {
public plain(): Record<string, any> {
const result = {} as Record<string, any>;
for (const [key, node] of Object.entries(this.fields)) {
if (node instanceof ModelBaseAP) {
if (node instanceof ASBase) {
result[key] = node.plain();
} else {
result[key] = node;

Wyświetl plik

@ -0,0 +1,16 @@
import { ASObject, ASObjectFields } from "./ASObject.model";
// TODO: types
// https://www.w3.org/TR/activitystreams-core/#collection
export interface ASCollectionBaseFields extends ASObjectFields {
totalItems?: any;
first?: any;
last?: any;
current?: any;
}
export class ASCollectionBase extends ASObject {
constructor(fields: ASCollectionBaseFields) {
super(fields);
}
}

Wyświetl plik

@ -1,8 +1,8 @@
import {ModelBaseAP} from "./Base.model";
import {ASBase} from "./ASBase.model";
// TODO: types
// https://www.w3.org/TR/activitystreams-core/#object
export interface ObjectAPFields {
export interface ASObjectFields {
id?: any;
type?: any;
attachment?: any;
@ -32,8 +32,8 @@ export interface ObjectAPFields {
duration?: any;
}
export class ObjectAP extends ModelBaseAP<ObjectAPFields>{
constructor(fields: ObjectAPFields) {
export class ASObject extends ASBase<ASObjectFields>{
constructor(fields: ASObjectFields) {
super(fields);
}
}

Wyświetl plik

@ -1,14 +1,14 @@
import {ModelBaseAP} from "./Base.model";
import {IntransitiveActivityAPFields} from "./IntransitiveActivity.model";
import {ASBase} from "./ASBase.model";
import {IntransitiveActivityFields} from "./IntransitiveActivity.model";
// TODO: types
// https://www.w3.org/TR/activitystreams-core/#activities
export interface ActivityAPFields extends IntransitiveActivityAPFields {
export interface ActivityFields extends IntransitiveActivityFields {
object?: any; // Object?
}
export class ActivityAP extends ModelBaseAP<ActivityAPFields>{
constructor(fields: ActivityAPFields) {
export class Activity extends ASBase<ActivityFields>{
constructor(fields: ActivityFields) {
super(fields);
}
}

Wyświetl plik

@ -1,5 +1,5 @@
import {ModelBaseAP} from "./Base.model";
import {ObjectAPFields} from "./Object.model";
import {ASBase} from "./ASBase.model";
import {ASObjectFields} from "./ASObject.model";
export enum ActorTypes {
Application = 'Application',
@ -11,17 +11,12 @@ export enum ActorTypes {
// TODO: types
// https://www.w3.org/TR/activitystreams-core/#actors
export interface ActorAPFields extends ObjectAPFields {
export interface ActorFields extends ASObjectFields {
type?: any | ActorTypes; // ?
actor?: any; // Actor?
target?: any;
origin?: any;
result?: any;
instrument?: any;
}
export class ActorAP extends ModelBaseAP<ActorAPFields>{
constructor(fields: ActorAPFields) {
export class Actor extends ASBase<ActorFields>{
constructor(fields: ActorFields) {
super(fields);
}
}

Wyświetl plik

@ -0,0 +1,13 @@
import {ASCollectionBase, ASCollectionBaseFields} from "./ASCollectionBase.model";
// TODO: types
// https://www.w3.org/TR/activitystreams-core/#collection
export interface CollectionFields extends ASCollectionBaseFields {
items?: any; // Objects? Links?
}
export class Collection extends ASCollectionBase {
constructor(fields: CollectionFields) {
super(fields);
}
}

Wyświetl plik

@ -0,0 +1,18 @@
import {ASCollectionBase, ASCollectionBaseFields} from "./ASCollectionBase.model";
// TODO: types
// https://www.w3.org/TR/activitystreams-core/#collection
export interface CollectionPageFields extends ASCollectionBaseFields {
partOf?: any;
first?: any;
next?: any;
prev?: any;
last?: any;
current?: any;
}
export class CollectionPage extends ASCollectionBase {
constructor(fields: CollectionPageFields) {
super(fields);
}
}

Wyświetl plik

@ -1,9 +1,9 @@
import {ModelBaseAP} from "./Base.model";
import {ObjectAPFields} from "./Object.model";
import {ASBase} from "./ASBase.model";
import {ASObjectFields} from "./ASObject.model";
// TODO: types
// https://www.w3.org/TR/activitystreams-core/#intransitiveactivities
export interface IntransitiveActivityAPFields extends ObjectAPFields {
export interface IntransitiveActivityFields extends ASObjectFields {
actor?: any; // Actor?
target?: any;
origin?: any;
@ -11,8 +11,8 @@ export interface IntransitiveActivityAPFields extends ObjectAPFields {
instrument?: any;
}
export class IntransitiveActivityAP extends ModelBaseAP<IntransitiveActivityAPFields>{
constructor(fields: IntransitiveActivityAPFields) {
export class IntransitiveActivity extends ASBase<IntransitiveActivityFields>{
constructor(fields: IntransitiveActivityFields) {
super(fields);
}
}

Wyświetl plik

@ -1,8 +1,8 @@
import {ModelBaseAP} from "./Base.model";
import {ASBase} from "./ASBase.model";
// TODO: types
// https://www.w3.org/TR/activitystreams-core/#dfn-link
export interface ObjectAPFields {
export interface LinkFields {
id?: any;
name?: any;
hreflang?: any;
@ -12,8 +12,8 @@ export interface ObjectAPFields {
width?: any;
}
export class LinkAP extends ModelBaseAP<ObjectAPFields>{
constructor(fields: ObjectAPFields) {
export class Link extends ASBase<LinkFields>{
constructor(fields: LinkFields) {
super(fields);
}
}

Wyświetl plik

@ -0,0 +1,14 @@
import {ASCollectionBase, ASCollectionBaseFields} from "./ASCollectionBase.model";
// TODO: types
// https://www.w3.org/TR/activitystreams-core/#collection
export interface OrderedCollectionFields extends ASCollectionBaseFields {
orderedItems?: any; // Objects? Links?
}
// TODO: sort method?
export class OrderedCollection extends ASCollectionBase {
constructor(fields: OrderedCollectionFields) {
super(fields);
}
}

Wyświetl plik

@ -0,0 +1,14 @@
import {CollectionPage, CollectionPageFields} from "./CollectionPage.model";
// TODO: types
// TODO: is it correct?
// https://www.w3.org/TR/activitystreams-core/#collection
export interface OrderedCollectionPageFields extends CollectionPageFields {
startIndex?: any;
}
export class OrderedCollectionPage extends CollectionPage {
constructor(fields: OrderedCollectionPageFields) {
super(fields);
}
}