diff --git a/classes/errors/api-error.ts b/classes/errors/api-error.ts index 8328660a..c4b89c16 100644 --- a/classes/errors/api-error.ts +++ b/classes/errors/api-error.ts @@ -18,7 +18,7 @@ export class ApiError extends Error { */ public constructor( public status: ContentfulStatusCode, - public message: string, + public override message: string, public details?: string | JSONObject, ) { super(message); diff --git a/classes/plugin/loader.ts b/classes/plugin/loader.ts index 49aa37c0..7f356962 100644 --- a/classes/plugin/loader.ts +++ b/classes/plugin/loader.ts @@ -72,6 +72,8 @@ export class PluginLoader { if (manifestFile.endsWith(".jsonc")) { return parseJSONC(manifestText); } + + throw new Error(`Unsupported manifest file type: ${manifestFile}`); } catch (e) { this.logger .fatal`Could not parse plugin manifest ${chalk.blue(manifestPath)} as ${manifestFile.split(".").pop()?.toUpperCase()}.`; diff --git a/middlewares/ip-bans.ts b/middlewares/ip-bans.ts index 6293d831..ba170fcf 100644 --- a/middlewares/ip-bans.ts +++ b/middlewares/ip-bans.ts @@ -36,4 +36,5 @@ export const ipBans = createMiddleware(async (context, next) => { } await next(); + return; }); diff --git a/middlewares/url-check.ts b/middlewares/url-check.ts index 62dab706..c405b890 100644 --- a/middlewares/url-check.ts +++ b/middlewares/url-check.ts @@ -15,4 +15,5 @@ export const urlCheck = createMiddleware(async (context, next) => { } await next(); + return; }); diff --git a/packages/sdk/entities/collection.ts b/packages/sdk/entities/collection.ts index facc856c..a1093b29 100644 --- a/packages/sdk/entities/collection.ts +++ b/packages/sdk/entities/collection.ts @@ -7,21 +7,23 @@ import type { JSONObject } from "../types.ts"; import { Entity } from "./entity.ts"; export class Collection extends Entity { - public constructor(public data: z.infer) { + public constructor(public override data: z.infer) { super(data); } - public static fromJSON(json: JSONObject): Promise { + public static override fromJSON(json: JSONObject): Promise { return CollectionSchema.parseAsync(json).then((u) => new Collection(u)); } } export class URICollection extends Entity { - public constructor(public data: z.infer) { + public constructor( + public override data: z.infer, + ) { super(data); } - public static fromJSON(json: JSONObject): Promise { + public static override fromJSON(json: JSONObject): Promise { return URICollectionSchema.parseAsync(json).then( (u) => new URICollection(u), ); diff --git a/packages/sdk/entities/contentformat.ts b/packages/sdk/entities/contentformat.ts index fcbfd836..93999f1c 100644 --- a/packages/sdk/entities/contentformat.ts +++ b/packages/sdk/entities/contentformat.ts @@ -20,63 +20,81 @@ export class ContentFormat { } export class TextContentFormat extends ContentFormat { - public static fromJSON(data: JSONObject): Promise { + public static override fromJSON( + data: JSONObject, + ): Promise { return TextContentFormatSchema.parseAsync(data).then( (d) => new TextContentFormat(d), ); } - public constructor(public data: z.infer) { + public constructor( + public override data: z.infer, + ) { super(data); } } export class NonTextContentFormat extends ContentFormat { - public static fromJSON(data: JSONObject): Promise { + public static override fromJSON( + data: JSONObject, + ): Promise { return NonTextContentFormatSchema.parseAsync(data).then( (d) => new NonTextContentFormat(d), ); } public constructor( - public data: z.infer, + public override data: z.infer, ) { super(data); } } export class ImageContentFormat extends ContentFormat { - public static fromJSON(data: JSONObject): Promise { + public static override fromJSON( + data: JSONObject, + ): Promise { return ImageContentFormatSchema.parseAsync(data).then( (d) => new ImageContentFormat(d), ); } - public constructor(public data: z.infer) { + public constructor( + public override data: z.infer, + ) { super(data); } } export class VideoContentFormat extends ContentFormat { - public static fromJSON(data: JSONObject): Promise { + public static override fromJSON( + data: JSONObject, + ): Promise { return VideoContentFormatSchema.parseAsync(data).then( (d) => new VideoContentFormat(d), ); } - public constructor(public data: z.infer) { + public constructor( + public override data: z.infer, + ) { super(data); } } export class AudioContentFormat extends ContentFormat { - public static fromJSON(data: JSONObject): Promise { + public static override fromJSON( + data: JSONObject, + ): Promise { return AudioContentFormatSchema.parseAsync(data).then( (d) => new AudioContentFormat(d), ); } - public constructor(public data: z.infer) { + public constructor( + public override data: z.infer, + ) { super(data); } } diff --git a/packages/sdk/entities/delete.ts b/packages/sdk/entities/delete.ts index 85b33db3..6df3d896 100644 --- a/packages/sdk/entities/delete.ts +++ b/packages/sdk/entities/delete.ts @@ -4,13 +4,13 @@ import type { JSONObject } from "../types.ts"; import { Entity } from "./entity.ts"; export class Delete extends Entity { - public static name = "Delete"; + public static override name = "Delete"; - public constructor(public data: z.infer) { + public constructor(public override data: z.infer) { super(data); } - public static fromJSON(json: JSONObject): Promise { + public static override fromJSON(json: JSONObject): Promise { return DeleteSchema.parseAsync(json).then((u) => new Delete(u)); } } diff --git a/packages/sdk/entities/extensions/likes.ts b/packages/sdk/entities/extensions/likes.ts index f8c606b1..f8db6885 100644 --- a/packages/sdk/entities/extensions/likes.ts +++ b/packages/sdk/entities/extensions/likes.ts @@ -4,25 +4,25 @@ import type { JSONObject } from "../../types.ts"; import { Entity } from "../entity.ts"; export class Like extends Entity { - public static name = "pub.versia:likes/Like"; + public static override name = "pub.versia:likes/Like"; - public constructor(public data: z.infer) { + public constructor(public override data: z.infer) { super(data); } - public static fromJSON(json: JSONObject): Promise { + public static override fromJSON(json: JSONObject): Promise { return LikeSchema.parseAsync(json).then((u) => new Like(u)); } } export class Dislike extends Entity { - public static name = "pub.versia:likes/Dislike"; + public static override name = "pub.versia:likes/Dislike"; - public constructor(public data: z.infer) { + public constructor(public override data: z.infer) { super(data); } - public static fromJSON(json: JSONObject): Promise { + public static override fromJSON(json: JSONObject): Promise { return DislikeSchema.parseAsync(json).then((u) => new Dislike(u)); } } diff --git a/packages/sdk/entities/extensions/polls.ts b/packages/sdk/entities/extensions/polls.ts index 43264f03..995e324d 100644 --- a/packages/sdk/entities/extensions/polls.ts +++ b/packages/sdk/entities/extensions/polls.ts @@ -4,13 +4,13 @@ import type { JSONObject } from "../../types.ts"; import { Entity } from "../entity.ts"; export class Vote extends Entity { - public static name = "pub.versia:polls/Vote"; + public static override name = "pub.versia:polls/Vote"; - public constructor(public data: z.infer) { + public constructor(public override data: z.infer) { super(data); } - public static fromJSON(json: JSONObject): Promise { + public static override fromJSON(json: JSONObject): Promise { return VoteSchema.parseAsync(json).then((u) => new Vote(u)); } } diff --git a/packages/sdk/entities/extensions/reactions.ts b/packages/sdk/entities/extensions/reactions.ts index 0d7d432f..5f3f785e 100644 --- a/packages/sdk/entities/extensions/reactions.ts +++ b/packages/sdk/entities/extensions/reactions.ts @@ -4,13 +4,13 @@ import type { JSONObject } from "../../types.ts"; import { Entity } from "../entity.ts"; export class Reaction extends Entity { - public static name = "pub.versia:reactions/Reaction"; + public static override name = "pub.versia:reactions/Reaction"; - public constructor(public data: z.infer) { + public constructor(public override data: z.infer) { super(data); } - public static fromJSON(json: JSONObject): Promise { + public static override fromJSON(json: JSONObject): Promise { return ReactionSchema.parseAsync(json).then((u) => new Reaction(u)); } } diff --git a/packages/sdk/entities/extensions/reports.ts b/packages/sdk/entities/extensions/reports.ts index a3e709e4..d15cfe48 100644 --- a/packages/sdk/entities/extensions/reports.ts +++ b/packages/sdk/entities/extensions/reports.ts @@ -4,13 +4,13 @@ import type { JSONObject } from "../../types.ts"; import { Entity } from "../entity.ts"; export class Report extends Entity { - public static name = "pub.versia:reports/Report"; + public static override name = "pub.versia:reports/Report"; - public constructor(public data: z.infer) { + public constructor(public override data: z.infer) { super(data); } - public static fromJSON(json: JSONObject): Promise { + public static override fromJSON(json: JSONObject): Promise { return ReportSchema.parseAsync(json).then((u) => new Report(u)); } } diff --git a/packages/sdk/entities/extensions/share.ts b/packages/sdk/entities/extensions/share.ts index d49cc9fc..f3817744 100644 --- a/packages/sdk/entities/extensions/share.ts +++ b/packages/sdk/entities/extensions/share.ts @@ -4,13 +4,13 @@ import type { JSONObject } from "../../types.ts"; import { Entity } from "../entity.ts"; export class Share extends Entity { - public static name = "pub.versia:share/Share"; + public static override name = "pub.versia:share/Share"; - public constructor(public data: z.infer) { + public constructor(public override data: z.infer) { super(data); } - public static fromJSON(json: JSONObject): Promise { + public static override fromJSON(json: JSONObject): Promise { return ShareSchema.parseAsync(json).then((u) => new Share(u)); } } diff --git a/packages/sdk/entities/follow.ts b/packages/sdk/entities/follow.ts index 5fe86d76..d38d9728 100644 --- a/packages/sdk/entities/follow.ts +++ b/packages/sdk/entities/follow.ts @@ -9,25 +9,27 @@ import type { JSONObject } from "../types.ts"; import { Entity } from "./entity.ts"; export class Follow extends Entity { - public static name = "Follow"; + public static override name = "Follow"; - public constructor(public data: z.infer) { + public constructor(public override data: z.infer) { super(data); } - public static fromJSON(json: JSONObject): Promise { + public static override fromJSON(json: JSONObject): Promise { return FollowSchema.parseAsync(json).then((u) => new Follow(u)); } } export class FollowAccept extends Entity { - public static name = "FollowAccept"; + public static override name = "FollowAccept"; - public constructor(public data: z.infer) { + public constructor( + public override data: z.infer, + ) { super(data); } - public static fromJSON(json: JSONObject): Promise { + public static override fromJSON(json: JSONObject): Promise { return FollowAcceptSchema.parseAsync(json).then( (u) => new FollowAccept(u), ); @@ -35,13 +37,15 @@ export class FollowAccept extends Entity { } export class FollowReject extends Entity { - public static name = "FollowReject"; + public static override name = "FollowReject"; - public constructor(public data: z.infer) { + public constructor( + public override data: z.infer, + ) { super(data); } - public static fromJSON(json: JSONObject): Promise { + public static override fromJSON(json: JSONObject): Promise { return FollowRejectSchema.parseAsync(json).then( (u) => new FollowReject(u), ); @@ -49,13 +53,13 @@ export class FollowReject extends Entity { } export class Unfollow extends Entity { - public static name = "Unfollow"; + public static override name = "Unfollow"; - public constructor(public data: z.infer) { + public constructor(public override data: z.infer) { super(data); } - public static fromJSON(json: JSONObject): Promise { + public static override fromJSON(json: JSONObject): Promise { return UnfollowSchema.parseAsync(json).then((u) => new Unfollow(u)); } } diff --git a/packages/sdk/entities/instancemetadata.ts b/packages/sdk/entities/instancemetadata.ts index 6517daff..d95f44ab 100644 --- a/packages/sdk/entities/instancemetadata.ts +++ b/packages/sdk/entities/instancemetadata.ts @@ -5,9 +5,11 @@ import { ImageContentFormat } from "./contentformat.ts"; import { Entity } from "./entity.ts"; export class InstanceMetadata extends Entity { - public static name = "InstanceMetadata"; + public static override name = "InstanceMetadata"; - public constructor(public data: z.infer) { + public constructor( + public override data: z.infer, + ) { super(data); } @@ -23,7 +25,9 @@ export class InstanceMetadata extends Entity { : undefined; } - public static fromJSON(json: JSONObject): Promise { + public static override fromJSON( + json: JSONObject, + ): Promise { return InstanceMetadataSchema.parseAsync(json).then( (u) => new InstanceMetadata(u), ); diff --git a/packages/sdk/entities/note.ts b/packages/sdk/entities/note.ts index df64d15b..7314e763 100644 --- a/packages/sdk/entities/note.ts +++ b/packages/sdk/entities/note.ts @@ -5,13 +5,13 @@ import { NonTextContentFormat, TextContentFormat } from "./contentformat.ts"; import { Entity } from "./entity.ts"; export class Note extends Entity { - public static name = "Note"; + public static override name = "Note"; - public constructor(public data: z.infer) { + public constructor(public override data: z.infer) { super(data); } - public static fromJSON(json: JSONObject): Promise { + public static override fromJSON(json: JSONObject): Promise { return NoteSchema.parseAsync(json).then((n) => new Note(n)); } diff --git a/packages/sdk/entities/user.ts b/packages/sdk/entities/user.ts index b3d6f0d7..0d744632 100644 --- a/packages/sdk/entities/user.ts +++ b/packages/sdk/entities/user.ts @@ -5,13 +5,13 @@ import { ImageContentFormat, TextContentFormat } from "./contentformat.ts"; import { Entity } from "./entity.ts"; export class User extends Entity { - public static name = "User"; + public static override name = "User"; - public constructor(public data: z.infer) { + public constructor(public override data: z.infer) { super(data); } - public static fromJSON(json: JSONObject): Promise { + public static override fromJSON(json: JSONObject): Promise { return UserSchema.parseAsync(json).then((u) => new User(u)); } diff --git a/tsconfig.json b/tsconfig.json index 86afbaec..8b1288ec 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,40 +1,45 @@ { "compilerOptions": { - "lib": ["ESNext", "DOM", "DOM.Iterable"], - "module": "esnext", - "target": "esnext", - "moduleResolution": "bundler", - "moduleDetection": "force", - "allowImportingTsExtensions": true, - "noEmit": true, - "composite": true, - "strict": true, - "downlevelIteration": true, - "skipLibCheck": true, + "alwaysStrict": true, + "exactOptionalPropertyTypes": false, "noImplicitAny": true, - "jsx": "preserve", - "allowSyntheticDefaultImports": true, - "strictNullChecks": true, - "strictFunctionTypes": true, + "noImplicitOverride": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noPropertyAccessFromIndexSignature": false, + "noUncheckedIndexedAccess": false, + "noUnusedLocals": true, + "noUnusedParameters": true, + "strict": true, + "useUnknownInCatchVariables": true, + + "allowImportingTsExtensions": true, + "module": "preserve", + "moduleResolution": "bundler", + "noUncheckedSideEffectImports": true, + "resolveJsonModule": true, + "noEmit": true, + "allowJs": false, + // Soon... + //"erasableSyntaxOnly": true, "forceConsistentCasingInFileNames": true, - "allowJs": true, - "emitDecoratorMetadata": false, - "experimentalDecorators": true, + //"isolatedDeclarations": true, "verbatimModuleSyntax": true, + "moduleDetection": "force", + "target": "esnext", + "jsx": "preserve", + "lib": ["ESNext", "DOM", "DOM.Iterable"], + "composite": true, + "incremental": true, + "skipLibCheck": true, + "experimentalDecorators": true, + "emitDecoratorMetadata": false, "paths": { "@/*": ["./utils/*"], "~/*": ["./*"], "+/*": ["./api/*"] - }, - "noUnusedLocals": true + } }, "exclude": ["node_modules"], - "include": [ - "*.ts", - "*.d.ts", - "**/*.ts", - "**/*.d.ts", - "api/well-known/**/*.ts", - "packages/cli/index.mts" - ] + "include": ["*.ts", "*.d.ts", "**/*.ts", "**/*.d.ts"] } diff --git a/utils/api.ts b/utils/api.ts index 56f81b1e..df805649 100644 --- a/utils/api.ts +++ b/utils/api.ts @@ -99,6 +99,8 @@ export const handleZodError = ( 422, ); } + + return undefined; }; const checkPermissions = (