Compare commits
2 Commits
6aaeec73c5
...
82ff297f50
Author | SHA1 | Date |
---|---|---|
Michael Puckett | 82ff297f50 | |
Michael Puckett | 3f56d71ca6 |
|
@ -2,5 +2,5 @@
|
|||
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
|
||||
"useNx": true,
|
||||
"useWorkspaces": true,
|
||||
"version": "0.4.57"
|
||||
"version": "0.4.58"
|
||||
}
|
||||
|
|
|
@ -12366,7 +12366,7 @@
|
|||
},
|
||||
"packages/endpoints": {
|
||||
"name": "@activity-kit/endpoints",
|
||||
"version": "0.4.57",
|
||||
"version": "0.4.58",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@activity-kit/core": "^0.4.57",
|
||||
|
@ -12391,10 +12391,10 @@
|
|||
},
|
||||
"packages/express-middleware": {
|
||||
"name": "@activity-kit/express-middleware",
|
||||
"version": "0.4.57",
|
||||
"version": "0.4.58",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@activity-kit/endpoints": "^0.4.57",
|
||||
"@activity-kit/endpoints": "^0.4.58",
|
||||
"@activity-kit/types": "^0.4.57",
|
||||
"@activity-kit/utilities": "^0.4.57",
|
||||
"express": "^4.18.2",
|
||||
|
@ -12410,10 +12410,10 @@
|
|||
},
|
||||
"packages/plugin-groups": {
|
||||
"name": "@activity-kit/plugin-groups",
|
||||
"version": "0.4.57",
|
||||
"version": "0.4.58",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@activity-kit/endpoints": "^0.4.57",
|
||||
"@activity-kit/endpoints": "^0.4.58",
|
||||
"@activity-kit/types": "^0.4.57",
|
||||
"@activity-kit/utilities": "^0.4.57",
|
||||
"cheerio": "^1.0.0-rc.12",
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
import * as AP from '@activity-kit/types';
|
||||
import { Result } from '../types';
|
||||
import { EntityGetEndpoint } from '.';
|
||||
export declare function handleFoundCollection(this: EntityGetEndpoint, entity: AP.EitherCollectionPage, render: (entity: AP.Entity) => Promise<string>): Promise<Result>;
|
|
@ -0,0 +1,8 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.handleFoundCollection = void 0;
|
||||
async function handleFoundCollection(entity, render) {
|
||||
return this.handleFoundEntity(entity, render);
|
||||
}
|
||||
exports.handleFoundCollection = handleFoundCollection;
|
||||
//# sourceMappingURL=handleFoundCollection.js.map
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"handleFoundCollection.js","sourceRoot":"","sources":["../../src/entity/handleFoundCollection.ts"],"names":[],"mappings":";;;AAKO,KAAK,UAAU,qBAAqB,CAEzC,MAA+B,EAC/B,MAA8C;IAE9C,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAChD,CAAC;AAND,sDAMC"}
|
|
@ -26,6 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
exports.handleFoundCollectionPage = void 0;
|
||||
const AP = __importStar(require("@activity-kit/types"));
|
||||
const type_utilities_1 = require("@activity-kit/type-utilities");
|
||||
const utilities_1 = require("@activity-kit/utilities");
|
||||
// TODO: Move to config.
|
||||
const ITEMS_PER_COLLECTION_PAGE = 50;
|
||||
async function handleFoundCollectionPage(entity, render) {
|
||||
|
@ -35,13 +36,19 @@ async function handleFoundCollectionPage(entity, render) {
|
|||
const currentPage = page ? Number(page) : 1;
|
||||
const firstItemIndex = (currentPage - 1) * ITEMS_PER_COLLECTION_PAGE;
|
||||
const startIndex = firstItemIndex + 1;
|
||||
const limitedItems = getCollectionItems(entity).slice(firstItemIndex, firstItemIndex + ITEMS_PER_COLLECTION_PAGE);
|
||||
const collection = await this.core.queryById(new URL(pageParts[0]));
|
||||
type_utilities_1.assert.isApCollection(collection);
|
||||
const collectionItems = getCollectionItems(collection);
|
||||
const lastPageIndex = Math.ceil(collectionItems.length / ITEMS_PER_COLLECTION_PAGE);
|
||||
const limitedItems = collectionItems.slice(firstItemIndex, firstItemIndex + ITEMS_PER_COLLECTION_PAGE);
|
||||
const items = expandItems(limitedItems);
|
||||
const collectionId = (0, utilities_1.getId)(collection);
|
||||
type_utilities_1.assert.exists(collectionId);
|
||||
const collectionPage = {
|
||||
...entity,
|
||||
id: getPageUrl(currentPage),
|
||||
url: getPageUrl(currentPage),
|
||||
partOf: baseUrl,
|
||||
partOf: collectionId,
|
||||
first: getPageUrl(1),
|
||||
last: getPageUrl(lastPageIndex),
|
||||
...(currentPage > 1
|
||||
|
@ -55,7 +62,7 @@ async function handleFoundCollectionPage(entity, render) {
|
|||
}
|
||||
: null),
|
||||
};
|
||||
if (isOrderedCollection) {
|
||||
if (type_utilities_1.guard.isApType(collection, AP.CollectionTypes.ORDERED_COLLECTION)) {
|
||||
const orderedCollectionPageEntity = {
|
||||
...collectionPage,
|
||||
type: AP.CollectionPageTypes.ORDERED_COLLECTION_PAGE,
|
||||
|
@ -73,22 +80,27 @@ async function handleFoundCollectionPage(entity, render) {
|
|||
}
|
||||
exports.handleFoundCollectionPage = handleFoundCollectionPage;
|
||||
function expandItems(objects) {
|
||||
return objects.map((object) => {
|
||||
if (type_utilities_1.guard.isApLink(object)) {
|
||||
return objects
|
||||
.map((object) => {
|
||||
if (type_utilities_1.guard.isApType(object, AP.LinkTypes.LINK)) {
|
||||
return object;
|
||||
}
|
||||
if (type_utilities_1.guard.isApMention(object)) {
|
||||
if (type_utilities_1.guard.isApType(object, AP.LinkTypes.MENTION)) {
|
||||
return object;
|
||||
}
|
||||
if (type_utilities_1.guard.isApObject(object)) {
|
||||
return {
|
||||
...object,
|
||||
id: getId(object),
|
||||
url: new URL(getId(object)),
|
||||
};
|
||||
if (type_utilities_1.guard.isApCoreObject(object)) {
|
||||
const id = (0, utilities_1.getId)(object);
|
||||
if (type_utilities_1.guard.exists(id)) {
|
||||
return {
|
||||
...object,
|
||||
id,
|
||||
url: id,
|
||||
};
|
||||
}
|
||||
}
|
||||
return object;
|
||||
});
|
||||
})
|
||||
.filter(type_utilities_1.guard.isApEntity);
|
||||
}
|
||||
function getCollectionItems(collection) {
|
||||
if (type_utilities_1.guard.isArray(collection.orderedItems)) {
|
||||
|
@ -99,22 +111,4 @@ function getCollectionItems(collection) {
|
|||
}
|
||||
return [];
|
||||
}
|
||||
function foo() {
|
||||
const items = [];
|
||||
for (const item of limitedItems) {
|
||||
if (type_utilities_1.guard.isApTransitiveActivity(item)) {
|
||||
const objectId = getId(item.object);
|
||||
if (objectId) {
|
||||
const object = await this.core.findEntityById(objectId);
|
||||
if (object) {
|
||||
item.object = object;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (type_utilities_1.guard.isApEntity(item)) {
|
||||
items.push(item);
|
||||
}
|
||||
}
|
||||
return items;
|
||||
}
|
||||
//# sourceMappingURL=handleFoundCollectionPage.js.map
|
|
@ -1 +1 @@
|
|||
{"version":3,"file":"handleFoundCollectionPage.js","sourceRoot":"","sources":["../../src/entity/handleFoundCollectionPage.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"handleFoundCollectionPage.js","sourceRoot":"","sources":["../../src/entity/handleFoundCollectionPage.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wDAA0C;AAC1C,iEAA6D;AAC7D,uDAAgD;AAKhD,wBAAwB;AACxB,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAE9B,KAAK,UAAU,yBAAyB,CAE7C,MAA+B,EAC/B,MAA8C;IAE9C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAClC,IAAI,GAAG,CACL,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,SAAS,IAAI,EAAE,EACpE,IAAI,CAAC,GAAG,CAAC,MAAM,CAChB,CAAC;IACJ,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,cAAc,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,yBAAyB,CAAC;IACrE,MAAM,UAAU,GAAG,cAAc,GAAG,CAAC,CAAC;IAEtC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpE,uBAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAElC,MAAM,eAAe,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAEvD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAC7B,eAAe,CAAC,MAAM,GAAG,yBAAyB,CACnD,CAAC;IAEF,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CACxC,cAAc,EACd,cAAc,GAAG,yBAAyB,CAC3C,CAAC;IAEF,MAAM,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,IAAA,iBAAK,EAAC,UAAU,CAAC,CAAC;IAEvC,uBAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAE5B,MAAM,cAAc,GAAG;QACrB,GAAG,MAAM;QACT,EAAE,EAAE,UAAU,CAAC,WAAW,CAAC;QAC3B,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC;QAC5B,MAAM,EAAE,YAAY;QACpB,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;QACpB,IAAI,EAAE,UAAU,CAAC,aAAa,CAAC;QAC/B,GAAG,CAAC,WAAW,GAAG,CAAC;YACjB,CAAC,CAAC;gBACE,IAAI,EAAE,UAAU,CAAC,WAAW,GAAG,CAAC,CAAC;aAClC;YACH,CAAC,CAAC,IAAI,CAAC;QACT,GAAG,CAAC,WAAW,GAAG,aAAa;YAC7B,CAAC,CAAC;gBACE,IAAI,EAAE,UAAU,CAAC,WAAW,GAAG,CAAC,CAAC;aAClC;YACH,CAAC,CAAC,IAAI,CAAC;KACV,CAAC;IAEF,IACE,sBAAK,CAAC,QAAQ,CACZ,UAAU,EACV,EAAE,CAAC,eAAe,CAAC,kBAAkB,CACtC,EACD;QACA,MAAM,2BAA2B,GAA6B;YAC5D,GAAG,cAAc;YACjB,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,uBAAuB;YACpD,YAAY,EAAE,KAAK;YACnB,UAAU;SACX,CAAC;QAEF,OAAO,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;KACpE;IAED,MAAM,oBAAoB,GAAsB;QAC9C,GAAG,cAAc;QACjB,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,eAAe;QAC5C,KAAK,EAAE,KAAK;KACb,CAAC;IAEF,OAAO,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;AAC9D,CAAC;AA9ED,8DA8EC;AAED,SAAS,WAAW,CAClB,OAAuB;IAEvB,OAAO,OAAO;SACX,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACd,IAAI,sBAAK,CAAC,QAAQ,CAAU,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACtD,OAAO,MAAM,CAAC;SACf;QAED,IAAI,sBAAK,CAAC,QAAQ,CAAa,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YAC5D,OAAO,MAAM,CAAC;SACf;QAED,IAAI,sBAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;YAChC,MAAM,EAAE,GAAG,IAAA,iBAAK,EAAC,MAAM,CAAC,CAAC;YAEzB,IAAI,sBAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;gBACpB,OAAO;oBACL,GAAG,MAAM;oBACT,EAAE;oBACF,GAAG,EAAE,EAAE;iBACR,CAAC;aACH;SACF;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;SACD,MAAM,CAAC,sBAAK,CAAC,UAAU,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,kBAAkB,CAAC,UAA+B;IACzD,IAAI,sBAAK,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;QAC1C,OAAO,UAAU,CAAC,YAAY,CAAC;KAChC;IAED,IAAI,sBAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;QACnC,OAAO,UAAU,CAAC,KAAK,CAAC;KACzB;IAED,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@ -2,6 +2,7 @@
|
|||
import { CoreLibrary } from '@activity-kit/core';
|
||||
import { handleNotFound } from './handleNotFound';
|
||||
import { handleFoundEntity } from './handleFoundEntity';
|
||||
import { handleFoundCollection } from './handleFoundCollection';
|
||||
import { handleFoundCollectionPage } from './handleFoundCollectionPage';
|
||||
import { respond } from './respond';
|
||||
export declare class EntityGetEndpoint {
|
||||
|
@ -14,7 +15,7 @@ export declare class EntityGetEndpoint {
|
|||
});
|
||||
protected handleNotFound: typeof handleNotFound;
|
||||
protected handleFoundEntity: typeof handleFoundEntity;
|
||||
protected handleFoundCollection: any;
|
||||
protected handleFoundCollection: typeof handleFoundCollection;
|
||||
protected handleFoundCollectionPage: typeof handleFoundCollectionPage;
|
||||
respond: typeof respond;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@activity-kit/endpoints",
|
||||
"version": "0.4.57",
|
||||
"version": "0.4.58",
|
||||
"description": "> TODO: description",
|
||||
"author": "Michael Puckett <michaelcpuckett@gmail.com>",
|
||||
"homepage": "",
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
import * as AP from '@activity-kit/types';
|
||||
|
||||
import { Result } from '../types';
|
||||
import { EntityGetEndpoint } from '.';
|
||||
|
||||
export async function handleFoundCollection(
|
||||
this: EntityGetEndpoint,
|
||||
entity: AP.EitherCollectionPage,
|
||||
render: (entity: AP.Entity) => Promise<string>,
|
||||
): Promise<Result> {
|
||||
return this.handleFoundEntity(entity, render);
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
import * as AP from '@activity-kit/types';
|
||||
import { guard } from '@activity-kit/type-utilities';
|
||||
import { assert, guard } from '@activity-kit/type-utilities';
|
||||
import { getId } from '@activity-kit/utilities';
|
||||
|
||||
import { Result } from '../types';
|
||||
import { EntityGetEndpoint } from '.';
|
||||
|
@ -23,18 +24,31 @@ export async function handleFoundCollectionPage(
|
|||
const firstItemIndex = (currentPage - 1) * ITEMS_PER_COLLECTION_PAGE;
|
||||
const startIndex = firstItemIndex + 1;
|
||||
|
||||
const limitedItems = getCollectionItems(entity).slice(
|
||||
const collection = await this.core.queryById(new URL(pageParts[0]));
|
||||
|
||||
assert.isApCollection(collection);
|
||||
|
||||
const collectionItems = getCollectionItems(collection);
|
||||
|
||||
const lastPageIndex = Math.ceil(
|
||||
collectionItems.length / ITEMS_PER_COLLECTION_PAGE,
|
||||
);
|
||||
|
||||
const limitedItems = collectionItems.slice(
|
||||
firstItemIndex,
|
||||
firstItemIndex + ITEMS_PER_COLLECTION_PAGE,
|
||||
);
|
||||
|
||||
const items = expandItems(limitedItems);
|
||||
const collectionId = getId(collection);
|
||||
|
||||
assert.exists(collectionId);
|
||||
|
||||
const collectionPage = {
|
||||
...entity,
|
||||
id: getPageUrl(currentPage),
|
||||
url: getPageUrl(currentPage),
|
||||
partOf: baseUrl,
|
||||
partOf: collectionId,
|
||||
first: getPageUrl(1),
|
||||
last: getPageUrl(lastPageIndex),
|
||||
...(currentPage > 1
|
||||
|
@ -49,7 +63,12 @@ export async function handleFoundCollectionPage(
|
|||
: null),
|
||||
};
|
||||
|
||||
if (isOrderedCollection) {
|
||||
if (
|
||||
guard.isApType<AP.OrderedCollection>(
|
||||
collection,
|
||||
AP.CollectionTypes.ORDERED_COLLECTION,
|
||||
)
|
||||
) {
|
||||
const orderedCollectionPageEntity: AP.OrderedCollectionPage = {
|
||||
...collectionPage,
|
||||
type: AP.CollectionPageTypes.ORDERED_COLLECTION_PAGE,
|
||||
|
@ -71,26 +90,32 @@ export async function handleFoundCollectionPage(
|
|||
|
||||
function expandItems(
|
||||
objects: Array<unknown>,
|
||||
): Array<AP.Object | AP.Link | AP.Mention> {
|
||||
return objects.map((object) => {
|
||||
if (guard.isApLink(object)) {
|
||||
): Array<AP.CoreObject | AP.Link | AP.Mention> {
|
||||
return objects
|
||||
.map((object) => {
|
||||
if (guard.isApType<AP.Link>(object, AP.LinkTypes.LINK)) {
|
||||
return object;
|
||||
}
|
||||
|
||||
if (guard.isApType<AP.Mention>(object, AP.LinkTypes.MENTION)) {
|
||||
return object;
|
||||
}
|
||||
|
||||
if (guard.isApCoreObject(object)) {
|
||||
const id = getId(object);
|
||||
|
||||
if (guard.exists(id)) {
|
||||
return {
|
||||
...object,
|
||||
id,
|
||||
url: id,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
if (guard.isApMention(object)) {
|
||||
return object;
|
||||
}
|
||||
|
||||
if (guard.isApObject(object)) {
|
||||
return {
|
||||
...object,
|
||||
id: getId(object),
|
||||
url: new URL(getId(object)),
|
||||
};
|
||||
}
|
||||
|
||||
return object;
|
||||
});
|
||||
})
|
||||
.filter(guard.isApEntity);
|
||||
}
|
||||
|
||||
function getCollectionItems(collection: AP.EitherCollection) {
|
||||
|
@ -104,27 +129,3 @@ function getCollectionItems(collection: AP.EitherCollection) {
|
|||
|
||||
return [];
|
||||
}
|
||||
|
||||
function foo() {
|
||||
const items: AP.Entity[] = [];
|
||||
|
||||
for (const item of limitedItems) {
|
||||
if (guard.isApTransitiveActivity(item)) {
|
||||
const objectId = getId(item.object);
|
||||
|
||||
if (objectId) {
|
||||
const object = await this.core.findEntityById(objectId);
|
||||
|
||||
if (object) {
|
||||
item.object = object;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (guard.isApEntity(item)) {
|
||||
items.push(item);
|
||||
}
|
||||
}
|
||||
|
||||
return items;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@activity-kit/express-middleware",
|
||||
"version": "0.4.57",
|
||||
"version": "0.4.58",
|
||||
"description": "> TODO: description",
|
||||
"author": "Michael Puckett <michaelcpuckett@gmail.com>",
|
||||
"homepage": "",
|
||||
|
@ -28,7 +28,7 @@
|
|||
"lint": "eslint src/**/*.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@activity-kit/endpoints": "^0.4.57",
|
||||
"@activity-kit/endpoints": "^0.4.58",
|
||||
"@activity-kit/types": "^0.4.57",
|
||||
"@activity-kit/utilities": "^0.4.57",
|
||||
"express": "^4.18.2",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@activity-kit/plugin-groups",
|
||||
"version": "0.4.57",
|
||||
"version": "0.4.58",
|
||||
"description": "> TODO: description",
|
||||
"author": "Michael Puckett <michael@puckett.contact>",
|
||||
"homepage": "https://github.com/michaelcpuckett/activitypub-core#readme",
|
||||
|
@ -33,7 +33,7 @@
|
|||
"typescript": "^5.0.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"@activity-kit/endpoints": "^0.4.57",
|
||||
"@activity-kit/endpoints": "^0.4.58",
|
||||
"@activity-kit/types": "^0.4.57",
|
||||
"@activity-kit/utilities": "^0.4.57",
|
||||
"cheerio": "^1.0.0-rc.12",
|
||||
|
|
Loading…
Reference in New Issue