@@ -92,50 +92,86 @@ export default function (_local: any, _remote: any) {
9292 // 适配钩子函数配置
9393 if ( ! ( _ . isEmpty ( local ?. instanceLifecycleConfig ) && _ . isEmpty ( remote ?. instanceLifecycleConfig ) ) ) {
9494 const { initializer, preStop } = local . instanceLifecycleConfig || { } ;
95+ if ( initializer ?. handler && initializer ?. command ) {
96+ throw new Error (
97+ 'fc3 pre check: command and handler can not be set at the same time in lifecycle Lifecycle.Initializer' ,
98+ ) ;
99+ }
100+ if ( preStop ?. handler && preStop ?. command ) {
101+ throw new Error (
102+ 'fc3 pre check: command and handler can not be set at the same time in lifecycle Lifecycle.PreStop' ,
103+ ) ;
104+ }
95105 const initializerTimeout = _ . get ( remote , 'instanceLifecycleConfig.initializer.timeout' , 3 ) ;
96106 if (
97107 remote ?. instanceLifecycleConfig ?. initializer ?. handler ||
108+ remote ?. instanceLifecycleConfig ?. initializer ?. command ||
98109 remote ?. instanceLifecycleConfig ?. initializer ?. timeout
99110 ) {
100- if ( initializer ?. handler ) {
111+ if ( initializer ?. handler || initializer ?. command ) {
112+ if ( remote ?. instanceLifecycleConfig ?. initializer ?. handler && initializer ?. command ) {
113+ _ . set ( local , 'instanceLifecycleConfig.initializer.handler' , '' ) ;
114+ }
115+ if ( remote ?. instanceLifecycleConfig ?. initializer ?. command && initializer ?. handler ) {
116+ _ . set ( local , 'instanceLifecycleConfig.initializer.command' , [ ] ) ;
117+ }
101118 if ( ! initializer . timeout ) {
102119 _ . set ( local , 'instanceLifecycleConfig.initializer.timeout' , initializerTimeout ) ;
103120 }
104121 } else {
105122 _ . set ( local , 'instanceLifecycleConfig.initializer.handler' , '' ) ;
123+ _ . set ( local , 'instanceLifecycleConfig.initializer.command' , [ ] ) ;
106124 _ . set ( local , 'instanceLifecycleConfig.initializer.timeout' , 3 ) ;
107125 }
108- } else if ( initializer ?. handler && ! initializer . timeout ) {
126+ } else if ( ( initializer ?. command || initializer ?. handler ) && ! initializer . timeout ) {
109127 _ . set ( local , 'instanceLifecycleConfig.initializer.timeout' , initializerTimeout ) ;
110128 }
111129
112130 const preStopTimeout = _ . get ( remote , 'instanceLifecycleConfig.preStop.timeout' , 3 ) ;
113131 if (
114132 remote ?. instanceLifecycleConfig ?. preStop ?. handler ||
133+ remote ?. instanceLifecycleConfig ?. preStop ?. command ||
115134 remote ?. instanceLifecycleConfig ?. preStop ?. timeout
116135 ) {
117- if ( preStop ?. handler ) {
136+ if ( preStop ?. handler || preStop ?. command ) {
137+ if ( remote ?. instanceLifecycleConfig ?. preStop ?. handler && preStop ?. command ) {
138+ _ . set ( local , 'instanceLifecycleConfig.preStop.handler' , '' ) ;
139+ }
140+ if ( remote ?. instanceLifecycleConfig ?. preStop ?. command && preStop ?. handler ) {
141+ _ . set ( local , 'instanceLifecycleConfig.preStop.command' , [ ] ) ;
142+ }
118143 if ( ! preStop . timeout ) {
119144 _ . set ( local , 'instanceLifecycleConfig.preStop.timeout' , preStopTimeout ) ;
120145 }
121146 } else {
122147 _ . set ( local , 'instanceLifecycleConfig.preStop.handler' , '' ) ;
148+ _ . set ( local , 'instanceLifecycleConfig.preStop.command' , [ ] ) ;
123149 _ . set ( local , 'instanceLifecycleConfig.preStop.timeout' , 3 ) ;
124150 }
125- } else if ( preStop ?. handler && ! preStop . timeout ) {
151+ } else if ( ( preStop ?. command || preStop ?. handler ) && ! preStop . timeout ) {
126152 _ . set ( local , 'instanceLifecycleConfig.preStop.timeout' , preStopTimeout ) ;
127153 }
128154 }
129155
130- // 如果 local 和 remote 都是 handler 为 '', 则从 props 中删除
156+ // 如果 local 和 remote 都是 handler 和 command 为 '', 则从 props 中删除
131157 if ( local ?. instanceLifecycleConfig && remote ?. instanceLifecycleConfig ) {
132158 const { initializer : initializerL , preStop : preStopL } = local . instanceLifecycleConfig || { } ;
133159 const { initializer : initializerR , preStop : preStopR } = remote . instanceLifecycleConfig || { } ;
134- if ( initializerL ?. handler === initializerR ?. handler && initializerL ?. handler === '' ) {
160+ if (
161+ initializerL ?. handler === initializerR ?. handler &&
162+ initializerL ?. handler === '' &&
163+ _ . isEqual ( initializerL ?. command , initializerR ?. command ) &&
164+ _ . isEmpty ( initializerL ?. command )
165+ ) {
135166 _ . unset ( local , 'instanceLifecycleConfig.initializer' ) ;
136167 _ . unset ( remote , 'instanceLifecycleConfig.initializer' ) ;
137168 }
138- if ( preStopL ?. handler === preStopR ?. handler && preStopL ?. handler === '' ) {
169+ if (
170+ preStopL ?. handler === preStopR ?. handler &&
171+ preStopL ?. handler === '' &&
172+ _ . isEqual ( preStopL ?. command , preStopR ?. command ) &&
173+ _ . isEmpty ( preStopL ?. command )
174+ ) {
139175 _ . unset ( local , 'instanceLifecycleConfig.preStop' ) ;
140176 _ . unset ( remote , 'instanceLifecycleConfig.preStop' ) ;
141177 }
0 commit comments