From c7d3f8c22020cb3e181e4a622429cf3157daeb01 Mon Sep 17 00:00:00 2001 From: Gautam Singh <5769869+gautamsi@users.noreply.github.com> Date: Wed, 17 Jul 2024 16:37:35 -0500 Subject: [PATCH] remove types for deprecated hooks --- .../core/src/lib/core/initialise-lists.ts | 131 +++++------------- packages/core/src/lib/defaults.ts | 19 --- packages/core/src/types/config/hooks.ts | 103 +++++--------- 3 files changed, 69 insertions(+), 184 deletions(-) diff --git a/packages/core/src/lib/core/initialise-lists.ts b/packages/core/src/lib/core/initialise-lists.ts index c8e91675393..f05e55f7021 100644 --- a/packages/core/src/lib/core/initialise-lists.ts +++ b/packages/core/src/lib/core/initialise-lists.ts @@ -221,78 +221,27 @@ function defaultListHooksResolveInput ({ resolvedData }: { resolvedData: any }) return resolvedData } -function parseListHooksResolveInput (f: ListHooks['resolveInput']) { - if (typeof f === 'function') { - return { - create: f, - update: f, - } - } - - const { - create = defaultListHooksResolveInput, - update = defaultListHooksResolveInput - } = f ?? {} - return { create, update } -} - -function parseListHooksValidate (f: ListHooks['validate']) { - if (typeof f === 'function') { - return { - create: f, - update: f, - delete: f, - } - } - - const { - create = defaultOperationHook, - update = defaultOperationHook, - delete: delete_ = defaultOperationHook, - } = f ?? {} - return { create, update, delete: delete_ } -} - -function parseListHooksBeforeOperation (f: ListHooks['beforeOperation']) { - if (typeof f === 'function') { - return { - create: f, - update: f, - delete: f, - } - } - - const { - create = defaultOperationHook, - update = defaultOperationHook, - delete: _delete = defaultOperationHook, - } = f ?? {} - return { create, update, delete: _delete } -} - -function parseListHooksAfterOperation (f: ListHooks['afterOperation']) { - if (typeof f === 'function') { - return { - create: f, - update: f, - delete: f, - } - } - - const { - create = defaultOperationHook, - update = defaultOperationHook, - delete: _delete = defaultOperationHook, - } = f ?? {} - return { create, update, delete: _delete } -} - function parseListHooks (hooks: ListHooks): ResolvedListHooks { return { - resolveInput: parseListHooksResolveInput(hooks.resolveInput), - validate: parseListHooksValidate(hooks.validate), - beforeOperation: parseListHooksBeforeOperation(hooks.beforeOperation), - afterOperation: parseListHooksAfterOperation(hooks.afterOperation), + resolveInput: { + create: hooks.resolveInput?.create ?? defaultListHooksResolveInput, + update: hooks.resolveInput?.update ?? defaultListHooksResolveInput, + }, + validate: { + create: hooks.validate?.create ?? defaultOperationHook, + update: hooks.validate?.update ?? defaultOperationHook, + delete: hooks.validate?.delete ?? defaultOperationHook, + }, + beforeOperation: { + create: hooks.beforeOperation?.create ?? defaultOperationHook, + update: hooks.beforeOperation?.update ?? defaultOperationHook, + delete: hooks.beforeOperation?.delete ?? defaultOperationHook, + }, + afterOperation: { + create: hooks.afterOperation?.create ?? defaultOperationHook, + update: hooks.afterOperation?.update ?? defaultOperationHook, + delete: hooks.afterOperation?.delete ?? defaultOperationHook, + }, } } @@ -307,45 +256,27 @@ function defaultFieldHooksResolveInput ({ } function parseFieldHooks ( - fieldKey: string, hooks: FieldHooks, ): ResolvedFieldHooks { - /** @deprecated, TODO: remove in breaking change */ - if (hooks.validate !== undefined) { - if (hooks.validateInput !== undefined) throw new TypeError(`"hooks.validate" conflicts with "hooks.validateInput" for the "${fieldKey}" field`) - if (hooks.validateDelete !== undefined) throw new TypeError(`"hooks.validate" conflicts with "hooks.validateDelete" for the "${fieldKey}" field`) - - if (typeof hooks.validate === 'function') { - return parseFieldHooks(fieldKey, { - ...hooks, - validate: { - create: hooks.validate, - update: hooks.validate, - delete: hooks.validate, - } - }) - } - } - return { resolveInput: { - create: hooks.resolveInput ?? defaultFieldHooksResolveInput, - update: hooks.resolveInput ?? defaultFieldHooksResolveInput, + create: hooks.resolveInput?.create ?? defaultFieldHooksResolveInput, + update: hooks.resolveInput?.update ?? defaultFieldHooksResolveInput, }, validate: { - create: hooks.validate?.create ?? hooks.validateInput ?? defaultOperationHook, - update: hooks.validate?.update ?? hooks.validateInput ?? defaultOperationHook, - delete: hooks.validate?.delete ?? hooks.validateDelete ?? defaultOperationHook, + create: hooks.validate?.create ?? defaultOperationHook, + update: hooks.validate?.update ?? defaultOperationHook, + delete: hooks.validate?.delete ?? defaultOperationHook, }, beforeOperation: { - create: hooks.beforeOperation ?? defaultOperationHook, - update: hooks.beforeOperation ?? defaultOperationHook, - delete: hooks.beforeOperation ?? defaultOperationHook, + create: hooks.beforeOperation?.create ?? defaultOperationHook, + update: hooks.beforeOperation?.update ?? defaultOperationHook, + delete: hooks.beforeOperation?.delete ?? defaultOperationHook, }, afterOperation: { - create: hooks.afterOperation ?? defaultOperationHook, - update: hooks.afterOperation ?? defaultOperationHook, - delete: hooks.afterOperation ?? defaultOperationHook, + create: hooks.afterOperation?.create ?? defaultOperationHook, + update: hooks.afterOperation?.update ?? defaultOperationHook, + delete: hooks.afterOperation?.delete ?? defaultOperationHook, }, } } @@ -402,7 +333,7 @@ function getListsWithInitialisedFields ( resultFields[fieldKey] = { dbField: f.dbField as ResolvedDBField, access: parseFieldAccessControl(f.access), - hooks: parseFieldHooks(fieldKey, f.hooks ?? {}), + hooks: parseFieldHooks(f.hooks ?? {}), graphql: { cacheHint: f.graphql?.cacheHint, isEnabled: isEnabledField, diff --git a/packages/core/src/lib/defaults.ts b/packages/core/src/lib/defaults.ts index ebba71ff481..787905bdac5 100644 --- a/packages/core/src/lib/defaults.ts +++ b/packages/core/src/lib/defaults.ts @@ -46,25 +46,6 @@ function injectDefaults (config: KeystoneConfig, defaultIdField: IdFieldConfig) } } - /** @deprecated, TODO: remove in breaking change */ - for (const [listKey, list] of Object.entries(updated)) { - if (list.hooks === undefined) continue - if (list.hooks.validate !== undefined) { - if (list.hooks.validateInput !== undefined) throw new TypeError(`"hooks.validate" conflicts with "hooks.validateInput" for the "${listKey}" list`) - if (list.hooks.validateDelete !== undefined) throw new TypeError(`"hooks.validate" conflicts with "hooks.validateDelete" for the "${listKey}" list`) - continue - } - - list.hooks = { - ...list.hooks, - validate: { - create: list.hooks.validateInput, - update: list.hooks.validateInput, - delete: list.hooks.validateDelete - } - } - } - return updated } diff --git a/packages/core/src/types/config/hooks.ts b/packages/core/src/types/config/hooks.ts index 046476ebd3a..a7fd3a89f9c 100644 --- a/packages/core/src/types/config/hooks.ts +++ b/packages/core/src/types/config/hooks.ts @@ -51,55 +51,37 @@ export type ListHooks = { /** * Used to **modify the input** for create and update operations after default values and access control have been applied */ - resolveInput?: - | ResolveInputListHook - | { - create?: ResolveInputListHook - update?: ResolveInputListHook - } + resolveInput?: { + create?: ResolveInputListHook + update?: ResolveInputListHook + } /** * Used to **validate** if a create, update or delete operation is OK */ - validate?: - | ValidateHook - | { - create?: ValidateHook - update?: ValidateHook - delete?: ValidateHook - } - - /** - * @deprecated, replaced by validate^ - */ - validateInput?: ValidateHook - - /** - * @deprecated, replaced by validate^ - */ - validateDelete?: ValidateHook + validate?: { + create?: ValidateHook + update?: ValidateHook + delete?: ValidateHook + } /** * Used to **cause side effects** before a create, update, or delete operation once all validateInput hooks have resolved */ - beforeOperation?: - | BeforeOperationListHook - | { - create?: BeforeOperationListHook - update?: BeforeOperationListHook - delete?: BeforeOperationListHook - } + beforeOperation?: { + create?: BeforeOperationListHook + update?: BeforeOperationListHook + delete?: BeforeOperationListHook + } /** * Used to **cause side effects** after a create, update, or delete operation operation has occurred */ - afterOperation?: - | AfterOperationListHook - | { - create?: AfterOperationListHook - update?: AfterOperationListHook - delete?: AfterOperationListHook - } + afterOperation?: { + create?: AfterOperationListHook + update?: AfterOperationListHook + delete?: AfterOperationListHook + } } export type ResolvedListHooks = { @@ -131,46 +113,37 @@ export type FieldHooks< /** * Used to **modify the input** for create and update operations after default values and access control have been applied */ - resolveInput?: - | ResolveInputFieldHook -// TODO: add in breaking change -// | { -// create?: ResolveInputFieldHook -// update?: ResolveInputFieldHook -// } + resolveInput?: { + create?: ResolveInputFieldHook + update?: ResolveInputFieldHook + } /** * Used to **validate** if a create, update or delete operation is OK */ - validate?: - | ValidateFieldHook - | { - create?: ValidateFieldHook - update?: ValidateFieldHook - delete?: ValidateFieldHook - } - - /** - * @deprecated, replaced by validate^ - * Used to **validate the input** for create and update operations once all resolveInput hooks resolved - */ - validateInput?: ValidateFieldHook - - /** - * @deprecated, replaced by validate^ - * Used to **validate** that a delete operation can happen after access control has occurred - */ - validateDelete?: ValidateFieldHook + validate?:{ + create?: ValidateFieldHook + update?: ValidateFieldHook + delete?: ValidateFieldHook + } /** * Used to **cause side effects** before a create, update, or delete operation once all validateInput hooks have resolved */ - beforeOperation?: BeforeOperationFieldHook + beforeOperation?: { + create?: BeforeOperationFieldHook + update?: BeforeOperationFieldHook + delete?: BeforeOperationFieldHook + } /** * Used to **cause side effects** after a create, update, or delete operation operation has occurred */ - afterOperation?: AfterOperationFieldHook + afterOperation?: { + create?: AfterOperationFieldHook + update?: AfterOperationFieldHook + delete?: AfterOperationFieldHook + } } export type ResolvedFieldHooks<