From 5d960e6186335e79e444151c98b123759d921180 Mon Sep 17 00:00:00 2001 From: garrettmills Date: Fri, 2 Jul 2021 21:44:34 -0500 Subject: [PATCH] chore: make Rehydratable use Awaitable; add docblock --- src/event/Event.ts | 8 +++++--- src/service/Routing.ts | 8 ++++++++ src/util/support/Rehydratable.ts | 7 ++++--- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/event/Event.ts b/src/event/Event.ts index 958c4fa..71e492a 100644 --- a/src/event/Event.ts +++ b/src/event/Event.ts @@ -1,11 +1,13 @@ import {Dispatchable} from './types' -import {JSONState} from '../util' +import {Awaitable, JSONState} from '../util' /** * Abstract class representing an event that may be fired. */ export abstract class Event implements Dispatchable { - abstract dehydrate(): Promise - abstract rehydrate(state: JSONState): void | Promise + + abstract dehydrate(): Awaitable + + abstract rehydrate(state: JSONState): Awaitable } diff --git a/src/service/Routing.ts b/src/service/Routing.ts index ad0eaff..bd7e8cf 100644 --- a/src/service/Routing.ts +++ b/src/service/Routing.ts @@ -73,6 +73,14 @@ export class Routing extends Unit { return this.compiledRoutes } + /** + * Resolve a UniversalPath to a file served as an asset. + * @example + * ```ts + * this.getAssetPath('images', '123.jpg').toRemote // => http://localhost:8000/assets/images/123.jpg + * ``` + * @param parts + */ public getAssetPath(...parts: string[]): UniversalPath { return this.getAssetBase().concat(...parts) } diff --git a/src/util/support/Rehydratable.ts b/src/util/support/Rehydratable.ts index 3162c27..6a3831b 100644 --- a/src/util/support/Rehydratable.ts +++ b/src/util/support/Rehydratable.ts @@ -2,6 +2,7 @@ * Type representing a JSON serializable object. */ import {ErrorWithContext} from '../error/ErrorWithContext' +import {Awaitable} from './types' export type JSONState = { [key: string]: string | boolean | number | undefined | JSONState | Array } @@ -30,14 +31,14 @@ export function isJSONState(what: unknown): what is JSONState { export interface Rehydratable { /** * Dehydrate this class' state and get it. - * @return Promise + * @return JSONState|Promise */ - dehydrate(): Promise + dehydrate(): Awaitable /** * Rehydrate a state into this class. * @param {JSONState} state * @return void|Promise */ - rehydrate(state: JSONState): void | Promise + rehydrate(state: JSONState): Awaitable }