@@ -162,90 +162,91 @@ export const adPlacesRulesDictionarySchema: IObjectSchema<Record<string, AdPlace
162162 adPlacesRulesSchema
163163) . required ( ) ;
164164
165- const permanentAdPlacesRulesSchema = arraySchema ( )
166- . of (
167- objectSchema ( )
165+ const permanentAdPlacesRuleSchema : IObjectSchema < PermanentAdPlacesRule > = objectSchema ( )
166+ . shape ( {
167+ urlRegexes : arraySchema ( ) . of ( regexStringSchema . clone ( ) . required ( ) ) . required ( ) ,
168+ adSelector : objectSchema ( )
168169 . shape ( {
169- urlRegexes : arraySchema ( ) . of ( regexStringSchema . clone ( ) . required ( ) ) . required ( ) ,
170- adSelector : objectSchema ( )
171- . shape ( {
172- isMultiple : booleanSchema ( ) . required ( ) ,
173- cssString : cssSelectorSchema . clone ( ) . required ( ) ,
174- parentDepth : numberSchema ( ) . integer ( ) . min ( 0 ) . required ( )
175- } )
176- . required ( ) ,
177- parentSelector : objectSchema ( )
178- . shape ( {
179- isMultiple : booleanSchema ( ) . required ( ) ,
180- cssString : cssSelectorSchema . clone ( ) . required ( ) ,
181- parentDepth : numberSchema ( ) . integer ( ) . min ( 0 ) . required ( )
182- } )
183- . required ( ) ,
184- insertionIndex : numberSchema ( ) . integer ( ) ,
185- insertBeforeSelector : cssSelectorSchema ,
186- insertAfterSelector : cssSelectorSchema ,
187- insertionsCount : numberSchema ( ) . integer ( ) . min ( 1 ) ,
188- shouldUseDivWrapper : booleanSchema ( ) ,
189- wrapperType : stringSchema ( ) . oneOf ( [ 'div' , 'tbody' ] ) ,
190- colsBefore : numberSchema ( ) . integer ( ) . min ( 0 ) ,
191- colspan : numberSchema ( ) . integer ( ) . min ( 1 ) ,
192- colsAfter : numberSchema ( ) . integer ( ) . min ( 0 ) ,
193- elementStyle : styleSchema ,
194- divWrapperStyle : styleSchema ,
195- wrapperStyle : styleSchema ,
196- elementToMeasureSelector : cssSelectorSchema ,
197- elementsToMeasureSelectors : objectSchema ( )
198- . shape ( { width : cssSelectorSchema . clone ( ) , height : cssSelectorSchema . clone ( ) } )
199- . test ( 'all-fields-present' , function ( value : unknown ) {
200- if ( ! value || typeof value !== 'object' ) {
201- return true ;
202- }
203-
204- if ( typeof ( value as any ) . width === 'string' && typeof ( value as any ) . height === 'string' ) {
205- return true ;
206- }
207-
208- throw this . createError ( { path : this . path , message : 'Both `width` and `height` fields must be specified' } ) ;
209- } )
210- . default ( undefined ) as unknown as IObjectSchema < { width : string ; height : string } | undefined > ,
211- stylesOverrides : arraySchema ( ) . of ( adStylesOverridesSchema . clone ( ) . required ( ) ) ,
212- shouldHideOriginal : booleanSchema ( ) ,
213- extVersion : versionRangeSchema . clone ( ) . required ( ) ,
214- displayWidth : versionRangeSchema . clone ( ) . test ( 'valid-boundary-values' , ( value : string | undefined ) => {
215- if ( ! isDefined ( value ) || value . length === 0 ) {
216- return true ;
217- }
218-
219- const nonIntegerNumberMatches = value . match ( / \d + \. \d + / g) ;
220- if ( isDefined ( nonIntegerNumberMatches ) ) {
221- throw new Error ( 'Display width must be an integer' ) ;
222- }
223-
224- return true ;
225- } )
170+ isMultiple : booleanSchema ( ) . required ( ) ,
171+ cssString : cssSelectorSchema . clone ( ) . required ( ) ,
172+ parentDepth : numberSchema ( ) . integer ( ) . min ( 0 ) . required ( )
226173 } )
227- . test ( 'insertion-place-specified' , ( value : PermanentAdPlacesRule | undefined ) => {
228- if ( ! value ) {
174+ . required ( ) ,
175+ parentSelector : objectSchema ( )
176+ . shape ( {
177+ isMultiple : booleanSchema ( ) . required ( ) ,
178+ cssString : cssSelectorSchema . clone ( ) . required ( ) ,
179+ parentDepth : numberSchema ( ) . integer ( ) . min ( 0 ) . required ( )
180+ } )
181+ . required ( ) ,
182+ insertionIndex : numberSchema ( ) . integer ( ) ,
183+ insertBeforeSelector : cssSelectorSchema ,
184+ insertAfterSelector : cssSelectorSchema ,
185+ insertionsCount : numberSchema ( ) . integer ( ) . min ( 1 ) ,
186+ shouldUseDivWrapper : booleanSchema ( ) ,
187+ wrapperType : stringSchema ( ) . oneOf ( [ 'div' , 'tbody' ] ) ,
188+ colsBefore : numberSchema ( ) . integer ( ) . min ( 0 ) ,
189+ colspan : numberSchema ( ) . integer ( ) . min ( 1 ) ,
190+ colsAfter : numberSchema ( ) . integer ( ) . min ( 0 ) ,
191+ elementStyle : styleSchema ,
192+ divWrapperStyle : styleSchema ,
193+ wrapperStyle : styleSchema ,
194+ elementToMeasureSelector : cssSelectorSchema ,
195+ elementsToMeasureSelectors : objectSchema ( )
196+ . shape ( { width : cssSelectorSchema . clone ( ) , height : cssSelectorSchema . clone ( ) } )
197+ . test ( 'all-fields-present' , function ( value : unknown ) {
198+ if ( ! value || typeof value !== 'object' ) {
229199 return true ;
230200 }
231201
232- const { insertionIndex, insertBeforeSelector, insertAfterSelector } = value ;
233- const definedValuesCount = [ insertionIndex , insertBeforeSelector , insertAfterSelector ] . filter ( isDefined ) . length ;
234-
235- if ( definedValuesCount !== 1 ) {
236- throw new Error (
237- 'Exactly one of insertionIndex, insertBeforeSelector and insertAfterSelector must be specified'
238- ) ;
202+ if ( typeof ( value as any ) . width === 'string' && typeof ( value as any ) . height === 'string' ) {
203+ return true ;
239204 }
240205
241- return true ;
206+ throw this . createError ( { path : this . path , message : 'Both `width` and `height` fields must be specified' } ) ;
242207 } )
243- . required ( )
244- )
208+ . default ( undefined ) as unknown as IObjectSchema < { width : string ; height : string } | undefined > ,
209+ stylesOverrides : arraySchema ( ) . of ( adStylesOverridesSchema . clone ( ) . required ( ) ) ,
210+ shouldHideOriginal : booleanSchema ( ) ,
211+ extVersion : versionRangeSchema . clone ( ) . required ( ) ,
212+ displayWidth : versionRangeSchema . clone ( ) . test ( 'valid-boundary-values' , ( value : string | undefined ) => {
213+ if ( ! isDefined ( value ) || value . length === 0 ) {
214+ return true ;
215+ }
216+
217+ const nonIntegerNumberMatches = value . match ( / \d + \. \d + / g) ;
218+ if ( isDefined ( nonIntegerNumberMatches ) ) {
219+ throw new Error ( 'Display width must be an integer' ) ;
220+ }
221+
222+ return true ;
223+ } ) ,
224+ supportsTheming : booleanSchema ( ) . default ( false ) ,
225+ fontSampleSelector : cssSelectorSchema . clone ( ) ,
226+ enableForMises : booleanSchema ( ) . default ( true ) ,
227+ enableForNonMises : booleanSchema ( ) . default ( true )
228+ } )
229+ . test ( 'insertion-place-specified' , ( value : PermanentAdPlacesRule | undefined ) => {
230+ if ( ! value ) {
231+ return true ;
232+ }
233+
234+ const { insertionIndex, insertBeforeSelector, insertAfterSelector } = value ;
235+ const definedValuesCount = [ insertionIndex , insertBeforeSelector , insertAfterSelector ] . filter ( isDefined ) . length ;
236+
237+ if ( definedValuesCount !== 1 ) {
238+ throw new Error ( 'Exactly one of insertionIndex, insertBeforeSelector and insertAfterSelector must be specified' ) ;
239+ }
240+
241+ return true ;
242+ } )
245243 . required ( ) ;
246244
247245export const permanentAdPlacesRulesDictionarySchema : IObjectSchema < Record < string , PermanentAdPlacesRule [ ] > > =
248- makeDictionarySchema ( hostnameSchema , permanentAdPlacesRulesSchema ) . required ( ) ;
246+ makeDictionarySchema (
247+ hostnameSchema ,
248+ arraySchema ( ) . of ( permanentAdPlacesRuleSchema . clone ( ) . required ( ) ) . required ( )
249+ ) . required ( ) ;
249250
250251const adProvidersByDomainRulesSchema = arraySchema ( )
251252 . of (
@@ -267,7 +268,8 @@ const adProvidersSelectorsRuleSchema: IObjectSchema<AdProviderSelectorsRule> = o
267268 negativeSelectors : cssSelectorsListSchema . clone ( ) ,
268269 extVersion : versionRangeSchema . clone ( ) . required ( ) ,
269270 parentDepth : numberSchema ( ) . integer ( ) . min ( 0 ) . default ( 0 ) ,
270- enableForMises : booleanSchema ( ) . default ( true )
271+ enableForMises : booleanSchema ( ) . default ( true ) ,
272+ enableForNonMises : booleanSchema ( ) . default ( true )
271273} ) ;
272274
273275export const adProvidersDictionarySchema = makeDictionarySchema < AdProviderSelectorsRule [ ] > (
0 commit comments