From 83dea4f5d6d8aa3b423f9174151692c38b37965e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcus=20P=C3=B6hls?= Date: Fri, 3 Nov 2023 04:50:13 +0100 Subject: [PATCH] remove and refactor contracts from options to config --- CHANGELOG.md | 8 ++++++++ packages/contracts/src/hashing/hash-builder.ts | 2 +- packages/contracts/src/http/bodyparser-config.ts | 7 ------- packages/contracts/src/http/config.ts | 4 ++-- packages/contracts/src/http/cookie-bag.ts | 2 +- ...e-options-builder.ts => cookie-config-builder.ts} | 4 ++-- .../src/http/{cookie-options.ts => cookie-config.ts} | 2 +- packages/contracts/src/http/cors-config.ts | 7 ------- packages/contracts/src/http/request.ts | 6 +++--- packages/contracts/src/http/response.ts | 6 +++--- packages/contracts/src/http/static-assets-config.ts | 7 ------- packages/contracts/src/index.ts | 12 ++++++------ packages/view/src/engines/handlebars/compiler.ts | 10 +++++----- 13 files changed, 32 insertions(+), 45 deletions(-) rename packages/contracts/src/http/{cookie-options-builder.ts => cookie-config-builder.ts} (94%) rename packages/contracts/src/http/{cookie-options.ts => cookie-config.ts} (97%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ee03130..66538faa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,14 @@ - `@supercharge/contracts` - `StateBag`: add `exists` method to determine whether the state bag contains an entry `key`, no matter what value is assigned to the key +### Removed +- `@supercharge/contracts` + - removed `BodyparserOptions`: use `BodyparserConfig` instead + - removed `CookieOptions`: use `CookieConfig` instead + - removed `CorsOptions`: use `CorsConfig` instead + - removed `HashBuilderOptions`: use `HashBuilderConfig` instead + - removed `StaticAssetsOptions`: use `StaticAssetsConfig` instead + ### Breaking Changes - all packages of the framework moved to ESM - require Node.js v20 diff --git a/packages/contracts/src/hashing/hash-builder.ts b/packages/contracts/src/hashing/hash-builder.ts index 54d4ca9f..66072d36 100644 --- a/packages/contracts/src/hashing/hash-builder.ts +++ b/packages/contracts/src/hashing/hash-builder.ts @@ -3,7 +3,7 @@ import type { BinaryToTextEncoding, Encoding } from 'node:crypto' export type HashBuilderCallback = (hashBuilder: HashBuilder) => unknown -export interface HashBuilderOptions { +export interface HashBuilderConfig { inputEncoding?: Encoding outputEncoding: BinaryToTextEncoding } diff --git a/packages/contracts/src/http/bodyparser-config.ts b/packages/contracts/src/http/bodyparser-config.ts index dd732bf0..b91bba83 100644 --- a/packages/contracts/src/http/bodyparser-config.ts +++ b/packages/contracts/src/http/bodyparser-config.ts @@ -1,13 +1,6 @@ import { HttpMethods } from './methods.js' -/** - * @deprecated The `BodyparserOptions` is deprecated in favor of the `BodyparserConfig` - * interface. We’ll remove the `BodyparserOptions` interface in the upcoming release - * of the Supercharge framework. You might switch already to the renamed interface. - */ -export type BodyparserOptions = BodyparserConfig - export interface BodyparserConfig { /** * -------------------------------------------------------------------------- diff --git a/packages/contracts/src/http/config.ts b/packages/contracts/src/http/config.ts index f309b9b0..090f0032 100644 --- a/packages/contracts/src/http/config.ts +++ b/packages/contracts/src/http/config.ts @@ -1,5 +1,5 @@ -import { CookieOptions } from './cookie-options.js' +import { CookieConfig } from './cookie-config.js' export interface HttpConfig { /** @@ -15,5 +15,5 @@ export interface HttpConfig { /** * The HTTP cookie options. */ - cookie: CookieOptions + cookie: CookieConfig } diff --git a/packages/contracts/src/http/cookie-bag.ts b/packages/contracts/src/http/cookie-bag.ts index c9daf48f..c867cf6c 100644 --- a/packages/contracts/src/http/cookie-bag.ts +++ b/packages/contracts/src/http/cookie-bag.ts @@ -1,5 +1,5 @@ -import { RequestCookieBuilderCallback, ResponseCookieBuilderCallback } from './cookie-options-builder.js' +import { RequestCookieBuilderCallback, ResponseCookieBuilderCallback } from './cookie-config-builder.js' export interface CookieBag { /** diff --git a/packages/contracts/src/http/cookie-options-builder.ts b/packages/contracts/src/http/cookie-config-builder.ts similarity index 94% rename from packages/contracts/src/http/cookie-options-builder.ts rename to packages/contracts/src/http/cookie-config-builder.ts index 659661fa..246249cc 100644 --- a/packages/contracts/src/http/cookie-options-builder.ts +++ b/packages/contracts/src/http/cookie-config-builder.ts @@ -1,5 +1,5 @@ -import { CookieOptions } from './cookie-options.js' +import { CookieConfig } from './cookie-config.js' export type RequestCookieBuilderCallback = (cookieBuilder: RequestCookieBuilder) => void export type ResponseCookieBuilderCallback = (cookieBuilder: ResponseCookieBuilder) => void @@ -71,5 +71,5 @@ export interface ResponseCookieBuilder { /** * Merge the given `config` with the default HTTP cookie config. */ - useConfig (config: Partial): this + useConfig (config: Partial): this } diff --git a/packages/contracts/src/http/cookie-options.ts b/packages/contracts/src/http/cookie-config.ts similarity index 97% rename from packages/contracts/src/http/cookie-options.ts rename to packages/contracts/src/http/cookie-config.ts index 29f33dc6..10ec8bb7 100644 --- a/packages/contracts/src/http/cookie-options.ts +++ b/packages/contracts/src/http/cookie-config.ts @@ -1,5 +1,5 @@ -export interface CookieOptions { +export interface CookieConfig { /** * The time or date in the future at which the cookie expires. */ diff --git a/packages/contracts/src/http/cors-config.ts b/packages/contracts/src/http/cors-config.ts index d0a59ccf..bbc44df7 100644 --- a/packages/contracts/src/http/cors-config.ts +++ b/packages/contracts/src/http/cors-config.ts @@ -1,11 +1,4 @@ -/** - * @deprecated The `CorsOptions` is deprecated in favor of the `CorsConfig` - * interface. We’ll remove the `CorsOptions` interface in the upcoming - * release of the Supercharge framework. You may already switch to the renamed interface. - */ -export type CorsOptions = CorsConfig - export interface CorsConfig { /** * Controls the `Access-Control-Max-Age` header in seconds. diff --git a/packages/contracts/src/http/request.ts b/packages/contracts/src/http/request.ts index c0a894e6..87378622 100644 --- a/packages/contracts/src/http/request.ts +++ b/packages/contracts/src/http/request.ts @@ -6,18 +6,18 @@ import { HttpContext } from './context.js' import { CookieBag } from './cookie-bag.js' import { IncomingMessage } from 'node:http' import { IncomingHttpHeaders } from 'node:http2' -import { CookieOptions } from './cookie-options.js' +import { CookieConfig } from './cookie-config.js' import { MacroableCtor } from '@supercharge/macroable' import { QueryParameterBag } from './query-parameter-bag.js' import { InteractsWithState } from './concerns/interacts-with-state.js' -import { RequestCookieBuilderCallback } from './cookie-options-builder.js' +import { RequestCookieBuilderCallback } from './cookie-config-builder.js' import { InteractsWithContentTypes } from './concerns/interacts-with-content-types.js' export interface HttpRequestCtor extends MacroableCtor { /** * Create a new HTTP request instance. */ - new (context: HttpContext, cookieOptions: CookieOptions): HttpRequest + new (context: HttpContext, cookieOptions: CookieConfig): HttpRequest } export type Protocol = 'http' | 'https' | string diff --git a/packages/contracts/src/http/response.ts b/packages/contracts/src/http/response.ts index 84179ca6..1c8b1dd0 100644 --- a/packages/contracts/src/http/response.ts +++ b/packages/contracts/src/http/response.ts @@ -4,16 +4,16 @@ import { HttpContext } from './context.js' import { CookieBag } from './cookie-bag.js' import { OutgoingHttpHeaders } from 'http2' import { HttpRedirect } from './redirect.js' -import { CookieOptions } from './cookie-options.js' +import { CookieConfig } from './cookie-config.js' import { MacroableCtor } from '@supercharge/macroable' import { InteractsWithState } from './concerns/interacts-with-state.js' -import { ResponseCookieBuilderCallback } from './cookie-options-builder.js' +import { ResponseCookieBuilderCallback } from './cookie-config-builder.js' export interface HttpResponseCtor extends MacroableCtor { /** * Create a new HTTP response instance. */ - new (context: HttpContext, cookieOptions: CookieOptions): HttpResponse + new (context: HttpContext, cookieOptions: CookieConfig): HttpResponse } export interface HttpResponse extends InteractsWithState { diff --git a/packages/contracts/src/http/static-assets-config.ts b/packages/contracts/src/http/static-assets-config.ts index 81874684..f8a18bf5 100644 --- a/packages/contracts/src/http/static-assets-config.ts +++ b/packages/contracts/src/http/static-assets-config.ts @@ -1,11 +1,4 @@ -/** - * @deprecated The `StaticAssetsOptions` is deprecated in favor of the `StaticAssetsConfig` - * interface. We’ll remove the `StaticAssetsOptions` interface in the upcoming release - * of the Supercharge framework. You might switch already to the renamed interface. - */ -export type StaticAssetsOptions = StaticAssetsConfig - export interface StaticAssetsConfig { /** * Define the maximum amount of seconds to cache a static resource diff --git a/packages/contracts/src/index.ts b/packages/contracts/src/index.ts index de8970f4..0509486d 100644 --- a/packages/contracts/src/index.ts +++ b/packages/contracts/src/index.ts @@ -20,19 +20,19 @@ export { EnvStore } from './env/env.js' export { Bootstrapper, BootstrapperCtor } from './core/bootstrapper.js' export { ErrorHandler, ErrorHandlerCtor } from './core/error-handler.js' -export { HashBuilder, HashBuilderCallback, HashBuilderOptions } from './hashing/hash-builder.js' +export { HashBuilder, HashBuilderCallback, HashBuilderConfig } from './hashing/hash-builder.js' export { HashConfig } from './hashing/config.js' export { BaseHasher } from './hashing/base-hasher.js' export { Hasher } from './hashing/hasher.js' -export { BodyparserConfig, BodyparserOptions } from './http/bodyparser-config.js' +export { BodyparserConfig } from './http/bodyparser-config.js' export { HttpConfig } from './http/config.js' export { HttpContext, NextHandler } from './http/context.js' export { HttpController } from './http/controller.js' export { CookieBag } from './http/cookie-bag.js' -export { CookieOptions } from './http/cookie-options.js' -export { RequestCookieBuilder, RequestCookieBuilderCallback, ResponseCookieBuilder, ResponseCookieBuilderCallback } from './http/cookie-options-builder.js' -export { CorsConfig, CorsOptions } from './http/cors-config.js' +export { CookieConfig } from './http/cookie-config.js' +export { RequestCookieBuilder, RequestCookieBuilderCallback, ResponseCookieBuilder, ResponseCookieBuilderCallback } from './http/cookie-config-builder.js' +export { CorsConfig } from './http/cors-config.js' export { InteractsWithContentTypes } from './http/concerns/interacts-with-content-types.js' export { InteractsWithState } from './http/concerns/interacts-with-state.js' export { StateBag, HttpStateData } from './http/concerns/state-bag.js' @@ -52,7 +52,7 @@ export { HttpRouteGroup } from './http/route-group.js' export { HttpRoute, RouteObjectAttributes } from './http/route.js' export { HttpRouter, RouteHandler, RouteAttributes } from './http/router.js' export { HttpServer, HttpServerHandler } from './http/server.js' -export { StaticAssetsConfig, StaticAssetsOptions } from './http/static-assets-config.js' +export { StaticAssetsConfig } from './http/static-assets-config.js' export { UploadedFile } from './http/uploaded-file.js' export { LoggingConfig, LogChannelConfig, LoggingChannels, ConsoleChannelConfig, FileChannelConfig } from './logging/config.js' diff --git a/packages/view/src/engines/handlebars/compiler.ts b/packages/view/src/engines/handlebars/compiler.ts index 861db5b1..bd56a51b 100644 --- a/packages/view/src/engines/handlebars/compiler.ts +++ b/packages/view/src/engines/handlebars/compiler.ts @@ -2,10 +2,10 @@ import Path from 'node:path' import Fs from '@supercharge/fs' import { fileURLToPath } from 'node:url' -import { resolveDefaultImport, tap } from '@supercharge/goodies' import { Str } from '@supercharge/strings' import { Collect } from '@supercharge/collections' import Handlebars, { HelperDelegate } from 'handlebars' +import { resolveDefaultImport, tap } from '@supercharge/goodies' import { Logger, ViewConfig, ViewEngine, ViewResponseConfig } from '@supercharge/contracts' export class HandlebarsCompiler implements ViewEngine { @@ -288,16 +288,16 @@ export class HandlebarsCompiler implements ViewEngine { /** * Compile the given `template` to a render function. */ - async compile (view: string, options: ReadTemplateOptions = {}): Promise { + async compile (view: string, config: ReadTemplateConfig = {}): Promise { return this.handlebars.compile( - await this.readTemplate(view, options) + await this.readTemplate(view, config) ) } /** * Reads and returns the view `template` from the hard disk. */ - async readTemplate (template: string, { isLayout = false }: ReadTemplateOptions): Promise { + async readTemplate (template: string, { isLayout = false }: ReadTemplateConfig): Promise { const view = isLayout ? Path.resolve(await this.layoutLocation(), template) : Path.resolve(await this.viewsLocation(), template) @@ -328,6 +328,6 @@ export class HandlebarsCompiler implements ViewEngine { } } -interface ReadTemplateOptions { +interface ReadTemplateConfig { isLayout?: boolean }