@@ -10,9 +10,7 @@ import {
1010 FilterData ,
1111 Source ,
1212 SourceAggregatableDebugReportingConfig ,
13- SummaryOperator ,
1413 TriggerDataMatching ,
15- TriggerSpec ,
1614} from './source'
1715import {
1816 ItemErrorAction ,
@@ -336,12 +334,12 @@ function eventLevelEpsilon(j: Json, ctx: Context): Maybe<number> {
336334function channelCapacity ( s : Source , ctx : Context ) : void {
337335 const numStatesWords = 'number of possible output states'
338336
339- const perTriggerDataConfigs = s . triggerSpecs . flatMap ( ( spec ) =>
340- Array < privacy . PerTriggerDataConfig > ( spec . triggerData . size ) . fill (
341- new privacy . PerTriggerDataConfig (
342- spec . eventReportWindows . endTimes . length ,
343- spec . summaryBuckets . length
344- )
337+ const perTriggerDataConfigs = Array < privacy . PerTriggerDataConfig > (
338+ s . triggerData . size
339+ ) . fill (
340+ new privacy . PerTriggerDataConfig (
341+ s . eventReportWindows . endTimes . length ,
342+ s . maxEventLevelReports
345343 )
346344 )
347345
@@ -438,84 +436,14 @@ function fullFlexTriggerDatum(j: Json, ctx: Context): Maybe<number> {
438436 . filter ( isInRange , ctx , 0 , UINT32_MAX )
439437}
440438
441- function triggerDataSet (
442- j : Json ,
443- ctx : Context ,
444- allowEmpty : boolean = false
445- ) : Maybe < Set < number > > {
439+ function triggerData ( j : Json , ctx : Context ) : Maybe < Set < number > > {
446440 return set ( j , ctx , fullFlexTriggerDatum , {
447- minLength : allowEmpty ? 0 : 1 ,
441+ minLength : 0 ,
448442 maxLength : constants . maxTriggerDataPerSource ,
449443 requireDistinct : true ,
450444 } )
451445}
452446
453- type TriggerSpecDeps = {
454- expiry : Maybe < number >
455- eventReportWindows : Maybe < EventReportWindows >
456- maxEventLevelReports : Maybe < number >
457- }
458-
459- function makeDefaultSummaryBuckets ( maxEventLevelReports : number ) : number [ ] {
460- return Array . from ( { length : maxEventLevelReports } , ( _ , i ) => i + 1 )
461- }
462-
463- function triggerSpecsFromTriggerData (
464- j : Json ,
465- ctx : Context ,
466- deps : TriggerSpecDeps
467- ) : Maybe < TriggerSpec [ ] > {
468- return triggerDataSet ( j , ctx , /*allowEmpty=*/ true ) . map ( ( triggerData ) => {
469- if (
470- triggerData . size === 0 ||
471- deps . eventReportWindows . value === undefined ||
472- deps . maxEventLevelReports . value === undefined
473- ) {
474- return [ ]
475- }
476-
477- return [
478- {
479- eventReportWindows : deps . eventReportWindows . value ,
480- summaryBuckets : makeDefaultSummaryBuckets (
481- deps . maxEventLevelReports . value
482- ) ,
483- summaryOperator : SummaryOperator . count ,
484- triggerData : triggerData ,
485- } ,
486- ]
487- } )
488- }
489-
490- function defaultTriggerSpecs (
491- ctx : Context ,
492- eventReportWindows : Maybe < EventReportWindows > ,
493- maxEventLevelReports : Maybe < number >
494- ) : Maybe < TriggerSpec [ ] > {
495- return eventReportWindows . flatMap ( ( eventReportWindows ) =>
496- maxEventLevelReports . map ( ( maxEventLevelReports ) => [
497- {
498- eventReportWindows,
499- summaryBuckets : Array . from (
500- { length : maxEventLevelReports } ,
501- ( _ , i ) => i + 1
502- ) ,
503- summaryOperator : SummaryOperator . count ,
504- triggerData : new Set (
505- Array . from (
506- {
507- length : Number (
508- constants . defaultTriggerDataCardinality [ ctx . opts . sourceType ]
509- ) ,
510- } ,
511- ( _ , i ) => i
512- )
513- ) ,
514- } ,
515- ] )
516- )
517- }
518-
519447function compareNumbers ( a : number , b : number ) : number {
520448 return a - b
521449}
@@ -526,9 +454,7 @@ function isTriggerDataMatchingValidForSpecs(s: Source, ctx: Context): boolean {
526454 return true
527455 }
528456
529- const triggerData : number [ ] = s . triggerSpecs
530- . flatMap ( ( spec ) => Array . from ( spec . triggerData ) )
531- . sort ( compareNumbers )
457+ const triggerData : number [ ] = Array . from ( s . triggerData ) . sort ( compareNumbers )
532458
533459 if ( triggerData . some ( ( triggerDatum , i ) => triggerDatum !== i ) ) {
534460 ctx . error (
@@ -546,7 +472,7 @@ function warnInconsistentMaxEventLevelReportsAndTriggerSpecs(
546472 ctx : Context
547473) : void {
548474 const allowsReports = s . maxEventLevelReports > 0
549- const hasSpecs = s . triggerSpecs . length > 0
475+ const hasSpecs = s . triggerData . size > 0
550476
551477 if ( allowsReports && ! hasSpecs ) {
552478 ctx . warning (
@@ -567,39 +493,6 @@ function source(j: Json, ctx: Context): Maybe<Source> {
567493 withDefault ( expiry , constants . validSourceExpiryRange [ 1 ] )
568494 ) ( j , ctx )
569495
570- const eventReportWindowsVal = exclusive (
571- {
572- event_report_window : ( j ) => eventReportWindow ( j , ctx , expiryVal ) ,
573- event_report_windows : ( j ) => eventReportWindows ( j , ctx , expiryVal ) ,
574- } ,
575- expiryVal . map ( defaultEventReportWindows , ctx )
576- ) ( j , ctx )
577-
578- const maxEventLevelReportsVal = field (
579- 'max_event_level_reports' ,
580- maxEventLevelReports
581- ) ( j , ctx )
582-
583- const defaultTriggerSpecsVal = defaultTriggerSpecs (
584- ctx ,
585- eventReportWindowsVal ,
586- maxEventLevelReportsVal
587- )
588-
589- const triggerSpecsDeps = {
590- expiry : expiryVal ,
591- eventReportWindows : eventReportWindowsVal ,
592- maxEventLevelReports : maxEventLevelReportsVal ,
593- }
594-
595- const triggerSpecsVal = exclusive (
596- {
597- trigger_data : ( j ) =>
598- triggerSpecsFromTriggerData ( j , ctx , triggerSpecsDeps ) ,
599- } ,
600- defaultTriggerSpecsVal
601- ) ( j , ctx )
602-
603496 return struct ( j , ctx , {
604497 aggregatableReportWindow : field ( 'aggregatable_report_window' , ( j ) =>
605498 j === undefined ? expiryVal : singleReportWindow ( j , ctx , expiryVal )
@@ -618,9 +511,35 @@ function source(j: Json, ctx: Context): Maybe<Source> {
618511 ) ,
619512 expiry : ( ) => expiryVal ,
620513 filterData : field ( 'filter_data' , withDefault ( filterData , new Map ( ) ) ) ,
621- maxEventLevelReports : ( ) => maxEventLevelReportsVal ,
514+ maxEventLevelReports : field (
515+ 'max_event_level_reports' ,
516+ maxEventLevelReports
517+ ) ,
622518 sourceEventId : field ( 'source_event_id' , withDefault ( uint64 , 0n ) ) ,
623- triggerSpecs : ( ) => triggerSpecsVal ,
519+ eventReportWindows : exclusive (
520+ {
521+ event_report_window : ( j ) => eventReportWindow ( j , ctx , expiryVal ) ,
522+ event_report_windows : ( j ) => eventReportWindows ( j , ctx , expiryVal ) ,
523+ } ,
524+ expiryVal . map ( defaultEventReportWindows , ctx )
525+ ) ,
526+
527+ triggerData : field (
528+ 'trigger_data' ,
529+ withDefault (
530+ triggerData ,
531+ new Set (
532+ Array . from (
533+ {
534+ length : Number (
535+ constants . defaultTriggerDataCardinality [ ctx . opts . sourceType ]
536+ ) ,
537+ } ,
538+ ( _ , i ) => i
539+ )
540+ )
541+ )
542+ ) ,
624543 aggregatableDebugReporting : field (
625544 'aggregatable_debug_reporting' ,
626545 withDefault (
@@ -731,6 +650,6 @@ export function validateSource(
731650export function validator ( opts : Readonly < SourceOptions > ) : Validator < Source > {
732651 return {
733652 validate : ( input ) => validateSource ( input , opts ) ,
734- serialize : ( value ) => serializeSource ( value , opts ) ,
653+ serialize : serializeSource ,
735654 }
736655}
0 commit comments