@@ -4,7 +4,7 @@ import CodeInjector from './modules/codeInjector.js';
44import ExpressServer from './servers/express.js' ;
55import OpenApiRegistry from './servers/openapi.js' ;
66// import FastifyServer from './servers/fastify.js';
7- import { ADMINFORTH_VERSION , listify , suggestIfTypo , RateLimiter , RAMLock , getClientIp , isProbablyUUIDColumn , convertPeriodToSeconds , hookResponseError , md5hash , applyRegexValidation , formatHugePluginError } from './modules/utils.js' ;
7+ import { ADMINFORTH_VERSION , listify , suggestIfTypo , RateLimiter , RAMLock , isProbablyUUIDColumn , convertPeriodToSeconds , hookResponseError , md5hash , applyRegexValidation , formatHugePluginError } from './modules/utils.js' ;
88import {
99 type AdminForthConfig ,
1010 type IAdminForth ,
@@ -57,7 +57,7 @@ export * from './modules/requestContext.js';
5757export * from './modules/utils.js' ;
5858export { interpretResource , rejectApiRawFilters } ;
5959export { AdminForthPlugin } ;
60- export { suggestIfTypo , RateLimiter , RAMLock , getClientIp , convertPeriodToSeconds } ;
60+ export { suggestIfTypo , RateLimiter , RAMLock , convertPeriodToSeconds } ;
6161export { default as AdminForthBaseConnector } from './dataConnectors/baseConnector.js' ;
6262export {
6363 COMPOSITE_RECORD_ID_SEPARATOR ,
@@ -798,7 +798,7 @@ class AdminForth implements IAdminForth {
798798 async createResourceRecord (
799799 params : CreateResourceRecordParams ,
800800 ) : Promise < CreateResourceRecordResult > {
801- const { resource, record, adminUser, extra, response } = params ;
801+ const { resource, record, adminUser, extra } = params ;
802802
803803 normalizeRecordValues ( resource , record ) ;
804804
@@ -817,24 +817,19 @@ class AdminForth implements IAdminForth {
817817 record,
818818 adminUser,
819819 adminforth : this ,
820- response,
821820 extra,
822821 } ) ;
823- if ( resp . newRecordId ) {
824- afLogger . warn ( `Deprecation warning: beforeSave hook returned 'newRecordId'. Since AdminForth v1.2.9 use 'redirectToRecordId' instead. 'newRecordId' will be removed in v2.0.0` ) ;
825- }
826- if ( ! resp || ( typeof resp . ok !== 'boolean' && ( ! resp . error && ! resp . newRecordId && ! resp . redirectToRecordId ) ) ) {
822+ if ( ! resp || ( typeof resp . ok !== 'boolean' && ( ! resp . error && ! resp . redirectToRecordId ) ) ) {
827823 throw new Error (
828- `Invalid return value from beforeSave hook. Expected: { ok: boolean, error?: string | null, newRecordId?: any, redirectToRecordId?: any }.\n` +
829- `Note: Return { ok: false, error: null, redirectToRecordId } (preferred) or { ok: false, error: null, newRecordId } (deprecated) to stop creation and redirect to an existing record.`
824+ `Invalid return value from beforeSave hook. Expected: { ok: boolean, error?: string | null, redirectToRecordId?: any }.\n` +
825+ `Note: Return { ok: false, error: null, redirectToRecordId } to stop creation and redirect to an existing record.`
830826 ) ;
831827 }
832828 if ( resp . ok === false && ! resp . error ) {
833- const { error, ok , newRecordId , redirectToRecordId } = resp ;
829+ const { error, redirectToRecordId } = resp ;
834830 return {
835831 error : error ?? 'Operation aborted by hook' ,
836- newRecordId : redirectToRecordId ? redirectToRecordId : newRecordId ,
837- redirectToRecordId : redirectToRecordId
832+ redirectToRecordId,
838833 } ;
839834 }
840835 if ( resp . error ) {
@@ -869,7 +864,6 @@ class AdminForth implements IAdminForth {
869864 adminUser,
870865 adminforth : this ,
871866 recordWithVirtualColumns,
872- response,
873867 extra,
874868 } ) ;
875869
@@ -892,35 +886,28 @@ class AdminForth implements IAdminForth {
892886 async updateResourceRecord (
893887 params : UpdateResourceRecordParams ,
894888 ) : Promise < UpdateResourceRecordResult > {
895- const { resource, recordId, record, oldRecord, adminUser, response, extra, updates } = params ;
896- const dataToUse = updates || record ;
897- normalizeRecordValues ( resource , dataToUse ) ;
898- const err = this . validateRecordValues ( resource , dataToUse , 'edit' ) ;
889+ const { resource, recordId, oldRecord, adminUser, extra, updates } = params ;
890+ normalizeRecordValues ( resource , updates ) ;
891+ const err = this . validateRecordValues ( resource , updates , 'edit' ) ;
899892 if ( err ) {
900893 return { error : err } ;
901894 }
902895
903- if ( record ) {
904- afLogger . warn ( `updateResourceRecord function received 'record' param which is deprecated and will be removed in future version, please use 'updates' instead.` ) ;
905- }
906-
907896 // remove editReadonly columns from record
908897 for ( const column of resource . columns . filter ( ( col ) => col . editReadonly ) ) {
909- if ( column . name in dataToUse )
910- delete dataToUse [ column . name ] ;
898+ if ( column . name in updates )
899+ delete updates [ column . name ] ;
911900 }
912901
913902 // execute hook if needed
914903 for ( const hook of listify ( resource . hooks ?. edit ?. beforeSave ) ) {
915904 const resp = await hook ( {
916905 recordId,
917906 resource,
918- record : dataToUse ,
919- updates : dataToUse ,
907+ updates,
920908 oldRecord,
921909 adminUser,
922910 adminforth : this ,
923- response,
924911 extra,
925912 } ) ;
926913 const hookRespError = hookResponseError ( resp ) ;
@@ -932,16 +919,16 @@ class AdminForth implements IAdminForth {
932919 const newValues = { } ;
933920 const connector = this . connectors [ resource . dataSource ] ;
934921
935- for ( const recordField in dataToUse ) {
936- if ( dataToUse [ recordField ] !== oldRecord [ recordField ] ) {
922+ for ( const recordField in updates ) {
923+ if ( updates [ recordField ] !== oldRecord [ recordField ] ) {
937924 // leave only changed fields to reduce data transfer/modifications in db
938925 const column = resource . columns . find ( ( col ) => col . name === recordField ) ;
939926 if ( ! column || ! column . virtual ) {
940927 // exclude virtual columns
941- newValues [ recordField ] = dataToUse [ recordField ] ;
928+ newValues [ recordField ] = updates [ recordField ] ;
942929 }
943930 }
944- }
931+ }
945932
946933 if ( Object . keys ( newValues ) . length > 0 ) {
947934 const { error } = await connector . updateRecord ( { resource, recordId, newValues } ) ;
@@ -952,15 +939,13 @@ class AdminForth implements IAdminForth {
952939
953940 // execute hook if needed
954941 for ( const hook of listify ( resource . hooks ?. edit ?. afterSave ) ) {
955- const resp = await hook ( {
956- resource,
957- record : dataToUse ,
958- updates : dataToUse ,
959- adminUser,
942+ const resp = await hook ( {
943+ resource,
944+ updates,
945+ adminUser,
960946 oldRecord,
961947 recordId,
962948 adminforth : this ,
963- response,
964949 extra,
965950 } ) ;
966951 const hookRespError = hookResponseError ( resp ) ;
@@ -980,16 +965,15 @@ class AdminForth implements IAdminForth {
980965 async deleteResourceRecord (
981966 params : DeleteResourceRecordParams ,
982967 ) : Promise < DeleteResourceRecordResult > {
983- const { resource, recordId, adminUser, record, response , extra } = params ;
968+ const { resource, recordId, adminUser, record, extra } = params ;
984969 // execute hook if needed
985970 for ( const hook of listify ( resource . hooks ?. delete ?. beforeSave ) ) {
986- const resp = await hook ( {
987- resource,
988- record,
971+ const resp = await hook ( {
972+ resource,
973+ record,
989974 adminUser,
990975 recordId,
991976 adminforth : this ,
992- response,
993977 extra,
994978 } ) ;
995979 const hookRespError = hookResponseError ( resp ) ;
@@ -1003,13 +987,12 @@ class AdminForth implements IAdminForth {
1003987
1004988 // execute hook if needed
1005989 for ( const hook of listify ( resource . hooks ?. delete ?. afterSave ) ) {
1006- const resp = await hook ( {
1007- resource,
1008- record,
990+ const resp = await hook ( {
991+ resource,
992+ record,
1009993 adminUser,
1010994 recordId,
1011995 adminforth : this ,
1012- response,
1013996 extra,
1014997 } ) ;
1015998 const hookRespError = hookResponseError ( resp ) ;
0 commit comments