@@ -20,17 +20,32 @@ export interface PlacementContextData
20
20
status : Status ;
21
21
}
22
22
23
- const PLACEMENT_MAP : Record < PlacementType , RegExp > = {
24
- side : / \/ [ ^ / ] + \/ ( p l a y | d o c s \/ | b l o g \/ | c u r r i c u l u m \/ [ ^ $ ] | s e a r c h $ ) / i,
25
- top : / \/ [ ^ / ] + \/ (? ! $ | _ h o m e p a g e $ ) .* / i,
26
- hpMain : / \/ [ ^ / ] + \/ ( $ | _ h o m e p a g e $ ) / i,
27
- hpFooter : / \/ [ ^ / ] + \/ ( $ | _ h o m e p a g e $ ) / i,
28
- bottom : / \/ [ ^ / ] + \/ d o c s \/ / i,
23
+ const PLACEMENT_MAP : Record < PlacementType , { typ : string ; pattern : RegExp } > = {
24
+ side : {
25
+ typ : "side" ,
26
+ pattern : / \/ [ ^ / ] + \/ ( p l a y | d o c s \/ | b l o g \/ | c u r r i c u l u m \/ [ ^ $ ] | s e a r c h $ ) / i,
27
+ } ,
28
+ top : {
29
+ typ : "top-banner" ,
30
+ pattern : / \/ [ ^ / ] + \/ (? ! $ | _ h o m e p a g e $ ) .* / i,
31
+ } ,
32
+ hpMain : {
33
+ typ : "hp-main" ,
34
+ pattern : / \/ [ ^ / ] + \/ ( $ | _ h o m e p a g e $ ) / i,
35
+ } ,
36
+ hpFooter : {
37
+ typ : "hp-footer" ,
38
+ pattern : / \/ [ ^ / ] + \/ ( $ | _ h o m e p a g e $ ) / i,
39
+ } ,
40
+ bottom : {
41
+ typ : "bottom-banner" ,
42
+ pattern : / \/ [ ^ / ] + \/ d o c s \/ / i,
43
+ } ,
29
44
} ;
30
45
31
46
function placementTypes ( pathname : string ) : string [ ] {
32
47
return Object . entries ( PLACEMENT_MAP )
33
- . map ( ( [ k , re ] ) => re . test ( pathname ) && k )
48
+ . map ( ( [ k , { pattern : re } ] ) => re . test ( pathname ) && k )
34
49
. filter ( Boolean ) as string [ ] ;
35
50
}
36
51
@@ -74,7 +89,12 @@ export function PlacementProvider(props: { children: React.ReactNode }) {
74
89
75
90
try {
76
91
const placementResponse : PlacementContextData = await response . json ( ) ;
77
- gleanClick ( `pong: pong->status ${ placementResponse . side ?. status } ` ) ;
92
+ const typs = Object . entries ( PLACEMENT_MAP )
93
+ . filter ( ( [ key ] ) => key in placementResponse )
94
+ . map ( ( [ , { typ } ] ) => typ ) ;
95
+ if ( typs . length ) {
96
+ gleanClick ( `pong: pong->served ${ typs . join ( ) } ` ) ;
97
+ }
78
98
return placementResponse ;
79
99
} catch ( e ) {
80
100
throw Error ( response . statusText ) ;
0 commit comments