{"version":3,"file":"main.ed93f423be96f5c0.js","mappings":"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","names":["ACTIVE_TERMS","TermVM","termCode","season","TermSeason","Fall","year","seasonName","statusCodes","TermStatus","Active","Summer","Spring","ARCHIVED_TERMS","Archived","CourseMode","constructor","data","property","hasOwnProperty","this","init","_data","rnrModeCode","rnrModeHours","courseId","fromJS","result","toJSON","CourseModel","sisCatalogId","prefix","classNumber","sequence","suffix","crossListedFlag","publishedCourseId","scheduledCourseId","courseTitle","description","courseNotes","departmentCode","seats","units","numberRegistered","spacesAvailable","Array","isArray","sections","item","push","SectionModel","courseModes","isFull","isClosed","isCanceled","levelOnePrefix","levelTwoPrefix","createFake","courseIndex","getRandom","parseInt","undefined","SECTIONS","filter","s","map","createCourses","count","DEPARTMENTS","d","min","max","Math","floor","random","COURSES","t","flat","School","sortIndex","SCHOOLS","Department","schoolPrefix","createFakeDepartment","ClearanceModel","effectiveDate","Date","toString","expirationDate","unitCode","sectionId","personId","toISOString","ModeModel","SectionInstructor","rnrRoleCode","uscId","eId","firstName","lastName","personName","sisSeqNumber","createFakeInstructor","index","stringId","intId","SectionInstructors","SectionLocation","dayCodes","startTime","endTime","location","campusCode","buildingCode","roomNumber","lastUpdtTs","sisSqNumber","SECTION_LOCATIONS","actives","courseCount","sectionCount","WaitlistModel","waitlistPriority","SessionModel","rnrSessionId","sisSessionId","rnrSessionCode","gradingCycleCode","partHealthFeeCode","summerWeekHealthFeeCode","summerMaxHealthFeeCode","studentFeeCode","lastApplyDate","preRegBeginDate","preRegEndDate","earlyRegBeginDate","earlyRegEndDate","regBeginDate","regEndDate","classBeginDate","classEndDate","lateRegBeginDate","lateRegEndDate","lastAddDropDate","healthInsuranceDueDate","withdrawWowDate","withdrawWwDate","gradePostDate","fullTimeUnitCode","stopDate","orientationFeeCode","week2BeginDate","week2EndDate","week2PercentPenalty","week2FeeCode","week3BeginDate","week3EndDate","week3PercentPenalty","week3FeeCode","orientationMandatory","oissMandatory","oissFeeCode","gradOrientationMandatory","gradOrientationFeeCode","finalExamBeginDate","finalExamEndDate","insuranceMinimumUnits","uscCampusCode","midtermGradingBeginDate","midtermGradingEndDate","finalGradingBeginDate","finalGradingEndDate","contactName","contactPhone","break1BeginDate","break1EndDate","break2BeginDate","break2EndDate","lastEnrollmentOptionDate","createFakeSession","SESSIONS","type","sisSectionId","name","notes","departmentalClearanceFlag","linkCode","waitlistSize","roomId","cancelDate","manualDate","publishFlag","publishSectionFlag","blackboardFlag","dlCode","sectionUnits","session","course","rnrMode","linkedSections","locations","instructors","waitlists","clearances","CreateFakeSection","i","find","l","PhoneFormatPipe","transform","value","slice","static","_angular_core__WEBPACK_IMPORTED_MODULE_0__","Yjl","pure","API_BASE_URL","InjectionToken","Client","http","baseUrl","jsonParseReviver","apiAnnouncementGetAnnouncement","url_","replace","options_","observe","responseType","headers","HttpHeaders","Accept","request","pipe","_observableMergeMap","response_","processApiAnnouncementGetAnnouncement","_observableCatch","HttpResponseBase","_observableThrow","e","response","status","responseBlob","HttpResponse","body","error","Blob","_headers","key","keys","get","blobToText","_responseText","result200","resultData200","JSON","parse","AnnouncementVM","_observableOf","throwException","apiAnnouncementPostAnnouncement","stringify","processApiAnnouncementPostAnnouncement","apiConfigurationGetByTermCode","Error","encodeURIComponent","processApiConfigurationGetByTermCode","ConfigurationVM","apiConfigurationAddSchoolOrProgram","processApiConfigurationAddSchoolOrProgram","apiConfigurationEditProgram","processApiConfigurationEditProgram","apiConfigurationDeleteSchool","processApiConfigurationDeleteSchool","apiConfigurationDeleteProgram","processApiConfigurationDeleteProgram","apiConfigurationUpdateSchoolSortOrders","processApiConfigurationUpdateSchoolSortOrders","apiConfigurationUpdateProgramSortOrders","processApiConfigurationUpdateProgramSortOrders","apiConfigurationImport","processApiConfigurationImport","apiPeTermsAll","processApiPeTermsAll","PeTerm","apiPeSessionsAll","processApiPeSessionsAll","PeSession","apiPeSessionByRnrSessionId","processApiPeSessionByRnrSessionId","apiPeSchoolsAll","processApiPeSchoolsAll","SchoolVM","apiPeProgramsAll","processApiPeProgramsAll","ProgramVM","apiPeCoursePrefixesAll","processApiPeCoursePrefixesAll","CoursePrefixVM","apiPeCoursesAll","pageNumber","itemsPerPage","processApiPeCoursesAll","CourseVM","apiPeCoursesByTerm","processApiPeCoursesByTerm","apiPeCoursesHavePrefixInTerm","processApiPeCoursesHavePrefixInTerm","apiPeDoesCourseExist","processApiPeDoesCourseExist","apiPeGetConfigurableTermsFromPe","processApiPeGetConfigurableTermsFromPe","PeConfigurableTermVM","apiPeGetConfigurableSessionsByTermCode","processApiPeGetConfigurableSessionsByTermCode","PeConfigurableSessionVM","apiPePopulateLegacyTermsFromPe","processApiPePopulateLegacyTermsFromPe","apiProgramsTermCode","processApiProgramsTermCode","apiProgramsPrefix","school","program","processApiProgramsPrefix","ProgramDetailsVM","apiProgramsCourses","processApiProgramsCourses","ProgramCoursesVM","apiSchoolsTermCode","processApiSchoolsTermCode","apiTermsAll","processApiTermsAll","apiTermsActive","processApiTermsActive","apiTermsTermCode","processApiTermsTermCode","apiTermsStatus","processApiTermsStatus","apiTermsNew","processApiTermsNew","apiTermsCreate","processApiTermsCreate","apiTermsEdit","processApiTermsEdit","apiTermsDelete","processApiTermsDelete","apiUsersRole","processApiUsersRole","i0","HttpClient","Yz7","factory","ɵfac","message","messageType","Configuration","dateCreated","dateModified","id","schoolsConfig","ConfigurationSchool","term","Term","ConfigurationAddSchoolOrProgramVM","operationType","newSchoolPrefix","newProgramPrefix","prefixes","ConfigurationPrefixAddVM","courses","ConfigurationCourseAddVM","ConfigurationAddType","NewSchool","NewProgramToExistingSchool","ConfigurationCourse","programConfigurationId","programConfiguration","ConfigurationProgram","ConfigurationCourseUpdates","adds","updates","deleteIds","ConfigurationDeleteProgramVM","configurationId","programId","ConfigurationDeleteSchoolVM","schoolId","ConfigurationEditProgramVM","prefixUpdates","ConfigurationPrefixUpdates","courseUpdates","ConfigurationPrefix","anyPrefixSelected","sessionId","anySessionSelected","schoolConfigurationId","sortOrder","prefixesConfig","coursesConfig","schoolConfiguration","programsConfig","configuration","ConfigurationUpdateProgramSortOrdersVM","CourseCodeVM","theRest","courseHyphen","courseSpace","ands","startTermCode","endTermCode","fullCourseName","isCrossListed","maxUnits","termNotes","duplicateCredit","recommendedPrep","courseUnits","SectionVM","prerequisiteCourseCodes","RequisiteVM","corequisiteCourseCodes","courseRestrictions","RestrictionVm","majorRestrictions","schoolRestrictions","DepartmentClearance","infoType","room","phoneNumber","uscEmail","uscUrl","InstructorVM","sessionCode","dateActive","dateArchived","PeCourse","PeSection","startTerm","endTerm","uscSchoolCode","gradeType","sexCode","lastOfferedTermCode","divFlag","PeCourseWr","courseUscSchoolCode","prerequisiteCourseCode","classLevelCode","classRestrictionType","classIncludeExcludeCode","postCode","majorRestrictionType","postIncludeExcludeCode","schoolRestrictionType","schoolIncludeExcludeCode","courseUnit","unitSisSqNumber","courseGeneralEducationId","generalEducationCode","geSisSqNumber","conferringUnitCode","generalEducationDocCode","tuitionUnitOverride","dClearanceFlag","glObjectCode","overrideFlag","addDate","adastraDate","adastraOper","adastraUpdateString","ogssFlag","ogRoleUpdatedFlag","ogGradeUpdatedFlag","grUpdateDate","apUpdateDate","ovUpdateDate","sGlAccountNumber","sourceCode","priorSisSectionId","sectionMidtermBeginDate","sectionMidtermEndDate","sectionFinalBeginDate","sectionFinalEndDate","slackYn","zoomYn","gradObjective","fdmPpgg","fdmCostCenter","fdmCompany","fdmSpendRevenueUg","fdmLedgerAccountUg","fdmSpendRevenueG","fdmLedgerAccountG","studentActiveWaiting","PeSectionWr","courseWr","addOper","updatedDate","updatedOper","sectionFeeId","feeCode","feeAmount","dayCode","sectionLocationSqNumber","uscid","eid","legalLastName","legalMiddleName","legalFirstName","preferredLastName","preferredMiddleName","preferredFirstName","homeDepartmentCode","homeDepartment","employeeType","employeeStatus","workEmail","workerType","instructor","sectionUnitId","sectionUnitFeeId","sectionUnitFeeCode","sectionUnitFeeAmount","sectionUnitPerUnit","sectionWrs","lastDropDate","ugUnitTuitionFeeCode","gFlatTuitionFeeCode","gUnitTuitionFeeCode","ugFlatTuitionFeeCode","fullHealthFeeCode","withdrawWOWDate","withdrawWWDate","rnrSessionOper","trxPrintD","burOper","f211","summerTid","termBeginDate","programPrefix","programNote","departmentClearances","schools","order","requiredCourses","courseOptions","RestrictionType","Inclusive","Exclusive","groupCode","groupDescription","restrictionCode","restriction","ScheduleVM","days","building","buildingRoom","programs","peSectionId","hasDClearance","classType","group","schedule","totalSeats","registeredSeats","SessionVM","syllabus","isCancelled","createdBy","updatedBy","TermAddVM","copiedFromTermCode","TermImportVM","Draft","createdByUser","UserVM","fullName","role","ApiException","super","isApiException","obj","blob","Observable","observer","reader","FileReader","onload","event","next","target","complete","readAsText","AlertTypes","Success","Info","Warning","AlertService","sanitizer","defaults","width","heightAuto","padding","background","showConfirmButton","position","backdrop","showCloseButton","allowEscapeKey","title","fireAlert","success","alertType","iconFileName","alertTypeClass","sanitizedHtml","sanitize","SecurityContext","HTML","Swal","html","customClass","popup","closeButton","i1","_angular_core__WEBPACK_IMPORTED_MODULE_1__","AnnouncementService","apiService","getAnnouncement","resp","postAnnouncement","i2","_angular_core__WEBPACK_IMPORTED_MODULE_2__","WebRegService","auth","providedIn","AuthenticationService","session$","getSession","ignoreCache","catchError","err","of","shareReplay","getIsAuthenticated","UserIsAuthenticated","getIsAnonymous","UserIsAnonymous","getUsername","c","getIsAdmin","getIsDev","getLogoutUrl","_angular_core__WEBPACK_IMPORTED_MODULE_5__","CoursesService","getCoursesHavePrefixInTerm","getDoesCourseExist","courseCode","getByCourseId","getBySchoolPrefixDepartmentPrefix","departmentPrefix","ignoreCase","x","toLowerCase","includes","r","sort","a","b","searchQuick","searchTerm","filters","FilterDefault","termCourses","sectionNames","flatMap","combinedId","some","filtered","applyFilters","searchByTitlePrefix","searchByTitlePrefixDescription","searchByAll","catalogNumber","search","searchValue","filterd","requiredDayCodes","length","section","day","getMinutesFromTime24","timeRangeMin","timeRangeMax","_angular_core__WEBPACK_IMPORTED_MODULE_6__","timeString","hours","minutes","split","Number","getTime24FromMinutes","totalMinutes","padStart","convert24HourTo12Hour","time","timeArray","hours24","period","DepartmentsService","getDepartmentByPrefixCode","searchDepartmentsBydescription","searchDepartmentsByDescriptionOrPrefixCode","getDepartmentsBySchoolCode","PeService","getConfigurableTermsFromPe","getConfigurableSessions","getSessions","getSessionByRnrSessionId","getCoursePrefixes","ProgramsService","getAll","getByTermCode","getByTermCodeAndSchoolCode","schoolCode","p","getDetails","programCode","SchoolsService","ToastNotificationService","toastr","timeOut","extendedTimeOut","cancelButton","withCancel","fireToastr","progressBar","progressAnimation","informational","config","loadAll","createAction","configurationInserted","props","loadConfigurationByTermCode","loadConfigurationByTermCodeFailure","addSchoolOrProgram","addSchoolOrProgramSuccess","addSchoolOrProgramFailure","editProgram","editProgramSuccess","editProgramFailure","updateSchoolSortOrders","updateSchoolSortOrdersSuccess","updateSchoolSortOrdersFailure","updateProgramSortOrders","updateProgramSortOrdersSuccess","updateProgramSortOrdersFailure","removeConfigurationByTermCode","removeConfiguration","deleteSchool","deleteSchoolSuccess","deleteSchoolFailure","deleteProgram","deleteProgramSuccess","deleteProgramFailure","setIsConfigurationEditSuccessfullyCompleted","areConfigurationsLoaded","state","isConfigurationEditSuccessfullyCompleted","adapter","createEntityAdapter","selectId","initialConfigurationsState","getInitialState","isConfigurationLoaded","getErrorMessage","configurationsReducer","createReducer","on","ConfigurationActions","action","addOne","setOne","removeOne","selectAll","selectEntities","getSelectors","updateAppTitle","getTitle","appTitleReducer","initialState","AppTitleActions","loadAllFailure","loadActive","loadActiveFailure","loadSelectedTerm","refreshTermByTermCode","refreshSuccess","updateSelectedTerm","updateNavSelectedTerm","activeTermsInserted","allTermsInserted","createTerm","createSuccess","createFailure","updateTerm","updateSuccess","updateFailure","deleteTerm","deleteSuccess","deleteFailure","areActiveTermsLoaded","areAllTermsLoaded","isSaving","isSelectedTermLoaded","selectTermCode","initialTermsState","getSelectedTerm","selectedTerm","getNavSelectedTerm","navSelectedTerm","getErrorLoadingMessage","errorLoading","termsReducer","TermActions","selectedTermCode","selectedTermCodeLoaded","addMany","terms","isAvailableCoursesChecked","isOnlineCoursesChecked","isOpenToAllChecked","FilterDialog","dialogRef","timeRangeStep","timeMin","timeMax","selectedMinTime","selectedMaxTime","monControl","FormControl","tueControl","wedControl","thuControl","friControl","satControl","sunControl","minTimeControl","maxTimeControl","unitsControl","disabled","availableCoursesControl","onlineCoursesControl","allMajorsControl","setValue","console","log","minTime","maxTime","valueChanges","subscribe","onApplyClick","reqDays","String","filtersToApply","close","onResetFilters","onNoClick","MAT_DIALOG_DATA","Xpm","selectors","decls","vars","template","rf","ctx","SharedComponentsModule","oAB","cJS","CommonModule","ReactiveFormsModule","NgxStyleLibraryModule","RouterModule","MatSidenavModule","MatListModule","MatIconModule","MatChipsModule","MatCardModule","MatTableModule","MatSortModule","MatButtonToggleModule","MatButtonModule","MatDialogModule","MatFormFieldModule","MatOptionModule","MatSelectModule","coursePrefixesInserted","areCoursePrefixesLoaded","initialCoursePrefixesState","coursePrefixesReducer","CoursePrefixActions","coursePrefixes","sessionsInsertedForTerm","arePeConfigurableSessionsLoadedForTerm","initialPeConfigurableSessionsState","peConfigurableSessionsReducer","PeConfigurableSessionActions","sessions","loadProgramCourseList","loadProgramCourseListSuccess","loadProgramCourseListFailure","areProgramCourseListLoadedForTermSchoolProgram","concatenatedKey","initialProgramCourseListState","programCourseListReducer","ProgramCourseListActions","programCourseList","loadProgramDetailsByPrefix","programDetailsInsertedForProgram","areProgramDetailsLoadedForProgram","initialProgramDetailsState","programDetailsReducer","ProgramDetailsActions","programDetails","loadProgramsByTermCode","loadProgramsByTermCodeFailure","programsInsertedForTerm","programsInserted","areProgramsLoaded","areProgramsLoadedForTerm","initialProgramsState","programsReducer","ProgramActions","loadSchoolsByTermCode","loadSchoolsByTermCodeSuccess","loadSchoolsByTermCodeFailure","removeSchoolsByTermCode","areSchoolsLoadedForTerm","initialSchoolsState","schoolsReducer","SchoolActions","removeMany","selectSchoolsState","createFeatureSelector","createSelector","fromSchools","selectSchoolsError","selectAllSchools","selectAllSchoolsEntities","selectAllSchoolsSorted","bVal","aVal","selectSchoolsByTermCode","selectSchoolEntityIdsByTermCode","entities","Object","loadSessionByRnrSessionId","sessionInserted","isSessionLoaded","initialSessionsState","sessionsReducer","SessionActions","environment","production","apiBaseUrl","apiBaseHref","hasDatadog","datadog","applicationId","clientToken","site","service","env","allowedTracingUrls","version","sessionSampleRate","sessionReplaySampleRate","trackUserInteractions","trackResources","trackLongTasks","defaultPrivacyLevel","features","courseFilters","invalidTimingValue","exp","ɵRuntimeError","ngDevMode","optimizeGroupPlayer","players","NoopAnimationPlayer","ɵAnimationGroupPlayer","normalizeKeyframes$1","normalizer","keyframes","preStyles","Map","postStyles","errors","normalizedKeyframes","previousOffset","previousKeyframe","forEach","kf","offset","isSameOffset","normalizedKeyframe","val","prop","normalizedProp","normalizedValue","normalizePropertyName","ɵPRE_STYLE","AUTO_STYLE","normalizeStyleValue","set","animationFailed","listenOnPlayer","player","eventName","callback","onStart","copyAnimationEvent","onDone","onDestroy","phaseName","makeAnimationEvent","element","triggerName","fromState","toState","totalTime","getOrSetDefaultValue","defaultValue","parseTimelineCommand","command","separatorPos","indexOf","substring","documentElement","document","getParentElement","parent","parentNode","host","_CACHED_BODY","_IS_WEBKIT","containsElement","elm1","elm2","invokeQuery","selector","multi","from","querySelectorAll","elem","querySelector","NoopAnimationDriver","validateStyleProperty","getBodyNode","style","containsVendorPrefix","charAt","toUpperCase","matchesElement","_element","_selector","query","computeStyle","animate","duration","delay","easing","previousPlayers","scrubberAccessRequested","core","AnimationDriver","NOOP","ONE_SECOND","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","resolveTimingValue","matches","match","_convertTimeValueToMS","parseFloat","unit","resolveTiming","timings","allowNegativeValues","parseTimeExpression","delayMatch","easingVal","containsErrors","startIndex","negativeStepValue","negativeDelayValue","splice","copyObj","destination","convertToMap","styleMap","copyStyles","styles","backfill","setStyles","formerStyles","camelProp","dashCaseToCamelCase","has","eraseStyles","_","normalizeAnimationEntry","steps","PARAM_REGEX","RegExp","extractStyleParams","params","exec","lastIndex","interpolateParams","original","str","varName","localVal","invalidParamValue","iteratorToArray","iterator","arr","done","DASH_CASE_REGEXP","input","m","visitDslNode","visitor","node","context","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","invalidNodeType","nodeType","window","getComputedStyle","ANY_STATE","parseTransitionExpr","transitionValue","expressions","parseInnerTransitionStr","eventStr","parseAnimationAlias","alias","invalidTransitionAlias","invalidExpression","expr","separator","makeLambdaFromStates","TRUE_BOOLEAN_VALUES","Set","FALSE_BOOLEAN_VALUES","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN_REGEX","buildAnimationAst","driver","metadata","warnings","AnimationAstBuilderVisitor","build","_driver","AnimationAstBuilderContext","_resetContextStyleTimingState","currentQuerySelector","collectedStyles","currentTime","queryCount","depCount","states","transitions","invalidTrigger","definitions","def","stateDef","n","transition","invalidDefinition","options","styleAst","astParams","containsDynamicStyles","missingSubs","sub","add","size","values","invalidState","metadataName","animation","matchers","normalizeAnimationOptions","furthestTime","step","innerAst","timingAst","constructTimingAst","makeTimingAst","strValue","v","ast","dynamic","currentAnimateTimings","styleMetadata","isEmpty","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","metadataStyles","styleTuple","collectedEasing","styleData","delete","tuple","collectedEntry","updateCollectedStyle","invalidParallelAnimation","firstStart","firstEnd","secondStart","secondEnd","validateStyleParams","invalidStyleParams","invalidKeyframes","totalKeyframesWithOffsets","offsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","consumeOffset","invalidOffset","keyframeOffsetsOutOfOrder","generatedOffset","keyframesMissingOffsets","limit","animateDuration","durationUpToThisFrame","parentSelector","currentQuery","includeSelf","normalizeSelector","hasAmpersand","token","optional","originalSelector","invalidStagger","currentTransition","unsupportedCSSPropertiesFound","normalizeParams","createTimelineInstruction","preStyleProps","postStyleProps","subTimeline","ElementInstructionMap","_map","append","instructions","existingInstructions","clear","ENTER_TOKEN_REGEX","LEAVE_TOKEN_REGEX","buildAnimationTimelines","rootElement","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","buildKeyframes","AnimationTimelineContext","currentTimeline","delayNextStep","timelines","timeline","containsAnimation","lastRootTimeline","allowOnlyTimelineStyles","elementInstructions","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","previousNode","_applyAnimationRefDelays","animationsRefsOptions","animationRefOptions","animationDelay","animationDelayValue","instruction","instructionTimings","appendInstructionToTimeline","updateOptions","subContextCount","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","_visitTiming","incrementTime","hasCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","elms","currentQueryTotal","sameElementTimeline","currentQueryIndex","parentContext","tl","abs","currentStaggerTime","startingTime","_enterClassName","_leaveClassName","initialTimeline","TimelineBuilder","skipIfExists","newOptions","optionsToUpdate","newParams","paramsToUpdate","_copyOptions","oldParams","newTime","fork","updatedTimings","builder","SubTimelineBuilder","stretchStartingKeyframe","results","elements","invalidQuery","_elementTimelineStylesLookup","_previousKeyframe","_currentKeyframe","_keyframes","_styleSummary","_localTimelineStyles","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_globalTimelineStyles","_loadKeyframe","hasPreStyleStep","_updateStyle","flattenStyles","allStyles","allProperties","getFinalKeyframe","properties","details1","details0","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","oldOffset","decimalPoints","mult","pow","round","AnimationStyleNormalizer","DIMENSIONAL_PROP_SET","WebAnimationsStyleNormalizer","propertyName","userProvidedProperty","normalizedProperty","strVal","trim","valAndSuffixMatch","invalidCssUnitValue","createTransitionInstruction","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","AnimationTransitionFactory","_triggerName","_stateStyles","currentState","nextState","oneOrMoreTransitionsMatch","matchFns","fn","buildStyles","stateName","styler","currentOptions","nextOptions","skipAstBuild","transitionAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","applyParamDefaults","elm","queriedElementsList","userParams","AnimationStateStyles","defaultParams","combinedParams","AnimationTrigger","_normalizer","transitionFactories","balanceProperties","fallbackTransition","createFallbackTransition","containsQueries","matchTransition","f","matchStyles","stateMap","key1","key2","EMPTY_INSTRUCTION_MAP","TimelineAnimationEngine","bodyNode","_animations","_playersById","register","registerFailed","_buildPlayer","create","autoStylesMap","inst","missingOrDestroyedAnimation","createAnimationFailed","destroy","_getPlayer","missingPlayer","listen","baseEvent","args","play","pause","reset","restart","finish","setPosition","QUEUED_CLASSNAME","DISABLED_CLASSNAME","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","namespaceId","setForRemoval","setForMove","hasAnimation","removedBeforeQueried","NULL_REMOVED_QUERIED_STATE","REMOVAL_FLAG","StateValue","isObj","normalizeTriggerValue","absorbOptions","VOID_VALUE","DEFAULT_STATE_VALUE","AnimationTransitionNamespace","hostElement","_engine","_triggers","_queue","_elementListeners","_hostClassName","addClass","phase","missingTrigger","missingEvent","isTriggerEventValid","unsupportedTriggerEvent","listeners","triggersWithStates","statesByElement","afterFlush","_getTrigger","trigger","unregisteredTrigger","defaultToFallback","TransitionAnimationPlayer","objEquals","k1","k2","reportError","playersOnElement","playersByElement","queued","isFallbackTransition","totalQueuedPlayers","removeClass","deregister","entry","clearElementCache","elementPlayers","_signalRemovalForInnerTriggers","namespaces","fetchNamespacesByElement","ns","triggerLeaveAnimation","afterFlushAnimationsDone","destroyAfterComplete","triggerStates","previousTriggersValues","markElementAsRemoved","processLeaveNode","prepareLeaveAnimationListeners","elementStates","visitedTriggers","listener","removeNode","engine","childElementCount","containsPotentialParentTransition","totalAnimations","currentPlayers","playersByQueriedElement","removalFlag","destroyInnerAnimations","_onRemovalComplete","insertNode","drainQueuedTransitions","microtaskId","destroyed","markedForDestroy","d0","d1","TransitionAnimationEngine","onRemovalComplete","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","queuedPlayers","createNamespace","_balanceNamespaceList","collectEnterElement","namespaceList","found","ancestor","ancestorNs","unshift","registerTrigger","_fetchNamespace","stateValue","isElementNode","insertBefore","details","markElementAsDisabled","hostNS","_buildInstruction","subTimelines","skipBuildAst","containerElement","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","whenRenderingDone","Promise","resolve","classList","contains","flush","cleanupFns","_flushAnimations","quietFns","triggerTransitionsFailed","skippedPlayers","skippedPlayersMap","queuedInstructions","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","nodes","root","className","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","previousValue","nodeIsOrphaned","stringMap","setVal","transitionFailed","allPreviousPlayersMap","animationElementMap","_beforeAnimationBuild","_getPreviousPlayers","prevPlayer","replaceNodes","replacePostStylesAsPre","postStylesMap","cloakAndComputeStyles","preStylesMap","post","pre","entries","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","overrideTotalTime","parentWithAnimation","parentsToAdd","detectedParent","innerPlayer","_buildAnimation","setRealPlayer","parentPlayers","parentPlayer","playersForElement","syncPlayerEvents","queriedPlayerResults","queriedInnerElements","j","queriedPlayers","activePlayers","removeNodesAfterAnimationDone","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation","targetNameSpaceId","targetTriggerName","timelineInstruction","realPlayer","getRealPlayer","beforeDestroy","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","flattenGroupPlayers","finalPlayers","_flattenGroupPlayersRecur","wrappedPlayer","deleteOrUnsetInMap","currentValues","_player","_containsRealPlayer","_queuedCallbacks","callbacks","triggerCallback","_queueEvent","hasStarted","getPosition","cloakElement","oldValue","display","valuesMap","elementPropsMap","defaultStyle","cloakVals","failedElements","roots","rootMap","nodeSet","localRootMap","getRoot","remove","postEntry","preEntry","AnimationEngine","_triggerCache","_transitionEngine","_timelineEngine","componentId","cacheKey","triggerBuildFailed","buildTrigger","onInsert","onRemove","disableAnimations","disable","process","eventPhase","cb","SpecialCasedStyles","initialStylesByElement","WeakMap","_startStyles","_endStyles","_state","initialStyles","_initialStyles","start","filterNonAnimatableStyles","isNonAnimatableStyle","WebAnimationsPlayer","_specialStyles","_onDoneFns","_onStartFns","_onDestroyFns","_initialized","_finished","_started","_destroyed","_originalOnDoneFns","_originalOnStartFns","currentSnapshot","_duration","_delay","_onFinish","_preparePlayerBeforeStart","domPlayer","_triggerWebAnimation","_finalKeyframe","onFinish","addEventListener","removeEventListener","_resetDomPlayerState","_convertKeyframesToObject","kfs","frame","fromEntries","cancel","methods","WebAnimationsDriver","validateAnimatableStyleProperty","playerOptions","fill","previousStyles","previousWebAnimationPlayers","allowPreviousPlayerStylesMerge","normalizeKeyframes","balancePreviousStylesIntoKeyframes","startingKeyframe","missingStyleProps","specialStyles","packageNonAnimatableStyles","startStyles","endStyles","BrowserAnimationBuilder","AnimationBuilder","rootRenderer","doc","_nextAnimationId","_renderer","createRenderer","encapsulation","ViewEncapsulation","None","issueAnimationCommand","BrowserAnimationFactory","DOCUMENT","AnimationFactory","_id","RendererAnimationPlayer","_command","_listen","renderer","setProperty","DISABLE_ANIMATIONS_FLAG","AnimationRendererFactory","delegate","_zone","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","removeChild","BaseAnimationRenderer","onRendererDestroy","animationTriggers","AnimationRenderer","begin","_scheduleCountTask","queueMicrotask","scheduleListenerCallback","run","end","runOutsideAngular","_onDestroy","destroyNode","createElement","namespace","createComment","createText","appendChild","newChild","refChild","isMove","oldChild","isHostElement","selectRootElement","selectorOrNode","preserveContent","nextSibling","setAttribute","el","removeAttribute","setStyle","flags","removeStyle","resolveElementFromTarget","parseTriggerCallbackName","dotIndex","SHARED_ANIMATION_PROVIDERS","provide","useClass","ɵAnimationStyleNormalizer","useFactory","instantiateDefaultStyleNormalizer","ɵWebAnimationsStyleNormalizer","ɵAnimationEngine","InjectableAnimationEngine","appRef","ngOnDestroy","RendererFactory2","instantiateRendererFactory","zone","deps","ɵDomRendererFactory2","NgZone","BROWSER_ANIMATIONS_PROVIDERS","ɵWebAnimationsDriver","ANIMATION_MODULE_TYPE","useValue","BROWSER_NOOP_ANIMATIONS_PROVIDERS","ɵNoopAnimationDriver","BrowserAnimationsModule","withConfig","ngModule","providers","ɵmod","imports","BrowserModule","TermsService","getActive","termToCreate","update","termToUpdate","ROUTER_REQUEST","ROUTER_NAVIGATION","routerRequestAction","ROUTER_CANCEL","routerNavigationAction","ROUTER_ERROR","routerCancelAction","ROUTER_NAVIGATED","routerErrorAction","routerNavigatedAction","MinimalRouterStateSerializer","serialize","routerState","serializeRoute","url","route","children","outlet","routeConfig","path","pathMatch","redirectTo","queryParams","fragment","firstChild","NavigationActionTiming","PreActivation","PostActivation","DEFAULT_ROUTER_FEATURENAME","_ROUTER_CONFIG","ROUTER_CONFIG","_createRouterConfig","stateKey","serializer","navigationActionTiming","FullRouterStateSerializer","paramMap","component","queryParamMap","pathFromRoot","RouterStateSerializer","RouterTrigger","NONE","ROUTER","STORE","StoreRouterConnectingService","store","router","errorHandler","activeRuntimeChecks","lastEvent","isNgrxMockEnvironment","isDevMode","strictActionSerializability","strictStateSerializability","warn","setUpStoreStateListener","setUpRouterEventsListener","select","withLatestFrom","routerStoreState","storeState","navigateIfNeeded","NavigationStart","isSameUrl","first","second","stripTrailingSlash","navigateByUrl","catch","handleError","dispatchNavLate","routesRecognized","events","snapshot","dispatchRouterRequest","RoutesRecognized","dispatchRouterNavigation","NavigationCancel","dispatchRouterCancel","NavigationError","dispatchRouterError","NavigationEnd","dispatchRouterNavigated","dispatchRouterAction","lastRoutesRecognized","nextRouterState","urlAfterRedirects","payload","dispatch","LFG","ACTIVE_RUNTIME_CHECKS","text","provideRouterStore","makeEnvironmentProviders","ENVIRONMENT_INITIALIZER","inject","StoreRouterConnectingModule","forRoot","reducers","routerReducer","routerAction","navigationId","appTitle","configurations","peConfigurableSessions","metaReducers","ProgramsEffects","actions$","programsService","loadAll$","createEffect","ofType","concatMap","loadProgramsForTermCode$","mergeMap","SchoolsEffects","schoolsService","loadSchoolsByTermCode$","removeSchoolsByTermCode$","concatLatestFrom","i3","TermsEffects","termsService","toastNotificationService","alertService","matDialog","snackBar","loadActiveTerms$","loadAllTerms$","loadSelectedTerm$","refreshTermByTermCode$","createTerm$","newTerm","res","dialogId","handleErrorCreating$","snackBarConfig","MatSnackBarConfig","verticalPosition","horizontalPosition","panelClass","open","detail","handleSuccessCreating$","getDialogById","deleteTerm$","handleErrorDeleting$","handleSuccessDeleting$","updateTerm$","handleErrorUpdating$","handleSuccessUpdating$","i4","i5","i6","race","sources","argsOrArgArray","innerFrom","raceInit","subscriber","subscriptions","closed","createOperatorSubscriber","unsubscribe","EntityActionFactory","nameOrPayload","entityOp","entityName","createCore","tag","formatActionType","createFromAction","newProperties","op","EntityActionGuard","mustBeEntity","extractData","throwError","isNotKeyType","mustBeEntities","entity","mustBeKey","mustBeKeys","mustBeUpdate","changes","id2","mustBeUpdates","mustBeUpdateResponse","mustBeUpdateResponses","msg","defaultSelectId","flattenArgs","head","tail","toUpdateFactory","ofEntityOp","allowedEntityOps","ops","o","ofEntityType","allowedEntityNames","names","ChangeSetOperation","Add","Delete","Update","Upsert","excludeEmptyChangeSetItems","changeSet","ChangeSetItemFactory","ids","upsert","MergeStrategy","IgnoreChanges","PreserveChanges","OverwriteChanges","EntityCacheAction","CLEAR_COLLECTIONS","LOAD_COLLECTIONS","MERGE_QUERY_SET","SET_ENTITY_CACHE","SAVE_ENTITIES","SAVE_ENTITIES_CANCEL","SAVE_ENTITIES_CANCELED","SAVE_ENTITIES_ERROR","SAVE_ENTITIES_SUCCESS","ClearCollections","collections","LoadCollections","MergeQuerySet","querySet","mergeStrategy","SetEntityCache","cache","SaveEntities","SaveEntitiesCancel","correlationId","reason","entityNames","SaveEntitiesCanceled","SaveEntitiesError","originalAction","SaveEntitiesSuccess","EntityOp","CANCEL_PERSIST","CANCELED_PERSIST","QUERY_ALL","QUERY_ALL_SUCCESS","QUERY_ALL_ERROR","QUERY_LOAD","QUERY_LOAD_SUCCESS","QUERY_LOAD_ERROR","QUERY_MANY","QUERY_MANY_SUCCESS","QUERY_MANY_ERROR","QUERY_BY_KEY","QUERY_BY_KEY_SUCCESS","QUERY_BY_KEY_ERROR","SAVE_ADD_MANY","SAVE_ADD_MANY_ERROR","SAVE_ADD_MANY_SUCCESS","SAVE_ADD_ONE","SAVE_ADD_ONE_ERROR","SAVE_ADD_ONE_SUCCESS","SAVE_DELETE_MANY","SAVE_DELETE_MANY_SUCCESS","SAVE_DELETE_MANY_ERROR","SAVE_DELETE_ONE","SAVE_DELETE_ONE_SUCCESS","SAVE_DELETE_ONE_ERROR","SAVE_UPDATE_MANY","SAVE_UPDATE_MANY_SUCCESS","SAVE_UPDATE_MANY_ERROR","SAVE_UPDATE_ONE","SAVE_UPDATE_ONE_SUCCESS","SAVE_UPDATE_ONE_ERROR","SAVE_UPSERT_MANY","SAVE_UPSERT_MANY_SUCCESS","SAVE_UPSERT_MANY_ERROR","SAVE_UPSERT_ONE","SAVE_UPSERT_ONE_SUCCESS","SAVE_UPSERT_ONE_ERROR","ADD_ALL","ADD_MANY","ADD_ONE","REMOVE_ALL","REMOVE_MANY","REMOVE_ONE","UPDATE_MANY","UPDATE_ONE","UPSERT_MANY","UPSERT_ONE","COMMIT_ALL","COMMIT_MANY","COMMIT_ONE","UNDO_ALL","UNDO_MANY","UNDO_ONE","SET_CHANGE_STATE","SET_COLLECTION","SET_FILTER","SET_LOADED","SET_LOADING","OP_SUCCESS","OP_ERROR","makeSuccessOp","DataServiceError","requestData","extractMessage","sourceError","errMessage","DefaultDataServiceConfig","Logger","PLURAL_NAMES_TOKEN","Pluralizer","HttpUrlGenerator","DefaultHttpUrlGenerator","pluralizer","knownHttpResourceUrls","getResourceUrls","trailingSlashEndpoints","resourceUrls","nRoot","normalizeRoot","entityResourceUrl","collectionResourceUrl","pluralize","registerHttpResourceUrls","entityResource","collectionResource","entityHttpResourceUrls","DefaultDataService","_name","httpUrlGenerator","getDelay","saveDelay","timeout","delete404OK","to","entityUrl","entitiesUrl","entityOrError","execute","getById","getWithQuery","HttpParams","fromString","fromObject","updateOrError","method","httpOptions","entityActionHttpClientOptions","mergedOptions","httpHeaders","httpParams","req","result$","put","reqData","ok","handleDelete404","DefaultDataServiceFactory","ENTITY_METADATA_TOKEN","EntityDefinitionService","entityMetadataMaps","registerMetadataMap","getDefinition","shouldThrow","definition","registerMetadata","createEntityDefinition","sortComparer","entityAdapter","entityDispatcherOptions","loaded","loading","changeState","additionalCollectionState","noChangeTracking","registerDefinition","metadataMap","registerDefinitions","assign","updateOp","EntityCacheDataService","entityDefinitionService","idSelectors","saveEntities","filterChangeSet","flattenUpdates","restoreUpdates","hasMutated","u","getIdSelector","idSelector","EntityDataService","defaultDataServiceFactory","services","getService","registerService","registerServices","PersistenceResultHandler","DefaultPersistenceResultHandler","logger","entityActionFactory","handleSuccess","successOp","errorOp","makeErrorOp","errorData","PersistanceCanceled","CorrelationIdGenerator","seed","EntityDispatcherDefaultOptions","optimisticAdd","optimisticDelete","optimisticUpdate","optimisticUpsert","optimisticSaveEntities","EntityCacheDispatcher","correlationIdGenerator","defaultDispatcherOptions","scannedActions$","reducedActions$","raSubscription","cancelSaveEntities","clearCollections","loadCollections","mergeQuerySet","setEntityCache","isOptimistic","getSaveEntitiesResponseData$","crid","act","take","ScannedActionsSubject","EntityDispatcherBase","entityCacheSelector","guard","toUpdate","collectionSelector","entityCollection$","createEntityAction","createAndDispatch","setSaveEntityActionOptions","getResponseData$","collection","arg","getKey","setQueryEntityActionOptions","reduce","acc","getByKey","load","loadWithQuery","updateData","addAllToCache","addOneToCache","addManyToCache","clearCache","removeOneFromCache","removeManyFromCache","updateOneInCache","updateManyInCache","upsertOneInCache","upsertManyInCache","setFilter","pattern","setLoaded","isLoaded","setLoading","isLoading","endsWith","defaultOptimism","ENTITY_CACHE_NAME","ENTITY_CACHE_NAME_TOKEN","ENTITY_CACHE_META_REDUCERS","ENTITY_COLLECTION_META_REDUCERS","INITIAL_ENTITY_CACHE_STATE","ENTITY_CACHE_SELECTOR_TOKEN","entityCacheSelectorProvider","createEntityCacheSelector","Optional","entityCacheName","EntityDispatcherFactory","entityDispatcherDefaultOptions","defaultOptions","ENTITY_EFFECTS_SCHEDULER","EntityCacheEffects","actions","dataService","scheduler","responseDelay","saveEntitiesCancel$","saveEntities$","handleSaveEntitiesError$","handleSaveEntitiesSuccess$","asyncScheduler","concat","merge","i1$1","persistOps","EntityEffects","resultHandler","cancel$","persist$","persist","skip","handleSkipSuccess$","handleError$","callDataService","updatedEntity","changed","upsertedEntity","successAction","EntityCollectionServiceBase","serviceElementsFactory","dispatcher","selectors$","collection$","count$","entities$","entityActions$","entityMap$","errors$","filter$","filteredEntities$","keys$","loaded$","loading$","changeState$","EntityCollectionCreator","createEmptyEntityCollection","EntitySelectorsFactory","entityCollectionCreator","selectEntityCache","createCollectionSelector","getCollection","createCollectionSelectors","metadataOrName","selectKeys","selectEntityMap","selectCount","selectFilter","filterFn","selectFilteredEntities","extraSelectors","k","selectLoaded","selectLoading","selectChangeState","selectCollection","collectionSelectors","entitySelectors","EntitySelectors$Factory","entityCache$","entityActionErrors$","ea","startsWith","name$","EntityCollectionServiceElementsFactory","entityDispatcherFactory","entitySelectorsFactory","entitySelectors$Factory","EntityCollectionServiceFactory","entityCollectionServiceElementsFactory","EntityServicesElements","entityCollectionServiceFactory","EntityServicesBase","entityServicesElements","EntityCollectionServices","createEntityCollectionService","getEntityCollectionService","registerEntityCollectionService","serviceName","registerEntityCollectionServices","entityCollectionServices","ChangeType","Unchanged","Added","Deleted","Updated","EntityChangeTrackerBase","commitAll","commitMany","entityOrIdList","didMutate","chgState","entityOrId","commitOne","mergeQueryResults","mergeServerUpserts","mergeSaveAdds","mergeSaveDeletes","mergeSaveUpdates","updateResponseData","skipUnchanged","filterChanged","updateMany","oldId","updateableEntities","change","newId","oldChangeState","newOrigValue","originalValue","responseData","mergeSaveUpserts","defaultMergeStrategy","upsertMany","upsertEntities","ve","trackAddMany","changeType","trackAddOne","trackDeleteMany","entityMap","trackedChange","cloneChgStateOnce","trackDeleteOne","trackUpdateMany","trackUpdateOne","trackUpsertMany","trackUpsertOne","undoAll","removed","undoMany","undoOne","EntityCollectionReducerMethods","entityChangeTracker","cancelPersist","bind","queryAll","queryAllError","queryAllSuccess","queryByKey","queryByKeyError","queryByKeySuccess","queryLoad","queryLoadError","queryLoadSuccess","queryMany","queryManyError","queryManySuccess","saveAddMany","saveAddManyError","saveAddManySuccess","saveAddOne","saveAddOneError","saveAddOneSuccess","saveDeleteMany","saveDeleteManyError","saveDeleteManySuccess","saveDeleteOne","saveDeleteOneError","saveDeleteOneSuccess","saveUpdateMany","saveUpdateManyError","saveUpdateManySuccess","saveUpdateOne","saveUpdateOneError","saveUpdateOneSuccess","saveUpsertMany","saveUpsertManyError","saveUpsertManySuccess","saveUpsertOne","saveUpsertOneError","saveUpsertOneSuccess","addAll","removeAll","updateOne","upsertOne","setChangeState","setCollection","isChangeTracking","setLoadingFalse","setLoadingTrue","extractMergeStrategy","setAll","toDelete","deleteId","newCollection","setLoadingFlag","EntityCollectionReducerMethodsFactory","EntityCollectionReducerFactory","methodsFactory","reducerMethod","EntityCollectionReducerRegistry","entityCollectionReducerFactory","entityCollectionMetaReducers","entityCollectionReducers","entityCollectionMetaReducer","compose","apply","getOrCreateReducer","reducer","registerReducer","registerReducers","EntityCacheReducerFactory","entityCollectionReducerRegistry","entityCacheReducer","entityCache","clearCollectionsReducer","loadCollectionsReducer","mergeQuerySetReducer","saveEntitiesReducer","saveEntitiesCancelReducer","saveEntitiesErrorReducer","saveEntitiesSuccessReducer","applyCollectionReducer","newCache","getEntityOp","clearLoadingFlags","isMutated","DefaultLogger","extra","uncountable","DefaultPluralizer","pluralNames","pn","registerPluralNames","test","BASE_ENTITY_DATA_PROVIDERS","EntityServices","initializeBaseEntityData","reducerManager","ReducerManager","entityCacheReducerFactory","initialStateOrFn","metaReducersOrTokens","mr","entityCacheFeature","reducerFactory","combineReducers","addFeature","ENTITY_DATA_EFFECTS_PROVIDERS","initializeEntityDataEffects","effectsSources","EffectSources","entityCacheEffects","entityEffects","addEffects","provideEntityDataConfig","entityCacheMetaReducers","entityMetadata","EntityDataModuleWithoutEffects","EntityDataModule","ɵinj","ctx_r0","titleClass","ctx_r1","messageClass","ctx_r2","$event","_r7","ctx_r6","ctx_r8","ctx_r3","cancelString","_r10","ctx_r9","ctx_r11","ctx_r5","CustomToastComponent","Toast","stopPropagation","toastPackage","triggerAction","attrs","_c0","consts","CustomToastComponent_div_2_Template","CustomToastComponent_div_3_Template","CustomToastComponent_div_4_Template","CustomToastComponent_a_6_Template","CustomToastComponent_a_7_Template","CustomToastComponent_div_8_Template","enableHtml","AdminAuthGuard","Store","baseHref","APP_BASE_HREF","authService","Router","isLoggedIn","tap","isAdmin","navigate","defaultIfEmpty","finalize","routes","canActivate","canActivateChild","loadChildren","all","__webpack_require__","then","AdminModule","MainModule","AppRoutingModule","anchorScrolling","scrollPositionRestoration","paramsInheritanceStrategy","ConsoleApiName","debug","info","globalConsole","originalConsoleMethods","PREFIX","catchUserErrors","errorMsg","_i","arguments","onMonitorErrorCollected","debugMode","setDebugMode","newDebugMode","monitored","__","descriptor","originalMethod","monitor","callMonitored","displayIfDebugEnabled","__spreadArray","candidate","arrayFrom","arrayLike","array","predicate","objectValues","object","objectEntries","cssEscape","CSS","escape","ch","asCodePoint","charCodeAt","toAssign","source","prototype","call","makePublicApi","stub","publicApi","onReady","defineProperty","enumerable","defineGlobal","global","api","existingGlobalVariable","q","getGlobalObject","globalThis","configurable","globalObject","_dd_temp_","self","ONE_KIBI_BYTE","ONE_MEBI_BYTE","HAS_MULTI_BYTES_CHARACTERS","computeBytesCount","TextEncoder","encode","getZoneJsOriginalValue","browserWindow","Zone","__symbol__","setTimeout","clearTimeout","timeoutId","setInterval","clearInterval","throttle","wait","pendingExecutionWithParameters","pendingTimeoutId","needLeadingExecution","leading","needTrailingExecution","trailing","inWaitPeriod","throttled","parameters","noop","getType","mergeInto","circularReferenceChecker","createCircularReferenceChecker","WeakSet","set_1","hasAlreadyBeenSeen","getTime","multiline","sticky","unicode","join","merged_1","merged","deepClone","combine","_a","sources_1","jsonStringify","replacer","space","restoreObjectPrototypeToJson","detachToJsonMethod","restoreArrayPrototypeToJson","restoreValuePrototypeToJson","getPrototypeOf","restoreValueToJson","objectToJson","SANITIZE_DEFAULT_MAX_CHARACTER_COUNT","JSON_PATH_ROOT_ELEMENT","KEY_DECORATION_LENGTH","maxCharacterCount","containerQueue","visitedObjectsWithPath","sanitizedData","sanitizeProcessor","accumulatedCharacterCount","containerToProcess","shift","separatorLength","targetData","warnOverCharacterLimit","parentPath","queue","sourceToSanitize","tryToApplyToJSON","sanitizePrimitivesAndFunctions","sanitizedSource","sanitizeObjects","Event","isTrusted","sourceAsObject","currentPath","onFirstSubscribe","observers","_this","onLastUnsubscribe","other","notify","mergeObservables","observables","globalObservable","observable","subscription","CUSTOMER_DATA_BYTES_LIMIT","CustomerDataLabel","warnIfCustomerDataLimitReached","bytesCount","customerDataType","BYTES_COMPUTATION_THROTTLING_DELAY","createContextManager","computeBytesCountImpl","bytesCountCache","alreadyWarned","changeObservable","computeBytesCountThrottled","contextManager","getBytesCount","newContext","getContext","setContext","clearContext","setContextProperty","removeContextProperty","BoundedBuffer","buffer","drain","performDraw","threshold","num","decimals","toFixed","isPercentage","isNumber","navigationStart","getCurrentSiteCache","ONE_MINUTE","ONE_HOUR","ONE_YEAR","relativeToClocks","relative","timeStamp","getCorrectedTimeStamp","relativeTime","correctedOrigin","dateNow","performance","now","getNavigationStart","addDuration","getTimeStamp","toServerDuration","timeStampNow","relativeNow","clocksNow","clocksOrigin","elapsed","getRelativeTime","timestamp","timing","generateUUID","placeholder","findCommaSeparatedValue","rawString","safeTruncate","lastChar","correctedLength","setCookie","expireDelay","date","setTime","expires","toUTCString","sameSite","crossSite","domain","secure","cookie","getCookie","deleteCookie","SYNTHETICS_TEST_ID_COOKIE_NAME","SYNTHETICS_RESULT_ID_COOKIE_NAME","SYNTHETICS_INJECTS_RUM_COOKIE_NAME","willSyntheticsInjectRum","_DATADOG_SYNTHETICS_INJECTS_RUM","getSyntheticsTestId","_DATADOG_SYNTHETICS_PUBLIC_ID","getSyntheticsResultId","_DATADOG_SYNTHETICS_RESULT_ID","getEventBridge","eventBridgeGlobal","getEventBridgeGlobal","DatadogEventBridge","getAllowedWebViewHosts","send","eventType","canUseEventBridge","currentHost","hostname","bridge","allowedHost","eventTarget","addEventListeners","eventNames","_b","capture","passive","listenerWithMonitor","once","stop","storageListeners","createStoredContextManager","productKey","storageKey","buildStorageKey","synchronizeWithStorage","dumpToStorage","localStorage","setItem","rawContext","getItem","UNKNOWN_FUNCTION","computeStackTrace","ex","stack","stackProperty","tryToGetString","exString","line","stackFrame","parseChromeLine","parts","CHROME_LINE_RE","isNative","isEval","submatch","CHROME_EVAL_RE","column","func","parseChromeAnonymousLine","CHROME_ANONYMOUS_FUNCTION_RE","parseWinLine","WINJS_LINE_RE","parseGeckoLine","GECKO_LINE_RE","GECKO_EVAL_RE","fileUrl","filePosition","NO_ERROR_STACK_PRESENT_MESSAGE","computeRawError","stackTrace","originalError","handlingStack","startClocks","handling","isErrorInstance","computeMessage","nonErrorPrefix","hasUsableStack","toStackTraceString","causes","flattenErrorCauses","parentSource","currentError","cause","fingerprint","tryToGetFingerprint","dd_fingerprint","formatErrorMessage","createHandlingStack","formattedStack","sanitizeUser","newUser","user","checkUser","isValid","ExperimentalFeature","PAGEHIDE","FEATURE_FLAGS","RESOURCE_PAGE_STATES","PAGE_STATES","COLLECT_FLUSH_REASON","NO_RESOURCE_DURATION_FROZEN_STATE","SCROLLMAP","INTERACTION_TO_NEXT_PAINT","WEB_VITALS_ATTRIBUTION","DISABLE_REPLAY_INLINE_CSS","enabledExperimentalFeatures","isExperimentalFeatureEnabled","featureName","shallowClone","objectHasValue","isEmptyObject","browserIsIE","browserIsChromium","browserIsSafari","SESSION_TIME_OUT_DELAY","SESSION_EXPIRATION_DELAY","SESSION_STORE_KEY","SESSION_ENTRY_REGEXP","SESSION_ENTRY_SEPARATOR","isSessionInExpiredState","expandSessionState","expire","toSessionString","toSessionState","sessionString","isValidSessionString","OLD_SESSION_COOKIE_NAME","OLD_RUM_COOKIE_NAME","OLD_LOGS_COOKIE_NAME","RUM_SESSION_KEY","LOGS_SESSION_KEY","persistSessionCookie","retrieveSessionCookie","deleteSessionCookie","LOCAL_STORAGE_TEST_KEY","persistInLocalStorage","sessionState","retrieveSessionFromLocalStorage","clearSessionFromLocalStorage","removeItem","ongoingOperations","LOCK_RETRY_DELAY","LOCK_MAX_TRIES","bufferedOperations","processSessionStoreOperations","operations","sessionStoreStrategy","numberOfRetries","isLockEnabled","retrieveSession","persistSession","clearSession","currentLock","currentSession","lock","retryLater","processedSession","after","sessionStore","currentNumberOfRetries","nextOperations","STORAGE_POLL_DELAY","selectSessionStoreStrategyType","initConfiguration","sessionStoreStrategyType","selectCookieStrategy","cookieOptions","buildCookieOptions","useSecureSessionCookie","useCrossSiteSessionCookie","trackSessionAcrossSubdomains","getCurrentSite","testCookieName","domainLevels","candidateDomain","pop","areCookiesAuthorized","testCookieValue","isCookieCorrectlySet","allowFallbackToLocalStorage","selectLocalStorageStrategy","testKey","retrievedId","startSessionStore","computeSessionState","renewObservable","expireObservable","initCookieStrategy","cookieStore","chrome","navigator","userAgent","tryOldCookiesMigration","cookieStoreStrategy","oldSessionId","oldRumType","oldLogsType","initLocalStorageStrategy","watchSessionTimeoutId","watchSession","isActiveSession","synchronizeSession","sessionCache","retrieveActiveSession","hasSessionInCache","isSessionInCacheOutdated","expireSessionInCache","created","expandOrRenewSession","isTracked","synchronizedSession","expandOrRenewSessionState","trackingType","renewSessionInCache","expandSession","normalizeUrl","buildUrl","getLocationOrigin","getLinkElementOrigin","href","getOrigin","base","supportedURL","getSupportedUrl","isURLSupported","originalURL","anchorElement","baseElement","implementation","createHTMLDocument","URL","origin","sanitizedHost","protocol","INTAKE_SITE_STAGING","INTAKE_SITE_US1","INTAKE_SITE_EU1","INTAKE_SITE_AP1","ENDPOINTS","logs","rum","sessionReplay","INTAKE_TRACKS","createEndpointBuilder","endpointType","configurationTags","buildUrlWithParameters","createEndpointUrlWithParametersBuilder","proxy","proxyUrl","normalizedProxyUrl_1","buildEndpointHost","internalAnalyticsSubdomain","domainParts","extension","subdomain","normalizedProxyUrl_2","buildEndpointParameters","retry","flushReason","encoding","tags","lastFailureStatus","reverse","urlPrefix","TAG_SIZE_LIMIT","FORBIDDEN_CHARACTERS","buildTag","rawValue","sanitizedValue","DefaultPrivacyLevel","ALLOW","MASK","MASK_USER_INPUT","validateAndBuildConfiguration","sampleRate","telemetrySampleRate","telemetryConfigurationSampleRate","enableExperimentalFeatures","addExperimentalFeatures","enabledFeatures","flag","beforeSend","_c","silentMultipleInit","batchBytesLimit","eventRateLimiterThreshold","maxTelemetryEventsPerPage","flushTimeout","batchMessagesLimit","messageBytesLimit","computeTransportConfiguration","buildTags","datacenter","endpointBuilders","computeEndpointBuilders","logsEndpointBuilder","rumEndpointBuilder","sessionReplayEndpointBuilder","intakeUrlPrefixes","replicaConfiguration","computeReplicaConfiguration","replica","replicaEndpointBuilders","isIntakeUrl","intakeEndpoint","serializeConfiguration","session_sample_rate","telemetry_sample_rate","telemetry_configuration_sample_rate","use_before_send","use_cross_site_session_cookie","use_secure_session_cookie","use_proxy","silent_multiple_init","track_session_across_subdomains","track_resources","track_long_task","allow_fallback_to_local_storage","store_contexts_across_pages","storeContextsAcrossPages","isMatchOption","itemType","matchList","list","useStartsWith","clearTracingIfNeeded","isAborted","traceId","spanId","traceSampled","injectHeadersIfTracingAllowed","sessionManager","isTracingSupported","getCrypto","findTrackedSession","tracingOption","TraceIdentifier","traceSampleRate","makeTracingHeaders","propagatorTypes","tracingHeaders","propagatorType","toDecimalString","traceparent","toPaddedHexadecimalString","b3","crypto","msCrypto","Uint8Array","getRandomValues","radix","high","readInt32","low","mod","getSelectedTracingPropagators","usedTracingPropagators","option","allowedTracingOrigins","buildCommonContext","globalContextManager","userContextManager","recorderApi","hasReplay","isRecording","sendToExtension","__ddBrowserSdkExtensionCallback","onRawTelemetryEventCollected","TelemetryType","ALLOWED_FRAME_URLS","TELEMETRY_EXCLUDED_SITES","telemetryConfiguration","maxEventsPerPage","sentEventCount","telemetryEnabled","telemetryConfigurationEnabled","startTelemetry","telemetryService","contextProvider","runtimeEnvInfo","getRuntimeEnvInfo","is_local_file","is_worker","rawEvent","event_1","toTelemetryEvent","_dd","format_version","telemetry","runtime_env","experimental_features","startMonitorErrorCollection","newOnMonitorErrorCollected","addTelemetryError","setContextProvider","provider","enabled","isTelemetryReplicationAllowed","addTelemetryDebug","addTelemetry","formatError","kind","scrubCustomerFrames","addTelemetryConfiguration","allowedFrameUrl","PageExitReason","HIDDEN","UNLOADING","FROZEN","createPageExitObservable","pagehideEnabled","stopListeners","visibilityState","stopBeforeUnloadListener","isPageExitReason","getMutationObserverConstructor","MutationObserver","originalInstance","runOnReadyState","expectedReadyState","readyState","FAKE_INITIAL_DOCUMENT","RESOURCE_TYPES","initiatorType","areInOrder","numbers","isRequestKind","computePerformanceResourceDuration","responseEnd","computePerformanceResourceDetails","validEntry","toValidEntry","fetchStart","redirectStart","redirectEnd","domainLookupStart","domainLookupEnd","connectStart","secureConnectionStart","connectEnd","requestStart","responseStart","download","formatTiming","first_byte","connect","ssl","dns","hasRedirection","redirect","computeSize","decodedBodySize","isAllowedRequestUrl","isTextNode","Node","TEXT_NODE","ELEMENT_NODE","isNodeShadowHost","shadowRoot","isNodeShadowRoot","DOCUMENT_FRAGMENT_NODE","forEachChildNodes","childNodes","getParentNode","INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD","getDocumentTraceId","getDocumentTraceDataFromMeta","traceIdMeta","traceTimeMeta","createDocumentTraceData","content","getDocumentTraceDataFromComment","comment","findTraceComment","getTraceCommentFromNode","traceTime","rawTraceTime","isCommentNode","COMMENT_NODE","RumPerformanceEntryType","EVENT","FIRST_INPUT","LARGEST_CONTENTFUL_PAINT","LAYOUT_SHIFT","LONG_TASK","NAVIGATION","PAINT","RESOURCE","supportPerformanceObject","supportPerformanceTimingEvent","entryType","PerformanceObserver","supportedEntryTypes","startPerformanceCollection","lifeCycle","retrieveInitialDocumentResourceTiming","forcedAttributes","getEntriesByType","navigationEntry","relativePerformanceTiming","computeRelativePerformanceTiming","handleRumPerformanceEntries","performanceEntries_1","getEntries","handlePerformanceEntryList_1","mainEntries","experimentalEntries","buffered","durationThreshold","entryTypes","clearResourceTimings","retrieveNavigationTiming","sendFakeTiming","retrieveFirstInputTiming","startTimeStamp","timingSent","removeEventListeners","evt","cancelable","processingStart","processingEnd","sendTimingIfPointerIsNotCancelled","sendTiming","timingElement","rumAllowedPerformanceEntries","isIncompleteNavigation","loadEventEnd","isForbiddenResource","ErrorSource","AGENT","CONSOLE","CUSTOM","LOGGER","NETWORK","SOURCE","REPORT","createEventRateLimiter","onLimitReached","eventCount","allowNextEvent","isLimitReached","current","fields","field","isValidObject","isValidObjectContaining","modifiableFieldPathsByEvent","VIEW_MODIFIABLE_FIELD_PATHS","USER_CUSTOMIZABLE_FIELD_PATHS","startRumAssembly","viewContexts","urlContexts","actionContexts","displayContext","view","resource","long_task","eventRateLimiters","syntheticsContext","getSyntheticsContext","testId","resultId","test_id","result_id","injected","ciTestContext","getCiTestContext","testExecutionId","Cypress","test_execution_id","rawRumEvent","domainContext","savedCommonContext","customerContext","viewContext","findView","urlContext","findUrl","commonContext","actionId","findActionId","serverRumEvent","drift","plan","session_replay_sample_rate","browser_sdk_version","application","referrer","needToAssembleWithAction","synthetics","ci_test","has_replay","usr","shouldSend","limitModification","modifiableFieldPaths","modifier","clone","fieldPath","fieldType","newValue","newType","AbstractLifeCycle","eventCallbacks","LifeCycle","END_OF_TIMES","Infinity","CLEAR_OLD_VALUES_INTERVAL","ValueHistory","maxEntries","clearOldValuesInterval","clearOldValues","closeActive","latestEntry","findAll","oldTimeThreshold","VIEW_CONTEXT_TIME_OUT_DELAY","instrumentMethod","instrumentationFactory","instrumentation","instrumentationWrapper","instrumentMethodAndCallOriginal","before","instrumentSetter","originalDescriptor","getOwnPropertyDescriptor","thisObject","xhrObservable","fetchObservable","xhrContexts","initXhrObservable","createXhrObservable","stopInstrumentingStart","XMLHttpRequest","openXhr","stopInstrumentingSend","sendXhr","stopInstrumentingAbort","abortXhr","startContext","xhr","hasBeenReported","stopInstrumentingOnReadyStateChange","DONE","onEnd","unsubscribeLoadEndListener","completeContext","initFetchObservable","createFetchObservable","fetch","originalFetch","responsePromise","afterSend","Request","reportFetch","DOMException","code","ABORT_ERR","isServerError","tryToClone","readBytesFromStream","stream","getReader","chunks","readBytesCount","bytes","limitExceeded","collectStreamBody","completeBuffer_1","offset_1","chunk","bytesLimit","readMore","read","nextRequestIndex","getNextRequestIndex","trackEventCounts","isChildEvent","onChange","eventCounts","errorCount","longTaskCount","resourceCount","actionCount","frustrationCount","frustration","discarded","PAGE_ACTIVITY_VALIDATION_DELAY","PAGE_ACTIVITY_END_DELAY","waitPageActivityEnd","domMutationObservable","pageActivityEndCallback","maxDuration","pageActivityObservable","createPageActivityObservable","firstRequestIndex","pendingRequestsCount","notifyPageActivity","isExcludedUrl","startEvent","requestIndex","stopTrackingWindowOpen","trackWindowOpen","isBusy","doWaitPageActivityEnd","pageActivityEndTimeoutId","hasCompleted","validationTimeoutId","hadActivity","maxDurationTimeoutId","pageActivitySubscription","lastChangeTime","requestUrl","excludedActivityUrls","DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE","getActionNameFromElement","userProgrammaticAttribute","getActionNameFromElementProgrammatically","getActionNameFromElementForStrategies","priorityStrategies","fallbackStrategies","targetElement","programmaticAttribute","elementWithAttribute","supportsElementClosest","supportsElementClosestResult","HTMLElement","closest","hasAttribute","parentElement","truncate","normalizeWhitespace","getAttribute","supportsLabelPropertyResult","supportsLabelProperty","HTMLInputElement","labels","getTextualContent","label","ownerDocument","htmlFor","nodeName","labelledByAttribute","getElementById","refElement","MAX_PARENTS_TO_CONSIDER","strategies","recursionCounter","strategies_1","name_1","strategy","trimmedName","isContentEditable","text_1","innerText","removeTextFromElements","element_1","textToReplace","supportsInnerTextScriptAndStyleRemoval","isIE","documentMode","textContent","supportScopeSelectorCache","STABLE_ATTRIBUTES","GLOBALLY_UNIQUE_SELECTOR_GETTERS","getStableAttributeSelector","getIDSelector","isGeneratedValue","UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS","getClassSelector","tagName","getTagNameSelector","getSelectorFromElement","actionNameAttribute","targetElementSelector","globallyUniqueSelector","findSelector","isSelectorUniqueGlobally","isSelectorUniqueAmongSiblings","combineSelector","getPositionSelector","getAttributeSelector","STABLE_ATTRIBUTES_1","attributeName","sibling","firstElementChild","elementIndex","nextElementSibling","selectorGetters","childSelector","selectorGetters_1","elementSelector","selectorGetter","fullSelector","supportScopeSelector","child","MAX_DURATION_BETWEEN_CLICKS","MAX_DISTANCE_BETWEEN_CLICKS","isSelectionEmpty","selection","getSelection","isCollapsed","isValidPointerEvent","Element","isPrimary","MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE","DEAD_CLICK_EXCLUDE_SELECTOR","isDead","click","hasPageActivity","getUserActivity","elementMatches","msMatchesSelector","CLICK_ACTION_MAX_DURATION","ACTION_CONTEXT_TIME_OUT_DELAY","trackClickActions","currentClickChain","history","stopObservable","stopClickChain","stopActionEventsListener","listenActionEvents","selectionEmptyAtPointerDown","clickContext","onPointerDown","onPointerUp","userActivity","localUserActivity_1","pointerDownEvent","processPointerDown","trackFrustrations","clickActionBase","computeClickActionBase","rect","getBoundingClientRect","height","clientX","left","y","clientY","top","hadActivityOnPointerDown","pageActivityEndEvent","startClickAction","appendClickToClickChain","newClick","stopWaitPageActivityEnd","discard","validate","viewEndedSubscription","endClocks","stopSubscription","tryAppend","rageClick_1","createClickChain","firstClick","onFinalize","maxDurationBetweenClicksTimeoutId","bufferedClicks","appendClick","tryFinalize","dontAcceptMoreClick","every","isStopped","areEventsSimilar","mouseEventDistance","sqrt","clicks","finalizeClicks","rageClick","isRage","computeFrustration","addFrustration","hasError","hasSelectionChanged","activityEndTime","historyEntry","eventCountsSubscription","frustrationTypes","newActivityEndTime","frustrationType","domEvents","clickAction","counts","processAction","pageStateHistory","autoActionProperties","isAutoAction","loading_time","in_foreground","isInActivePageStateAt","ERROR_TYPES_RE","trackRuntimeError","errorObservable","startUnhandledErrorCollection","stopInstrumentingOnError","instrumentOnError","messageObj","errorObj","tryToParseMessage","stopInstrumentingOnUnhandledRejection","instrumentUnhandledRejection","consoleObservablesByApi","initConsoleObservable","apis","consoleObservables","createConsoleObservable","originalConsoleApi","buildConsoleLog","param","formatConsoleParameters","firstErrorParam","RawReportType","intervention","deprecation","cspViolation","initReportObservable","createCspViolationReportObservable","buildRawReportFromCspViolation","blockedURI","effectiveDirective","subtype","buildStack","originalPolicy","sourceFile","lineNumber","columnNumber","reportTypes","createReportObservable","ReportingObserver","handleReports","reports","report","buildRawReportFromReport","types","disconnect","startResourceCollection","processRequest","matchingTiming","matchRequestTiming","sameNameEntries","getEntriesByName","candidates","isBetween","correspondingTimingOverrides","computePerformanceEntryMetrics","tracingInfo","computeRequestTracingInfo","span_id","trace_id","rule_psr","getRulePsr","indexingInfo","computeIndexingInfo","computeRequestDuration","requestCrossedFrozenState","pageState","pageStateInfo","computePageStateInfo","resourceEvent","status_code","performanceEntry","requestInput","requestInit","entries_1","processResourceEntry","computeResourceKind","isValidUrl","getPathName","pathname","RESOURCE_TYPES_1","isType","entryMetrics","computeEntryTracingInfo","resourceStart","resourceAllowed","page_states","page_was_discarded","wasDiscarded","mapToForegroundPeriods","pageStateServerEntries","foregroundPeriods","FCP_MAXIMUM_DELAY","LCP_MAXIMUM_DELAY","viewportObservable","interactionCountEstimate","minKnownInteractionId","maxKnownInteractionId","getInteractionCount","interactionCount","MAX_INTERACTION_ENTRIES","getScrollX","scrollX","visual","visualViewport","pageLeft","offsetLeft","pageXOffset","getScrollY","scrollY","pageTop","offsetTop","pageYOffset","initViewportObservable","createViewportObservable","updateDimension","getViewportDimension","scale","innerWidth","innerHeight","THROTTLE_SCROLL_DURATION","trackCommonViewMetrics","scheduleViewUpdate","loadingType","viewStart","commonViewMetrics","trackLoadingTime","loadType","isWaitingForLoadEvent","isWaitingForActivityLoadingTime","loadingTimeCandidates","invokeCallbackIfAllCandidatesAreReceived","setLoadEvent","loadEvent","newLoadingTime","loadingTime","stopLoadingTimeTracking","stopScrollMetricsTracking","trackScrollMetrics","scrollValues","createScrollValuesObservable","throttleDuration","ResizeObserver","throttledNotify_1","computeScrollValues","scrollTop","scrollHeight","scrollingElement","scrollDepth","observerTarget_1","resizeObserver_1","eventListener_1","unobserve","maxScrollDepth","maxScrollHeight","maxScrollHeightTime","shouldUpdate","maxDepth","maxDepthScrollTop","newScrollMetrics","scroll","stopCLSTracking","trackCumulativeLayoutShift","isLayoutShiftSupported","maxClsValue","slidingSessionWindow","largestLayoutShiftTarget","largestLayoutShiftTime","largestLayoutShift","hadRecentInput","cls","clsTarget","cslTargetSelector","targetSelector","cumulativeLayoutShift","trackInteractionToNextPaint","viewLoadingType","isInteractionToNextPaintSupported","PerformanceEventTiming","getInteractionToNextPaint","interactionToNextPaintTargetSelector","getViewInteractionCount","trackViewInteractionCount","initInteractionCountPolyfill","interactionId","previousInteractionCount","longestInteractions","trackLongestInteractions","sortAndTrimLongestInteractions","interactionIndex","findIndex","interaction","minLongestInteraction","estimateP98Interaction","interactionToNextPaint","telemetryCollected","newInteraction","inp","timeFromViewStart","targetNodeName","stopINPTracking","getCommonViewMetrics","THROTTLE_VIEW_UPDATE_PERIOD","SESSION_KEEP_ALIVE_INTERVAL","KEEP_TRACKING_AFTER_VIEW_DELAY","trackViews","locationChangeObservable","areViewsTrackedAutomatically","initialViewOptions","locationChangeSubscription","activeViews","currentView","startNewView","viewOptions","newlyCreatedView","newView","initialLocation","customTimings","documentVersion","sessionIsActive","triggerViewUpdate","cancelScheduleViewUpdate","stopCommonViewMetricsTracking","trackInitialViewMetrics","initialViewMetrics","stopNavigationTracking","trackNavigationTimings","domComplete","domContentLoaded","domContentLoadedEventEnd","domInteractive","firstByte","navigationTimings","firstHidden","trackFirstHidden","stopFCPTracking","trackFirstContentfulPaint","fcpEntry","firstContentfulPaint","stopLCPTracking","trackLargestContentfulPaint","firstInteractionTimestamp","stopEventListener","unsubscribeLifeCycle","lcpEntry","findLast","lcpTargetSelector","largestContentfulPaint","stopFIDTracking","trackFirstInput","firstInputEntry","firstInputDelay","firstInputTargetSelector","firstInput","stopInitialViewMetricsTracking","_d","trackViewEventCounts","viewId","stopEventCountsTracking","keepAliveIntervalId","currentEnd","isActive","addTiming","looksLikeRelativeTime","sanitizeTiming","sanitized","startViewLifeCycle","pageExitEvent","renewViewOnLocationChange","areDifferentLocation","currentLocation","otherLocation","isHashAnAnchor","hash","correspondingId","substr","getPathFromHash","oldLocation","newLocation","startView","discardNegativeDuration","VISIBILITY_CHECK_DELAY","SESSION_CONTEXT_TIMEOUT_DELAY","stopCallbacks","startSessionManager","sessionContextHistory","buildSessionContext","trackActivity","trackVisibility","expandSessionWhenVisible","visibilityCheckInterval","findActiveSession","isTypeTracked","rumSessionType","Batch","flushController","pushOnlyBuffer","upsertBuffer","flushSubscription","flushObservable","addOrUpdate","messages","sendOnExit","processedMessage","messageBytesCount","hasMessageFor","notifyBeforeAddMessage","messagesCount","notifyAfterAddMessage","removedMessage","notifyAfterRemoveMessage","MAX_ONGOING_BYTES_COUNT","MAX_ONGOING_REQUESTS","MAX_QUEUE_BYTES_COUNT","MAX_BACKOFF_TIME","INITIAL_BACKOFF_TIME","sendWithRetryStrategy","sendStrategy","transportStatus","queuedPayloads","bandwidthMonitor","canHandle","onSuccess","retryQueuedPayloads","onFailure","enqueue","scheduleRetry","dequeue","currentBackoffTime","shouldRetryRequest","onLine","ongoingRequestCount","queueFullReported","previousQueue","newPayloadQueue","createHttpRequest","endpointBuilder","retryState","newRetryState","ongoingByteCount","sendStrategyForRetry","onResponse","fetchKeepAliveStrategy","isKeepAliveSupported","fetchUrl","keepalive","mode","xhrUrl","sendXHR","sendBeaconStrategy","sendBeacon","beaconUrl","reportBeaconError","hasReportedBeaconError","startBatchWithReplica","primary","pageExitObservable","sessionExpireObservable","primaryBatch","createBatch","endpoint","replicaBatch","createFlushController","durationLimitTimeoutId","messagesLimit","durationLimit","pageExitSubscription","sessionExpireSubscription","currentBytesCount","currentMessagesCount","cancelDurationLimitTimeout","scheduleDurationLimitTimeout","replicated","transformMessage","URL_CONTEXT_TIME_OUT_DELAY","currentPeriodMeasures","currentBatchMeasures","batchHasRumEvent","FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY","MEASURES_PERIOD_DURATION","sendCurrentPeriodMeasures","batchCount","initCurrentPeriodMeasures","updateMeasure","measure","sum","mergeMeasure","batchBytesCount","batchMessagesCount","globalContextBytes","userContextBytes","featureFlagBytes","initCurrentBatchMeasures","PAGE_STATE_CONTEXT_TIME_OUT_DELAY","getPageState","hasFocus","RecordType","FullSnapshot","IncrementalSnapshot","Meta","Focus","ViewEnd","VisualViewport","FrustrationRecord","NodeType","Document","DocumentType","Text","CDATA","DocumentFragment","IncrementalSource","Mutation","MouseMove","MouseInteraction","Scroll","ViewportResize","Input","TouchMove","MediaInteraction","StyleSheetRule","MouseInteractionType","MouseUp","MouseDown","Click","ContextMenu","DblClick","Blur","TouchStart","TouchEnd","MediaInteractionType","Play","Pause","assembleIncrementalSnapshot","NodePrivacyLevel","IGNORE","PRIVACY_ATTR_NAME","PRIVACY_ATTR_VALUE_ALLOW","PRIVACY_ATTR_VALUE_MASK","PRIVACY_ATTR_VALUE_MASK_USER_INPUT","PRIVACY_ATTR_VALUE_HIDDEN","PRIVACY_CLASS_ALLOW","PRIVACY_CLASS_MASK","PRIVACY_CLASS_MASK_USER_INPUT","PRIVACY_CLASS_HIDDEN","CENSORED_STRING_MARK","CENSORED_IMG_MARK","FORM_PRIVATE_TAG_NAMES","INPUT","OUTPUT","TEXTAREA","SELECT","OPTION","DATALIST","OPTGROUP","MAX_ATTRIBUTE_VALUE_CHAR_LENGTH","getNodePrivacyLevel","parentNodePrivacyLevel","reducePrivacyLevel","getNodeSelfPrivacyLevel","childPrivacyLevel","privAttr","autocomplete","shouldIgnoreElement","relAttribute","getLowerCaseAttribute","nameAttribute","propertyAttribute","shouldMaskNode","privacyLevel","isFormElement","censorText","getTextContent","textNode","ignoreWhiteSpace","parentTagName","serializedNodeIds","hasSerializedNode","getSerializedNodeId","getElementInputValue","nodePrivacyLevel","URL_IN_CSS_REF","ABSOLUTE_URL","DATA_URI","TAG_NAME_REGEX","getValidTagName","processedTagName","serializeStyleSheets","cssStyleSheets","cssStyleSheet","cssRules","rules","cssRule","cssText","media","serializeAttribute","attributeValue","getCssRulesString","switchToAbsoluteUrl","cssHref","matchingSubstring","singleQuote","urlWrappedInSingleQuotes","doubleQuote","urlWrappedInDoubleQuotes","urlNotWrappedInQuotes","quote","makeUrlAbsolute","isSafari","getCssRuleStringForSafari","getCssRuleString","rule","isCSSStyleRule","selectorText","isCSSImportRule","styleSheet","serializeNodeWithId","serializedNode","serializeNode","DOCUMENT_NODE","serializeDocumentNode","serializeChildNodes","adoptedStyleSheets","serializeDocumentFragmentNode","isShadowRoot","serializationContext","shadowRootsController","addShadowRoot","DOCUMENT_TYPE_NODE","serializeDocumentTypeNode","documentType","publicId","systemId","serializeElementNode","isSVG","isSVGElement","SVGElement","attributes","rr_width","rr_height","serializeAttributes","safeAttrs","formValue","selected","stylesheet","styleSheets","_cssText","sheet","inputElement","checked","rr_mediaState","paused","scrollLeft","elementsScrollPositions","rr_scrollLeft","rr_scrollTop","hasChildNodes","serializeTextNode","CDATA_SECTION_NODE","serializeCDataNode","generateNextId","_nextId","serializedNodeWithId","setSerializedNodeId","serializeNodeId","childNode","serializedChildNode","serializeDocument","isTouchEvent","changedTouches","getEventTarget","composed","composedPath","convertMouseEventToLayoutCoordinates","normalized","layoutViewportX","layoutViewportY","visualViewportX","visualViewportY","isVisualViewportFactoredIn","getVisualViewport","MOUSE_MOVE_OBSERVER_THRESHOLD","tryToComputeCoordinates","isFinite","SCROLL_OBSERVER_THRESHOLD","eventTypeToMouseInteraction","pointerup","mousedown","contextmenu","dblclick","focus","blur","touchstart","touchend","mouseInteractionObserver_a","initInputObserver","stopPropertySetterInstrumentation","lastInputStateMap","stopEventListeners","HTMLTextAreaElement","HTMLSelectElement","onElementChange","instrumentationStoppers_1","stopper","inputState","isChecked","cbWithDedup","lastInputState","getPathToNestedCSSRule","currentRule","parentRule","index_1","parentStyleSheet","VISUAL_VIEWPORT_OBSERVER_THRESHOLD","MUTATION_PROCESS_MAX_DELAY","initMutationObserver","mutationCallback","mutationBatch","createMutationBatch","processMutationBatch","cancelScheduledFlush","pendingMutations","addMutations","mutations","requestIdleCallback","opts","cancelIdleCallback","id_1","requestAnimationFrame","cancelAnimationFrame","processMutations","mutation","removedNodes","removedNode","traverseRemovedShadowDom","removeShadowRoot","filteredMutations","isConnected","nodeAndAncestorsHaveSerializedNode","processChildListMutations","addedAndMovedNodes","addedNodes","mutations_1","sortedAddedAndMovedNodes","sortAddedAndMovedNodes","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_CONTAINS","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","addedNodeMutations","sortedAddedAndMovedNodes_1","hasBeenSerialized","nextId","getNextSibling","parentId","removedNodeMutations","removes","texts","processCharacterDataMutations","textMutations","handledNodes","filteredMutations_1","processAttributesMutations","attributeMutations","handledElements","handledAttributes","emittedMutations","filteredMutations_2","transformedValue","inputValue","emittedMutation","takeRecords","attributeOldValue","characterData","characterDataOldValue","childList","subtree","shadowDomRemovedCallback","record","emit","createElementsScrollPositions","scrollPositionsByElement","scrollPositions","mutationCb","inputCb","controllerByShadowRoot","stopMutationObserver","stopInputObserver","initShadowRootsController","takeFullSnapshot","has_focus","initialOffset","initObservers","recordIds","initRecordIds","getIdForEvent","mutationHandler","mousemoveHandler","initMoveObserver","updatePosition","coordinates","timeOffset","mousemoveCb","mouseInteractionHandler","initMouseInteractionObserver","mouseInteractionCb","scrollHandler","initScrollObserver","scrollCb","viewportResizeHandler","initViewportResizeObserver","viewportResizeCb","inputHandler","mediaInteractionHandler","initMediaInteractionObserver","mediaInteractionCb","styleSheetObserver","initStyleSheetObserver","checkStyleSheetAndCallback","ownerNode","instrumentationStoppers","CSSStyleSheet","instrumentGroupingCSSRuleClass","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","styleSheetCb","focusHandler","initFocusObserver","focusCb","visualViewportResizeHandler","initVisualViewportResizeObserver","cancelThrottle","removeListener","visualViewportResizeCb","frustrationHandler","initFrustrationObserver","frustrationCb","mouseInteractionRecord","positions","frustrationRecord","stopObservers","flushMutationsFromObservers","flushMutations","takeSubsequentFullSnapshot","statsPerView","MAX_STATS_HISTORY","getSegmentsCount","getOrCreateReplayStats","segments_count","replayStats","records_count","segments_total_raw_size","deleteOldestStats","isFirst_1","_value","Segment","encoder","creationReason","creation_reason","has_full_snapshot","index_in_view","addSegment","addRecord","segment","write","addWroteData","additionalBytesCount","rawBytesCount","SEGMENT_DURATION_LIMIT","isBrowserSupported","createObjectURL","NodeList","getSessionReplayLink","isRecordingStarted","errorType","getErrorType","sessionReplayAllowed","getSessionReplayUrl","getDatadogSiteUrl","rumConfiguration","getSiteDefaultSubdomain","INITIALIZATION_TIME_OUT_DELAY","createDeflateWorker","Worker","workerUrl","getDeflateWorkerStatus","onError","streamId","isMessageCspRelated","baseMessage","initializationFailureCallbacks","worker_version","stream_id","datadogRum","makeRumPublicApi","startRumImpl","ignoreInitIfSyntheticsWillInjectRum","isAlreadyInitialized","getInternalContextStrategy","getInitConfigurationStrategy","stopSessionStrategy","getSessionReplayLinkStrategy","bufferApiCalls","addTimingStrategy","startViewStrategy","addActionStrategy","addErrorStrategy","providedError","addFeatureFlagEvaluationStrategy","doStartRum","beforeInitGlobalContext","beforeInitUserContext","startRumResults","addAction","addError","addFeatureFlagEvaluation","getInternalContext","stopSession","onRumStart","initRum","eventBridgeAvailable","overrideInitConfigurationForBridge","canInitRum","validateAndBuildRumConfiguration","premiumSampleRate","replaySampleRate","tracingSampleRate","validateAndBuildTracingOptions","tracingOptions_1","isTracingOption","expectedItem","tracingOptions_2","legacyMatchOption","convertLegacyMatchOptionToTracingOption","baseConfiguration","trackInteractions","_e","oldPlansBehavior","_f","trackViewsManually","customerDataTelemetrySampleRate","beforeInitCalls","addRumGlobalContext","setGlobalContextProperty","removeRumGlobalContext","removeGlobalContextProperty","getRumGlobalContext","getGlobalContext","setRumGlobalContext","setGlobalContext","clearGlobalContext","getInitConfiguration","setUser","getUser","setUserProperty","sanitizedProperty","removeUserProperty","removeUser","clearUser","startSessionReplayRecording","stopSessionReplayRecording","startRum","cleanupTasks","startRumTelemetry","bridge_1","featureFlagContexts","startFeatureFlagContexts","findFeatureFlagEvaluations","getFeatureFlagBytesCount","currentContext","startRumSessionManagerStub","longTaskAllowed","startRumSessionManager","rawTrackingType","hasValidRumSession","startRumEventBridge","batch_1","startRumBatch","telemetryEventObservable","batch","startCustomerDataTelemetry","batchFlushObservable","featureFlagContext","hasFeatureFlagContext","createDOMMutationObservable","createLocationChangeObservable","stopHistoryTracking","trackHistory","onHistoryChange","stopInstrumentingPushState","stopInstrumentingReplaceState","onLocationChange","stopHashTracking","trackHash","onHashChange","startRumEventCollection","startViewContexts","viewContextHistory","buildViewContext","startUrlContexts","previousViewUrl","urlContextHistory","viewUrl","buildUrlContext","changeTime","startPageStateHistory","maxPageStateEntriesSelectable","currentPageState","addPageState","computePageState","persisted","nextPageState","eventStartTime","pageStateEntries","relativeStartTime","pageStateEntry","startActionCollection","startDisplayContext","viewport","viewportDimension","serializeRumConfiguration","baseSerializedConfiguration","premium_sample_rate","replay_sample_rate","trace_sample_rate","action_name_attribute","use_allowed_tracing_origins","use_allowed_tracing_urls","selected_tracing_propagators","default_privacy_level","use_excluded_activity_urls","use_worker_url","track_frustrations","track_views_manually","track_user_interactions","startLongTaskCollection","startViewCollection","processViewUpdate","getReplayStats","pageStatesEnabled","pageStates","viewEvent","document_version","replay_stats","cumulative_layout_shift","cumulative_layout_shift_target_selector","dom_complete","dom_content_loaded","dom_interactive","first_contentful_paint","first_input_delay","_g","first_input_time","_h","first_input_target_selector","_j","interaction_to_next_paint","_k","interaction_to_next_paint_target_selector","_l","is_active","largest_contentful_paint","_m","largest_contentful_paint_target_selector","_o","load_event","_p","loading_type","time_spent","in_foreground_periods","feature_flags","max_depth","max_depth_scroll_top","max_scroll_height","max_scroll_height_time","privacy","replay_level","custom_timings","mapValues","newObject","startErrorCollection","trackConsoleError","consoleError","trackReportError","doStartErrorCollection","processError","handling_stack","source_type","rawError","startRequestCollection","tracer","startTracer","traceFetch","headers_1","Headers","header","traceXhr","setRequestHeader","trackXhr","trackFetch","waitForResponseToComplete","clonedResponse","POSITIVE_INFINITY","internalContext","startInternalContext","application_id","session_id","user_action","task","makeRecorderApi","startRecordingImpl","createDeflateWorkerImpl","startStrategy","stopStrategy","worker","startDeflateWorker","onInitializationFailure","doStartDeflateWorker","removeErrorListener_1","removeMessageListener_1","onInitialized","postMessage","onTimeout","stopRecording","createDeflateEncoder","compressedDataTrailer","compressedData","nextWriteActionId","pendingWriteActions","removeMessageListener","nextPendingAction","trailer","encodedBytes","concatBuffers","buffers","total","buffers_1","encodedBytesCount","getReplayStatsImpl","startRecording","httpRequest","replayRequest","startSegmentCollection","doStartSegmentCollection","getSegmentContext","nextSegmentCreationReason","unsubscribeViewCreated","flushSegment","unsubscribePageExited","buildReplayPayload","rawSegmentBytesCount","formData","FormData","metadataAndSegmentSizes","raw_segment_size","compressed_segment_size","byteLength","serializedMetadataAndSegmentSizes","expirationTimeoutId","computeSegmentContext","stopSegmentCollection","unsubscribeViewEnded","DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT","validateAndBuildForwardOption","allowedValues","removeDuplicates","StatusType","HandlerType","STATUSES","handleLogStrategy","handlerType","level","loggerContext","messageContext","errorContext","sanitizedMessageContext","addContext","removeContext","setHandler","handler","getHandler","setLevel","getLevel","__decorate","computeTrackingType","STATUS_PRIORITIES","loggerCollection_a","isAuthorized","loggerHandler","sanitizedHandlerType","logsSentBeforeRumInjectionTelemetryAdded","getRUMInternalContext","getInternalContextFromRumGlobal","DD_RUM_SYNTHETICS","DD_RUM","rumGlobal","LogStatusForApi","consoleCollection_a","LogStatusForReport","reportCollection_a","truncateResponseText","responseText","requestErrorResponseLengthLimit","format","datadogLogs","makeLogsPublicApi","startLogsImpl","customLoggers","beforeInitLoggerLog","logsMessage","mainLogger","canInitLogs","validateAndBuildLogsConfiguration","forwardConsoleLogs","forwardReports","forwardErrorsToLogs","handleLog","getLoggerGlobalContext","setLoggerGlobalContext","addLoggerGlobalContext","removeLoggerGlobalContext","createLogger","conf","getLogger","startLogs","rawLogsEvent","startLogsSessionManagerStub","startLogsSessionManager","rawSessionType","hasValidLoggerSession","startLogsTelemetry","telemetrySubscription_1","telemetryBatch_1","telemetrySubscription_2","stopLogsTelemetry","startNetworkErrorCollection","xhrSubscription","handleResponse","fetchSubscription","onResponseDataAvailable","isRejected","computeXhrResponseData","computeFetchResponseText","TextDecoder","truncateResponseStream","decode","computeFetchErrorText","startRuntimeErrorCollection","rawErrorObservable","stopRuntimeErrorTracking","rawErrorSubscription","startConsoleCollection","consoleSubscription","startReportCollection","reportSubscription","getFileFromStackTraceString","startLoggerCollection","savedDate","displayInConsole","startLogsAssembly","statusWithCustom","logRateLimiters","custom","startLogsBridge","serverLogsEvent","stopLogsBatch_1","startLogsBatch","serializeLogsConfiguration","baseSerializedInitConfiguration","forward_errors_to_logs","forward_console_logs","forward_reports","trackedSession","LoggerService","initialized","datadogInit","datadogInitUser","email","AppComponent","matIconRegistry","domSanitizer","loggerService","skipLinkUrl","setSkipLinkUrl","registerMatIcons","ngOnInit","addSvgIcon","bypassSecurityTrustResourceUrl","entityConfig","Permissions","canDeactivate","SessionsEffects","peService","loadSessionByRnrSessionId$","ProgramCourseListService","getCourses","ProgramCourseListEffects","programCourseListService","loadProgramCourseList$","CsrfHeaderInterceptor","intercept","handle","AppModule","bootstrap","HTTP_INTERCEPTORS","provideToastr","toastComponent","positionClass","ToastrService","MatSnackBar","MAT_FORM_FIELD_DEFAULT_OPTIONS","subscriptSizing","withServerTransition","appId","HttpClientModule","StoreModule","EffectsModule","StoreDevtoolsModule","instrument","maxAge","logOnly","__NgCli_bootstrap_1","bootstrapModule","BehaviorSubject","Subject","getValue","_subscribe","thrownError","_throwIfClosed","lift","operator","observerOrNext","isSubscriber","Subscriber","isObserver","isFunction","isSubscription","SafeSubscriber","_trySubscribe","sink","promiseCtor","getPromiseCtor","reject","Symbol_observable","pipeFromArray","toPromise","ReplaySubject","_bufferSize","_windowTime","_timestampProvider","dateTimestampProvider","_buffer","_infiniteTimeWindow","_trimBuffer","_innerSubscribe","copy","_checkFinalizedStatuses","adjustedBufferSize","last","ObjectUnsubscribedError","createErrorClass","_super","currentObservers","subject","AnonymousSubject","observed","EMPTY_SUBSCRIPTION","Subscription","arrRemove","asObservable","COMPLETE_NOTIFICATION","createNotification","EMPTY_OBSERVER","handleStoppedNotification","nextNotification","_next","errorNotification","_error","_complete","_bind","Function","thisArg","ConsumerObserver","partialObserver","handleUnhandledError","useDeprecatedNextContext","useDeprecatedSynchronousErrorHandling","captureError","reportUnhandledError","notification","onStoppedNotification","timeoutProvider","defaultErrorHandler","UnsubscriptionError","initialTeardown","_parentage","_finalizers","initialFinalizer","finalizer","execFinalizer","teardown","_hasParent","_addParent","_removeParent","EMPTY","empty","onUnhandledError","ConnectableObservable","subjectFactory","_subject","_refCount","_connection","hasLift","getSubject","_teardown","connection","refCount","higherOrderRefCount","combineLatest","popScheduler","resultSelector","popResultSelector","argsArgArrayOrObject","combineLatestInit","valueTransform","identity","maybeSchedule","active","remainingFirstValues","hasFirstValue","createObject","mapOneOrManyArgs","executeSchedule","concatAll","mergeAll","defer","observableFactory","forkJoin","remainingCompletions","remainingEmissions","sourceIndex","hasValue","subscribeOn","operate","scheduleAsyncIterable","Symbol","asyncIterator","scheduled","isInteropObservable","scheduleObservable","observeOn","isArrayLike","scheduleArray","isPromise","schedulePromise","isAsyncIterable","isIterable","scheduleIterable","Symbol_iterator","return","isReadableStreamLike","scheduleReadableStreamLike","readableStreamLikeToAsyncGenerator","createInvalidObservableTypeError","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","fromEvent","isEventTarget","methodName","isNodeStyleEventEmitter","addListener","toCommonHandlerRegistry","isJQueryStyleEventEmitter","off","subTarget","TypeError","fromInteropObservable","obs","fromArrayLike","fromPromise","promise","fromAsyncIterable","fromIterable","iterable","fromReadableStreamLike","readableStream","asyncIterable","asyncIterable_1","__asyncValues","asyncIterable_1_1","concurrent","popNumber","errorOrErrorFactory","errorFactory","timer","dueTime","intervalOrScheduler","intervalDuration","isScheduler","due","isValidDate","onNext","onComplete","OperatorSubscriber","shouldUnsubscribe","auditTime","audit","durationSelector","lastValue","durationSubscriber","isComplete","endDuration","cleanupDuration","handledResult","innerSub","syncUnsub","project","debounceTime","activeTask","lastTime","emitWhenIdle","targetTime","delayWhen","delayDurationSelector","subscriptionDelay","ignoreElements","mapTo","distinctUntilChanged","comparator","keySelector","defaultCompare","previousKey","currentKey","hasDefaultValue","throwIfEmpty","EmptyError","ii","mergeInternals","onBeforeNext","expand","innerSubScheduler","additionalFinalizer","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","bufferedValue","refCounter","sharedConnection","conn","scan","accumulator","scanInternals","hasSeed","emitOnNext","emitBeforeComplete","hasState","share","connector","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","resetConnection","hasErrored","cancelReset","resetAndUnsubscribe","dest","handleReset","onSubscriber","configOrBufferSize","windowTime","bufferSize","startWith","switchMap","innerSubscriber","innerIndex","outerIndex","seen","takeUntil","notifier","tapObserver","isUnsub","defaultErrorFactory","TimeoutError","schedulerArg","each","with","_with","timeoutErrorFactory","meta","originalSourceSubscription","timerSubscription","startTimer","inputs","len","otherValues","ready","Action","work","intervalProvider","AsyncAction","pending","recycleAsyncId","requestAsyncId","_scheduler","_execute","errorValue","errored","Scheduler","schedulerActionCtor","AsyncScheduler","SchedulerAction","_active","animationFrameProvider","animationFrameScheduler","AnimationFrameScheduler","flushId","_scheduled","AnimationFrameAction","resolved","nextHandle","activeHandles","findAndClearHandle","Immediate","setImmediate","clearImmediate","immediateProvider","asapScheduler","AsapScheduler","AsapAction","async","queueScheduler","QueueScheduler","QueueAction","getSymbolIterator","objectProto","getKeys","isPOJO","createImpl","ctorFunc","instance","isRoot","errorThrown","parentSubscription","repeat","scheduleSubscription","isNaN","isObservable","__await","releaseLock","liftedSource","callOrApply","fns","prev","module","exports","_toPropertyKey","_toPrimitive","toPrimitive","_typeof","_classCallCheck","Constructor","_defineProperties","writable","_createClass","protoProps","staticProps","_getPrototypeOf","setPrototypeOf","__proto__","_setPrototypeOf","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_construct","Parent","Class","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","_get","receiver","_superPropBase","desc","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayWithoutHoles","_arrayLikeToArray","_iterableToArray","iter","_nonIterableSpread","minLen","arr2","_classPrivateFieldGet","privateMap","_classApplyDescriptorGet","_classExtractFieldDescriptor","_classPrivateFieldSet","_classApplyDescriptorSet","_classPrivateFieldInitSpec","_checkPrivateRedeclaration","privateCollection","globalState","restoreActiveElement","returnFocus","restoreFocusTimeout","previousActiveElement","scrollTo","swalClasses","iconTypes","icon","consolePrefix","capitalizeFirstLetter","previousWarnOnceMessages","warnAboutDeprecation","deprecatedParam","useInstead","warnOnce","callIfFunction","hasToPromiseFn","asPromise","getContainer","container","elementBySelector","selectorString","elementByClass","getPopup","getIcon","getHtmlContainer","getImage","image","getProgressSteps","getValidationMessage","getConfirmButton","confirm","getCancelButton","getDenyButton","deny","getLoader","loader","getActions","getFooter","footer","getTimerProgressBar","getCloseButton","getFocusableElements","focusableElementsWithTabindex","focusableElementsWithTabindexSorted","tabindexA","tabindexB","otherFocusableElements","otherFocusableElementsFiltered","isVisible$1","isModal","hasClass","shown","isToast","toast","setInnerHtml","parsed","DOMParser","parseFromString","HTMLVideoElement","HTMLAudioElement","cloneNode","applyCustomClass","showClass","removeCustomClasses","getInput$1","inputClass","checkbox","radio","range","focusInput","toggleClass","condition","getDirectChildByClass","applyNumericalStyle","removeProperty","show","hide","showWhenInnerHtmlPresent","toggle","innerHTML","offsetWidth","offsetHeight","getClientRects","isScrollable","clientHeight","hasCssAnimation","animDuration","getPropertyValue","transDuration","animateTimerProgressBar","timerProgressBar","isNodeEnv","sweetHTML","file","textarea","resetValidationMessage$1","currentInstance","resetValidationMessage","oldContainerExisted","oldContainer","resetOldContainer","getTarget","setupAccessibility","direction","rtl","setupRTL","rangeOutput","oninput","onchange","addInputChangeListeners","parseHtmlToContainer","handleObject","jquery","handleJqueryElem","animationEndEvent","testEl","webkitAnimation","renderActions","showDenyButton","showCancelButton","renderButtons","confirmButton","denyButton","renderButton","handleButtonsStyling","buttonsStyling","styled","confirmButtonColor","backgroundColor","denyButtonColor","cancelButtonColor","reverseButtons","loaderHtml","button","buttonType","buttonName","renderContainer","handleBackdropParam","handlePositionParam","center","handleGrowParam","grow","privateProps","innerParams","domCache","inputClasses","showInput","renderInputType","inputContainer","getInputContainer","inputAutoFocus","setAttributes","inputAttributes","attr","attrName","removeAttributes","setCustomClass","setInputPlaceholder","inputPlaceholder","setInputLabel","prependTo","inputLabel","labelClass","insertAdjacentElement","inputType","checkAndSetInputValue","password","number","tel","week","month","rangeInput","checkboxContainer","initialPopupWidth","textareaWidth","marginLeft","marginRight","attributeFilter","renderContent","htmlContainer","rerender","renderInput","applyStyles","_Object$entries","_Object$entries$_i","setColor","adjustSuccessIconBackgroundColor","popupBackgroundColor","successIconParts","setContent","iconHtml","oldContent","newContent","iconContent","question","warning","iconColor","color","borderColor","_i2","_arr","addClasses$1","modal","createStepElement","stepEl","createLineElement","lineEl","progressStepsDistance","render","renderPopup","progressStepsContainer","progressSteps","currentProgressStep","renderProgressSteps","renderIcon","imageUrl","imageAlt","imageWidth","imageHeight","renderImage","titleText","renderTitle","closeButtonHtml","closeButtonAriaLabel","renderCloseButton","renderFooter","didRender","clickConfirm","_dom$getConfirmButton","DismissReason","freeze","esc","removeKeydownHandler","keydownTarget","keydownHandlerAdded","keydownHandler","keydownListenerCapture","setFocus","increment","_dom$getPopup","focusableElements","arrowKeysNextButton","arrowKeysPreviousButton","dismissWith","isComposing","keyCode","stopKeydownPropagation","handleEnter","handleTab","handleArrows","handleEsc","allowEnterKey","outerHTML","preventDefault","btnIndex","shiftKey","activeElement","buttonToFocus","HTMLButtonElement","privateMethods","swalPromiseResolve","swalPromiseReject","unsetAriaHidden","isSafariOrIOS","GestureEvent","lockBodyScroll","preventTouchMove","ontouchstart","shouldPreventTouchMove","ontouchmove","isStylus","isZoom","touches","touchType","previousBodyPadding","replaceScrollbarWithPadding","initialBodyOverflow","paddingRight","scrollDiv","scrollbarWidth","clientWidth","measureScrollbar","removePopupAndResetState","didClose","triggerDidCloseAndDispose","iosfix","undoIOSfix","removeBodyClasses","resolveValue","prepareResolveValue","triggerClosePopup","isAwaitingPromise","isDismissed","handleAwaitingPromise","hideClass","handlePopupAnimation","rejectPromise","_destroy","isConfirmed","isDenied","animationIsSupported","willClose","animatePopup","swalCloseEventFinishedCallback","showLoading","buttonToReplace","replaceButton","getCheckboxValue","getRadioValue","getFileValue","files","handleInputOptions","processInputOptions","inputOptions","populateSelectOptions","renderOption","optionLabel","optionValue","isSelected","inputOption","optgroup","formatInputOptions","populateRadioOptions","radioValue","radioLabel","radioInput","radioLabelElement","radios","hideLoading","handleInputValue","getInput","valueFormatted","handleConfirmOrDenyWithInput","inputAutoTrim","getInputValue","inputValidator","handleInputValidator","checkValidity","enableButtons","showValidationMessage","validationMessage","disableInput","enableInput","showLoaderOnDeny","preDeny","preDenyValue","rejectWith","succeedWith","showLoaderOnConfirm","preConfirm","preConfirmValue","showRelatedButton","getElementsByClassName","setButtonsDisabled","buttons","setInputDisabled","disableButtons","inputerror","allowOutsideClick","confirmButtonText","confirmButtonAriaLabel","denyButtonText","denyButtonAriaLabel","cancelButtonText","cancelButtonAriaLabel","focusConfirm","focusDeny","focusCancel","returnInputValueOnDeny","willOpen","didOpen","didDestroy","scrollbarPadding","updatableParams","deprecatedParams","toastIncompatibleParams","isValidParameter","paramName","isUpdatableParameter","isDeprecatedParameter","checkIfParamIsValid","checkIfToastParamIsValid","checkIfParamIsDeprecated","isDeprecated","validUpdatableParams","filterValidParams","updatedParams","defineProperties","disposeSwal","disposeWeakMaps","unsetWeakMaps","disableLoading","closePopup","closeModal","closeToast","instanceMethods","handleToastClick","onclick","isAnyButtonShown","ignoreOutsideClick","handleModalMousedown","onmousedown","onmouseup","handleContainerMousedown","handleModalClick","isElement","isJqueryElement","stopTimer","stopTimerProgressBar","timerProgressBarWidth","timerProgressBarFullWidth","resumeTimer","remaining","bodyClickListenerAdded","clickHandlers","bodyClickListener","fire","staticMethods","argsToParams","bindClickHandler","clickCancel","_dom$getCancelButton","clickDeny","_dom$getDenyButton","enableLoading","_len","_key","getIconContent","getInputLabel","getTimerLeft","increaseTimer","ms","increase","isTimerRunning","isRunning","isVisible","mixin","mixinParams","MixinSwal","_inherits","subClass","superClass","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","priorityMixinParams","toggleTimer","running","Timer","started","swalStringParams","getSwalParams","templateContent","swalParams","showWarningsForAttributes","getSwalFunctionParams","swalFunctions","getSwalButtons","swalButtons","getSwalImage","getSwalIcon","getSwalInput","getSwalStringParams","paramNames","showWarningsForElements","allowedElements","allowedAttributes","attribute","openPopup","overflowY","addClasses","setScrollingVisibility","fixScrollContainer","swalOpenAnimationFinished","iOSfix","defaultInputValidators","string","setParameters","setDefaultInputValidators","validateCustomTargetElement","_promise","SweetAlert","outerParams","_main","showWarningsForParams","prepareParams","populateDomCache","swalPromise","onFulfilled","onFinally","finally","dismiss","handleConfirmButtonClick","handleDenyButtonClick","handleCancelButtonClick","handlePopupClick","addKeydownHandler","handleInputOptionsAndValue","setupTimer","initFocus","templateParams","getTemplateParams","blurActiveElement","focusButton","language","initiationDate","pointerEvents","ukrainianAnthem","src","loop","_currentInstance","default","Sweetalert2","swal","sweetAlert","getElementsByTagName","tokens","stateChangeExpr","animateChild","stagger","_position","_onStart","triggerMicrotask","AnimationGroupPlayer","_players","doneCount","destroyCount","startCount","timeAtPosition","longestPlayer","longestSoFar","ID_DELIMITER","addAriaReferencedId","getAriaReferenceIds","existingId","removeAriaReferencedId","filteredIds","CDK_DESCRIBEDBY_ID_PREFIX","CDK_DESCRIBEDBY_HOST_ATTRIBUTE","AriaDescriber","_document","_platform","_messageRegistry","_messagesContainer","APP_ID","describe","_canBeDescribed","setMessageId","messageElement","referenceCount","_createMessageElement","_isElementDescribedByMessage","_addMessageReference","removeDescription","_isElementNode","_removeMessageReference","registeredMessage","_deleteMessageElement","describedElements","_removeCdkDescribedByReferenceIds","_createMessagesContainer","containerClassName","serverContainers","messagesContainer","visibility","isBrowser","originalReferenceIds","referenceIds","messageId","trimmedMessage","ariaLabel","ɵprov","serviceId","ListKeyManager","_items","_activeItemIndex","_activeItem","_wrap","_letterKeyStream","_typeaheadSubscription","_vertical","_allowedModifierKeys","_homeAndEnd","_pageUpAndDown","delta","_skipPredicateFn","_pressedLetters","tabOut","QueryList","_itemChangesSubscription","newItems","newIndex","toArray","skipPredicate","withWrap","shouldWrap","withVerticalOrientation","withHorizontalOrientation","_horizontal","withAllowedModifierKeys","withTypeAhead","debounceInterval","letter","inputString","items","_getItemsArray","getLabel","setActiveItem","cancelTypeahead","withHomeAndEnd","withPageUpDown","previousActiveItem","updateActiveItem","onKeydown","isModifierAllowed","TAB","DOWN_ARROW","setNextItemActive","UP_ARROW","setPreviousItemActive","RIGHT_ARROW","LEFT_ARROW","HOME","setFirstItemActive","END","setLastItemActive","PAGE_UP","targetIndex","_setActiveItemByIndex","PAGE_DOWN","itemsLength","hasModifierKey","toLocaleUpperCase","A","Z","ZERO","NINE","fromCharCode","activeItemIndex","activeItem","isTyping","_setActiveItemByDelta","itemArray","_setActiveInWrapMode","_setActiveInDefaultMode","fallbackDelta","ActiveDescendantKeyManager","setInactiveStyles","setActiveStyles","FocusKeyManager","_origin","setFocusOrigin","InteractivityChecker","isDisabled","hasGeometry","isTabbable","frameElement","getFrameElement","getWindow","defaultView","getTabIndexValue","tabIndexValue","WEBKIT","IOS","isPotentiallyTabbableIOS","FIREFOX","tabIndex","isFocusable","isPotentiallyFocusable","isHiddenInput","isInputElement","isNativeFormElement","isAnchorWithHref","isAnchorElement","hasValidTabIndex","ignoreVisibility","FocusTrap","_enabled","_startAnchor","_endAnchor","_toggleAnchorTabIndex","_checker","_ngZone","deferAnchors","_hasAttached","startAnchorListener","focusLastTabbableElement","endAnchorListener","focusFirstTabbableElement","attachAnchors","startAnchor","endAnchor","_createAnchor","focusInitialElementWhenReady","_executeOnStable","focusInitialElement","focusFirstTabbableElementWhenReady","focusLastTabbableElementWhenReady","_getRegionBoundary","bound","markers","_getFirstTabbableElement","_getLastTabbableElement","redirectToElement","focusableChild","hasAttached","tabbableChild","anchor","isEnabled","toggleAnchors","isStable","onStable","FocusTrapFactory","deferCaptureElements","CdkTrapFocus","focusTrap","coerceBooleanProperty","autoCapture","_autoCapture","_elementRef","_focusTrapFactory","_previouslyFocusedElement","nativeElement","ngAfterContentInit","_captureFocus","ngDoCheck","ngOnChanges","autoCaptureChange","firstChange","_getFocusedElementPierceShadowDom","exportAs","isFakeMousedownFromScreenReader","isFakeTouchstartFromScreenReader","touch","identifier","radiusX","radiusY","INPUT_MODALITY_DETECTOR_OPTIONS","INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS","ignoreKeys","ALT","CONTROL","MAC_META","META","SHIFT","modalityEventListenerOptions","normalizePassiveListenerOptions","InputModalityDetector","mostRecentModality","_modality","ngZone","_mostRecentTarget","_lastTouchMs","_onKeydown","_options","_getEventTarget","_onMousedown","_onTouchstart","modalityDetected","modalityChanged","LIVE_ANNOUNCER_ELEMENT_TOKEN","LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY","LIVE_ANNOUNCER_DEFAULT_OPTIONS","uniqueIds","LiveAnnouncer","elementToken","_defaultOptions","_liveElement","_createLiveElement","announce","politeness","_previousTimeout","_exposeAnnouncerToModals","_currentPromise","_currentResolve","elementClass","previousElements","liveEl","modals","ariaOwns","FOCUS_MONITOR_DEFAULT_OPTIONS","captureEventListenerOptions","FocusMonitor","_inputModalityDetector","_windowFocused","_originFromTouchInteraction","_elementInfo","_monitoredElementCount","_rootNodeFocusListenerCount","_windowFocusListener","_windowFocusTimeoutId","_stopInputModalityDetector","_rootNodeFocusAndBlurListener","_onFocus","_onBlur","_detectionMode","detectionMode","checkChildren","coerceElement","rootNode","_getShadowRoot","_getDocument","cachedInfo","_registerGlobalListeners","stopMonitoring","elementInfo","_setClasses","_removeGlobalListeners","focusVia","_getClosestElementsInfo","currentElement","_originChanged","_setOrigin","_info","_getWindow","_getFocusOrigin","focusEventTarget","_shouldBeAttributedToTouch","_lastFocusOrigin","_isLastInteractionFromInputLabel","isFromInteraction","_originTimeoutId","relatedTarget","_emitOrigin","rootNodeFocusListeners","modality","mostRecentTarget","CdkMonitorFocus","_focusMonitor","_focusOrigin","cdkFocusChange","EventEmitter","focusOrigin","ngAfterViewInit","_monitorSubscription","outputs","BLACK_ON_WHITE_CSS_CLASS","WHITE_ON_BLACK_CSS_CLASS","HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS","HighContrastModeDetector","_breakpointSubscription","BreakpointObserver","_hasCheckedHighContrastMode","_applyBodyHighContrastModeCssClasses","getHighContrastMode","testElement","documentWindow","computedStyle","computedColor","bodyClasses","A11yModule","highContrastModeDetector","ObserversModule","DIR_DOCUMENT","DIR_DOCUMENT_FACTORY","RTL_LOCALE_PATTERN","Directionality","_resolveDirectionality","dir","BidiModule","coerceNumberProperty","fallbackValue","_isNumberValue","coerceArray","coerceCssPixelValue","elementOrRef","ElementRef","coerceStringArray","sourceValues","sourceValue","trimmedString","DataSource","isDataSource","_DisposeViewRepeaterStrategy","applyChanges","viewContainerRef","itemContextFactory","itemValueResolver","itemViewChanged","forEachOperation","adjustedPreviousIndex","currentIndex","operation","previousIndex","insertContext","createEmbeddedView","templateRef","move","detach","_RecycleViewRepeaterStrategy","viewCacheSize","_viewCache","_insertView","viewArgsFactory","_detachAndCacheView","_moveView","cachedView","_insertViewFromCache","$implicit","viewArgs","detachedView","_maybeCacheView","insert","SelectionModel","_selected","_selection","_multiple","initiallySelectedValues","_emitChanges","compareWith","_deselectedToEmit","_selectedToEmit","_markSelected","_verifyValueAssignment","_hasQueuedChanges","_emitChangeEvent","deselect","_unmarkSelected","setSelection","oldValues","newSelectedSet","flushEvent","_unmarkAll","_getConcreteValue","isMultipleSelection","added","selectedValue","UniqueSelectionDispatcher","_listeners","registered","_VIEW_REPEATER_STRATEGY","BACKSPACE","ENTER","ESCAPE","SPACE","DELETE","modifiers","altKey","ctrlKey","metaKey","mediaQueriesForWebkitCompatibility","mediaQueryStyleNode","MediaMatcher","_nonce","_matchMedia","matchMedia","noopMatchMedia","BLINK","createEmptyStyleRule","nonce","insertRule","CSP_NONCE","_mediaMatcher","_queries","_destroySubject","isMatched","splitQueries","mediaQuery","_registerQuery","mql","stateObservable","breakpointStates","breakpoints","output","queries","a1","a2","Breakpoints","XSmall","Small","Medium","Large","XLarge","Handset","Tablet","Web","HandsetPortrait","TabletPortrait","WebPortrait","HandsetLandscape","TabletLandscape","WebLandscape","MutationObserverFactory","ContentObserver","_mutationObserverFactory","_observedElements","_cleanupObserver","_observeElement","_unobserveElement","CdkObserveContent","_disabled","_unsubscribe","debounce","_debounce","_contentObserver","_currentSubscription","Y36","lG2","scrollBehaviorSupported","supportsScrollBehavior","BlockScrollStrategy","_viewportRuler","_previousHTMLStyles","_isEnabled","attach","enable","_canBeEnabled","_previousScrollPosition","getViewportScrollPosition","htmlStyle","bodyStyle","previousHtmlScrollBehavior","scrollBehavior","previousBodyScrollBehavior","getViewportSize","scrollWidth","CloseScrollStrategy","_scrollDispatcher","_config","_scrollSubscription","_detach","_overlayRef","overlayRef","scrolled","scrollable","overlayElement","getElementRef","_initialScrollPosition","scrollPosition","NoopScrollStrategy","isElementScrolledOutsideView","scrollContainers","containerBounds","bottom","right","isElementClippedByScrolling","scrollContainerRect","RepositionScrollStrategy","scrollThrottle","autoClose","overlayRect","ScrollStrategyOptions","block","reposition","OverlayConfig","scrollStrategy","hasBackdrop","backdropClass","disposeOnNavigation","configKeys","ConnectedOverlayPositionChange","connectionPair","scrollableViewProperties","BaseOverlayDispatcher","_attachedOverlays","OverlayKeyboardDispatcher","_keydownListener","overlays","_keydownEvents","keydownEvents","_isAttached","OverlayOutsideClickDispatcher","_cursorStyleIsSet","_pointerDownListener","_pointerDownEventTarget","_clickListener","_outsidePointerEvents","outsidePointerEvents","_addEventListeners","_cursorOriginalValue","cursor","OverlayContainer","_containerElement","getContainerElement","_createContainer","containerClass","_isTestEnvironment","oppositePlatformContainers","OverlayRef","_portalOutlet","_host","_pane","_keyboardDispatcher","_location","_outsideClickDispatcher","_animationsDisabled","_backdropElement","_backdropClick","_attachments","_detachments","_locationChanges","_backdropClickHandler","_backdropTransitionendHandler","_disposeBackdrop","_scrollStrategy","_positionStrategy","positionStrategy","backdropElement","portal","_previousHostParent","attachResult","_updateStackingOrder","_updateElementSize","_updateElementDirection","_togglePointerEvents","_attachBackdrop","_toggleClasses","dispose","detachBackdrop","detachmentResult","_detachContentWhenStable","isAttached","_disposeScrollStrategy","backdropClick","attachments","detachments","getConfig","updatePositionStrategy","updateSize","sizeConfig","setDirection","addPanelClass","classes","removePanelClass","getDirection","updateScrollStrategy","minWidth","minHeight","maxWidth","maxHeight","enablePointer","showingClass","backdropToDetach","_backdropTimeout","cssClasses","isAdd","boundingBoxClass","cssUnitPattern","FlexibleConnectedPositionStrategy","_preferredPositions","connectedTo","_overlayContainer","_lastBoundingBoxSize","_isPushed","_canPush","_growAfterOpen","_hasFlexibleDimensions","_positionLocked","_viewportMargin","_scrollables","_positionChanges","_resizeSubscription","_offsetX","_offsetY","_appliedPanelClasses","positionChanges","setOrigin","_validatePositions","_boundingBox","_isDisposed","_isInitialRender","_lastPosition","reapplyLastPosition","_clearPanelClasses","_resetOverlayElementStyles","_resetBoundingBoxStyles","_viewportRect","_getNarrowedViewportRect","_originRect","_getOriginRect","_overlayRect","_containerRect","originRect","viewportRect","containerRect","flexibleFits","fallback","pos","originPoint","_getOriginPoint","overlayPoint","_getOverlayPoint","overlayFit","_getOverlayFit","isCompletelyWithinViewport","_applyPosition","_canFitWithFlexibleDimensions","boundingBoxRect","_calculateBoundingBoxRect","visibleArea","bestFit","bestScore","fit","score","weight","_previousPushAmount","extendStyles","alignItems","justifyContent","lastPosition","withScrollableContainers","scrollables","withPositions","withViewportMargin","margin","withFlexibleDimensions","flexibleDimensions","withGrowAfterOpen","growAfterOpen","withPush","canPush","withLockedPosition","isLocked","withDefaultOffsetX","withDefaultOffsetY","withTransformOriginOn","_transformOriginSelector","originX","startX","_isRtl","endX","originY","overlayStartX","overlayStartY","overlayX","overlayY","point","rawOverlayRect","overlay","getRoundedBoundingClientRect","offsetX","_getOffset","offsetY","topOverflow","bottomOverflow","visibleWidth","_subtractOverflows","visibleHeight","fitsInViewportVertically","fitsInViewportHorizontally","availableHeight","availableWidth","getPixelValue","_pushOverlayOnScreen","overflowRight","overflowBottom","overflowTop","overflowLeft","pushX","pushY","_setTransformOrigin","_setOverlayElementStyles","_setBoundingBoxStyles","_addPanelClasses","_getScrollVisibility","changeEvent","xOrigin","yOrigin","transformOrigin","isRtl","smallestDistanceToViewportEdge","previousHeight","previousWidth","_hasExactPosition","hasExactPosition","hasFlexibleDimensions","_getExactOverlayY","_getExactOverlayX","transformString","horizontalStyleProperty","originBounds","overlayBounds","scrollContainerBounds","isOriginClipped","isOriginOutsideView","isOverlayClipped","isOverlayOutsideView","overflows","currentValue","currentOverflow","axis","cssClass","clientRect","wrapperClass","GlobalPositionStrategy","_cssPosition","_topOffset","_bottomOffset","_alignItems","_xPosition","_xOffset","_width","_height","centerHorizontally","centerVertically","parentStyles","shouldBeFlushHorizontally","shouldBeFlushVertically","xPosition","xOffset","marginTop","marginBottom","OverlayPositionBuilder","flexibleConnectedTo","nextUniqueId","Overlay","scrollStrategies","_componentFactoryResolver","_positionBuilder","_injector","_directionality","_animationsModuleType","_createHostElement","pane","_createPaneElement","portalOutlet","_createPortalOutlet","overlayConfig","_appRef","ApplicationRef","DomPortalOutlet","defaultPositionList","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY","CdkOverlayOrigin","elementRef","standalone","CdkConnectedOverlay","_updatePositionStrategy","_hasBackdrop","lockPosition","_lockPosition","_flexibleDimensions","_push","_overlay","scrollStrategyFactory","_dir","_backdropSubscription","_attachSubscription","_detachSubscription","_positionSubscription","viewportMargin","disableClose","positionChange","overlayKeydown","overlayOutsideClick","_templatePortal","TemplatePortal","_scrollStrategyFactory","_attachOverlay","_detachOverlay","_createOverlay","_buildConfig","_createPositionStrategy","currentPosition","_getFlexibleConnectedPositionStrategyOrigin","transformOriginSelector","takeWhile","inclusive","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY","OverlayModule","PortalModule","ScrollingModule","hasV8BreakIterator","Intl","v8BreakIterator","supportedInputTypes","Platform","_platformId","isPlatformBrowser","EDGE","TRIDENT","ANDROID","SAFARI","PLATFORM_ID","candidateInputTypes","getSupportedInputTypes","featureTestInput","supportsPassiveEvents","rtlScrollAxisType","shadowDomIsSupported","supportsPassiveEventListeners","scrollToFunction","getRtlScrollAxisType","scrollContainer","containerStyle","overflow","contentStyle","_supportsShadowDom","createShadowRoot","attachShadow","getRootNode","ShadowRoot","newActiveElement","__karma__","jasmine","jest","Mocha","Portal","_attachedHost","setAttachedHost","ComponentPortal","injector","componentFactoryResolver","projectableNodes","DomPortal","BasePortalOutlet","attachDomPortal","_attachedPortal","attachComponentPortal","attachTemplatePortal","_invokeDisposeFn","setDisposeFn","_disposeFn","outletElement","_defaultInjector","anchorNode","replaceChild","componentFactory","resolveComponentFactory","componentRef","createComponent","Injector","NULL","attachView","hostView","viewCount","detachView","_getComponentRootNode","viewContainer","viewRef","rootNodes","detectChanges","CdkPortalOutlet","_viewContainerRef","_isInitialized","attached","_getRootNode","attachedRef","_attachedRef","ref","qOj","ScrollDispatcher","_scrolled","_globalSubscription","_scrolledCount","elementScrolled","scrollableReference","auditTimeInMs","_addGlobalListener","_removeGlobalListener","ancestorScrolled","elementOrElementRef","ancestors","getAncestorScrollContainers","scrollingContainers","_subscription","_scrollableContainsElement","scrollableElement","CdkScrollable","scrollDispatcher","_elementScrolled","_applyScrollToOptions","measureScrollOffset","LEFT","RIGHT","ViewportRuler","_change","_changeListener","_viewportSize","_updateViewportSize","getViewportRect","documentRect","throttleTime","CdkScrollableModule","_DOM","getDOM","setRootDomAdapter","DomAdapter","PlatformLocation","historyGo","relativePosition","BrowserPlatformLocation","LOCATION_INITIALIZED","_doc","_history","getBaseHrefFromDOM","getBaseHref","onPopState","getGlobalEventTarget","port","newPath","pushState","replaceState","forward","back","go","getState","joinWithSlash","slashes","pathEndIdx","normalizeQueryParams","LocationStrategy","PathLocationStrategy","_platformLocation","_removeListenerFns","_baseHref","prepareExternalUrl","internal","includeHash","externalUrl","HashLocationStrategy","Location","locationStrategy","_urlChangeListeners","_urlChangeSubscription","_locationStrategy","_basePath","_stripOrigin","_stripIndexHtml","ev","normalize","isCurrentPathEqualTo","_stripBasePath","basePath","strippedUrl","_notifyUrlChangeListeners","onUrlChange","fnIndex","onThrow","onReturn","createLocation","ɵɵinject","Plural","Zero","One","Two","Few","Many","Other","FormStyle","Format","Standalone","TranslationWidth","Narrow","Abbreviated","Wide","Short","FormatWidth","Long","Full","NumberSymbol","Decimal","Group","List","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","NaN","TimeSeparator","CurrencyDecimal","CurrencyGroup","getLocaleDateFormat","locale","getLastDefinedValue","ɵfindLocaleData","ɵLocaleDataIndex","DateFormat","getLocaleTimeFormat","TimeFormat","getLocaleDateTimeFormat","dateTimeFormatData","DateTimeFormat","getLocaleNumberSymbol","symbol","NumberSymbols","getLocalePluralCase","ɵgetLocalePluralCase","checkFullData","ExtraData","LocaleId","extractTime","h","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","ShortGMT","Extended","DateType","FullYear","Month","Hours","Minutes","Seconds","FractionalSeconds","Day","TranslationType","DayPeriods","Days","Months","Eras","formatDate","timezone","toDate","isDate","createDate","parsedNb","isoStringToDate","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","getNamedFormat","part","dateTimezoneOffset","getTimezoneOffset","timezoneToOffset","convertTimezoneToLocal","reverseValue","addDateMinutes","setMinutes","getMinutes","dateFormatter","getDateFormatter","DATE_FORMATS","formatter","dateStrGetter","dateGetter","weekNumberingYearGetter","weekGetter","timeZoneGetter","newDate","localeId","getLocaleId","formatValue","shortTime","shortDate","formatDateTime","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","opt_values","padNumber","digits","minusSign","negWrap","neg","strNum","getDatePart","getFullYear","getMonth","getDate","getHours","getSeconds","getMilliseconds","getDay","formatFractionalSeconds","milliseconds","localeMinus","form","extended","getDateTranslation","getLocaleMonthNames","formStyle","months","MonthsFormat","MonthsStandalone","getLocaleDayNames","DaysFormat","DaysStandalone","currentHours","currentMinutes","getLocaleExtraDayPeriodRules","dayPeriods","getLocaleExtraDayPeriods","afterFrom","beforeTo","getLocaleDayPeriods","amPm","DayPeriodsFormat","DayPeriodsStandalone","getLocaleEraNames","erasData","ceil","JANUARY","THURSDAY","getThursdayThisWeek","datetime","monthBased","nbDaysBefore1stDayOfMonth","today","thisThurs","firstThurs","getFirstThursdayOfYear","firstDayOfYear","diff","requestedTimezoneOffset","NgLocalization","LOCALE_ID","NgLocaleLocalization","getPluralCategory","parseCookieValue","cookieStr","eqIndex","cookieName","cookieValue","decodeURIComponent","WS_REGEXP","EMPTY_ARRAY","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","initialClasses","klass","ngClass","rawClass","_updateState","_applyStateDiff","nextEnabled","touched","stateEntry","_toggleClass","NgForOfContext","ngForOf","even","odd","NgForOf","_ngForOf","_ngForOfDirty","ngForTrackBy","_trackByFn","_viewContainer","_template","_differs","_differ","ngForTemplate","_applyChanges","applyViewChange","ilen","forEachIdentityChange","ngTemplateContextGuard","NgIf","_context","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","_updateView","ngIfThen","assertTemplate","ngIfElse","ɵstringify","SwitchView","_templateRef","_created","enforceState","NgSwitch","_defaultViews","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","ngSwitch","_ngSwitch","_updateDefaultCases","_addCase","_addDefault","_matchCase","matched","useDefault","NgSwitchCase","_view","ngSwitchCase","NgSwitchDefault","NgPlural","_localization","_caseViews","ngPlural","addCase","switchView","switchValue","_clearViews","cases","ngLocalization","_activateView","_activeView","NgPluralCase","isANumber","$8M","NgStyle","_ngStyle","ngStyle","_setStyle","nameAndUnit","RendererStyleFlags2","DashCase","forEachRemovedItem","forEachAddedItem","forEachChangedItem","NgTemplateOutlet","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","ngTemplateOutletInjector","TTD","invalidPipeArgumentError","SubscribableStrategy","createSubscription","updateLatestValue","untracked","PromiseStrategy","_promiseStrategy","_subscribableStrategy","AsyncPipe","_latestValue","_obj","_strategy","_ref","_dispose","_selectStrategy","_updateLatestValue","ɵisPromise","ɵisSubscribable","markForCheck","DATE_PIPE_DEFAULT_TIMEZONE","DATE_PIPE_DEFAULT_OPTIONS","DatePipe","defaultTimezone","dateFormat","PLATFORM_BROWSER_ID","PLATFORM_SERVER_ID","platformId","isPlatformServer","ViewportScroller","ɵɵdefineInjectable","BrowserViewportScroller","setOffset","getScrollPosition","supportsScrolling","scrollToPosition","scrollToAnchor","elSelected","findAnchorFromDocument","documentResult","getElementsByName","createTreeWalker","treeWalker","NodeFilter","SHOW_ELEMENT","currentNode","nextNode","scrollToElement","setHistoryScrollRestoration","scrollRestoration","XhrFactory","HttpHandler","HttpBackend","normalizedNames","lazyUpdate","lazyInit","maybeSetNormalizedName","setHeaderEntries","lcName","copyFrom","applyUpdate","existing","headerValues","HttpUrlEncodingCodec","encodeKey","standardEncoding","encodeValue","decodeKey","decodeValue","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","valueToString","cloneFrom","paramParser","rawParams","codec","eqIdx","appendAll","eKey","idx","HttpContext","isArrayBuffer","ArrayBuffer","isBlob","isFormData","HttpRequest","third","fourth","reportProgress","withCredentials","mightHaveBody","urlWithParams","qIdx","serializeBody","isUrlSearchParams","URLSearchParams","detectContentTypeHeader","setHeaders","setParams","HttpEventType","Sent","UploadProgress","ResponseHeader","DownloadProgress","Response","User","defaultStatus","defaultStatusText","statusText","HttpHeaderResponse","HttpErrorResponse","addBody","events$","res$","jsonp","callbackParam","patch","_angular_core__WEBPACK_IMPORTED_MODULE_4__","interceptorChainEndFn","finalHandlerFn","adaptLegacyInterceptorToChain","chainTailFn","interceptor","initialRequest","downstreamRequest","HTTP_INTERCEPTOR_FNS","HTTP_ROOT_INTERCEPTOR_FNS","legacyInterceptorFnFactory","chain","reduceRight","pendingTasks","ɵInitialRenderPendingTasks","taskId","HttpInterceptorHandler","backend","dedupedInterceptorFns","nextSequencedFn","interceptorFn","chainedInterceptorFn","runInContext","XSSI_PREFIX","HttpXhrBackend","xhrFactory","ɵloadImpl","detectedType","reqBody","headerResponse","partialFromXhr","getAllResponseHeaders","getResponseUrl","responseURL","getResponseHeader","onLoad","originalBody","sentHeaders","onDownProgress","progressEvent","lengthComputable","partialText","onUpProgress","progress","upload","abort","XSRF_ENABLED","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfTokenExtractor","HttpXsrfCookieExtractor","platform","lastCookieString","lastToken","parseCount","getToken","cookieString","ɵparseCookieValue","xsrfInterceptorFn","lcUrl","headerName","HttpFeatureKind","Interceptors","LegacyInterceptors","CustomXsrfConfiguration","NoXsrfProtection","JsonpSupport","RequestsMadeViaParent","Fetch","provideHttpClient","useExisting","feature","ɵproviders","LEGACY_INTERCEPTOR_FN","withInterceptorsFromDi","makeHttpFeature","ɵkind","getClosureSafeProperty","objWithPropertyToExtract","fillProperties","overriddenName","newLineIndex","concatStringsWithSpace","__forward_ref__","forwardRef","forwardRefFn","resolveForwardRef","isForwardRef","isEnvironmentProviders","XSS_SECURITY_URL","RuntimeError","formatRuntimeError","renderStringify","throwProviderNotFoundError","injectorName","assertDefined","actual","expected","comparison","ɵɵdefineInjector","getInjectableDef","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","isInjectable","getInjectorDef","NG_INJ_DEF","NG_INJECTOR_DEF","ngInjectableDef","ngInjectorDef","InjectFlags","Default","Host","Self","SkipSelf","_injectImplementation","getInjectImplementation","setInjectImplementation","impl","previous","injectRootLimpMode","notFoundValue","injectableDef","_global","_desc","ngMetadataName","__NG_ELEMENT_ID__","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NEW_LINE","_currentInjector","setCurrentInjector","former","injectInjectorOnly","convertToBitFlags","skipSelf","injectArgs","getInjectFlag","attachInjectFlag","decorator","noSideEffects","ChangeDetectionStrategy","OnPush","ViewEncapsulation$1","Emulated","ShadowDom","EMPTY_OBJ","NG_COMP_DEF","ɵcmp","NG_DIR_DEF","ɵdir","NG_PIPE_DEF","ɵpipe","NG_MOD_DEF","NG_FACTORY_DEF","NG_ELEMENT_ID","NG_ENV_ID","__NG_ENV_ID__","classIndexOf","classToSearch","startingIndex","foundIndex","setUpAttributes","native","namespaceURI","attrVal","isAnimationProp","isNameOnlyAttributeMarker","marker","mergeHostAttrs","dst","srcMarker","mergeHostAttribute","markerInsertPosition","dstValue","NG_TEMPLATE_SELECTOR","isCssClassMatching","cssClassToMatch","isProjectionMode","isImplicitAttrsSection","isInlineTemplate","tNode","hasTagAndTypeMatch","currentSelector","isNodeMatchingSelector","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","isPositive","selectorAttrValue","attrIndexInNode","findAttrIndexInNode","nodeAttrValue","compareAgainstClassName","bindingsMode","maybeAttrName","matchTemplateAttribute","isNodeMatchingSelectorList","isSelectorInSelectorList","selectorListLoop","currentSelectorInList","maybeWrapInNotSelector","isNegativeMode","stringifyCSSSelector","currentChunk","valueOrMarker","attrValue","ɵɵdefineComponent","componentDefinition","baseDef","getNgDirectiveDef","ngContentSelectors","onPush","changeDetection","directiveDefs","pipeDefs","dependencies","getStandaloneInjector","signals","schemas","tView","initFeatures","extractDefListOrFactory","getComponentId","componentDef","hashSelectors","hostVars","hostAttrs","getOwnPropertyNames","contentQueries","viewQuery","char","imul","ɵɵsetComponentScope","directives","pipes","extractDirectiveDef","getComponentDef","getDirectiveDef","nonNull","ɵɵdefineNgModule","declarations","transitiveCompileScopes","invertObject","secondary","newLookup","minifiedKey","publicName","declaredName","ɵɵdefineDirective","directiveDefinition","ɵɵdefinePipe","pipeDef","getPipeDef$1","isStandalone","getNgModuleDef","throwNotFound","ngModuleDef","declaredInputs","providersResolver","hostBindings","inputTransforms","inputConfig","setInput","findHostDirectiveDefs","hostDirectives","defExtractor","dep","HOST","TVIEW","FLAGS","PARENT","NEXT","DESCENDANT_VIEWS_TO_REFRESH","T_HOST","CLEANUP","CONTEXT","INJECTOR$1","ENVIRONMENT","RENDERER","CHILD_HEAD","CHILD_TAIL","DECLARATION_VIEW","DECLARATION_COMPONENT_VIEW","DECLARATION_LCONTAINER","PREORDER_HOOK_FLAGS","QUERIES","ID","EMBEDDED_VIEW_INJECTOR","ON_DESTROY_HOOKS","HYDRATION","REACTIVE_TEMPLATE_CONSUMER","REACTIVE_HOST_BINDING_CONSUMER","HEADER_OFFSET","TYPE","HAS_TRANSPLANTED_VIEWS","NATIVE","MOVED_VIEWS","CONTAINER_HEADER_OFFSET","isLView","isLContainer","isContentQueryHost","isComponentHost","componentOffset","isDirectiveHost","isComponentDef","isRootView","getFactoryDef","SIGNAL","defaultEquals","is","activeConsumer","inNotificationPhase","setActiveConsumer","consumer","REACTIVE_NODE","dirty","producerNode","producerLastReadVersion","producerIndexOfThis","nextProducerIndex","liveConsumerNode","liveConsumerIndexOfThis","consumerAllowSignalWrites","consumerIsAlwaysLive","producerMustRecompute","producerRecomputeValue","consumerMarkedDirty","producerAccessed","assertConsumerNode","consumerIsLive","producerRemoveLiveConsumerAtIndex","producerAddLiveConsumer","producerUpdateValueVersion","consumerPollProducersForChange","producerNotifyConsumers","consumerMarkDirty","producerUpdatesAllowed","consumerBeforeComputation","consumerAfterComputation","prevConsumer","producer","seenVersion","consumerDestroy","indexOfThis","assertProducerNode","lastIdx","idxProducer","computed","computation","COMPUTED_NODE","equal","ERRORED","UNSET","COMPUTING","throwInvalidWriteToSignalErrorFn","defaultThrowError","throwInvalidWriteToSignalError","postSignalSetFn","signal","initialValue","SIGNAL_NODE","signalFn","signalSetFn","signalUpdateFn","mutate","signalMutateFn","asReadonly","signalAsReadonlyFn","readonlyFn","signalValueChanged","updater","mutator","nonReactiveReadsFn","NOOP_CLEANUP_FN","WATCH_NODE","hasRun","cleanupFn","SimpleChange","isFirstChange","ɵɵNgOnChangesFeature","NgOnChangesFeatureImpl","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","privateName","setSimpleChangesStore","SIMPLE_CHANGES_STORE","previousChange","ngInherit","profiler","hookOrListener","SVG_NAMESPACE","unwrapRNode","getNativeByIndex","lView","getNativeByTNode","getTNode","getComponentLViewByIndex","nodeIndex","slotValue","getConstant","resetPreOrderHookFlags","markViewForRefresh","updateViewsToRefresh","clearViewRefreshFlag","amount","viewOrContainer","storeLViewOnDestroy","onDestroyCallback","instructionState","lFrame","createLFrame","bindingsEnabled","skipHydrationRootTNode","getBindingsEnabled","isInSkipHydrationBlock$1","getLView","getTView","ɵɵrestoreView","viewToRestore","contextLView","ɵɵresetView","getCurrentTNode","currentTNode","getCurrentTNodePlaceholderOk","setCurrentTNode","isParent","isCurrentTNodeParent","setCurrentTNodeAsNotParent","getBindingRoot","bindingRootIndex","bindingStartIndex","getBindingIndex","bindingIndex","nextBindingIndex","incrementBindingIndex","setBindingRootForHostBindings","currentDirectiveIndex","setCurrentDirectiveIndex","getCurrentDirectiveDef","tData","getCurrentQueryIndex","setCurrentQueryIndex","getDeclarationTNode","declTNode","enterDI","parentTNode","parentLView","allocLFrame","enterView","newLFrame","inI18n","currentLFrame","childLFrame","selectedIndex","elementDepthCount","currentNamespace","leaveViewLight","oldLFrame","leaveDI","leaveView","getSelectedIndex","setSelectedIndex","getSelectedTNode","ɵɵnamespaceSVG","ɵɵnamespaceHTML","namespaceHTMLInternal","_wasLastNodeCreated","wasLastNodeCreated","lastNodeWasCreated","registerPostOrderHooks","directiveStart","directiveEnd","lifecycleHooks","ngAfterContentChecked","ngAfterViewChecked","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","executeCheckHooks","hooks","callHooks","executeInitAndCheckHooks","initPhase","incrementInitPhaseFlags","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","callHook","callHookInternal","directive","hook","isInitHook","NO_PARENT_INJECTOR","NodeInjectorFactory","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","hasParentInjector","parentLocation","getParentInjectorIndex","getParentInjectorView","viewOffset","getParentInjectorViewOffset","parentView","includeViewProviders","setIncludeViewProviders","BLOOM_MASK","BLOOM_BUCKET_BITS","nextNgElementId","NOT_FOUND","getOrCreateNodeInjectorForNode","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","parentIndex","parentData","declarationViewOffset","lViewCursor","getTNodeFromLView","diPublicInInjector","bloomAdd","bloomHash","notFoundValueOrThrow","lookupTokenUsingModuleInjector","moduleInjector","previousInjectImplementation","getOrCreateInjectable","embeddedInjectorValue","lookupTokenUsingEmbeddedInjector","currentLView","nodeInjectorValue","lookupTokenUsingNodeInjector","embeddedViewInjector","embeddedViewInjectorValue","bloomHashBitOrFactory","tokenId","createNodeInjector","previousTView","hostTElementNode","shouldSearchParent","bloomHasToken","searchTokensOnInjector","currentTView","injectableIdx","locateDirectiveOrProvider","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","endIndex","providerTokenOrDef","dirDef","isFactory","throwCyclicDependencyError","depPath","stringifyForError","previousIncludeViewProviders","registerPreOrderHooks","directiveIndex","directiveDef","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","injectorView","isFirstHostTNode","NodeInjector","_tNode","_lView","ɵɵgetInheritedFactory","ownConstructor","ownFactory","getFactoryOf","objectPrototype","tViewType","ɵɵinjectAttribute","attrNameToInject","injectAttributeImpl","attrsLength","PARAMETERS","makeParamDecorator","parentClass","metaCtor","makeMetadataCtor","propName","ParamDecoratorFactory","annotationInstance","ParamDecorator","annotation","unusedKey","annotationCls","deepForEach","addToArray","removeFromArray","newArray","keyValueArraySet","keyValueArray","keyValueArrayIndexOf","arrayInsert2","value1","value2","keyValueArrayGet","_arrayIndexOfSorted","middle","Inject","hasInSkipHydrationBlockFlag","Important","COMMENT_DISALLOWED","COMMENT_DELIMITER","COMMENT_DELIMITER_ESCAPED","TRACKED_LVIEWS","uniqueIdCounter","MONKEY_PATCH_KEY_NAME","attachPatchData","registerLView","_icuContainerIterate","icuContainerIterate","tIcuContainerNode","getLViewParent","getFirstLContainer","getNearestLContainer","getNextLContainer","applyToElementOrContainer","lNodeToHandle","beforeNode","lContainer","isComponent","rNode","nativeAppendChild","nativeInsertBefore","nativeRemoveNode","applyContainer","parentRElement","applyView","createTextNode","updateTextNode","createCommentNode","escapeCommentText","createElementNode","detachMovedView","declarationContainer","movedViews","declarationViewIndex","removeIndex","indexInContainer","viewToDetach","declarationLContainer","removedLView","removeViewFromDOM","lQueries","destroyLView","destroyViewTree","rootView","lViewOrLContainer","cleanUpView","firstView","executeOnDestroys","toCall","callContext","processCleanups","tCleanup","cleanup","lCleanup","targetIdx","destroyHooksFn","unregisterLView","getParentRElement","getClosestRElement","nativeAppendOrInsertBefore","nativeParentNode","getInsertInFrontOfRNode","_getInsertInFrontOfRNodeWithI18n","_processI18nInsertBefore","policy$1","policy","getInsertInFrontOfRNodeWithNoI18n","childRNode","childTNode","parentRNode","getFirstNativeNode","tNodeType","getBeforeNodeForView","elIcuContainerChild","rNodeOrLContainer","projectionNodes","getProjectionNodes","projection","viewIndexInContainer","nextViewIndex","firstTNodeOfView","nativeParent","nativeRemoveChild","applyNodes","isProjection","rawSlotValue","nextRNode","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","nodeToProject","projectedComponentLView","writeDirectClass","setupStaticAttributes","mergedAttrs","writeDirectStyle","trustedHTMLFromString","getPolicy$1","trustedTypes","createPolicy","createHTML","createScript","createScriptURL","setDocument","getDocument","getPolicy","trustedHTMLFromStringBypass","trustedScriptURLFromStringBypass","SafeValueImpl","changingThisBreaksApplicationSecurity","SafeHtmlImpl","getTypeName","SafeStyleImpl","SafeScriptImpl","SafeUrlImpl","SafeResourceUrlImpl","unwrapSafeValue","allowSanitizationBypassAndThrow","actualType","getSanitizationBypassType","bypassSanitizationTrustHtml","trustedHtml","bypassSanitizationTrustStyle","trustedStyle","bypassSanitizationTrustScript","trustedScript","bypassSanitizationTrustUrl","trustedUrl","bypassSanitizationTrustResourceUrl","trustedResourceUrl","DOMParserHelper","inertDocumentHelper","getInertBodyElement","InertDocumentHelper","defaultDoc","inertDocument","templateEl","SAFE_URL_PATTERN","_sanitizeUrl","tagSet","sets","VOID_ELEMENTS","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","VALID_ELEMENTS","URI_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","SanitizingHtmlSerializer","sanitizedSomething","buf","sanitizeChildren","traverseContent","startElement","chars","nodeValue","endElement","checkClobberedElement","elAttrs","elAttr","lower","encodeEntities","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","inertBodyHelper","_sanitizeHtml","unsafeHtmlInput","inertBodyElement","getInertBodyHelper","isDOMParserAvailable","unsafeHtml","mXSSAttempts","parsedHtml","getTemplateContent","isTemplateElement","STYLE","SCRIPT","RESOURCE_URL","ɵɵsanitizeHtml","getSanitizer","ɵɵsanitizeUrl","unsafeUrl","ɵɵsanitizeResourceUrl","unsafeResourceUrl","ɵɵtrustConstantHtml","ɵɵsanitizeUrlOrResourceUrl","getUrlSanitizer","INJECTOR","INJECTOR_DEF_TYPES","NullInjector","importProvidersFrom","internalImportProvidersFrom","ɵfromNgModule","checkForStandaloneCmp","providersOut","dedup","injectorTypesWithProviders","collectProviders","internalSource","walkProviderTree","processInjectorTypesWithProviders","typesWithProviders","deepForEachProvider","parents","defType","injDef","cmpDef","isDuplicate","importTypesWithProviders","imported","defProviders","injectorType","USE_VALUE$1","isValueProvider","isTypeProvider","INJECTOR_SCOPE","NOT_YET","CIRCULAR","NULL_INJECTOR","getNullInjector","EnvironmentInjector","R3Injector","scopes","records","_ngOnDestroyHooks","_onDestroyHooks","forEachSingleProvider","processProvider","makeRecord","injectorDefTypes","assertNotDestroyed","onDestroyHooks","removeOnDestroy","previousInjector","couldBeInjectableType","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","catchInjectorError","injectorErrorName","tokenPath","resolveInjectorInitializers","initializers","initializer","providerToRecord","providerToFactory","multiRecord","hasOnDestroy","destroyCBIdx","getUndecoratedInjectableFactory","paramLength","inheritedInjectableDef","getInheritedInjectableDef","ngModuleType","unwrappedProvider","isFactoryProvider","isExistingProvider","classRef","hasDeps","DEFAULT_APP_ID","PLATFORM_INITIALIZER","_retrieveHydrationInfoImpl","retrieveHydrationInfo","ComponentRef$1","ComponentFactory$1","_NullComponentFactoryResolver","noComponentFactoryError","ComponentFactoryResolver$1","injectElementRef","createElementRef","unwrapElementRef","Renderer2","injectRenderer2","nodeAtIndex","Sanitizer","Version","full","major","minor","VERSION","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","assertInInjectionContext","debugFn","getCurrentInjector","createInjector","additionalProviders","createInjectorWithoutInjectorInstances","getOriginalError","ErrorHandler","_console","_findOriginalError","DestroyRef","injectDestroyRef","NodeInjectorDestroyRef","removeLViewOnDestroy","_wrapInTimeout","EventEmitter_","isAsync","__isAsync","nextFn","errorFn","completeFn","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","hasPendingMacrotasks","hasPendingMicrotasks","onUnstable","onMicrotaskEmpty","assertZonePatched","_nesting","_outer","_inner","TaskTrackingZoneSpec","longStackTraceZoneSpec","lastRequestAnimationFrameId","nativeRequestAnimationFrame","getNativeRequestAnimationFrame","nativeCancelAnimationFrame","unpatchedRequestAnimationFrame","unpatchedCancelAnimationFrame","forkInnerZoneWithAngularBehavior","delayChangeDetectionForEventsDelegate","delayChangeDetectionForEvents","isCheckStableRunning","fakeTopEventTask","scheduleEventTask","updateMicroTaskStatus","checkStable","invoke","isAngularZone","onInvokeTask","applyThis","applyArgs","shouldBeIgnoredByZone","__ignore_ng_zone__","invokeTask","onEnter","onLeave","onInvoke","onHasTask","hasTaskState","hasTask","_hasPendingMicrotasks","microTask","macroTask","onHandleError","isInAngularZone","assertInAngularZone","assertNotInAngularZone","runTask","EMPTY_PAYLOAD","cancelTask","runGuarded","NoopNgZone","ZONE_IS_STABLE_OBSERVABLE","isStableFactory","_stable","isCurrentlyStable","stableSub","unstableSub","merge$1","maybeUnwrapFn","AfterRenderEventManager","renderDepth","validateBegin","markViewDirty","PRESERVE_HOST_CONTENT","currentConsumer","getReactiveLViewConsumer","slot","getOrCreateCurrentLViewConsumer","commitLViewConsumerIfHasProducers","createLViewConsumer","REACTIVE_LVIEW_CONSUMER_NODE","NO_CHANGE","ɵɵadvance","selectIndexInternal","checkNoChangesMode","ɵɵdirectiveInject","ɵɵinvalidFactory","createLView","tHostNode","hydrationInfo","getUniqueLViewId","getOrCreateTNode","createTNodeAtIndex","createTNode","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","localNames","initialInputs","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","isInI18nBlock","getCurrentParentTNode","allocExpando","numSlotsToAlloc","allocIdx","executeTemplate","templateFn","prevSelectedIndex","isUpdatePhase","effectiveConsumer","executeContentQueries","createDirectivesInstances","instantiateAllDirectives","addComponentLogic","hostTNode","getOrCreateComponentTView","lViewFlags","componentView","addToViewTree","rendererFactory","setInputsFromAttrs","invokeDirectivesHostBindings","saveResolvedLocalsInData","viewData","localRefExtractor","localIndex","incompleteFirstPass","createTView","constsOrFactory","ssrId","initialViewLength","createViewBlueprint","expandoStartIndex","hostBindingOpCodes","firstUpdatePass","staticViewQueries","staticContentQueries","components","directiveRegistry","pipeRegistry","_applyRootElementTransformImpl","generatePropertyAliases","aliasMap","propertyAliases","hostDirectiveAliasMap","internalName","addPropertyAlias","elementPropertyInternal","nativeOnly","dataValue","inputData","setInputsForProperty","markDirtyIfOnPush","viewIndex","childComponentLView","mapPropName","resolveDirectives","localRefs","exportsMap","matchResult","findDirectiveDefMatches","registry","hostDirectiveDefs","hostDirectiveMatches","markAsComponentHost","initializeDirectives","cacheMatchingLocalNames","initTNodeFlags","numberOfDirectives","preOrderHooksFound","preOrderCheckHooksFound","directiveIdx","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","initializeInputAndOutputAliases","hostDirectiveDefinitionMap","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","aliasData","aliasedOutputs","generateInitialInputs","getCurrentDirectiveIndex","dirIndex","invokeHostBindingsInCreationMode","directiveFactory","nodeInjectorFactory","registerHostBindingOpCodes","directiveVarsIdx","elementIndx","lastSelectedElementIdx","setElementAttribute","initialInputData","writeToDirectiveInput","inputsToStore","createLContainer","hostNative","refreshContentQueries","directiveDefIdx","executeViewQueryFn","viewQueryFn","getOrCreateLViewCleanup","getOrCreateTViewCleanup","loadComponentRenderer","currentDef","unwrapLView","textBindingInternal","renderComponent","hostLView","componentHostIdx","componentTView","syncViewWithBlueprint","hostRNode","renderView","renderChildComponents","EffectManager","effectFn","destroyRef","allowSignalWrites","w","watch","registerOnCleanup","unregisterOnDestroy","isQueueEmpty","computeStaticStyling","writeToHost","collectNativeNodes","lNode","collectNativeNodesInLContainer","nodesInSlot","lViewInAContainer","lViewFirstChildTNode","detectChangesInternal","notifyErrorHandler","afterRenderEventManager","refreshView","effectManager","setBindingIndex","hooksInitPhaseCompleted","markTransplantedViewsForRefresh","detectChangesInEmbeddedViews","processHostBindingOpCodes","opCode","bindingRootIndx","hostBindingFn","detectChangesInChildComponents","detectChangesInView","detectChangesInComponent","viewAttachedToChangeDetector","ViewRef$1","_cdRefInjectingView","_attachedToViewContainer","viewRefs","reattach","checkNoChanges","attachToViewContainerRef","detachFromAppRef","detachViewFromDOM","attachToAppRef","RootViewRef","ComponentFactoryResolver","ComponentFactory","toRefArray","nonMinified","templateName","ChainedInjector","parentInjector","refArray","componentType","stringifyCSSSelectorList","selectorList","isBoundToModule","rootSelectorOrNode","environmentInjector","realEnvironmentInjector","rootViewInjector","hostRenderer","elementName","locateHostElement","elementOrSelector","applyRootElementTransform","getNamespace","rootFlags","rootTView","rootLView","tElementNode","rootComponentDef","rootDirectives","createRootComponentTNode","createRootComponentView","applyRootComponentStyling","viewRenderer","setRootNodeAttributes","extractAttrsAndClassesFromSelector","projectNodes","nodesforSlot","createRootComponent","hostFeatures","rootTNode","LifecycleHooksFeature","ComponentRef","_rootLView","previousInputValues","changeDetectorRef","ɵɵInheritDefinitionFeature","superType","getSuperType","shouldInheritFields","inheritanceChain","superDef","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","defData","mergeHostAttrsAcrossInheritance","prevViewQuery","prevContentQueries","prevHostBindings","ɵɵInputTransformsFeature","isListLikeIterable","isJsObject","updateBinding","getBinding","bindingUpdated","bindingUpdated2","exp1","exp2","different","bindingUpdated3","exp3","bindingUpdated4","exp4","ɵɵattribute","elementAttributeInternal","interpolation1","v0","interpolation2","v1","ɵɵtemplate","attrsIndex","localRefsIndex","adjustedIndex","templateFirstCreatePass","tViewConsts","embeddedTView","_locateOrCreateContainerAnchor","createContainerAnchorImpl","ɵɵreference","getContextLView","ɵɵproperty","setDirectiveInputsWhichShadowsStyling","isClassBased","ɵɵelementStart","elementStartFirstCreatePass","elementStart","_locateOrCreateElementNode","hasDirectives","getElementDepthCount","increaseElementDepthCount","ɵɵelementEnd","isSkipHydrationRootTNode","leaveSkipHydrationBlock","decreaseElementDepthCount","elementEnd","hasClassInput","hasStyleInput","ɵɵelement","getNamespace$1","ɵɵelementContainerStart","elementContainerStartFirstCreatePass","_locateOrCreateElementContainerNode","ɵɵelementContainerEnd","ɵɵelementContainer","ɵɵgetCurrentView","isSubscribable","ɵɵlistener","listenerFn","useCapture","eventTargetResolver","listenerInternal","ɵɵsyntheticHostListener","isTNodeDirectiveHost","processOutputs","lCleanupIndex","idxOrTargetGetter","existingListener","findExistingListener","tNodeIdx","cleanupEventName","listenerIdxInLCleanup","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","propsLength","executeListenerWithErrorHandling","wrapWithPreventDefault","wrapListenerIn_markDirtyAndPreventDefault","nextListenerFn","ɵɵnextContext","nextContextImpl","walkUpViews","nestingLevel","matchingProjectionSlotIndex","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","getProjectAsAttrValue","ngProjectAsAttrIdx","ɵɵprojectionDef","componentNode","projectionHeads","tails","componentChild","slotIndex","ɵɵprojection","selectorIndex","applyProjection","ɵɵpropertyInterpolate","ɵɵpropertyInterpolate1","interpolatedValue","ɵɵpropertyInterpolate2","toTStylingRange","getTStylingRangePrev","tStylingRange","setTStylingRangePrevDuplicate","getTStylingRangeNext","setTStylingRangeNext","setTStylingRangeNextDuplicate","markDuplicates","tStylingKey","isPrevDir","isClassBinding","tStylingAtIndex","isMap","foundDuplicate","tStyleRangeAtCursor","isStylingMatch","tStylingKeyCursor","parserState","textEnd","keyEnd","valueEnd","getLastParsedKey","getLastParsedValue","parseClassNameNext","consumeClassToken","consumeWhitespace","parseStyleNext","consumeStyleKey","consumeSeparator","consumeStyleValue","ch1","ch2","ch3","lastChIndex","consumeQuotedText","resetParserState","quoteCharCode","ɵɵstyleProp","checkStylingProperty","ɵɵclassProp","ɵɵstyleMap","checkStylingMap","styleKeyValueArraySet","styleStringParser","parseStyle","ɵɵclassMap","classKeyValueArraySet","classStringParser","parseClassName","stylingFirstUpdatePass","updateStyling","normalizeSuffix","stringParser","hasStylingInputShadow","isInHostBindings","staticPrefix","updateStylingMap","oldKeyValueArray","newKeyValueArray","oldIndex","oldKey","newKey","setKey","toStylingKeyValueArray","styleKeyValueArray","unwrappedValue","isHostBindings","wrapInStaticStylingKey","stylingKey","hostDirectiveDef","residual","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","getTemplateHeadTStylingKey","bindings","setTemplateHeadTStylingKey","collectResidual","insertTStylingBinding","tStylingKeyWithStatic","isHostBinding","tBindings","tmplHead","tmplTail","isKeyDuplicateOfStatic","setTStylingRangePrev","markDuplicateOfResidualStyling","currentDirective","desiredMarker","currentMarker","stringKey","tRange","higherPriorityValue","getTStylingRangeNextDuplicate","findStylingValue","isStylingValuePresent","getTStylingRangePrevDuplicate","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","ɵɵtext","textNative","_locateOrCreateTextNode","ɵɵtextInterpolate","ɵɵtextInterpolate1","interpolated","ɵɵtextInterpolate2","ɵɵtextInterpolate5","v2","v3","v4","interpolation5","ɵɵclassMapInterpolate1","ɵɵhostProperty","ɵɵsyntheticHostProperty","localeEn","plural","LOCALE_DATA","findLocaleData","normalizedLocale","normalizeLocale","getLocaleData","parentLocale","LocaleDataIndex","PluralCase","ng","common","locales","FirstDayOfWeek","WeekendRange","NumberFormats","CurrencyCode","CurrencySymbol","CurrencyName","Currencies","pluralMapping","DEFAULT_LOCALE_ID","ELEMENT_MARKER","ICU_MARKER","LOCALE_ID$1","getTIcu","getCurrentICUCaseIndex","tIcu","currentCase","currentCaseLViewIndex","getParentFromIcuCreateOpCode","mergedCode","getRefFromIcuCreateOpCode","changeMask","changeMaskCounter","applyMutableOpCodes","mutableOpCodes","anchorRNode","rootRNode","rootIdx","textNodeIndex","parentIdx","insertInFrontOf","refIdx","caseIndex","anchorIdx","commentValue","commentNodeIndex","elementNodeIndex","applyUpdateOpCodes","updateOpCodes","bindingsStartIndex","checkBit","skipCodes","sanitizeFn","tNodeOrTagName","rText","applyIcuSwitchCase","applyIcuUpdateCase","activeCaseIndex","mask","getCaseIndex","icuExpression","bindingValue","resolvedCase","getPluralCase","applyIcuSwitchCaseRemove","removeCodes","nodeOrIcuIndex","BINDING_REGEXP","ICU_REGEXP","generateBindingUpdateOpCodes","destinationNode","bindingStart","maskIndex","sizeIndex","textParts","textValue","toMaskBit","countBindings","opCodes","ɵɵi18nAttributes","i18nAttributesFirstPass","previousElementIndex","ɵɵi18nExp","setMaskBit","hasChange","ɵɵi18nApply","applyI18n","tI18n","resolveProvider","lInjectablesBlueprint","providerFactory","beginIndex","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesViewProvidersFactoryExist","multiFactory","factoryFn","componentProviders","multiFactoryAdd","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","providerIsClassProvider","isClassProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","factories","componentCount","multiProviders","ɵɵProvidersFeature","viewProviders","processProvidersFn","NgModuleRef$1","NgModuleFactory$1","createNgModule","NgModuleRef","_parent","_bootstrapComponents","destroyCbs","_r3Injector","NgModuleFactory","moduleType","EnvironmentNgModuleRefAdapter","debugName","runEnvironmentInitializers","createEnvironmentInjector","StandaloneService","cachedInjectors","getOrCreateStandaloneInjector","standaloneInjector","ɵɵStandaloneFeature","ɵɵpureFunction0","slotOffset","pureFn","ɵɵpureFunction1","pureFunction1Internal","ɵɵpureFunction2","pureFunction2Internal","ɵɵpureFunction3","pureFunction3Internal","ɵɵpureFunction4","pureFunction4Internal","bindingRoot","getPureFunctionReturnValue","ɵɵpureFunction5","exp5","ɵɵpureFunction7","exp6","exp7","ɵɵpureFunctionV","exps","pureFunctionVInternal","returnValueIndex","lastReturnValue","ɵɵpipe","pipeName","getPipeDef","pipeFactory","pipeInstance","ɵɵpipeBind1","isPure","ɵɵpipeBind2","ɵɵpipeBind3","symbolIterator","_results","_changes","_emitDistinctChangesOnly","_changesDetected","proto","resultsTree","identityAccessor","newResultFlat","flatten","arrayEquals","valueA","valueB","notifyOnChanges","setDirty","addLViewToLContainer","addToDOM","insertView","containerLength","trackMovedView","addViewToDOM","parentNativeNode","TemplateRef","injectTemplateRef","ViewEngineTemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","createEmbeddedViewImpl","embeddedLView","createAndRenderEmbeddedLView","declarationLView","templateTNode","declarationViewLQueries","createTemplateRef","ViewContainerRef","injectViewContainerRef","createContainerRef","VE_ViewContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","getViewRefs","indexOrOptions","insertImpl","componentFactoryOrType","isComponentFactory","ngModuleRef","contextInjector","skipDomInsertion","viewAttachedToContainer","prevIdx","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","getOrCreateViewRefs","viewRefsArr","_locateOrCreateAnchorNode","createAnchorNode","commentNode","insertAnchorNode","nativeNextSibling","LQuery_","queryList","LQueries_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","indexInDeclarationView","dirtyQueriesWithMatches","getTQuery","TQueryMetadata_","TQueries_","queriesForTemplateRef","childQueryIndex","tqueryClone","track","tquery","TQuery_","crossesNgTemplate","_appliesToNextNode","_declarationNodeIndex","isApplyingToNode","matchTNode","addMatch","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","matchIdx","createResultForNode","matchingIdx","createResultByTNodeType","createSpecialToken","materializeViewResults","queryIndex","lQuery","tQueryMatches","matchedNodeIdx","collectQueryResults","lViewResults","embeddedLViews","ɵɵqueryRefresh","isCreationMode","ɵɵviewQuery","createTQuery","createLQuery","ɵɵcontentQuery","saveContentQueryAndDirectiveIndex","tViewContentQueries","ɵɵloadQuery","loadQueryInternal","storeCleanupWithContext","ɵɵtemplateRefExtractor","isNgModule","APP_INITIALIZER","ApplicationInitStatus","donePromise","rej","appInits","runInitializers","asyncInitPromises","initResult","observableAsPromise","Console","getGlobalLocale","$localize","DEFAULT_CURRENCY_CODE","InitialRenderPendingTasks","hasPendingTasks","ModuleWithComponentFactories","ngModuleFactory","componentFactories","Compiler","compileModuleSync","compileModuleAsync","compileModuleAndAllComponentsSync","declaration","compileModuleAndAllComponentsAsync","clearCacheFor","getModuleId","TESTABILITY","TESTABILITY_GETTER","_testabilityGetter","Testability","testabilityGetter","_pendingCount","_isZoneStable","_didWork","_callbacks","taskTrackingZone","setTestabilityGetter","getter","addToWindow","_watchAngularEvents","_runCallbacksIfReady","increasePendingRequestCount","decreasePendingRequestCount","doneCb","getPendingTasks","updateCb","macroTasks","creationLocation","addCallback","whenStable","getPendingRequestCount","registerApplication","unregisterApplication","findProviders","using","exactMatch","TestabilityRegistry","_applications","testability","unregisterAllApplications","getTestability","getAllTestabilities","getAllRootElements","findTestabilityInTree","findInAncestors","_platformInjector","ALLOW_MULTIPLE_PLATFORMS","PLATFORM_DESTROY_LISTENERS","APP_BOOTSTRAP_LISTENER","NgProbeToken","createPlatformFactory","parentPlatformFactory","extraProviders","getPlatform","platformProviders","createPlatform","publishSignalConfiguration","setThrowInvalidWriteToSignalError","PlatformRef","runPlatformInitializers","createPlatformInjector","assertPlatform","requiredToken","_modules","_destroyListeners","bootstrapModuleFactory","moduleFactory","getNgZone","ngZoneToUse","getNgZoneOptions","eventCoalescing","runCoalescing","ngZoneEventCoalescing","ngZoneRunCoalescing","moduleRef","createNgModuleRefWithProviders","internalProvideZoneChangeDetection","ngZoneFactory","ngZoneChangeDetectionScheduler","NgZoneChangeDetectionScheduler","initialize","INTERNAL_APPLICATION_ERROR_HANDLER","ngZoneApplicationErrorHandlerFactory","exceptionHandler","_callAndReportToErrorHandler","initStatus","setLocaleId","_moduleDoBootstrap","compilerOptions","optionsReducer","compileNgModuleFactory","ngDoBootstrap","destroyListeners","objs","_bootstrapListeners","_runningTick","_views","internalErrorHandler","zoneIsStable","componentTypes","componentOrFactory","cf","compRef","_loadComponent","tick","warnIfDestroyed","userErrorHandler","applicationRef","_onMicrotaskEmptySubscription","ChangeDetectorRef","injectChangeDetectorRef","createViewRef","isPipe","DefaultIterableDifferFactory","supports","trackByFn","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","forEachItem","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","forEachPreviousItem","_nextPrevious","_nextAdded","forEachMovedItem","_nextMoved","_nextIdentityChange","check","_reset","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","isDirty","previousRecord","_prev","_remove","_reinsertAfter","_moveAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","nextRecord","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","toIndex","_prevDup","_nextDup","_DuplicateItemRecordList","_head","_tail","atOrAfterIndex","duplicates","recordList","moveOffset","DefaultKeyValueDifferFactory","DefaultKeyValueDiffer","_records","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","KeyValueChangeRecord_","_addToAdditions","_addToChanges","defaultIterableDiffersFactory","IterableDiffers","copied","extend","defaultKeyValueDiffersFactory","KeyValueDiffers","kv","platformCore","ApplicationModule","booleanAttribute","reflectComponentType","isSignal","toSignal","requiresCleanup","manualCleanup","cleanupRef","signal$1","requireSync","computed$1","BaseControlValueAccessor","onTouched","registerOnTouched","registerOnChange","setDisabledState","BuiltInControlValueAccessor","NG_VALUE_ACCESSOR","CHECKBOX_VALUE_ACCESSOR","CheckboxControlValueAccessor","writeValue","_Bn","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","_composing","_isAndroid","ɵgetDOM","getUserAgent","_handleInput","_compositionStart","_compositionEnd","isEmptyInputValue","hasValidLength","NG_VALIDATORS","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","Validators","minValidator","control","maxValidator","required","requiredValidator","requiredTrue","requiredTrueValidator","emailValidator","minLength","minLengthValidator","minlength","requiredLength","actualLength","maxLength","maxLengthValidator","maxlength","patternValidator","nullValidator","regex","regexStr","requiredPattern","actualValue","validators","composeAsync","isPresent","toObservable","mergeErrors","arrayOfErrors","executeValidators","validator","normalizeValidators","isValidatorFn","presentValidators","composeValidators","composeAsyncValidators","mergeValidators","controlValidators","dirValidator","getControlValidators","_rawValidators","getControlAsyncValidators","_rawAsyncValidators","makeValidatorsArray","hasValidator","addValidators","currentValidators","validatorsToAdd","removeValidators","AbstractControlDirective","_onDestroyCallbacks","valid","invalid","pristine","untouched","statusChanges","_setValidators","_composedValidatorFn","_setAsyncValidators","_composedAsyncValidatorFn","asyncValidator","_registerOnDestroy","_invokeOnDestroyCallbacks","errorCode","getError","ControlContainer","formDirective","NgControl","valueAccessor","AbstractControlStatus","cd","_cd","isTouched","isUntouched","isPristine","isInvalid","isPending","isSubmitted","submitted","NgControlStatus","NgControlStatusGroup","VALID","INVALID","PENDING","DISABLED","pickValidators","validatorOrOpts","isOptionsObj","pickAsyncValidators","asyncValidators","assertControlPresent","isGroup","controls","assertAllValuesPresent","_forEachChild","AbstractControl","_pendingDirty","_hasOwnPendingAsyncValidator","_pendingTouched","_onCollectionChange","_onDisabledChange","_assignValidators","_assignAsyncValidators","validatorFn","asyncValidatorFn","updateOn","_updateOn","setValidators","setAsyncValidators","addAsyncValidators","removeAsyncValidators","hasAsyncValidator","clearValidators","clearAsyncValidators","markAsTouched","onlySelf","markAllAsTouched","markAsUntouched","_updateTouched","markAsDirty","markAsPristine","_updatePristine","markAsPending","emitEvent","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","changeFn","updateValueAndValidity","setParent","getRawValue","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","ctrl","_allControlsDisabled","_asyncValidationSubscription","setErrors","_updateControlsErrors","currPath","_find","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","_registerOnCollectionChange","_setUpdateStrategy","coerceToValidator","coerceToAsyncValidator","FormGroup","_setUpControls","registerControl","addControl","removeControl","setControl","controlName","patchValue","_reduceChildren","_syncPendingControls","subtreeUpdated","updated","_reduceValue","initValue","FormRecord","CALL_SET_DISABLED_STATE","setDisabledStateDefault","controlPath","setUpControl","callSetDisabledState","setUpValidators","setUpViewChangePipeline","_pendingValue","_pendingChange","updateControl","setUpModelChangePipeline","emitModelEvent","viewToModelUpdate","_unregisterOnChange","setUpBlurPipeline","setUpDisabledChangeHandler","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","cleanUpControl","validateControlPresenceOnChange","cleanUpValidators","registerOnValidatorChange","onValidatorChange","isControlUpdated","updatedValidators","updatedAsyncValidators","emitModelToViewChange","setUpFormContainer","isPropertyUpdated","viewModel","model","syncPendingControls","selectValueAccessor","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","isBuiltInAccessor","formDirectiveProvider$1","NgForm","resolvedPromise$1","_directives","ngSubmit","_findContainer","getControl","addFormGroup","removeFormGroup","getFormGroup","updateModel","onSubmit","onReset","resetForm","removeListItem","isFormControlState","formState","_onChange","_applyFormState","nonNullable","initialValueIsDefault","emitViewToModelChange","AbstractFormGroupDirective","_checkParentType","formControlBinding$1","NgModel","resolvedPromise","_changeDetectorRef","_registered","_checkForErrors","_checkName","oldName","_getPath","_setUpControl","_updateDisabled","_isStandalone","_setUpStandalone","disabledValue","ɵNgNoValidate","RADIO_VALUE_ACCESSOR","RadioControlValueAccessor","RadioControlRegistryModule","RadioControlRegistry","_accessors","accessor","_isSameGroup","fireUncheck","controlPair","_control","_registry","setDisabledStateFired","_fn","formControlName","NG_MODEL_WITH_FORM_CONTROL_WARNING","formControlBinding","FormControlDirective","_ngModelWarningSentOnce","_ngModelWarningConfig","_ngModelWarningSent","_isControlChanged","previousForm","formDirectiveProvider","FormGroupDirective","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","removeListItem$1","_setUpFormContainer","_cleanUpFormContainer","addFormArray","removeFormArray","getFormArray","oldCtrl","newCtrl","isFormControl","cleanUpFormContainer","formGroupNameProvider","FormGroupName","_hasInvalidParent","formArrayNameProvider","FormArrayName","controlNameBinding","FormControlName","_added","AbstractValidatorDirective","_validator","inputName","normalizeInput","createValidator","REQUIRED_VALIDATOR","RequiredValidator","CHECKBOX_REQUIRED_VALIDATOR","CheckboxRequiredValidator","ɵInternalFormsSharedModule","FormArray","at","_registerControl","removeAt","isAbstractControlOptions","FormBuilder","useNonNullable","nnfb","reducedControls","_reduceControls","createdControls","_createControl","FormsModule","warnOnNgModelWithFormControl","BLOCK_MARKER$1","$localize$1","messageParts","translate","translation","stripBlock","raw","BLOCK_MARKER","messagePart","rawMessagePart","findEndOfBlock","cooked","cookedIndex","rawIndex","ɵ$localize","_c1","MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS","MAT_BUTTON_TOGGLE_GROUP","MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR","MatButtonToggleGroup","MatButtonToggleChange","_markButtonsForCheck","vertical","_selectionModel","multiple","_setSelectionByValue","valueChange","_changeDetector","_controlValueAccessorChangeFn","_onTouched","appearance","_buttonToggles","_rawValue","_syncButtonToggle","isUserInput","deferEvents","_updateModelValue","_isSelected","_isPrechecked","_clearSelection","_selectValue","correspondingOption","_markForCheck","MatButtonToggle","_t","_MatButtonToggleBase","mixinDisableRipple","buttonId","buttonToggleGroup","_appearance","_checked","toggleGroup","defaultTabIndex","ariaLabelledby","parsedTabIndex","_buttonElement","_onButtonClick","newChecked","_isSingleSelector","_getButtonName","disableRipple","_r0","MatCommonModule","MatRippleModule","_c2","_c4","_c8","_c9","HOST_SELECTOR_MDC_CLASS_PAIR","mdcClasses","_MatButtonMixin","mixinColor","mixinDisabled","MatButtonBase","ripple","_rippleLoader","getRipple","attachRipple","_disableRipple","_updateRippleDisabled","_animationMode","MatRippleLoader","_isFab","configureRipple","pair","_hasHostAttributes","destroyRipple","setDisabled","MatAnchorBase","animationMode","_haltDisabledEvents","stopImmediatePropagation","MatButton","MatAnchor","MatIconButton","centered","MAT_CARD_CONFIG","MatCard","MatCardContent","MatChip_span_3_Template","MatChip_span_7_Template","_c5","MAT_CHIPS_DEFAULT_OPTIONS","MAT_CHIP_AVATAR","MAT_CHIP_TRAILING_ICON","MAT_CHIP_REMOVE","MAT_CHIP","_MatChipActionBase","_MatChipActionMixinBase","mixinTabIndex","MatChipAction","_parentChip","_getDisabledAttribute","_allowFocusWhenDisabled","_getTabindex","isInteractive","_isPrimary","_handleClick","_handlePrimaryActionInteraction","_handleKeydown","_isEditing","MatChipAvatar","uid","_MatChipMixinBase","MatChip","_hasFocus","_hasFocusInternal","_textElement","removable","_removable","highlighted","_highlighted","_globalRippleOptions","ariaDescription","_ariaDescriptionId","basicChipAttrName","_monitorFocus","_isRippleDisabled","_isBasicChip","_pendingFocus","_actionChanges","_allLeadingIcons","_allTrailingIcons","_allRemoveIcons","chip","_hasTrailingIcon","trailingIcon","removeIcon","primaryAction","_getSourceAction","_getActions","MAT_RIPPLE_GLOBAL_OPTIONS","leadingIcon","MatChipSetBase","_MatChipSetMixinBase","MatChipSet","chipFocusChanges","_getChipStream","chipDestroyedChanges","_syncChipsState","_chips","_explicitRole","_defaultRole","focused","_hasFocusedChip","_lastDestroyedFocusedChipIndex","_chipActions","_setUpFocusManagement","_trackChipSetChanges","_trackDestroyedFocusedChip","_keyManager","_originatesFromChip","_isValidIndex","_allowFocusEscape","previousTabIndex","mappingFunction","chips","_skipPredicate","_redirectDestroyedChipFocus","chipIndex","chipToFocus","ErrorStateMatcher","separatorKeyCodes","MatOption_mat_pseudo_checkbox_0_Template","oxw","MatOption_mat_pseudo_checkbox_5_Template","MatOption_span_6_Template","_c3","AnimationCurves","STANDARD_CURVE","DECELERATION_CURVE","ACCELERATION_CURVE","SHARP_CURVE","AnimationDurations","COMPLEX","ENTERING","EXITING","MATERIAL_SANITY_CHECKS","MATERIAL_SANITY_CHECKS_FACTORY","_sanityChecks","_hasDoneGlobalChecks","_checkIsEnabled","defaultColor","_color","colorPalette","_tabIndex","mixinErrorState","updateErrorState","oldState","errorState","newState","errorStateMatcher","_defaultErrorStateMatcher","isErrorState","ngControl","_parentFormGroup","_parentForm","stateChanges","mixinInitialized","_pendingSubscribers","_notifySubscriber","_markInitialized","MAT_DATE_LOCALE","MAT_DATE_LOCALE_FACTORY","DateAdapter","_localeChanges","localeChanges","getValidDateOrNull","isDateInstance","deserialize","setLocale","compareDate","getYear","sameDate","firstValid","secondValid","clampDate","MAT_DATE_FORMATS","ISO_8601_REGEX","valueFunction","valuesArray","NativeDateAdapter","matDateLocale","useUtcForDisplay","getDayOfWeek","getMonthNames","dtf","timeZone","_format","getDateNames","getDayOfWeekNames","weekday","getYearName","getFirstDayOfWeek","getNumDaysInMonth","_createDateWithOverflow","parseFormat","displayFormat","addCalendarYears","years","addCalendarMonths","addCalendarDays","toIso8601","getUTCFullYear","_2digit","getUTCMonth","getUTCDate","MAT_NATIVE_DATE_FORMATS","dateInput","monthYearLabel","dateA11yLabel","monthYearA11yLabel","NativeDateModule","MatNativeDateModule","RippleRef","_animationForciblyDisabledThroughCss","fadeOut","fadeOutRipple","passiveCapturingEventOptions$1","RippleEventManager","_events","_delegateEventHandler","handlers","handleEvent","addHandler","handlersForEvent","handlersForElement","removeHandler","defaultRippleAnimationConfig","enterDuration","exitDuration","passiveCapturingEventOptions","pointerDownEvents","pointerUpEvents","RippleRenderer","_eventManager","_target","_isPointerDown","_activeRipples","_pointerUpEventsRegistered","fadeInRipple","animationConfig","radius","distanceToFurthestCorner","distX","distY","transitionDuration","computedStyles","userTransitionDuration","animationForciblyDisabledThroughCss","transitionProperty","rippleRef","persistent","_mostRecentTransientRipple","eventListeners","onTransitionEnd","_finishRippleTransition","onTransitionCancel","_destroyRipple","rippleEl","opacity","fadeOutAll","_getActiveRipples","fadeOutAllNonPersistent","setupTriggerEvents","_triggerElement","_removeTriggerEvents","_onTouchStart","_onPointerUp","_startFadeOutTransition","isMostRecentTransientRipple","isFakeMousedown","isSyntheticEvent","_lastTouchStartEvent","rippleDisabled","rippleConfig","terminateOnPointerUp","MatRipple","_setupTriggerEventsIfEnabled","_trigger","globalOptions","_globalOptions","_rippleRenderer","launch","configOrX","MatPseudoCheckbox","MatPseudoCheckboxModule","MAT_OPTION_PARENT_COMPONENT","MAT_OPTGROUP","_uniqueIdCounter","MatOptionSelectionChange","_MatOptionBase","hideSingleSelectionIndicator","_mostRecentViewValue","onSelectionChange","_stateChanges","viewValue","_text","_emitSelectionChangeEvent","_getHostElement","_selectViaInteraction","_getTabIndex","MatOption","_countGroupLabelsBeforeOption","optionIndex","optionGroups","optionsArray","groups","groupCounter","_getOptionScrollPosition","optionOffset","optionHeight","currentScrollPosition","panelHeight","eventListenerOptions","rippleInteractionEvents","matRippleUninitialized","matRippleClassName","matRippleCentered","matRippleDisabled","ANIMATION_MODULE_TYPE$1","_hosts","_onInteraction","_createRipple","hosts","existingRipple","CdkDialogContainer_ng_template_0_Template","DialogConfig","ariaDescribedBy","ariaLabelledBy","ariaModal","autoFocus","restoreFocus","closeOnNavigation","closeOnDestroy","closeOnOverlayDetachments","CdkDialogContainer","_interactivityChecker","_elementFocusedBeforeDialogWasOpened","_closeInteractionType","_ariaLabelledByQueue","_contentAttached","_initializeFocusTrap","_handleBackdropClicks","_captureInitialFocus","_trapFocus","_restoreFocus","_recaptureFocus","_containsFocus","_forceFocus","_focusByCssSelector","elementToFocus","_focusTrap","focusedSuccessfully","_focusDialogContainer","focusConfig","focusTargetElement","DialogRef","containerInstance","closedSubject","componentInstance","DIALOG_SCROLL_STRATEGY","DIALOG_DATA","DEFAULT_DIALOG_CONFIG","DIALOG_SCROLL_STRATEGY_PROVIDER","DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY","uniqueId","Dialog","openDialogs","_parentDialog","_openDialogsAtThisLevel","afterOpened","_afterOpenedAtThisLevel","_afterAllClosedAtThisLevel","_ariaHiddenElements","afterAllClosed","_getAfterAllClosed","componentOrTemplateRef","_getOverlayConfig","dialogContainer","_attachContainer","_attachDialogContent","_hideNonDialogContentFromAssistiveTechnology","_removeOpenDialog","closeAll","reverseForEach","dialog","userInjector","containerType","containerPortal","_createInjector","templateContext","contentRef","fallbackInjector","overlayContainer","siblings","DialogModule","MatDialogContainer_ng_template_2_Template","MatDialogConfig","delayFocusTrap","OPEN_CLASS","OPENING_CLASS","CLOSING_CLASS","_MatDialogContainerBase","focusTrapFactory","dialogConfig","interactivityChecker","focusMonitor","_animationStateChanged","_openAnimationDone","TRANSITION_DURATION_PROPERTY","parseCssTime","MatDialogContainer","checker","_animationsEnabled","_hostElement","_enterAnimationDuration","enterAnimationDuration","_exitAnimationDuration","exitAnimationDuration","_animationTimer","_finishDialogOpen","_clearAnimationClasses","_finishDialogClose","_startOpenAnimation","_requestAnimationFrame","_waitForAnimationToComplete","_startExitAnimation","MatDialogRef","_containerInstance","_afterOpened","_beforeClosed","_closeFallbackTimeout","_result","_closeDialogVia","dialogResult","afterClosed","beforeClosed","interactionType","MAT_DIALOG_DEFAULT_OPTIONS","MAT_DIALOG_SCROLL_STRATEGY","MAT_DIALOG_SCROLL_STRATEGY_PROVIDER","MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY","_MatDialogBase","_dialogRefConstructor","_dialogContainerType","_dialogDataToken","_idPrefix","dialogConfigClass","_dialog","cdkRef","cdkConfig","_closeDialogs","dialogs","MatDialog","parentDialog","dialogElementUid","MatDialogClose","getClosestDialog","proxiedChange","_matDialogClose","_matDialogCloseResult","screenX","screenY","MatDialogTitle","_dialogRef","MatDialogContent","MatDialogActions","align","MatDivider","_inset","inset","MatDividerModule","SingleBoxSharedResizeObserver","_box","_resizeSubject","_elementObservables","_resizeObserver","box","SharedResizeObserver","_observers","MatFormField_ng_template_0_label_0_span_2_Template","MatFormField_ng_template_0_label_0_Template","ctx_r13","_hasOutline","_labelId","MatFormField_ng_template_0_Template","MatFormField_div_4_Template","MatFormField_div_6_ng_template_1_ng_template_0_Template","MatFormField_div_6_ng_template_1_Template","MatFormField_div_6_Template","ctx_r4","MatFormField_div_7_Template","MatFormField_div_8_Template","MatFormField_ng_template_10_ng_template_0_Template","MatFormField_ng_template_10_Template","MatFormField_div_12_Template","MatFormField_div_13_Template","MatFormField_div_14_Template","MatFormField_div_16_Template","MatFormField_div_17_mat_hint_1_Template","ctx_r20","MatFormField_div_17_Template","ctx_r12","_c6","_c7","MatLabel","nextUniqueId$2","MAT_ERROR","MatError","ariaLive","nextUniqueId$1","MatHint","MAT_PREFIX","MatPrefix","_isText","_isTextSelector","MAT_SUFFIX","MatSuffix","FLOATING_LABEL_PARENT","MatFormFieldFloatingLabel","floating","_floating","monitorResize","_handleResize","_monitorResize","_subscribeToResize","getWidth","estimateScrollWidth","offsetParent","_handleLabelResized","ACTIVATE_CLASS","DEACTIVATING_CLASS","MatFormFieldLineRipple","_handleTransitionEnd","isDeactivating","activate","deactivate","MatFormFieldNotchedOutline","_setNotchWidth","labelWidth","_notch","matFormFieldAnimations","transitionMessages","MatFormFieldControl","MAT_FORM_FIELD","DEFAULT_APPEARANCE","MatFormField","hideRequiredMarker","_hideRequiredMarker","floatLabel","_floatLabel","_defaults","_needsOutlineLabelOffsetUpdateOnStable","_subscriptSizing","hintLabel","_hintLabel","_processHints","_explicitFormFieldControl","_formFieldControl","_unusedDocument","_hasIconPrefix","_hasTextPrefix","_hasIconSuffix","_hasTextSuffix","_hintLabelId","_subscriptAnimationState","_isFocused","_updateFocusState","_assertFormFieldControl","_initializeControl","_initializeSubscript","_initializePrefixAndSuffix","_initializeOutlineLabelOffsetSubscriptions","getLabelId","_hasFloatingLabel","getConnectedOverlayOrigin","_textField","_animateAndLockLabel","controlType","_syncDescribedByIds","_checkPrefixAndSuffixTypes","_prefixChildren","_suffixChildren","_hintChildren","_errorChildren","_validateHints","_lineRipple","_updateOutlineLabelOffset","_shouldAlwaysFloat","_forceDisplayInfixLabel","_shouldLabelFloat","_labelChildNonStatic","_labelChildStatic","shouldLabelFloat","_shouldForward","_getDisplayedMessages","_refreshOutlineNotchWidth","_floatingLabel","_notchedOutline","userAriaDescribedBy","startHint","hint","endHint","setDescribedByIds","floatingLabel","_iconPrefixContainer","_textPrefixContainer","_isAttachedToDom","iconPrefixContainer","textPrefixContainer","iconPrefixContainerWidth","textPrefixContainerWidth","onContainerClick","ttWindow","getMatIconNameNotFoundError","iconName","getMatIconFailedToSanitizeUrlError","getMatIconFailedToSanitizeLiteralError","literal","SvgIconConfig","svgText","MatIconRegistry","_httpClient","_sanitizer","_errorHandler","_svgIconConfigs","_iconSetConfigs","_cachedIconsByUrl","_inProgressUrlFetches","_fontCssClassesByAlias","_resolvers","_defaultFontSetClass","addSvgIconInNamespace","addSvgIconLiteral","addSvgIconLiteralInNamespace","_addSvgIconConfig","addSvgIconResolver","resolver","cleanLiteral","trustedLiteral","addSvgIconSet","addSvgIconSetInNamespace","addSvgIconSetLiteral","addSvgIconSetLiteralInNamespace","_addSvgIconSetConfig","registerFontClassAlias","classNames","classNameForFontAlias","setDefaultFontSetClass","getDefaultFontSetClass","getSvgIconFromUrl","safeUrl","cachedIcon","cloneSvg","_loadSvgIconFromConfig","svg","getNamedSvgIcon","iconKey","_getSvgFromConfig","_getIconConfigFromResolvers","iconSetConfigs","_getSvgFromIconSetConfigs","_svgElementFromConfig","namedIcon","_extractIconWithNameFromAnySet","iconSetFetchRequests","iconSetConfig","_loadSvgIconSetFromConfig","errorMessage","foundIcon","_extractSvgIconFromSet","_fetchIcon","iconSet","iconSource","iconElement","_setSvgAttributes","_toSvgElement","_svgElementFromString","div","viewBox","iconConfig","getMatIconNoHttpProviderError","inProgressFetch","configNamespace","svgElement","isSafeUrlWithOptions","_MatIconBase","MAT_ICON_DEFAULT_OPTIONS","MAT_ICON_LOCATION","MAT_ICON_LOCATION_FACTORY","getPathname","funcIriAttributes","funcIriAttributeSelector","funcIriPattern","MatIcon","inline","_inline","svgIcon","_svgIcon","_updateSvgIcon","_clearSvgElement","fontSet","_fontSet","_cleanupFontValue","_updateFontIconClasses","fontIcon","_fontIcon","_iconRegistry","ariaHidden","_previousFontSetClass","_currentIconFetch","_splitIconName","cachedElements","_elementsWithExternalReferences","_previousPath","_prependPathToReferences","_usingFontIcon","_setSvgElement","_cacheChildrenWithExternalReferences","layoutElement","childCount","fontSetClasses","_previousFontIconClass","elementsWithFuncIri","elementWithReference","rawName","_svgNamespace","_svgName","LIST_OPTION","MatListItemTitle","MatListItemLine","MatListItemMeta","_MatListItemGraphicBase","_listOption","_isAlignedAtStart","_getTogglePosition","MatListItemAvatar","MatListItemIcon","MAT_LIST_CONFIG","MatListBase","_isNonInteractive","MatListItemBase","lines","_explicitLines","_updateItemLines","_noopAnimations","_listBase","globalRippleOptions","_subscriptions","_hasUnscopedTextContent","_isButtonElement","_initInteractiveListItem","_monitorProjectedLinesAndTitle","_hasIconOrAvatar","_avatars","_icons","_lines","_titles","recheckUnscopedContent","_unscopedContent","_checkDomForUnscopedTextContent","numberOfLines","_inferLinesFromContent","unscopedContentEl","treatAsTitle","numOfLines","MatList","MatListItem","activated","_activated","listBase","_getAriaCurrent","MatNavList","MatSelect_span_4_Template","MatSelect_span_5_span_1_Template","triggerValue","MatSelect_span_5_ng_content_2_Template","MatSelect_span_5_Template","customTrigger","MatSelect_ng_template_10_Template","_r9","_panelDoneAnimatingStream","ctx_r10","_getPanelTheme","_getPanelAriaLabelledby","matSelectAnimations","transformPanelWrap","transformPanel","MAT_SELECT_SCROLL_STRATEGY","MAT_SELECT_CONFIG","MAT_SELECT_SCROLL_STRATEGY_PROVIDER","MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY","MAT_SELECT_TRIGGER","MatSelectChange","_MatSelectMixinBase","_MatSelectBase","_focused","_panelOpen","_placeholder","_required","disableOptionCentering","_disableOptionCentering","_compareWith","_initializeSelection","_assignValue","typeaheadDebounceInterval","_typeaheadDebounceInterval","_uid","_parentFormField","_liveAnnouncer","o1","o2","_triggerAriaLabelledBy","_valueId","_overlayPanelClass","overlayPanelClass","optionSelectionChanges","openedChange","_openedStream","_closedStream","selectionChange","_trackedModal","_panelDoneAnimating","panelOpen","_initKeyManager","_resetOptions","newAriaLabelledby","_getTriggerAriaLabelledby","_previousControl","_clearFromModal","_canOpen","_applyModalPanelOwnership","_highlightCorrectOption","panelId","selectedOptions","_handleOpenKeydown","_handleClosedKeydown","isArrowKey","isOpenKey","manager","previouslySelectedOption","selectedOption","hasDeselectedOptions","opt","previouslyFocusedIndex","_onAttached","_overlayDir","_positioningSettled","_selectOptionByValue","_sortValues","panel","_scrollOptionIntoView","changedOrDestroyed","_onSelect","wasSelected","_propagateChanges","sortComparator","valueToEmit","_getChangeEvent","firstEnabledOptionIndex","labelId","_getAriaActiveDescendant","isOpen","MatSelect","panelWidth","_positions","_hideSingleSelectionIndicator","_overlayWidth","_getOverlayWidth","_preferredOverlayOrigin","labelCount","preferredOrigin","_syncParentProperties","i7","i8","MatDrawerContainer_div_0_Template","_r3","_onBackdropClicked","_isShowingBackdrop","MatDrawerContainer_mat_drawer_content_3_Template","MatSidenavContainer_div_0_Template","MatSidenavContainer_mat_sidenav_content_3_Template","matDrawerAnimations","transformDrawer","MAT_DRAWER_DEFAULT_AUTOSIZE","MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY","MAT_DRAWER_CONTAINER","MatDrawerContent","_container","_contentMarginChanges","MatDrawerContainer","_contentMargins","MatDrawer","_updatePositionInParent","onPositionChanged","_mode","_updateFocusTrapState","_modeChanged","_disableClose","_autoFocus","opened","_opened","_elementFocusedBeforeDrawerWasOpened","_enableAnimations","_animationStarted","_animationEnd","_animationState","openedStart","closedStart","_takeFocus","_isFocusWithinDrawer","_openedVia","hasMovedFocus","activeEl","_anchor","openedVia","_closeViaBackdropClick","_setOpen","_getWidth","newPosition","_content","_start","_end","autosize","_autosize","_drawerHasBackdrop","_backdropOverride","_userContent","viewportRuler","defaultAutosize","_drawers","_doCheckSubject","_validateDrawers","updateContentMargins","_allDrawers","drawer","_watchDrawerToggle","_watchDrawerPosition","_watchDrawerMode","_isDrawerOpen","_left","_right","_setContainerClass","_closeModalDrawersViaBackdrop","MatSidenavContent","MatSidenavContainer","MatSidenav","_fixedInViewport","_fixedTopGap","_fixedBottomGap","fixedInViewport","fixedTopGap","fixedBottomGap","SimpleSnackBar_div_2_Template","_r2","EpF","MatSnackBarContainer_ng_template_4_Template","MAX_TIMEOUT","MatSnackBarRef","_afterDismissed","_onAction","_dismissedByAction","_onExit","_finishDismiss","exit","_durationTimeoutId","dismissWithAction","closeWithAction","_dismissAfter","_open","dismissedByAction","afterDismissed","_onEnter","onAction","MAT_SNACK_BAR_DATA","announcementMessage","MatSnackBarLabel","MatSnackBarActions","MatSnackBarAction","SimpleSnackBar","snackBarRef","hasAction","matSnackBarAnimations","snackBarState","_MatSnackBarContainerBase","_trackedModals","_announceDelay","_onAnnounce","_liveElementId","_assertNotAttached","_afterPortalAttached","_live","_role","onAnimationEnd","_completeExit","enter","_screenReaderAnnounce","_announceTimeoutId","_clearFromModals","panelClasses","_exposeToModals","inertElement","liveElement","focusedElement","MatSnackBarContainer","_label","i3$1","MatSnackBarModule","MAT_SNACK_BAR_DEFAULT_OPTIONS","MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY","_MatSnackBarBase","_openedSnackBarRef","_parentSnackBar","_snackBarRefAtThisLevel","_breakpointObserver","_defaultConfig","openFromComponent","_attach","openFromTemplate","simpleSnackBarComponent","_attachSnackBarContainer","snackBarContainerComponent","containerRef","userConfig","handsetCssClass","_animateSnackBar","isLeft","isRight","i2$1","i3$2","live","breakpointObserver","parentSnackBar","defaultConfig","MatSortHeaderIntl","MAT_SORT_HEADER_INTL_PROVIDER","MAT_SORT_HEADER_INTL_PROVIDER_FACTORY","parentIntl","mixinHasStickyInput","_sticky","prevValue","_hasStickyChanged","hasStickyChanged","resetStickyChanged","CDK_TABLE","CdkCellDef","CdkHeaderCellDef","CdkFooterCellDef","CdkColumnDefBase","_CdkColumnDefBase","CdkColumnDef","_setNameInput","stickyEnd","_stickyEnd","_table","_updateColumnCssClassName","_columnCssClassName","cssClassFriendlyName","BaseCdkCell","columnDef","CdkHeaderCell","CdkCell","tableRole","_Schedule","tasks","endTasks","_COALESCED_STYLE_SCHEDULER","_CoalescedStyleScheduler","_currentSchedule","_createScheduleIfNeeded","scheduleEnd","_getScheduleObservable","BaseRowDef","_columnsDiffer","columns","getColumnsDiff","extractCellTemplate","CdkHeaderRowDef","headerCell","CdkFooterRowDef","footerCell","cell","CdkHeaderRowDefBase","_CdkHeaderRowDefBase","CdkFooterRowDefBase","_CdkFooterRowDefBase","CdkRowDef","when","CdkCellOutlet","mostRecentCellOutlet","CdkHeaderRow","CdkRow","CdkNoDataRow","_contentClassName","STICKY_DIRECTIONS","StickyStyler","_isNativeHtmlTable","_stickCellCss","_coalescedStyleScheduler","_isBrowser","_needsPositionStickyOnElement","_positionListener","_cachedCellWidths","_borderCellCss","clearStickyPositioning","rows","stickyDirections","elementsToClear","row","_removeStickyStyle","updateStickyColumns","stickyStartStates","stickyEndStates","recalculateCellWidths","stickyColumnsUpdated","sizes","stickyEndColumnsUpdated","firstRow","numCells","cellWidths","_getCellWidths","startPositions","_getStickyStartColumnPositions","endPositions","_getStickyEndColumnPositions","lastStickyStart","lastIndexOf","firstStickyEnd","_addStickyStyle","stickRows","rowsToStick","stickyStates","stickyOffsets","stickyCellHeights","elementsToStick","rowIndex","stickyOffset","borderedRowIndex","isBorderedRowIndex","stickyHeaderRowsUpdated","stickyFooterRowsUpdated","updateStickyFooterContainer","tableElement","tfoot","zIndex","_getCalculatedZIndex","dirValue","isBorderElement","zIndexIncrements","firstRowCells","widths","nextPosition","STICKY_POSITIONING_LISTENER","DataRowOutlet","HeaderRowOutlet","FooterRowOutlet","NoDataRowOutlet","CdkTable","trackBy","dataSource","_dataSource","_switchDataSource","multiTemplateDataRows","_multiTemplateDataRows","_rowOutlet","_forceRenderDataRows","updateStickyColumnStyles","fixedLayout","_fixedLayout","_forceRecalculateCellWidths","_stickyColumnStylesNeedReset","_viewRepeater","_stickyPositioningListener","_columnDefsByName","_customColumnDefs","_customRowDefs","_customHeaderRowDefs","_customFooterRowDefs","_headerRowDefChanged","_footerRowDefChanged","_cachedRenderRowsMap","stickyCssClass","needsPositionStickyOnElement","_isShowingNoDataRow","contentChanged","viewChange","MAX_VALUE","_setupStickyStyler","_applyNativeTableSections","_dataDiffer","dataRow","dataIndex","_cacheRowDefs","_cacheColumnDefs","rowDefsChanged","_renderUpdatedColumns","_forceRenderHeaderRows","_forceRenderFooterRows","_rowDefs","_renderChangeSubscription","_observeRenderChanges","_checkStickyStates","_headerRowOutlet","_footerRowOutlet","_headerRowDefs","_footerRowDefs","_defaultRowDef","renderRows","_renderRows","_getAllRenderRows","_updateNoDataRow","_adjustedPreviousIndex","_getEmbeddedViewArgs","_renderCellTemplateForItem","rowDef","_updateRowIndexContext","addColumnDef","removeColumnDef","addRowDef","removeRowDef","addHeaderRowDef","headerRowDef","removeHeaderRowDef","addFooterRowDef","footerRowDef","removeFooterRowDef","setNoDataRow","noDataRow","_customNoDataRow","updateStickyHeaderRowStyles","headerRows","_getRenderedRows","thead","_stickyStyler","updateStickyFooterRowStyles","footerRows","dataRows","headerRow","_addStickyColumnStyles","footerRow","prevCachedRenderRows","renderRowsForData","_getRenderRowsForData","renderRow","_getRowDefs","cachedRenderRows","mergeArrayAndSet","_getOwnDefs","_contentColumnDefs","_contentHeaderRowDefs","_contentFooterRowDefs","_contentRowDefs","defaultRowDefs","columnsDiffReducer","dataColumnsChanged","headerColumnsChanged","footerColumnsChanged","dataStream","_renderRow","columnDefs","columnName","rowOutlet","renderedRows","rowDefs","cellTemplate","_getCellTemplates","renderIndex","columnId","documentFragment","createDocumentFragment","outlets","_noDataRowOutlet","stickyCheckReducer","_noDataRow","shouldShow","CdkTableModule","MatTable","MatCellDef","MatHeaderCellDef","MatColumnDef","MatHeaderCell","MatCell","MatHeaderRowDef","MatRowDef","MatHeaderRow","MatRow","_MatTableDataSource","_renderChangesSubscription","_filterData","_filter","_sort","_updateChangeSubscription","paginator","_paginator","initialData","_renderData","_internalPageChanges","sortingDataAccessor","sortHeaderId","numberValue","sortData","valueAType","valueBType","comparatorResult","filterPredicate","dataStr","currentTerm","transformedFilter","sortChange","pageChange","page","filteredData","orderedData","_orderData","paginatedData","_pageData","_updatePaginator","pageIndex","pageSize","filteredDataLength","lastPageIndex","newPageIndex","MatTableDataSource","GenericBrowserDomAdapter","ɵDomAdapter","supportsDOMEvents","BrowserDomAdapter","makeCurrent","ɵsetRootDomAdapter","onAndCancel","dispatchEvent","getDefaultDocument","createHtmlDocument","getBaseElementHref","relativePath","urlParsingNode","pathName","resetBaseElement","BrowserXhr","EVENT_MANAGER_PLUGINS","EventManager","plugins","_eventNameToPlugin","plugin","_plugins","_findPluginFor","getZone","EventManagerPlugin","APP_ID_ATTRIBUTE_NAME","SharedStylesHost","styleRef","hostNodes","styleNodesInDOM","collectServerRenderedStyles","platformIsServer","resetHostNodes","addStyles","changeUsageCount","onStyleAdded","removeStyles","onStyleRemoved","getAllStyles","addHost","hostNode","addStyleToHost","removeHost","styleRefValue","usage","getStyleElement","styleEl","styleElRef","NAMESPACE_URIS","xhtml","xlink","xml","xmlns","math","COMPONENT_REGEX","REMOVE_STYLES_ON_COMPONENT_DESTROY","shimStylesContent","compId","DomRendererFactory2","eventManager","sharedStylesHost","removeStylesOnCompDestroy","rendererByCompId","defaultRenderer","DefaultDomRenderer2","getOrCreateRenderer","EmulatedEncapsulationDomRenderer2","applyToHost","NoneEncapsulationDomRenderer","ShadowDomRenderer","createElementNS","isTemplateNode","namespaceUri","setAttributeNS","removeAttributeNS","decoratePreventDefault","eventHandler","hostEl","nodeOrShadowRoot","contentAttr","shimContentAttribute","componentShortId","hostAttr","shimHostAttribute","DomEventsPlugin","MODIFIER_KEYS","_keyMap","Del","Esc","Left","Right","Up","Down","Menu","Win","MODIFIER_KEY_GETTERS","alt","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","fullKey","domEventName","_normalizeKey","codeIX","modifierName","matchEventFullKeyCode","fullKeyCode","keycode","modifierGetter","keyName","platformBrowser","ɵPLATFORM_BROWSER_ID","initDomAdapter","ɵsetDocument","BROWSER_MODULE_PROVIDERS_MARKER","TESTABILITY_PROVIDERS","ɵTESTABILITY_GETTER","BrowserGetTestability","ɵglobal","getAngularTestability","getAllAngularTestabilities","getAllAngularRootElements","frameworkStabilizers","testabilities","didWork","decrement","didWork_","ɵTESTABILITY","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","providersAlreadyPresent","Title","setTitle","newTitle","createTitle","DomSanitizer","DomSanitizerImpl","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵ_sanitizeUrl","bypassSecurityTrustHtml","ɵbypassSanitizationTrustHtml","bypassSecurityTrustStyle","ɵbypassSanitizationTrustStyle","bypassSecurityTrustScript","ɵbypassSanitizationTrustScript","bypassSecurityTrustUrl","ɵbypassSanitizationTrustUrl","ɵbypassSanitizationTrustResourceUrl","domSanitizerImplFactory","takeLast","PRIMARY_OUTLET","RouteTitleKey","ParamsAsMap","convertToParamMap","defaultUrlMatcher","segments","segmentGroup","hasChildren","posParams","consumed","shallowEqual","equalArraysOrString","aSorted","bSorted","wrapIntoObservable","pathCompareMap","exact","equalSegmentGroups","containee","matrixParams","equalPath","matrixParamsMatch","numberOfChildren","subset","containsSegmentGroup","paramCompareMap","equalParams","containsParams","ignored","containsTree","paths","containsSegmentGroupHelper","containeePaths","containerPaths","containeeSegment","UrlTree","UrlSegmentGroup","_queryParamMap","DEFAULT_SERIALIZER","serializePaths","UrlSegment","parameterMap","_parameterMap","serializePath","as","bs","UrlSerializer","DefaultUrlSerializer","UrlParser","parseRootSegment","parseQueryParams","parseFragment","tree","serializeSegment","serializeQueryParams","strParams","encodeUriQuery","encodeUriFragment","encodeURI","mapChildrenIntoArray","childOutlet","encodeUriString","encodeUriSegment","decodeQuery","serializeMatrixParams","SEGMENT_RE","matchSegments","MATRIX_PARAM_SEGMENT_RE","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","consumeOptional","peekStartsWith","parseChildren","parseQueryParam","parseSegment","parseParens","parseMatrixParams","parseParam","matchMatrixKeySegments","valueMatch","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodedVal","currentVal","allowPrimary","outletName","createRoot","rootCandidate","K","squashSegmentGroup","newChildren","childCandidate","grandChildOutlet","grandChild","mergeTrivialChildren","isUrlTree","createSegmentGroupFromRoute","targetGroup","rootSegmentGroup","createSegmentGroupFromRouteRecursive","currentRoute","childOutlets","childSnapshot","createUrlTreeFromSegmentGroup","relativeTo","commands","nav","computeNavigation","Navigation","numberOfDoubleDots","isAbsolute","cmd","cmdIdx","segmentPath","urlPart","partIndex","toRoot","findStartingPositionForTargetGroup","Position","isMatrixParams","createPositionApplyingDoubleDots","g","ci","dd","newSegmentGroup","processChildren","updateSegmentGroupChildren","updateSegmentGroup","isCommandWithOutlets","oldRoot","oldSegmentGroup","qp","replaceSegment","newRoot","oldSegment","newSegment","cmdWithOutlet","prefixedWith","currentCommandIndex","currentPathIndex","noMatch","pathIndex","commandIndex","curr","compare","slicedCommands","createNewSegmentGroup","getOutlets","childrenOfEmptyChild","createNewSegmentChildren","IMPERATIVE_NAVIGATION","RouterEvent","navigationTrigger","restoredState","NavigationSkipped","GuardsCheckStart","GuardsCheckEnd","shouldActivate","ResolveStart","ResolveEnd","RouteConfigLoadStart","RouteConfigLoadEnd","ChildActivationStart","ChildActivationEnd","ActivationStart","ActivationEnd","routerEvent","BeforeActivateRoutes","RedirectRequest","OutletContext","ChildrenOutletContexts","attachRef","contexts","onChildOutletCreated","childName","getOrCreateContext","onChildOutletDestroyed","onOutletDeactivated","onOutletReAttached","Tree","_root","findNode","findPath","cc","TreeNode","nodeChildrenAsMap","RouterState","setRouterState","createEmptyState","urlTree","rootComponent","createEmptyStateSnapshot","ActivatedRouteSnapshot","RouterStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","ActivatedRoute","urlSubject","paramsSubject","queryParamsSubject","fragmentSubject","dataSubject","futureSnapshot","_futureSnapshot","_routerState","_paramMap","inheritedParamsDataResolve","inheritingStartingFrom","flattenInherited","_resolvedData","_resolve","advanceActivatedRoute","nextSnapshot","shallowEqualArrays","equalParamsAndUrlSegments","equalUrlParams","equalSegments","RouterOutlet","_activatedRoute","activateEvents","deactivateEvents","attachEvents","detachEvents","parentContexts","changeDetector","inputBinder","INPUT_BINDER","supportsBindingToComponentInputs","activatedComponentRef","isTrackedInParentContexts","initializeOutletWithName","unsubscribeFromRouteData","activateWith","isActivated","activatedRoute","activatedRouteData","cmp","bindActivatedRouteToOutletComponent","childContexts","OutletInjector","RoutedComponentInputBinder","outletDataSubscriptions","subscribeToRouteData","dataSubscription","mirror","createNode","routeReuseStrategy","prevState","shouldReuseRoute","createOrReuseChildren","shouldAttach","detachedRouteHandle","retrieve","createActivatedRoute","NAVIGATION_CANCELING_ERROR","redirectingNavigationError","urlSerializer","navigationBehaviorOptions","navigationCancelingError","redirectUrl","cancellationCode","isNavigationCancelingError$1","ɵEmptyOutletComponent","jDz","standardizeConfig","loadComponent","getOutlet","getClosestRouteInjector","_loadedInjector","ActivateRoutes","futureState","currState","forwardEvent","inputBindingEnabled","futureRoot","currRoot","deactivateChildRoutes","activateChildRoutes","futureNode","currNode","futureChild","childOutletName","deactivateRoutes","deactivateRouteAndItsChildren","future","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","activateRoutes","stored","CanActivate","CanDeactivate","getAllRouteGuards","getChildRouteGuards","getTokenOrFunctionIdentity","tokenOrFunction","ɵisInjectable","futurePath","checks","canDeactivateChecks","canActivateChecks","prevChildren","getRouteGuards","shouldRun","shouldRunGuardsAndResolvers","runGuardsAndResolvers","isEmptyError","INITIAL_VALUE","prioritizedGuardValue","redirectIfUrlTree","NoMatch","AbsoluteRedirect","noMatch$1","absoluteRedirect","newTree","ApplyRedirects","noMatchError","lineralizeSegments","applyRedirectCommands","applyRedirectCreateUrlTree","createSegmentGroup","createQueryParams","redirectToParams","actualParams","sourceName","updatedSegments","createSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","consumedSegments","remainingSegments","positionalParamSegments","matchWithChecks","getOrCreateRouteInjectorIfNeeded","currentInjector","runCanMatchGuards","canMatch","canMatchObservables","injectionToken","isCanMatch","matcher","slicedSegments","containsEmptyPathMatchesWithNamedOutlets","emptyPathMatch","createChildrenForEmptyPaths","containsEmptyPathMatches","addEmptyPathsToChildrenIfNeeded","primarySegment","Recognizer","configLoader","rootComponentType","allowRedirects","applyRedirects","recognize","processSegmentGroup","routeState","createUrlTreeFromSnapshot","inheritParamsAndData","routeNode","processSegment","sortedConfig","sortByMatchingOutlets","outletChildren","last$1","mergedChildren","mergeEmptyPathMatches","sortActivatedRouteSnapshots","localeCompare","processSegmentAgainstRoute","noLeftoversInUrl","rawSegment","isImmediateMatch","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","newSegments","getData","_loadedComponent","getResolve","getChildConfig","childConfig","childInjector","matchedOnOutlet","_loadedRoutes","runCanLoadGuards","canLoad","canLoadObservables","isCanLoad","shouldLoadResult","cfg","canLoadFails","hasEmptyPathConfig","mergedNodes","duplicateEmptyPathNode","resultNode","mergedNode","hasStaticTitle","switchTap","nextResult","ROUTES","RouterConfigLoader","componentLoaders","childrenLoaders","compiler","onLoadStartListener","loadRunner","maybeUnwrapDefaultExport","onLoadEndListener","factoryOrRoutes","rawRoutes","requireStandaloneComponents","isWrappedDefaultExport","NavigationTransitions","hasRequestedNavigation","currentNavigation","lastSuccessfulNavigation","transitionAbortSubject","rootContexts","afterPreactivation","handleNavigationRequest","setupNavigations","initialUrlTree","initialRouterState","currentUrlTree","currentRawUrl","currentBrowserUrl","extractedUrl","urlHandlingStrategy","extract","rawUrl","extras","targetSnapshot","currentRouterState","targetRouterState","guards","guardsResult","overallTransitionState","completed","initialUrl","previousNavigation","browserUrlTree","urlTransition","navigated","onSameUrlNavigation","shouldProcessUrl","recognize$1","finalUrl","navStart","skipLocationChange","replaceUrl","guardsStart","checkGuards","runCanDeactivateChecks","futureRSS","currRSS","runCanDeactivate","currARS","canDeactivateObservables","closestInjector","isCanDeactivate","isBoolean","runCanActivateChecks","fireChildActivationStart","fireActivationStart","runCanActivateChild","futureARS","canActivateChildGuardsMapped","getCanActivateChild","guardsMapped","isCanActivateChild","runCanActivate","canActivateObservables","isCanActivate","guardsEnd","cancelNavigationTransition","resolveStart","dataResolved","resolveData","canActivateChecksResolved","runResolve","resolveNode","getDataKeys","getOwnPropertySymbols","getResolver","resolvedData","resolveEnd","loadComponents","loaders","loadedComponent","createRouterState","titleStrategy","updateTitle","isRedirectingNavigationCancelingError$1","ee","navCancel","isBrowserTriggeredNavigation","TitleStrategy","buildTitle","pageTitle","getResolvedTitleForRoute","DefaultTitleStrategy","RouteReuseStrategy","DefaultRouteReuseStrategy","BaseRouteReuseStrategy","detachedTree","ROUTER_CONFIGURATION","UrlHandlingStrategy","DefaultUrlHandlingStrategy","newUrlPart","wholeUrl","NavigationResult","COMPLETE","FAILED","REDIRECTING","afterNextNavigation","defaultMalformedUriErrorHandler","exactMatchOptions","subsetMatchOptions","navigationTransitions","browserPageId","canceledNavigationResolution","currentPageId","ɵrouterPageId","disposed","ɵConsole","isNgZoneEnabled","malformedUriErrorHandler","lastSuccessfulId","urlUpdateStrategy","componentInputBindingEnabled","eventsSubscription","resetConfig","rawUrlTree","subscribeToNavigationEvents","isPublicRouterEvent","setBrowserUrl","restoreHistory","mergedTree","scheduleNavigation","resetRootComponentType","initialNavigation","setUpLocationChangeListener","navigateToSyncWithBrowser","locationSubscription","stateCopy","parseUrl","serializeUrl","getCurrentNavigation","createUrlTree","navigationExtras","queryParamsHandling","preserveFragment","relativeToUrlSegmentGroup","removeEmptyProps","validateCommands","matchOptions","priorPromise","generateNgRouterState","restoringFromCaughtError","targetPagePosition","resetState","resetUrlToCurrentUrlTree","routerPageId","RouterLink","tabIndexAttribute","onChanges","updateHref","setTabIndexIfNotOnNativeEl","newTabIndex","applyAttributeValue","routerLink","onClick","Xq5","RouterLinkActive","_isActive","cdr","link","routerLinkActiveOptions","isActiveChange","routerEventsSubscription","links","subscribeToEachLinkOnChanges","linkInputChangesSubscription","allLinkChanges","isLinkActive","routerLinkActive","hasActiveLinks","ariaCurrentWhenActive","isActiveMatchOptions","isActiveCheckFn","PreloadingStrategy","RouterPreloader","preloadingStrategy","setUpPreloading","preload","processRoutes","injectorForCurrentRoute","injectorForChildren","preloadConfig","loadedChildren$","recursiveLoadChildren$","loadComponent$","ROUTER_SCROLLER","RouterScroller","viewportScroller","lastId","lastSource","restoredId","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","scheduleScrollEvent","routerFeature","getBootstrapListener","bootstrappedComponentRef","bootstrapDone","BOOTSTRAP_DONE","INITIAL_NAVIGATION","ROUTER_PRELOADER","withPreloading","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","rootRoute","routerNgProbeToken","provideForRootGuard","useHash","scrollOffset","provideInitialNavigation","bindToComponentInputs","ROUTER_INITIALIZER","forChild","locationInitialized","Notification","observeNotification","do","nextHandler","completeHandler","accept","nextOrObserver","createNext","createError","createComplete","completeNotification","groupBy","elementOrOptions","activeGroups","teardownAttempted","groupBySourceSubscriber","grouped","createGroupedObservable","groupSubject","groupSubscriber","exhaustMap","outerValue","DEFAULT_EFFECT_CONFIG","functional","useEffectsErrorHandler","CREATE_EFFECT_METADATA_KEY","effect","getSourceForInstance","isClass","classOrRecord","getClasses","classesAndRecords","mergeEffects","sourceInstance","globalErrorHandler","effectsErrorHandler","observables$","getSourceMetadata","getCreateEffectMetadata","observable$","effectAction$","materialize","defaultEffectsErrorHandler","retryAttemptLeft","Actions","allowedTypes","typeOrActionCreator","_ROOT_EFFECTS_GUARD","USER_PROVIDED_EFFECTS","_ROOT_EFFECTS","_ROOT_EFFECTS_INSTANCES","_FEATURE_EFFECTS","_FEATURE_EFFECTS_INSTANCE_GROUPS","EFFECTS_ERROR_HANDLER","ROOT_EFFECTS_INIT","rootEffectsInit","isOnInitEffects","functionName","effectSourceInstance","toActions","effectsInstance","isClassInstance","source$","effect$","resolveEffectSource","mergedEffects$","isOnRunEffects","ngrxOnRunEffects","reportInvalidActions","reporter","isAction","getEffectName","isMethod","dematerialize","init$","ngrxOnInitEffects","isOnIdentifyEffects","ngrxOnIdentifyEffects","EffectsRunner","isStarted","effectsSubscription","effectSources","EffectsRootModule","runner","rootEffectsInstances","storeRootModule","storeFeatureModule","EffectsFeatureModule","effectsRootModule","effectsInstanceGroups","effectsInstances","forFeature","featureEffects","effects","effectsClasses","createEffectsInstances","rootEffects","_provideForRootGuard","effectsGroups","userProvidedEffectsGroups","effectsGroup","userProvidedEffectsGroup","effectsTokenOrRecord","isToken","tokenOrRecord","observablesFactory","observablesAsArray","DidMutate","EntitiesOnly","Both","createStateOperator","clonedEntityState","selectIdValue","createUnsortedStateAdapter","addOneMutably","addManyMutably","setOneMutably","removeManyMutably","keysOrPredicate","updateOneMutably","updateManyMutably","newKeys","takeNewKey","hasNewKey","upsertManyMutably","didMutateByUpdated","didMutateByAdded","setAllMutably","setMany","setManyMutably","didMutateSetOne","upsertOneMutably","removeOneMutably","mapMutably","mapOne","mapOneMutably","createSortedStateAdapter","newModels","models","didMutateIds","takeUpdatedModel","originalIds","updatedIndexes","modelId","entityId","updatesOrMap","stateFactory","createInitialStateFactory","additionalState","selectorsFactory","createSelectorsFactory","selectState","selectIds","selectTotal","PERFORM_ACTION","REFRESH","RESET","ROLLBACK","COMMIT","SWEEP","TOGGLE_ACTION","SET_ACTIONS_ACTIVE","JUMP_TO_STATE","JUMP_TO_ACTION","IMPORT_STATE","LOCK_CHANGES","PAUSE_RECORDING","PerformAction","Refresh","Reset","Rollback","Commit","Sweep","ToggleAction","SetActionsActive","JumpToState","JumpToAction","ImportState","nextLiftedState","LockChanges","PauseRecording","StoreDevtoolsConfig","STORE_DEVTOOLS_CONFIG","INITIAL_OPTIONS","noMonitor","DEFAULT_NAME","createConfig","optionsInput","DEFAULT_OPTIONS","actionSanitizer","stateSanitizer","autoPause","trace","traceLimit","export","import","jump","reorder","connectOutsideZone","difference","unliftState","liftedState","computedStates","currentStateIndex","unliftAction","actionsById","nextActionId","liftAction","sanitizeActions","sanitizedActions","actionIdx","sanitizeAction","sanitizeStates","computedState","sanitizeState","stateIdx","shouldFilterActions","actionsSafelist","actionsBlocklist","filterLiftedState","safelist","blocklist","filteredStagedActionIds","filteredActionsById","filteredComputedStates","stagedActionIds","liftedAction","isActionFiltered","blockedlist","predicateMatch","safelistMatch","escapeRegExp","blocklistMatch","injectZoneConfig","DevtoolsDispatcher","ActionsSubject","ExtensionActionTypes","START","DISPATCH","STOP","ACTION","REDUX_DEVTOOLS_EXTENSION","DevtoolsExtension","devtoolsExtension","zoneConfig","createActionStreams","isPaused","sanitizedState","sanitizedAction","sendToReduxDevtools","extensionConnection","sanitizedLiftedState","getExtensionConfig","createChangesObservable","changes$","start$","stop$","liftedActions$","unwrapAction","UPDATE","actionsUntilStop$","liftedUntilStop$","eval","extensionOptions","INIT_ACTION","INIT","RECOMPUTE","RECOMPUTE_ACTION","computeNextEntry","nextError","recomputeStates","minInvalidatedStateIndex","committedState","skippedActionIds","nextComputedStates","lastIncludedActionId","previousEntry","previousState","previousError","liftInitialState","initialCommittedState","monitorReducer","monitorState","liftReducerWith","initialLiftedState","commitExcessActions","excess","idsToDelete","commitChanges","actionIds","lastState","StoreDevtools","reducers$","scannedActions","liftedInitialState","liftReducer","liftedAction$","liftedReducer$","liftedStateSubject","liftedStateSubscription","emitInZone","reducedLiftedState","extensionStartSubscription","refresh","liftedState$","state$","performAction","rollback","commit","sweep","toggleAction","jumpToAction","jumpToState","importState","lockChanges","pauseRecording","INITIAL_STATE","IS_EXTENSION_OR_MONITOR_PRESENT","createIsExtensionOrMonitorPresent","createReduxDevtoolsExtension","extensionKey","provideStoreDevtools","StateObservable","createStateObservable","ReducerManagerDispatcher","devtools","REGISTERED_ACTION_TYPES","defineType","_as","creator","ACTIONS_SUBJECT_PROVIDERS","_ROOT_STORE_GUARD","_INITIAL_STATE","REDUCER_FACTORY","_REDUCER_FACTORY","INITIAL_REDUCERS","_INITIAL_REDUCERS","STORE_FEATURES","_STORE_REDUCERS","_FEATURE_REDUCERS","_FEATURE_CONFIGS","_STORE_FEATURES","_FEATURE_REDUCERS_TOKEN","FEATURE_REDUCERS","USER_PROVIDED_META_REDUCERS","META_REDUCERS","_RESOLVED_META_REDUCERS","USER_RUNTIME_CHECKS","_USER_RUNTIME_CHECKS","_ACTION_TYPE_UNIQUENESS_CHECK","reducerKeys","finalReducers","finalReducerKeys","hasChanged","previousStateForKey","nextStateForKey","functions","createReducerFactory","ReducerObservable","currentReducers","addFeatures","reducerDict","createFeatureReducerFactory","addReducers","removeFeature","removeFeatures","removeReducers","addReducer","St","updateReducers","removeReducer","featureKey","featureKeys","omit","keyToRemove","Ft","REDUCER_MANAGER_PROVIDERS","SCANNED_ACTIONS_SUBJECT_PROVIDERS","State","reducer$","stateAndAction$","reduceState","stateSubscription","stateActionPair","STATE_PROVIDERS","actionsObserver","pathOrMapFn","selectSignal","STORE_PROVIDERS","propsOrPath","mapped$","pathSlices","pluck","currentProp","RUNTIME_CHECK_URL","isUndefined","isNull","isObjectLike","_ngrxMockEnvironment","isEqualCheck","defaultMemoize","projectionFn","isArgumentsEqual","isResultEqual","overrideResult","lastArguments","lastResult","memoized","isArgumentsChanged","newResult","setResult","clearResult","createSelectorFactory","memoize","stateFn","defaultStateFn","isSelectorsDictionary","extractArgsFromSelectorsDictionary","selectorsDictionary","resultKeys","projector","selectorResults","Yi","memoizedSelectors","release","memoizedProjector","memoizedState","featureState","_createStoreReducers","_createFeatureStore","configs","featureStores","feat","_createFeatureReducers","reducerCollection","_initialStateFactory","_concatMetaReducers","userProvidedMetaReducers","targetIsFunction","propValue","isFrozen","getUnserializable","isString","isPlainObject","isObject","targetPrototype","throwIfUnserializable","unserializable","unserializablePath","createActiveRuntimeChecks","runtimeChecks","strictStateImmutability","strictActionImmutability","strictActionWithinNgZone","strictActionTypeUniqueness","createSerializationCheckMetaReducer","serializationCheckMetaReducer","ignoreNgrxAction","createImmutabilityCheckMetaReducer","immutabilityCheckMetaReducer","createInNgZoneCheckMetaReducer","inNgZoneAssertMetaReducer","provideRuntimeChecks","_runtimeChecksFactory","checkForActionTypeUniqueness","_actionTypeUniquenessCheck","registrations","_provideStore","_provideState","featureNameOrSlice","StoreRootModule","actionCheck","StoreFeatureModule","featureReducers","feats","ons","existingReducer","newReducer","FooterStandardComponent","HeaderStandardComponent","applicationTitle","alignment","logoImage","logoImageSrc","logoLink","spaceBetween","logoImgSrc","templateLeft","templateRight","newestOnTop","BasePortalHost","ToastRef","duplicatesCount","_afterClosed","_activate","_manualClose","_resetTimeout","_countDuplicate","manualClose","manualClosed","timeoutReset","countDuplicate","isInactive","afterActivate","onDuplicate","resetTimeout","ToastPackage","toastId","toastType","toastRef","_onTap","triggerTap","tapToDismiss","onTap","TOAST_CONFIG","DomPortalHost","_hostDomElement","_portalHost","_paneElements","_createOverlayRef","getPaneElement","_createPortalHost","currentlyActive","toasts","toastrConfig","iconClasses","override","_preBuildNotification","applyConfig","_findToast","activeToast","maxOpened","findDuplicate","resetOnDuplicate","countDuplicates","includeTitleDuplicates","onActivateTick","_buildNotification","duplicate","resetTimeoutOnDuplicate","preventDuplicates","previousToastMessage","keepInactive","autoDismiss","sanitizedMessage","toastInjector","ins","onShown","onHidden","displayStyle","toastrService","toastClasses","easeTime","originalTimeout","toastClass","activateToast","sub1","sub2","sub3","intervalId","disableTimeOut","outsideTimeout","hideTime","outsideInterval","updateProgress","tapToast","stickAround","delayedHideToast","runInsideAngular","DefaultGlobalConfig","__rest","propertyIsEnumerable","__awaiter","_arguments","P","generator","fulfilled","rejected","throw","adopt","__asyncGenerator","verb","resume","fulfill","settle","__values","SuppressedError"],"sourceRoot":"webpack:///","sources":["./src/app/core/mocks/active-terms.constant.ts","./src/app/core/mocks/archived-terms.constant.ts","./src/app/core/mocks/course-mode.model.ts","./src/app/core/mocks/course.model.ts","./src/app/core/mocks/school.model.ts","./src/app/core/mocks/department.model.ts","./src/app/core/mocks/clearance.model.ts","./src/app/core/mocks/mode.model.ts","./src/app/core/mocks/section-instructor.model.ts","./src/app/core/mocks/section-location.model.ts","./src/app/core/mocks/waitlist.model.ts","./src/app/core/mocks/session.model.ts","./src/app/core/mocks/section.model.ts","./src/app/core/pipes/phone-format.pipe.ts","./src/app/core/services/WebRegApiClient.ts","./src/app/core/services/alert.service.ts","./src/app/core/services/announcement.service.ts","./src/app/core/services/api-request.service.ts","./src/app/core/services/authentication.service.ts","./src/app/core/services/courses.service.ts","./src/app/core/services/dateTime.service.ts","./src/app/core/services/departments.service.ts","./src/app/core/services/pe.service.ts","./src/app/core/services/programs.service.ts","./src/app/core/services/schools.service.ts","./src/app/core/services/toast-notification.service.ts","./src/app/modules/admin/semesters/configuration/store/configurations.actions.ts","./src/app/modules/admin/semesters/configuration/store/configurations.reducer.ts","./src/app/modules/main/homepage/store/app-title/app-title.actions.ts","./src/app/modules/main/homepage/store/app-title/app-title.reducer.ts","./src/app/modules/main/homepage/store/terms/terms.actions.ts","./src/app/modules/main/homepage/store/terms/terms.reducer.ts","./src/app/modules/main/term/components/search/filter-dialog/filter-dialog.component.ts","./src/app/modules/main/term/components/search/filter-dialog/filter-dialog.component.html","./src/app/shared-components/shared-components.module.ts","./src/app/store/coursePrefixes/coursePrefixes.actions.ts","./src/app/store/coursePrefixes/coursePrefixes.reducer.ts","./src/app/store/pe-configurable-sessions/pe-configurable-sessions.actions.ts","./src/app/store/pe-configurable-sessions/pe-configurable-sessions.reducer.ts","./src/app/store/program-course-list/program-course-list.actions.ts","./src/app/store/program-course-list/program-course-list.reducer.ts","./src/app/store/program-details/program-details.actions.ts","./src/app/store/program-details/program-details.reducer.ts","./src/app/store/programs/programs.actions.ts","./src/app/store/programs/programs.reducer.ts","./src/app/store/schools/schools.actions.ts","./src/app/store/schools/schools.reducer.ts","./src/app/store/schools/schools.selectors.ts","./src/app/store/sessions/sessions.actions.ts","./src/app/store/sessions/sessions.reducer.ts","./src/environments/environment.prod.ts","../packages/animations/browser/src/error_helpers.ts","../packages/animations/browser/src/render/shared.ts","../packages/animations/browser/src/render/animation_driver.ts","../packages/animations/browser/src/util.ts","../packages/animations/browser/src/dsl/animation_transition_expr.ts","../packages/animations/browser/src/dsl/animation_ast_builder.ts","../packages/animations/browser/src/dsl/animation_timeline_instruction.ts","../packages/animations/browser/src/dsl/element_instruction_map.ts","../packages/animations/browser/src/dsl/animation_timeline_builder.ts","../packages/animations/browser/src/dsl/style_normalization/animation_style_normalizer.ts","../packages/animations/browser/src/dsl/style_normalization/web_animations_style_normalizer.ts","../packages/animations/browser/src/dsl/animation_transition_instruction.ts","../packages/animations/browser/src/dsl/animation_transition_factory.ts","../packages/animations/browser/src/dsl/animation_trigger.ts","../packages/animations/browser/src/render/timeline_animation_engine.ts","../packages/animations/browser/src/render/transition_animation_engine.ts","../packages/animations/browser/src/render/animation_engine_next.ts","../packages/animations/browser/src/render/special_cased_styles.ts","../packages/animations/browser/src/render/web_animations/web_animations_player.ts","../packages/animations/browser/src/render/web_animations/web_animations_driver.ts","../packages/platform-browser/animations/src/animation_builder.ts","../packages/platform-browser/animations/src/animation_renderer.ts","../packages/platform-browser/animations/src/providers.ts","../packages/platform-browser/animations/src/module.ts","./src/app/core/services/terms.service.ts","./modules/router-store/src/actions.ts","./modules/router-store/src/serializers/minimal_serializer.ts","./modules/router-store/src/router_store_config.ts","./modules/router-store/src/serializers/full_serializer.ts","./modules/router-store/src/serializers/base.ts","./modules/router-store/src/store_router_connecting.service.ts","./modules/router-store/src/provide_router_store.ts","./modules/router-store/src/router_store_module.ts","./src/app/store/app.reducer.ts","./modules/router-store/src/reducer.ts","./src/app/store/programs/programs.effects.ts","./src/app/store/schools/schools.effects.ts","./src/app/modules/main/homepage/store/terms/terms.effects.ts","./node_modules/rxjs/src/internal/observable/race.ts","./modules/data/src/actions/entity-action-factory.ts","./modules/data/src/actions/entity-action-guard.ts","./modules/data/src/utils/utilities.ts","./modules/data/src/actions/entity-action-operators.ts","./modules/data/src/actions/entity-cache-change-set.ts","./modules/data/src/actions/merge-strategy.ts","./modules/data/src/actions/entity-cache-action.ts","./modules/data/src/actions/entity-op.ts","./modules/data/src/dataservices/data-service-error.ts","./modules/data/src/dataservices/default-data-service-config.ts","./modules/data/src/utils/interfaces.ts","./modules/data/src/dataservices/http-url-generator.ts","./modules/data/src/dataservices/default-data.service.ts","./modules/data/src/entity-metadata/entity-metadata.ts","./modules/data/src/entity-metadata/entity-definition.service.ts","./modules/data/src/entity-metadata/entity-definition.ts","./modules/data/src/dataservices/entity-cache-data.service.ts","./modules/data/src/dataservices/entity-data.service.ts","./modules/data/src/dataservices/persistence-result-handler.service.ts","./modules/data/src/dispatchers/entity-dispatcher.ts","./modules/data/src/utils/correlation-id-generator.ts","./modules/data/src/dispatchers/entity-dispatcher-default-options.ts","./modules/data/src/dispatchers/entity-cache-dispatcher.ts","./modules/data/src/dispatchers/entity-dispatcher-base.ts","./modules/data/src/reducers/constants.ts","./modules/data/src/selectors/entity-cache-selector.ts","./modules/data/src/dispatchers/entity-dispatcher-factory.ts","./modules/data/src/effects/entity-effects-scheduler.ts","./modules/data/src/effects/entity-cache-effects.ts","./modules/data/src/effects/entity-effects.ts","./modules/data/src/entity-services/entity-collection-service-base.ts","./modules/data/src/reducers/entity-collection-creator.ts","./modules/data/src/selectors/entity-selectors.ts","./modules/data/src/selectors/entity-selectors$.ts","./modules/data/src/entity-services/entity-collection-service-elements-factory.ts","./modules/data/src/entity-services/entity-collection-service-factory.ts","./modules/data/src/entity-services/entity-services-elements.ts","./modules/data/src/entity-services/entity-services-base.ts","./modules/data/src/reducers/entity-collection.ts","./modules/data/src/reducers/entity-change-tracker-base.ts","./modules/data/src/reducers/entity-collection-reducer-methods.ts","./modules/data/src/reducers/entity-collection-reducer.ts","./modules/data/src/reducers/entity-collection-reducer-registry.ts","./modules/data/src/reducers/entity-cache-reducer.ts","./modules/data/src/utils/default-logger.ts","./modules/data/src/utils/default-pluralizer.ts","./modules/data/src/provide-entity-data.ts","./modules/data/src/entity-services/entity-services.ts","./modules/data/src/entity-data-without-effects.module.ts","./modules/data/src/entity-data.module.ts","./src/app/shared-components/custom-toast/custom-toast.component.ts","./src/app/core/guards/admin-auth-guard.ts","./src/app/app-routing.module.ts","./node_modules/@datadog/browser-core/src/tools/display.ts","./node_modules/@datadog/browser-core/src/tools/catchUserErrors.ts","./node_modules/@datadog/browser-core/src/tools/monitor.ts","./node_modules/@datadog/browser-core/src/tools/utils/polyfills.ts","./node_modules/@datadog/browser-core/src/boot/init.ts","./node_modules/@datadog/browser-core/src/tools/getGlobalObject.ts","./node_modules/@datadog/browser-core/src/tools/utils/byteUtils.ts","./node_modules/@datadog/browser-core/src/tools/getZoneJsOriginalValue.ts","./node_modules/@datadog/browser-core/src/tools/timer.ts","./node_modules/@datadog/browser-core/src/tools/utils/functionUtils.ts","./node_modules/@datadog/browser-core/src/tools/utils/typeUtils.ts","./node_modules/@datadog/browser-core/src/tools/mergeInto.ts","./node_modules/@datadog/browser-core/src/tools/serialisation/jsonStringify.ts","./node_modules/@datadog/browser-core/src/tools/serialisation/sanitize.ts","./node_modules/@datadog/browser-core/src/tools/observable.ts","./node_modules/@datadog/browser-core/src/domain/context/heavyCustomerDataWarning.ts","./node_modules/@datadog/browser-core/src/domain/context/contextManager.ts","./node_modules/@datadog/browser-core/src/tools/boundedBuffer.ts","./node_modules/@datadog/browser-core/src/tools/utils/numberUtils.ts","./node_modules/@datadog/browser-core/src/tools/utils/timeUtils.ts","./node_modules/@datadog/browser-core/src/browser/cookie.ts","./node_modules/@datadog/browser-core/src/tools/utils/stringUtils.ts","./node_modules/@datadog/browser-core/src/domain/synthetics/syntheticsWorkerValues.ts","./node_modules/@datadog/browser-core/src/transport/eventBridge.ts","./node_modules/@datadog/browser-core/src/browser/addEventListener.ts","./node_modules/@datadog/browser-core/src/domain/context/storedContextManager.ts","./node_modules/@datadog/browser-core/src/domain/tracekit/computeStackTrace.ts","./node_modules/@datadog/browser-core/src/domain/error/error.ts","./node_modules/@datadog/browser-core/src/domain/user/user.ts","./node_modules/@datadog/browser-core/src/tools/experimentalFeatures.ts","./node_modules/@datadog/browser-core/src/tools/utils/objectUtils.ts","./node_modules/@datadog/browser-core/src/domain/session/sessionConstants.ts","./node_modules/@datadog/browser-core/src/tools/utils/browserDetection.ts","./node_modules/@datadog/browser-core/src/domain/session/storeStrategies/sessionStoreStrategy.ts","./node_modules/@datadog/browser-core/src/domain/session/sessionState.ts","./node_modules/@datadog/browser-core/src/domain/session/oldCookiesMigration.ts","./node_modules/@datadog/browser-core/src/domain/session/storeStrategies/sessionInCookie.ts","./node_modules/@datadog/browser-core/src/domain/session/storeStrategies/sessionInLocalStorage.ts","./node_modules/@datadog/browser-core/src/domain/session/sessionStoreOperations.ts","./node_modules/@datadog/browser-core/src/domain/session/sessionStore.ts","./node_modules/@datadog/browser-core/src/tools/utils/urlPolyfill.ts","./node_modules/@datadog/browser-core/src/domain/configuration/intakeSites.ts","./node_modules/@datadog/browser-core/src/domain/configuration/endpointBuilder.ts","./node_modules/@datadog/browser-core/src/domain/configuration/tags.ts","./node_modules/@datadog/browser-core/src/domain/configuration/configuration.ts","./node_modules/@datadog/browser-core/src/domain/configuration/transportConfiguration.ts","./node_modules/@datadog/browser-core/src/tools/matchOption.ts","./node_modules/@datadog/browser-rum-core/src/domain/tracing/tracer.ts","./node_modules/@datadog/browser-rum-core/src/domain/configuration.ts","./node_modules/@datadog/browser-rum-core/src/domain/contexts/commonContext.ts","./node_modules/@datadog/browser-core/src/tools/sendToExtension.ts","./node_modules/@datadog/browser-core/src/domain/telemetry/rawTelemetryEvent.types.ts","./node_modules/@datadog/browser-core/src/domain/telemetry/telemetry.ts","./node_modules/@datadog/browser-core/src/browser/pageExitObservable.ts","./node_modules/@datadog/browser-rum-core/src/browser/domMutationObservable.ts","./node_modules/@datadog/browser-core/src/browser/runOnReadyState.ts","./node_modules/@datadog/browser-rum-core/src/domain/resource/resourceUtils.ts","./node_modules/@datadog/browser-rum-core/src/browser/htmlDomUtils.ts","./node_modules/@datadog/browser-rum-core/src/domain/tracing/getDocumentTraceId.ts","./node_modules/@datadog/browser-rum-core/src/browser/performanceCollection.ts","./node_modules/@datadog/browser-core/src/domain/error/error.types.ts","./node_modules/@datadog/browser-core/src/domain/eventRateLimiter/createEventRateLimiter.ts","./node_modules/@datadog/browser-rum-core/src/domain/limitModification.ts","./node_modules/@datadog/browser-rum-core/src/domain/assembly.ts","./node_modules/@datadog/browser-rum-core/src/domain/contexts/syntheticsContext.ts","./node_modules/@datadog/browser-rum-core/src/domain/contexts/ciTestContext.ts","./node_modules/@datadog/browser-core/src/tools/abstractLifeCycle.ts","./node_modules/@datadog/browser-rum-core/src/domain/lifeCycle.ts","./node_modules/@datadog/browser-core/src/tools/valueHistory.ts","./node_modules/@datadog/browser-rum-core/src/domain/contexts/viewContexts.ts","./node_modules/@datadog/browser-core/src/tools/instrumentMethod.ts","./node_modules/@datadog/browser-core/src/browser/xhrObservable.ts","./node_modules/@datadog/browser-core/src/browser/fetchObservable.ts","./node_modules/@datadog/browser-core/src/tools/utils/responseUtils.ts","./node_modules/@datadog/browser-core/src/tools/readBytesFromStream.ts","./node_modules/@datadog/browser-rum-core/src/domain/requestCollection.ts","./node_modules/@datadog/browser-rum-core/src/domain/trackEventCounts.ts","./node_modules/@datadog/browser-rum-core/src/domain/waitPageActivityEnd.ts","./node_modules/@datadog/browser-rum-core/src/domain/action/getActionNameFromElement.ts","./node_modules/@datadog/browser-rum-core/src/domain/getSelectorFromElement.ts","./node_modules/@datadog/browser-rum-core/src/domain/action/clickChain.ts","./node_modules/@datadog/browser-rum-core/src/domain/action/listenActionEvents.ts","./node_modules/@datadog/browser-rum-core/src/domain/action/computeFrustration.ts","./node_modules/@datadog/browser-rum-core/src/domain/action/trackClickActions.ts","./node_modules/@datadog/browser-rum-core/src/domain/action/actionCollection.ts","./node_modules/@datadog/browser-core/src/domain/tracekit/tracekit.ts","./node_modules/@datadog/browser-core/src/domain/error/trackRuntimeError.ts","./node_modules/@datadog/browser-core/src/domain/console/consoleObservable.ts","./node_modules/@datadog/browser-core/src/domain/report/reportObservable.ts","./node_modules/@datadog/browser-rum-core/src/domain/resource/matchRequestTiming.ts","./node_modules/@datadog/browser-rum-core/src/domain/resource/resourceCollection.ts","./node_modules/@datadog/browser-rum-core/src/domain/contexts/foregroundContexts.ts","./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackFirstContentfulPaint.ts","./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackLargestContentfulPaint.ts","./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/interactionCountPolyfill.ts","./node_modules/@datadog/browser-rum-core/src/browser/viewportObservable.ts","./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackInteractionToNextPaint.ts","./node_modules/@datadog/browser-rum-core/src/browser/scroll.ts","./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackScrollMetrics.ts","./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackCommonViewMetrics.ts","./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackLoadingTime.ts","./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackCumulativeLayoutShift.ts","./node_modules/@datadog/browser-rum-core/src/domain/view/trackViews.ts","./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackInitialViewMetrics.ts","./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackNavigationTimings.ts","./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackFirstHidden.ts","./node_modules/@datadog/browser-rum-core/src/domain/view/viewMetrics/trackFirstInput.ts","./node_modules/@datadog/browser-rum-core/src/domain/view/trackViewEventCounts.ts","./node_modules/@datadog/browser-rum-core/src/domain/view/viewCollection.ts","./node_modules/@datadog/browser-core/src/domain/session/sessionManager.ts","./node_modules/@datadog/browser-rum-core/src/domain/rumSessionManager.ts","./node_modules/@datadog/browser-core/src/transport/batch.ts","./node_modules/@datadog/browser-core/src/transport/sendWithRetryStrategy.ts","./node_modules/@datadog/browser-core/src/transport/httpRequest.ts","./node_modules/@datadog/browser-core/src/transport/startBatchWithReplica.ts","./node_modules/@datadog/browser-core/src/transport/flushController.ts","./node_modules/@datadog/browser-rum-core/src/domain/contexts/urlContexts.ts","./node_modules/@datadog/browser-rum-core/src/domain/contexts/featureFlagContext.ts","./node_modules/@datadog/browser-rum-core/src/domain/startCustomerDataTelemetry.ts","./node_modules/@datadog/browser-rum-core/src/domain/contexts/pageStateHistory.ts","./node_modules/@datadog/browser-rum/src/types/sessionReplayConstants.ts","./node_modules/@datadog/browser-rum/src/domain/record/assembly.ts","./node_modules/@datadog/browser-rum/src/constants.ts","./node_modules/@datadog/browser-rum/src/domain/record/privacy.ts","./node_modules/@datadog/browser-rum/src/domain/record/serialization/serializationUtils.ts","./node_modules/@datadog/browser-rum/src/domain/record/serialization/serializeStyleSheets.ts","./node_modules/@datadog/browser-rum/src/domain/record/serialization/serializeAttribute.ts","./node_modules/@datadog/browser-rum/src/domain/record/serialization/serializeAttributes.ts","./node_modules/@datadog/browser-rum/src/domain/record/serialization/serializeNode.ts","./node_modules/@datadog/browser-rum/src/domain/record/serialization/serializeDocument.ts","./node_modules/@datadog/browser-rum/src/domain/record/eventsUtils.ts","./node_modules/@datadog/browser-rum/src/domain/record/viewports.ts","./node_modules/@datadog/browser-rum/src/domain/record/observers/moveObserver.ts","./node_modules/@datadog/browser-rum/src/domain/record/observers/scrollObserver.ts","./node_modules/@datadog/browser-rum/src/domain/record/observers/mouseInteractionObserver.ts","./node_modules/@datadog/browser-rum/src/domain/record/observers/inputObserver.ts","./node_modules/@datadog/browser-rum/src/domain/record/observers/styleSheetObserver.ts","./node_modules/@datadog/browser-rum/src/domain/record/observers/viewportResizeObserver.ts","./node_modules/@datadog/browser-rum/src/domain/record/mutationBatch.ts","./node_modules/@datadog/browser-rum/src/domain/record/observers/mutationObserver.ts","./node_modules/@datadog/browser-rum/src/domain/record/record.ts","./node_modules/@datadog/browser-rum/src/domain/record/elementsScrollPositions.ts","./node_modules/@datadog/browser-rum/src/domain/record/shadowRootsController.ts","./node_modules/@datadog/browser-rum/src/domain/record/observers/observers.ts","./node_modules/@datadog/browser-rum/src/domain/record/observers/recordIds.ts","./node_modules/@datadog/browser-rum/src/domain/record/observers/mediaInteractionObserver.ts","./node_modules/@datadog/browser-rum/src/domain/record/observers/focusObserver.ts","./node_modules/@datadog/browser-rum/src/domain/record/observers/frustrationObserver.ts","./node_modules/@datadog/browser-rum/src/domain/replayStats.ts","./node_modules/@datadog/browser-rum/src/domain/segmentCollection/segment.ts","./node_modules/@datadog/browser-rum/src/domain/segmentCollection/segmentCollection.ts","./node_modules/@datadog/browser-rum/src/boot/isBrowserSupported.ts","./node_modules/@datadog/browser-rum/src/domain/getSessionReplayLink.ts","./node_modules/@datadog/browser-rum-core/src/domain/getSessionReplayUrl.ts","./node_modules/@datadog/browser-rum/src/domain/deflate/deflateWorker.ts","./node_modules/@datadog/browser-rum/src/entries/main.ts","./node_modules/@datadog/browser-rum-core/src/boot/rumPublicApi.ts","./node_modules/@datadog/browser-rum-core/src/boot/startRum.ts","./node_modules/@datadog/browser-rum-core/src/transport/startRumEventBridge.ts","./node_modules/@datadog/browser-rum-core/src/transport/startRumBatch.ts","./node_modules/@datadog/browser-rum-core/src/browser/locationChangeObservable.ts","./node_modules/@datadog/browser-rum-core/src/domain/contexts/displayContext.ts","./node_modules/@datadog/browser-rum-core/src/domain/longTask/longTaskCollection.ts","./node_modules/@datadog/browser-rum-core/src/domain/error/errorCollection.ts","./node_modules/@datadog/browser-rum-core/src/domain/error/trackConsoleError.ts","./node_modules/@datadog/browser-rum-core/src/domain/error/trackReportError.ts","./node_modules/@datadog/browser-rum-core/src/domain/contexts/internalContext.ts","./node_modules/@datadog/browser-rum/src/boot/recorderApi.ts","./node_modules/@datadog/browser-rum/src/domain/deflate/deflateEncoder.ts","./node_modules/@datadog/browser-rum/src/boot/startRecording.ts","./node_modules/@datadog/browser-rum/src/domain/segmentCollection/buildReplayPayload.ts","./node_modules/@datadog/browser-logs/src/domain/configuration.ts","./node_modules/@datadog/browser-core/src/tools/utils/arrayUtils.ts","./node_modules/@datadog/browser-logs/src/domain/logger.ts","./node_modules/@datadog/browser-logs/src/domain/logsSessionManager.ts","./node_modules/@datadog/browser-logs/src/domain/logger/loggerCollection.ts","./node_modules/@datadog/browser-logs/src/domain/assembly.ts","./node_modules/@datadog/browser-logs/src/domain/console/consoleCollection.ts","./node_modules/@datadog/browser-logs/src/domain/report/reportCollection.ts","./node_modules/@datadog/browser-logs/src/domain/networkError/networkErrorCollection.ts","./node_modules/@datadog/browser-logs/src/domain/lifeCycle.ts","./node_modules/@datadog/browser-logs/src/entries/main.ts","./node_modules/@datadog/browser-logs/src/boot/logsPublicApi.ts","./node_modules/@datadog/browser-logs/src/boot/startLogs.ts","./node_modules/@datadog/browser-logs/src/domain/runtimeError/runtimeErrorCollection.ts","./node_modules/@datadog/browser-logs/src/transport/startLogsBridge.ts","./node_modules/@datadog/browser-logs/src/transport/startLogsBatch.ts","./node_modules/@datadog/browser-logs/src/domain/internalContext.ts","./src/app/core/services/logger.service.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/store/entity-metadata.ts","./src/app/core/guards/can-deactivate-admin-form.ts","./src/app/store/sessions/sessions.effects.ts","./src/app/core/services/program-course-list.service.ts","./src/app/store/program-course-list/program-course-list.effects.ts","./src/app/csrf-header.interceptor.ts","./src/app/app.module.ts","./src/main.ts","./node_modules/rxjs/src/internal/BehaviorSubject.ts","./node_modules/rxjs/src/internal/Observable.ts","./node_modules/rxjs/src/internal/ReplaySubject.ts","./node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts","./node_modules/rxjs/src/internal/Subject.ts","./node_modules/rxjs/src/internal/NotificationFactories.ts","./node_modules/rxjs/src/internal/Subscriber.ts","./node_modules/rxjs/src/internal/util/UnsubscriptionError.ts","./node_modules/rxjs/src/internal/Subscription.ts","./node_modules/rxjs/src/internal/config.ts","./node_modules/rxjs/src/internal/observable/ConnectableObservable.ts","./node_modules/rxjs/src/internal/observable/combineLatest.ts","./node_modules/rxjs/src/internal/observable/concat.ts","./node_modules/rxjs/src/internal/operators/concatAll.ts","./node_modules/rxjs/src/internal/observable/defer.ts","./node_modules/rxjs/src/internal/observable/empty.ts","./node_modules/rxjs/src/internal/observable/forkJoin.ts","./node_modules/rxjs/src/internal/operators/subscribeOn.ts","./node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts","./node_modules/rxjs/src/internal/observable/from.ts","./node_modules/rxjs/src/internal/scheduled/scheduled.ts","./node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts","./node_modules/rxjs/src/internal/scheduled/scheduleArray.ts","./node_modules/rxjs/src/internal/scheduled/schedulePromise.ts","./node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts","./node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts","./node_modules/rxjs/src/internal/observable/fromEvent.ts","./node_modules/rxjs/src/internal/observable/innerFrom.ts","./node_modules/rxjs/src/internal/observable/merge.ts","./node_modules/rxjs/src/internal/observable/of.ts","./node_modules/rxjs/src/internal/observable/throwError.ts","./node_modules/rxjs/src/internal/observable/timer.ts","./node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts","./node_modules/rxjs/src/internal/operators/auditTime.ts","./node_modules/rxjs/src/internal/operators/audit.ts","./node_modules/rxjs/src/internal/operators/catchError.ts","./node_modules/rxjs/src/internal/operators/concatMap.ts","./node_modules/rxjs/src/internal/operators/debounceTime.ts","./node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts","./node_modules/rxjs/src/internal/operators/delayWhen.ts","./node_modules/rxjs/src/internal/operators/delay.ts","./node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts","./node_modules/rxjs/src/internal/operators/filter.ts","./node_modules/rxjs/src/internal/operators/finalize.ts","./node_modules/rxjs/src/internal/operators/first.ts","./node_modules/rxjs/src/internal/operators/ignoreElements.ts","./node_modules/rxjs/src/internal/operators/map.ts","./node_modules/rxjs/src/internal/operators/mapTo.ts","./node_modules/rxjs/src/internal/operators/mergeAll.ts","./node_modules/rxjs/src/internal/operators/mergeMap.ts","./node_modules/rxjs/src/internal/operators/mergeInternals.ts","./node_modules/rxjs/src/internal/operators/observeOn.ts","./node_modules/rxjs/src/internal/operators/refCount.ts","./node_modules/rxjs/src/internal/operators/scan.ts","./node_modules/rxjs/src/internal/operators/scanInternals.ts","./node_modules/rxjs/src/internal/operators/share.ts","./node_modules/rxjs/src/internal/operators/shareReplay.ts","./node_modules/rxjs/src/internal/operators/skip.ts","./node_modules/rxjs/src/internal/operators/startWith.ts","./node_modules/rxjs/src/internal/operators/switchMap.ts","./node_modules/rxjs/src/internal/operators/take.ts","./node_modules/rxjs/src/internal/operators/takeUntil.ts","./node_modules/rxjs/src/internal/operators/tap.ts","./node_modules/rxjs/src/internal/operators/throwIfEmpty.ts","./node_modules/rxjs/src/internal/operators/timeout.ts","./node_modules/rxjs/src/internal/operators/withLatestFrom.ts","./node_modules/rxjs/src/internal/scheduler/Action.ts","./node_modules/rxjs/src/internal/scheduler/intervalProvider.ts","./node_modules/rxjs/src/internal/scheduler/AsyncAction.ts","./node_modules/rxjs/src/internal/Scheduler.ts","./node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts","./node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts","./node_modules/rxjs/src/internal/scheduler/animationFrame.ts","./node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts","./node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts","./node_modules/rxjs/src/internal/util/Immediate.ts","./node_modules/rxjs/src/internal/scheduler/immediateProvider.ts","./node_modules/rxjs/src/internal/scheduler/asap.ts","./node_modules/rxjs/src/internal/scheduler/AsapScheduler.ts","./node_modules/rxjs/src/internal/scheduler/AsapAction.ts","./node_modules/rxjs/src/internal/scheduler/async.ts","./node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts","./node_modules/rxjs/src/internal/scheduler/queue.ts","./node_modules/rxjs/src/internal/scheduler/QueueScheduler.ts","./node_modules/rxjs/src/internal/scheduler/QueueAction.ts","./node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts","./node_modules/rxjs/src/internal/symbol/iterator.ts","./node_modules/rxjs/src/internal/symbol/observable.ts","./node_modules/rxjs/src/internal/util/EmptyError.ts","./node_modules/rxjs/src/internal/util/args.ts","./node_modules/rxjs/src/internal/util/argsArgArrayOrObject.ts","./node_modules/rxjs/src/internal/util/argsOrArgArray.ts","./node_modules/rxjs/src/internal/util/arrRemove.ts","./node_modules/rxjs/src/internal/util/createErrorClass.ts","./node_modules/rxjs/src/internal/util/createObject.ts","./node_modules/rxjs/src/internal/util/errorContext.ts","./node_modules/rxjs/src/internal/util/executeSchedule.ts","./node_modules/rxjs/src/internal/util/identity.ts","./node_modules/rxjs/src/internal/util/isArrayLike.ts","./node_modules/rxjs/src/internal/util/isAsyncIterable.ts","./node_modules/rxjs/src/internal/util/isDate.ts","./node_modules/rxjs/src/internal/util/isFunction.ts","./node_modules/rxjs/src/internal/util/isInteropObservable.ts","./node_modules/rxjs/src/internal/util/isIterable.ts","./node_modules/rxjs/src/internal/util/isObservable.ts","./node_modules/rxjs/src/internal/util/isPromise.ts","./node_modules/rxjs/src/internal/util/isReadableStreamLike.ts","./node_modules/rxjs/src/internal/util/isScheduler.ts","./node_modules/rxjs/src/internal/util/lift.ts","./node_modules/rxjs/src/internal/util/mapOneOrManyArgs.ts","./node_modules/rxjs/src/internal/util/noop.ts","./node_modules/rxjs/src/internal/util/pipe.ts","./node_modules/rxjs/src/internal/util/reportUnhandledError.ts","./node_modules/rxjs/src/internal/util/throwUnobservableError.ts","./node_modules/sweetalert2/dist/sweetalert2.all.js","../packages/animations/src/animation_builder.ts","../packages/animations/src/animation_metadata.ts","../packages/animations/src/players/animation_player.ts","../packages/animations/src/players/animation_group_player.ts","../packages/animations/src/private_export.ts","../src/cdk/a11y/aria-describer/aria-reference.ts","../src/cdk/a11y/aria-describer/aria-describer.ts","../src/cdk/a11y/key-manager/list-key-manager.ts","../src/cdk/a11y/key-manager/activedescendant-key-manager.ts","../src/cdk/a11y/key-manager/focus-key-manager.ts","../src/cdk/a11y/interactivity-checker/interactivity-checker.ts","../src/cdk/a11y/focus-trap/focus-trap.ts","../src/cdk/a11y/fake-event-detection.ts","../src/cdk/a11y/input-modality/input-modality-detector.ts","../src/cdk/a11y/live-announcer/live-announcer-tokens.ts","../src/cdk/a11y/live-announcer/live-announcer.ts","../src/cdk/a11y/focus-monitor/focus-monitor.ts","../src/cdk/a11y/high-contrast-mode/high-contrast-mode-detector.ts","../src/cdk/a11y/a11y-module.ts","../src/cdk/bidi/dir-document-token.ts","../src/cdk/bidi/directionality.ts","../src/cdk/bidi/bidi-module.ts","../src/cdk/coercion/boolean-property.ts","../src/cdk/coercion/number-property.ts","../src/cdk/coercion/array.ts","../src/cdk/coercion/css-pixel-value.ts","../src/cdk/coercion/element.ts","../src/cdk/coercion/string-array.ts","../src/cdk/collections/data-source.ts","../src/cdk/collections/dispose-view-repeater-strategy.ts","../src/cdk/collections/recycle-view-repeater-strategy.ts","../src/cdk/collections/selection-model.ts","../src/cdk/collections/unique-selection-dispatcher.ts","../src/cdk/collections/view-repeater.ts","../src/cdk/keycodes/keycodes.ts","../src/cdk/keycodes/modifiers.ts","../src/cdk/layout/media-matcher.ts","../src/cdk/layout/breakpoints-observer.ts","../src/cdk/layout/breakpoints.ts","../src/cdk/observers/observe-content.ts","../src/cdk/overlay/scroll/block-scroll-strategy.ts","../src/cdk/overlay/scroll/close-scroll-strategy.ts","../src/cdk/overlay/scroll/noop-scroll-strategy.ts","../src/cdk/overlay/position/scroll-clip.ts","../src/cdk/overlay/scroll/reposition-scroll-strategy.ts","../src/cdk/overlay/scroll/scroll-strategy-options.ts","../src/cdk/overlay/overlay-config.ts","../src/cdk/overlay/position/connected-position.ts","../src/cdk/overlay/dispatchers/base-overlay-dispatcher.ts","../src/cdk/overlay/dispatchers/overlay-keyboard-dispatcher.ts","../src/cdk/overlay/dispatchers/overlay-outside-click-dispatcher.ts","../src/cdk/overlay/overlay-container.ts","../src/cdk/overlay/overlay-ref.ts","../src/cdk/overlay/position/flexible-connected-position-strategy.ts","../src/cdk/overlay/position/global-position-strategy.ts","../src/cdk/overlay/position/overlay-position-builder.ts","../src/cdk/overlay/overlay.ts","../src/cdk/overlay/overlay-directives.ts","./node_modules/rxjs/src/internal/operators/takeWhile.ts","../src/cdk/overlay/overlay-module.ts","../src/cdk/platform/platform.ts","../src/cdk/platform/features/input-types.ts","../src/cdk/platform/features/passive-listeners.ts","../src/cdk/platform/features/scrolling.ts","../src/cdk/platform/features/shadow-dom.ts","../src/cdk/platform/features/test-environment.ts","../src/cdk/portal/portal.ts","../src/cdk/portal/dom-portal-outlet.ts","../src/cdk/portal/portal-directives.ts","../src/cdk/scrolling/scroll-dispatcher.ts","../src/cdk/scrolling/scrollable.ts","../src/cdk/scrolling/viewport-ruler.ts","../src/cdk/scrolling/scrolling-module.ts","../packages/common/src/dom_adapter.ts","../packages/common/src/dom_tokens.ts","../packages/common/src/location/platform_location.ts","../packages/common/src/location/util.ts","../packages/common/src/location/location_strategy.ts","../packages/common/src/location/hash_location_strategy.ts","../packages/common/src/location/location.ts","../packages/common/src/i18n/locale_data_api.ts","../packages/common/src/i18n/format_date.ts","../packages/common/src/i18n/localization.ts","../packages/common/src/cookie.ts","../packages/common/src/directives/ng_class.ts","../packages/common/src/directives/ng_for_of.ts","../packages/common/src/directives/ng_if.ts","../packages/common/src/directives/ng_switch.ts","../packages/common/src/directives/ng_plural.ts","../packages/common/src/directives/ng_style.ts","../packages/common/src/directives/ng_template_outlet.ts","../packages/common/src/pipes/invalid_pipe_argument_error.ts","../packages/common/src/pipes/async_pipe.ts","../packages/common/src/pipes/date_pipe_config.ts","../packages/common/src/pipes/date_pipe.ts","../packages/common/src/common_module.ts","../packages/common/src/platform_id.ts","../packages/common/src/viewport_scroller.ts","../packages/common/src/xhr.ts","../packages/common/http/src/backend.ts","../packages/common/http/src/headers.ts","../packages/common/http/src/params.ts","../packages/common/http/src/context.ts","../packages/common/http/src/request.ts","../packages/common/http/src/response.ts","../packages/common/http/src/client.ts","../packages/common/http/src/interceptor.ts","../packages/common/http/src/xhr.ts","../packages/common/http/src/xsrf.ts","../packages/common/http/src/provider.ts","../packages/common/http/src/module.ts","../packages/core/src/util/property.ts","../packages/core/src/util/stringify.ts","../packages/core/src/di/forward_ref.ts","../packages/core/src/di/interface/provider.ts","../packages/core/src/error_details_base_url.ts","../packages/core/src/errors.ts","../packages/core/src/render3/util/stringify_utils.ts","../packages/core/src/render3/errors_di.ts","../packages/core/src/util/assert.ts","../packages/core/src/di/interface/defs.ts","../packages/core/src/di/interface/injector.ts","../packages/core/src/di/inject_switch.ts","../packages/core/src/util/global.ts","../packages/core/src/di/injection_token.ts","../packages/core/src/di/injector_compatibility.ts","../packages/core/src/util/closure.ts","../packages/core/src/change_detection/constants.ts","../packages/core/src/metadata/view.ts","../packages/core/src/util/empty.ts","../packages/core/src/render3/fields.ts","../packages/core/src/render3/styling/class_differ.ts","../packages/core/src/render3/util/attrs_utils.ts","../packages/core/src/render3/node_selector_matcher.ts","../packages/core/src/render3/definition.ts","../packages/core/src/render3/interfaces/view.ts","../packages/core/src/render3/interfaces/container.ts","../packages/core/src/render3/interfaces/type_checks.ts","../packages/core/src/render3/definition_factory.ts","../packages/core/src/signals/src/api.ts","../packages/core/src/signals/src/graph.ts","../packages/core/src/signals/src/computed.ts","../packages/core/src/signals/src/errors.ts","../packages/core/src/signals/src/signal.ts","../packages/core/src/signals/src/untracked.ts","../packages/core/src/signals/src/watch.ts","../packages/core/src/interface/simple_change.ts","../packages/core/src/render3/features/ng_onchanges_feature.ts","../packages/core/src/render3/profiler.ts","../packages/core/src/render3/namespaces.ts","../packages/core/src/render3/util/view_utils.ts","../packages/core/src/render3/state.ts","../packages/core/src/render3/hooks.ts","../packages/core/src/render3/interfaces/injector.ts","../packages/core/src/render3/util/injector_utils.ts","../packages/core/src/render3/di.ts","../packages/core/src/render3/instructions/di_attr.ts","../packages/core/src/util/decorators.ts","../packages/core/src/util/array_utils.ts","../packages/core/src/di/metadata.ts","../packages/core/src/hydration/skip_hydration.ts","../packages/core/src/render/api_flags.ts","../packages/core/src/util/dom.ts","../packages/core/src/render3/interfaces/lview_tracking.ts","../packages/core/src/render3/context_discovery.ts","../packages/core/src/render3/i18n/i18n_tree_shaking.ts","../packages/core/src/render3/util/view_traversal_utils.ts","../packages/core/src/render3/node_manipulation.ts","../packages/core/src/util/security/trusted_types.ts","../packages/core/src/render3/interfaces/document.ts","../packages/core/src/util/security/trusted_types_bypass.ts","../packages/core/src/sanitization/bypass.ts","../packages/core/src/sanitization/inert_body.ts","../packages/core/src/sanitization/url_sanitizer.ts","../packages/core/src/sanitization/html_sanitizer.ts","../packages/core/src/sanitization/security.ts","../packages/core/src/sanitization/sanitization.ts","../packages/core/src/di/initializer_token.ts","../packages/core/src/di/injector_token.ts","../packages/core/src/di/internal_tokens.ts","../packages/core/src/di/null_injector.ts","../packages/core/src/di/provider_collection.ts","../packages/core/src/di/scope.ts","../packages/core/src/di/r3_injector.ts","../packages/core/src/application_tokens.ts","../packages/core/src/hydration/utils.ts","../packages/core/src/linker/component_factory.ts","../packages/core/src/linker/component_factory_resolver.ts","../packages/core/src/linker/element_ref.ts","../packages/core/src/render/api.ts","../packages/core/src/sanitization/sanitizer.ts","../packages/core/src/version.ts","../packages/core/src/view/provider_flags.ts","../packages/core/src/di/contextual.ts","../packages/core/src/di/create_injector.ts","../packages/core/src/di/injector.ts","../packages/core/src/util/errors.ts","../packages/core/src/error_handler.ts","../packages/core/src/linker/destroy_ref.ts","../packages/core/src/event_emitter.ts","../packages/core/src/util/noop.ts","../packages/core/src/zone/ng_zone.ts","../packages/core/src/util/raf.ts","../packages/core/src/render3/util/misc_utils.ts","../packages/core/src/render3/after_render_hooks.ts","../packages/core/src/render3/instructions/mark_view_dirty.ts","../packages/core/src/hydration/tokens.ts","../packages/core/src/render3/reactive_lview_consumer.ts","../packages/core/src/render3/tokens.ts","../packages/core/src/render3/instructions/advance.ts","../packages/core/src/render3/instructions/di.ts","../packages/core/src/render3/instructions/shared.ts","../packages/core/src/render3/instructions/render.ts","../packages/core/src/render3/reactivity/effect.ts","../packages/core/src/render3/styling/static_styling.ts","../packages/core/src/render3/collect_native_nodes.ts","../packages/core/src/render3/instructions/change_detection.ts","../packages/core/src/render3/view_ref.ts","../packages/core/src/render3/component_ref.ts","../packages/core/src/render3/features/inherit_definition_feature.ts","../packages/core/src/render3/features/input_transforms_feature.ts","../packages/core/src/util/iterable.ts","../packages/core/src/render3/bindings.ts","../packages/core/src/render3/instructions/attribute.ts","../packages/core/src/render3/instructions/interpolation.ts","../packages/core/src/render3/instructions/template.ts","../packages/core/src/render3/instructions/storage.ts","../packages/core/src/render3/instructions/property.ts","../packages/core/src/render3/instructions/element.ts","../packages/core/src/render3/interfaces/node.ts","../packages/core/src/render3/instructions/element_container.ts","../packages/core/src/render3/instructions/get_current_view.ts","../packages/core/src/util/lang.ts","../packages/core/src/render3/instructions/listener.ts","../packages/core/src/render3/instructions/next_context.ts","../packages/core/src/render3/instructions/projection.ts","../packages/core/src/render3/instructions/property_interpolation.ts","../packages/core/src/render3/interfaces/styling.ts","../packages/core/src/render3/styling/style_binding_list.ts","../packages/core/src/render3/styling/styling_parser.ts","../packages/core/src/render3/instructions/styling.ts","../packages/core/src/render3/instructions/text.ts","../packages/core/src/render3/instructions/text_interpolation.ts","../packages/core/src/render3/instructions/class_map_interpolation.ts","../packages/core/src/render3/instructions/host_property.ts","../packages/core/src/i18n/locale_en.ts","../packages/core/src/i18n/locale_data_api.ts","../packages/core/src/i18n/localization.ts","../packages/core/src/render3/interfaces/i18n.ts","../packages/core/src/render3/i18n/i18n_locale_id.ts","../packages/core/src/render3/i18n/i18n_util.ts","../packages/core/src/render3/i18n/i18n_apply.ts","../packages/core/src/render3/i18n/i18n_parse.ts","../packages/core/src/render3/instructions/i18n.ts","../packages/core/src/render3/di_setup.ts","../packages/core/src/render3/features/providers_feature.ts","../packages/core/src/linker/ng_module_factory.ts","../packages/core/src/render3/ng_module_ref.ts","../packages/core/src/render3/features/standalone_feature.ts","../packages/core/src/render3/pure_function.ts","../packages/core/src/render3/pipe.ts","../packages/core/src/linker/query_list.ts","../packages/core/src/render3/view_manipulation.ts","../packages/core/src/linker/template_ref.ts","../packages/core/src/linker/view_container_ref.ts","../packages/core/src/hydration/views.ts","../packages/core/src/interface/type.ts","../packages/core/src/render3/query.ts","../packages/core/src/render3/view_engine_compatibility_prebound.ts","../packages/core/src/render3/jit/util.ts","../packages/core/src/metadata/directives.ts","../packages/core/src/application_init.ts","../packages/core/src/console.ts","../packages/core/src/i18n/tokens.ts","../packages/core/src/initial_render_pending_tasks.ts","../packages/core/src/linker/compiler.ts","../packages/core/src/testability/testability.ts","../packages/core/src/application_ref.ts","../packages/core/src/util/is_dev_mode.ts","../packages/core/src/change_detection/change_detector_ref.ts","../packages/core/src/change_detection/differs/default_iterable_differ.ts","../packages/core/src/change_detection/differs/default_keyvalue_differ.ts","../packages/core/src/change_detection/differs/iterable_differs.ts","../packages/core/src/change_detection/differs/keyvalue_differs.ts","../packages/core/src/change_detection/change_detection.ts","../packages/core/src/platform_core_providers.ts","../packages/core/src/application_module.ts","../packages/core/src/util/coercion.ts","../packages/core/src/render3/component.ts","../packages/core/rxjs-interop/src/to_signal.ts","../packages/forms/src/directives/control_value_accessor.ts","../packages/forms/src/directives/checkbox_value_accessor.ts","../packages/forms/src/directives/default_value_accessor.ts","../packages/forms/src/validators.ts","../packages/forms/src/directives/abstract_control_directive.ts","../packages/forms/src/directives/control_container.ts","../packages/forms/src/directives/ng_control.ts","../packages/forms/src/directives/ng_control_status.ts","../packages/forms/src/model/abstract_model.ts","../packages/forms/src/model/form_group.ts","../packages/forms/src/directives/shared.ts","../packages/forms/src/directives/ng_form.ts","../packages/forms/src/util.ts","../packages/forms/src/model/form_control.ts","../packages/forms/src/directives/abstract_form_group_directive.ts","../packages/forms/src/directives/ng_model.ts","../packages/forms/src/directives/ng_no_validate_directive.ts","../packages/forms/src/directives/radio_control_value_accessor.ts","../packages/forms/src/directives/reactive_directives/form_control_directive.ts","../packages/forms/src/directives/reactive_directives/form_group_directive.ts","../packages/forms/src/directives/reactive_directives/form_group_name.ts","../packages/forms/src/directives/reactive_directives/form_control_name.ts","../packages/forms/src/directives/validators.ts","../packages/forms/src/directives.ts","../packages/forms/src/model/form_array.ts","../packages/forms/src/form_builder.ts","../packages/forms/src/form_providers.ts","../packages/localize/src/utils/src/constants.ts","../packages/localize/src/localize/src/localize.ts","../packages/localize/src/utils/src/messages.ts","../packages/localize/init/index.ts","../src/material/button-toggle/button-toggle.ts","../src/material/button-toggle/button-toggle.html","../src/material/button-toggle/button-toggle-module.ts","../src/material/button/button-base.ts","../src/material/button/button.ts","../src/material/button/button.html","../src/material/button/icon-button.ts","../src/material/button/icon-button.html","../src/material/button/module.ts","../src/material/card/card.ts","../src/material/card/card.html","../src/material/card/module.ts","../src/material/chips/tokens.ts","../src/material/chips/chip-action.ts","../src/material/chips/chip.html","../src/material/chips/chip-row.html","../src/material/chips/chip-icons.ts","../src/material/chips/chip.ts","../src/material/chips/chip-set.ts","../src/material/chips/module.ts","../src/material/core/version.ts","../src/material/core/option/option.html","../src/material/core/animation/animation.ts","../src/material/core/common-behaviors/common-module.ts","../src/material/core/common-behaviors/disabled.ts","../src/material/core/common-behaviors/color.ts","../src/material/core/common-behaviors/disable-ripple.ts","../src/material/core/common-behaviors/tabindex.ts","../src/material/core/common-behaviors/error-state.ts","../src/material/core/common-behaviors/initialized.ts","../src/material/core/datetime/date-adapter.ts","../src/material/core/datetime/date-formats.ts","../src/material/core/datetime/native-date-adapter.ts","../src/material/core/datetime/native-date-formats.ts","../src/material/core/datetime/index.ts","../src/material/core/error/error-options.ts","../src/material/core/ripple/ripple-ref.ts","../src/material/core/ripple/ripple-event-manager.ts","../src/material/core/ripple/ripple-renderer.ts","../src/material/core/ripple/ripple.ts","../src/material/core/ripple/index.ts","../src/material/core/selection/pseudo-checkbox/pseudo-checkbox.ts","../src/material/core/selection/pseudo-checkbox/pseudo-checkbox-module.ts","../src/material/core/option/option-parent.ts","../src/material/core/option/optgroup.ts","../src/material/core/option/option.ts","../src/material/core/option/index.ts","../src/material/core/private/ripple-loader.ts","../src/cdk/dialog/dialog-config.ts","../src/cdk/dialog/dialog-container.ts","../src/cdk/dialog/dialog-container.html","../src/cdk/dialog/dialog-ref.ts","../src/cdk/dialog/dialog-injectors.ts","../src/cdk/dialog/dialog.ts","../src/cdk/dialog/dialog-module.ts","../src/material/dialog/dialog-config.ts","../src/material/dialog/dialog-container.ts","../src/material/dialog/dialog-container.html","../src/material/dialog/dialog-ref.ts","../src/material/dialog/dialog.ts","../src/material/dialog/dialog-content-directives.ts","../src/material/dialog/module.ts","../src/material/divider/divider.ts","../src/material/divider/divider-module.ts","../src/cdk/observers/private/shared-resize-observer.ts","../src/material/form-field/directives/label.ts","../src/material/form-field/form-field.html","../src/material/form-field/directives/error.ts","../src/material/form-field/directives/hint.ts","../src/material/form-field/directives/prefix.ts","../src/material/form-field/directives/suffix.ts","../src/material/form-field/directives/floating-label.ts","../src/material/form-field/directives/line-ripple.ts","../src/material/form-field/directives/notched-outline.ts","../src/material/form-field/directives/notched-outline.html","../src/material/form-field/form-field-animations.ts","../src/material/form-field/form-field-control.ts","../src/material/form-field/form-field.ts","../src/material/form-field/module.ts","../src/material/icon/trusted-types.ts","../src/material/icon/icon-registry.ts","../src/material/icon/icon.ts","../src/material/icon/icon-module.ts","../src/material/list/list-option-types.ts","../src/material/list/list-item-sections.ts","../src/material/list/tokens.ts","../src/material/list/list-base.ts","../src/material/list/list.ts","../src/material/list/list-item.html","../src/material/list/nav-list.ts","../src/material/list/list-module.ts","../src/material/select/select-animations.ts","../src/material/select/select.html","../src/material/select/select.ts","../src/material/select/module.ts","../src/material/sidenav/drawer-animations.ts","../src/material/sidenav/drawer.ts","../src/material/sidenav/drawer-container.html","../src/material/sidenav/sidenav-container.html","../src/material/sidenav/drawer.html","../src/material/sidenav/sidenav.ts","../src/material/sidenav/sidenav-module.ts","../src/material/snack-bar/snack-bar-ref.ts","../src/material/snack-bar/simple-snack-bar.html","../src/material/snack-bar/snack-bar-config.ts","../src/material/snack-bar/snack-bar-content.ts","../src/material/snack-bar/simple-snack-bar.ts","../src/material/snack-bar/snack-bar-animations.ts","../src/material/snack-bar/snack-bar-container.ts","../src/material/snack-bar/snack-bar-container.html","../src/material/snack-bar/module.ts","../src/material/snack-bar/snack-bar.ts","../src/material/sort/sort-header-intl.ts","../src/material/sort/sort.ts","../src/material/sort/sort-header.ts","../src/material/sort/sort-module.ts","../src/cdk/table/can-stick.ts","../src/cdk/table/tokens.ts","../src/cdk/table/cell.ts","../src/cdk/table/coalesced-style-scheduler.ts","../src/cdk/table/row.ts","../src/cdk/table/sticky-styler.ts","../src/cdk/table/sticky-position-listener.ts","../src/cdk/table/table.ts","../src/cdk/table/table-module.ts","../src/material/table/table.ts","../src/material/table/cell.ts","../src/material/table/row.ts","../src/material/table/module.ts","../src/material/table/table-data-source.ts","../packages/platform-browser/src/browser/generic_browser_adapter.ts","../packages/platform-browser/src/browser/browser_adapter.ts","../packages/platform-browser/src/browser/xhr.ts","../packages/platform-browser/src/dom/events/event_manager.ts","../packages/platform-browser/src/dom/shared_styles_host.ts","../packages/platform-browser/src/dom/dom_renderer.ts","../packages/platform-browser/src/dom/events/dom_events.ts","../packages/platform-browser/src/dom/events/key_events.ts","../packages/platform-browser/src/browser.ts","../packages/platform-browser/src/browser/testability.ts","../packages/platform-browser/src/browser/title.ts","../packages/platform-browser/src/browser/tools/browser.ts","../packages/platform-browser/src/dom/events/hammer_gestures.ts","../packages/platform-browser/src/security/dom_sanitization_service.ts","./node_modules/rxjs/src/internal/operators/takeLast.ts","../packages/router/src/shared.ts","../packages/router/src/utils/collection.ts","../packages/router/src/url_tree.ts","../packages/router/src/create_url_tree.ts","../packages/router/src/events.ts","../packages/router/src/router_outlet_context.ts","../packages/router/src/utils/tree.ts","../packages/router/src/router_state.ts","../packages/router/src/directives/router_outlet.ts","../packages/router/src/create_router_state.ts","../packages/router/src/navigation_canceling_error.ts","../packages/router/src/components/empty_outlet.ts","../packages/router/src/utils/config.ts","../packages/router/src/operators/activate_routes.ts","../packages/router/src/utils/preactivation.ts","../packages/router/src/utils/type_guards.ts","../packages/router/src/operators/prioritized_guard_value.ts","../packages/router/src/operators/check_guards.ts","../packages/router/src/apply_redirects.ts","../packages/router/src/utils/config_matching.ts","../packages/router/src/recognize.ts","./node_modules/rxjs/src/internal/operators/last.ts","../packages/router/src/operators/resolve_data.ts","../packages/router/src/operators/switch_tap.ts","../packages/router/src/router_config_loader.ts","../packages/router/src/navigation_transition.ts","../packages/router/src/operators/recognize.ts","../packages/router/src/page_title_strategy.ts","../packages/router/src/route_reuse_strategy.ts","../packages/router/src/router_config.ts","../packages/router/src/url_handling_strategy.ts","../packages/router/src/utils/navigations.ts","../packages/router/src/router.ts","../packages/router/src/directives/router_link.ts","../packages/router/src/directives/router_link_active.ts","../packages/router/src/router_preloader.ts","../packages/router/src/router_scroller.ts","../packages/router/src/provide_router.ts","../packages/router/src/router_module.ts","./node_modules/rxjs/src/internal/Notification.ts","./node_modules/rxjs/src/internal/operators/groupBy.ts","./node_modules/rxjs/src/internal/operators/exhaustMap.ts","./modules/effects/src/models.ts","./modules/effects/src/effect_creator.ts","./modules/effects/src/utils.ts","./modules/effects/src/effects_resolver.ts","./modules/effects/src/effects_metadata.ts","./node_modules/rxjs/src/internal/operators/materialize.ts","./modules/effects/src/effects_error_handler.ts","./modules/effects/src/actions.ts","./modules/effects/src/tokens.ts","./modules/effects/src/effects_actions.ts","./modules/effects/src/lifecycle_hooks.ts","./modules/effects/src/effect_sources.ts","./modules/effects/src/effect_notification.ts","./node_modules/rxjs/src/internal/operators/dematerialize.ts","./modules/effects/src/effects_runner.ts","./modules/effects/src/effects_root_module.ts","./modules/effects/src/effects_feature_module.ts","./modules/effects/src/effects_module.ts","./modules/effects/src/concat_latest_from.ts","./modules/entity/src/state_adapter.ts","./modules/entity/src/utils.ts","./modules/entity/src/unsorted_state_adapter.ts","./modules/entity/src/sorted_state_adapter.ts","./modules/entity/src/create_adapter.ts","./modules/entity/src/entity_state.ts","./modules/entity/src/state_selectors.ts","./modules/store-devtools/src/actions.ts","./modules/store-devtools/src/config.ts","./modules/store-devtools/src/utils.ts","./modules/store-devtools/src/zone-config.ts","./modules/store-devtools/src/devtools-dispatcher.ts","./modules/store-devtools/src/extension.ts","./modules/store-devtools/src/reducer.ts","./modules/store-devtools/src/devtools.ts","./modules/store-devtools/src/provide-store-devtools.ts","./modules/store-devtools/src/instrument.ts","./modules/store/src/globals.ts","./modules/store/src/action_creator.ts","./modules/store/src/actions_subject.ts","./modules/store/src/tokens.ts","./modules/store/src/utils.ts","./modules/store/src/reducer_manager.ts","./modules/store/src/scanned_actions_subject.ts","./modules/store/src/state.ts","./modules/store/src/store.ts","./node_modules/rxjs/src/internal/operators/pluck.ts","./modules/store/src/meta-reducers/utils.ts","./modules/store/src/flags.ts","./modules/store/src/selector.ts","./modules/store/src/store_config.ts","./modules/store/src/meta-reducers/immutability_reducer.ts","./modules/store/src/meta-reducers/serialization_reducer.ts","./modules/store/src/runtime_checks.ts","./modules/store/src/meta-reducers/inNgZoneAssert_reducer.ts","./modules/store/src/provide_store.ts","./modules/store/src/store_module.ts","./modules/store/src/reducer_creator.ts","./node_modules/projects/ngx-style-library/src/lib/components/layout/footer-standard/footer-standard.component.ts","./node_modules/projects/ngx-style-library/src/lib/components/layout/footer-standard/footer-standard.component.html","./node_modules/projects/ngx-style-library/src/lib/components/layout/header-standard/header-standard.component.ts","./node_modules/projects/ngx-style-library/src/lib/components/layout/header-standard/header-standard.component.html","./node_modules/projects/ngx-style-library/src/lib/ngx-style-library.module.ts","./node_modules/src/lib/portal/portal.ts","./node_modules/src/lib/toastr/toast-ref.ts","./node_modules/src/lib/toastr/toastr-config.ts","./node_modules/src/lib/portal/dom-portal-host.ts","./node_modules/src/lib/overlay/overlay-container.ts","./node_modules/src/lib/overlay/overlay-ref.ts","./node_modules/src/lib/overlay/overlay.ts","./node_modules/src/lib/toastr/toastr.service.ts","./node_modules/src/lib/toastr/toast.component.ts","./node_modules/src/lib/toastr/toast.provider.ts","./node_modules/tslib/tslib.es6.mjs"],"sourcesContent":["import { ITermVM, TermSeason, TermStatus, TermVM } from \"@app/core/services/WebRegApiClient\";\n\nexport const ACTIVE_TERMS: ITermVM[] = [\n new TermVM(\n {\n termCode: 20233,\n season: TermSeason.Fall,\n year: 2023,\n seasonName: 'Fall',\n statusCodes: [TermStatus.Active]\n }\n ),\n new TermVM(\n {\n termCode: 20232,\n season: TermSeason.Summer,\n year: 2023,\n seasonName: 'Summer',\n statusCodes: [TermStatus.Active]\n }\n ),\n new TermVM(\n {\n termCode: 20231,\n season: TermSeason.Spring,\n year: 2023,\n seasonName: 'Spring',\n statusCodes: [TermStatus.Active]\n }\n ),\n]\n","import { ITermVM, TermSeason, TermStatus, TermVM } from \"@app/core/services/WebRegApiClient\";\n\nexport const ARCHIVED_TERMS: ITermVM[] = [\n new TermVM(\n {\n termCode: 20223,\n season: TermSeason.Fall,\n year: 2022,\n seasonName: 'Fall',\n statusCodes: [TermStatus.Archived]\n }\n ),\n new TermVM(\n {\n termCode: 20222,\n season: TermSeason.Summer,\n year: 2022,\n seasonName: 'Summer',\n statusCodes: [TermStatus.Archived]\n }\n ),\n new TermVM(\n {\n termCode: 20221,\n season: TermSeason.Spring,\n year: 2022,\n seasonName: 'Spring',\n statusCodes: [TermStatus.Archived]\n }\n ), \n new TermVM(\n {\n termCode: 20213,\n season: TermSeason.Fall,\n year: 2021,\n seasonName: 'Fall',\n statusCodes: [TermStatus.Archived]\n }\n ),\n new TermVM(\n {\n termCode: 20212,\n season: TermSeason.Summer,\n year: 2021,\n seasonName: 'Summer',\n statusCodes: [TermStatus.Archived]\n }\n ),\n new TermVM(\n {\n termCode: 20211,\n season: TermSeason.Spring,\n year: 2021,\n seasonName: 'Spring',\n statusCodes: [TermStatus.Archived]\n }\n ),\n]","export class CourseMode implements ICourseMode {\n rnrModeCode?: string | undefined;\n rnrModeHours?: string | undefined;\n courseId?: number;\n\n constructor(data?: ICourseMode) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.rnrModeCode = _data[\"rnrModeCode\"];\n this.rnrModeHours = _data[\"rnrModeHours\"];\n this.courseId = _data[\"courseId\"];\n }\n }\n\n static fromJS(data: any): CourseMode {\n data = typeof data === 'object' ? data : {};\n let result = new CourseMode();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"rnrModeCode\"] = this.rnrModeCode;\n data[\"rnrModeHours\"] = this.rnrModeHours;\n data[\"courseId\"] = this.courseId;\n return data;\n }\n}\n\nexport interface ICourseMode {\n rnrModeCode?: string | undefined;\n rnrModeHours?: string | undefined;\n courseId?: number;\n}\n","import { ACTIVE_TERMS } from \"./active-terms.constant\";\nimport { ARCHIVED_TERMS } from \"./archived-terms.constant\";\nimport { CourseMode } from \"./course-mode.model\";\nimport { DEPARTMENTS } from \"./department.model\";\nimport { SectionModel, SECTIONS } from \"./section.model\";\n\nexport class CourseModel implements ICourseModel {\n courseId?: number;\n sisCatalogId?: string | undefined;\n prefix?: string | undefined;\n classNumber?: string | undefined;\n sequence?: string | undefined;\n suffix?: string | undefined;\n crossListedFlag?: string | undefined;\n publishedCourseId?: string | undefined;\n scheduledCourseId?: string | undefined;\n courseTitle?: string | undefined;\n description?: string | undefined;\n courseNotes?: string | undefined;\n departmentCode?: string | undefined;\n seats?: number;\n numberRegistered?: number;\n spacesAvailable?: number;\n isFull?: boolean;\n isClosed?: boolean;\n isCanceled?: boolean;\n levelOnePrefix?: string | undefined;\n levelTwoPrefix?: string | undefined;\n sections?: SectionModel[] | undefined;\n //sisSqNumber?: number;\n // restrictClasses?: CourseRestrictClass[] | undefined;\n // restrictMajors?: CourseRestrictMajor[] | undefined;\n // restrictSchools?: CourseRestrictSchool[] | undefined;\n // corequisites?: SimplifiedCourseModel[] | undefined;\n // prerequisites?: SimplifiedCourseModel[] | undefined;\n courseModes?: CourseMode[] | undefined;\n termCode?: number;\n units?: number;\n\n constructor(data?: ICourseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.courseId = _data[\"courseId\"];\n this.sisCatalogId = _data[\"sisCatalogId\"];\n this.prefix = _data[\"prefix\"];\n this.classNumber = _data[\"classNumber\"];\n this.sequence = _data[\"sequence\"];\n this.suffix = _data[\"suffix\"];\n this.crossListedFlag = _data[\"crossListedFlag\"];\n this.publishedCourseId = _data[\"publishedCourseId\"];\n this.scheduledCourseId = _data[\"scheduledCourseId\"];\n this.courseTitle = _data[\"courseTitle\"];\n this.description = _data[\"description\"];\n this.courseNotes = _data[\"courseNotes\"];\n this.departmentCode = _data[\"departmentCode\"];\n this.seats = _data[\"seats\"];\n this.units = _data[\"units\"];\n this.numberRegistered = _data[\"numberRegistered\"];\n this.spacesAvailable = _data[\"spacesAvailable\"];\n // this.isFull = _data[\"isFull\"];\n // this.isClosed = _data[\"isClosed\"];\n // this.isCanceled = _data[\"isCanceled\"];\n // this.levelOnePrefix = _data[\"levelOnePrefix\"];\n // this.levelTwoPrefix = _data[\"levelTwoPrefix\"];\n if (Array.isArray(_data[\"sections\"])) {\n this.sections = [] as any;\n for (let item of _data[\"sections\"])\n this.sections!.push(SectionModel.fromJS(item));\n }\n //this.sisSqNumber = _data[\"sisSqNumber\"];\n // if (Array.isArray(_data[\"restrictClasses\"])) {\n // this.restrictClasses = [] as any;\n // for (let item of _data[\"restrictClasses\"])\n // this.restrictClasses!.push(CourseRestrictClass.fromJS(item));\n // }\n // if (Array.isArray(_data[\"restrictMajors\"])) {\n // this.restrictMajors = [] as any;\n // for (let item of _data[\"restrictMajors\"])\n // this.restrictMajors!.push(CourseRestrictMajor.fromJS(item));\n // }\n // if (Array.isArray(_data[\"restrictSchools\"])) {\n // this.restrictSchools = [] as any;\n // for (let item of _data[\"restrictSchools\"])\n // this.restrictSchools!.push(CourseRestrictSchool.fromJS(item));\n // }\n // if (Array.isArray(_data[\"corequisites\"])) {\n // this.corequisites = [] as any;\n // for (let item of _data[\"corequisites\"])\n // this.corequisites!.push(SimplifiedCourseModel.fromJS(item));\n // }\n // if (Array.isArray(_data[\"prerequisites\"])) {\n // this.prerequisites = [] as any;\n // for (let item of _data[\"prerequisites\"])\n // this.prerequisites!.push(SimplifiedCourseModel.fromJS(item));\n // }\n if (Array.isArray(_data[\"courseModes\"])) {\n this.courseModes = [] as any;\n for (let item of _data[\"courseModes\"])\n this.courseModes!.push(CourseMode.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): CourseModel {\n data = typeof data === \"object\" ? data : {};\n let result = new CourseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === \"object\" ? data : {};\n data[\"courseId\"] = this.courseId;\n data[\"sisCatalogId\"] = this.sisCatalogId;\n data[\"prefix\"] = this.prefix;\n data[\"classNumber\"] = this.classNumber;\n data[\"sequence\"] = this.sequence;\n data[\"suffix\"] = this.suffix;\n data[\"crossListedFlag\"] = this.crossListedFlag;\n data[\"publishedCourseId\"] = this.publishedCourseId;\n data[\"scheduledCourseId\"] = this.scheduledCourseId;\n data[\"courseTitle\"] = this.courseTitle;\n data[\"description\"] = this.description;\n data[\"courseNotes\"] = this.courseNotes;\n data[\"departmentCode\"] = this.departmentCode;\n data[\"seats\"] = this.seats;\n data[\"units\"] = this.units;\n data[\"numberRegistered\"] = this.numberRegistered;\n data[\"spacesAvailable\"] = this.spacesAvailable;\n data[\"isFull\"] = this.isFull;\n data[\"isClosed\"] = this.isClosed;\n data[\"isCanceled\"] = this.isCanceled;\n data[\"levelOnePrefix\"] = this.levelOnePrefix;\n data[\"levelTwoPrefix\"] = this.levelTwoPrefix;\n if (Array.isArray(this.sections)) {\n data[\"sections\"] = [];\n for (let item of this.sections)\n data[\"sections\"].push(item.toJSON());\n }\n //data[\"sisSqNumber\"] = this.sisSqNumber;\n // if (Array.isArray(this.restrictClasses)) {\n // data[\"restrictClasses\"] = [];\n // for (let item of this.restrictClasses)\n // data[\"restrictClasses\"].push(item.toJSON());\n // }\n // if (Array.isArray(this.restrictMajors)) {\n // data[\"restrictMajors\"] = [];\n // for (let item of this.restrictMajors)\n // data[\"restrictMajors\"].push(item.toJSON());\n // }\n // if (Array.isArray(this.restrictSchools)) {\n // data[\"restrictSchools\"] = [];\n // for (let item of this.restrictSchools)\n // data[\"restrictSchools\"].push(item.toJSON());\n // }\n // if (Array.isArray(this.corequisites)) {\n // data[\"corequisites\"] = [];\n // for (let item of this.corequisites)\n // data[\"corequisites\"].push(item.toJSON());\n // }\n // if (Array.isArray(this.prerequisites)) {\n // data[\"prerequisites\"] = [];\n // for (let item of this.prerequisites)\n // data[\"prerequisites\"].push(item.toJSON());\n // }\n if (Array.isArray(this.courseModes)) {\n data[\"courseModes\"] = [];\n for (let item of this.courseModes)\n data[\"courseModes\"].push(item.toJSON());\n }\n return data;\n }\n\n static createFake(departmentCode: string, termCode: number, courseIndex: number): CourseModel {\n const prefix: string = `${departmentCode}`;\n const courseLevel: number = getRandom(1, 4);\n const classNumber: string = `${courseLevel * 100}`;\n const seats: number = getRandom(1, 50);\n\n return new CourseModel({\n prefix: prefix,\n description: classNumber + \" Description\",\n departmentCode: departmentCode,\n levelOnePrefix: departmentCode,\n levelTwoPrefix: departmentCode,\n courseId: parseInt(`${termCode}${courseIndex}`),\n classNumber: classNumber,\n sequence: undefined,\n suffix: \" \",\n crossListedFlag: \"N\",\n publishedCourseId: prefix + \"-\" + classNumber,\n scheduledCourseId: prefix + \"-\" + classNumber,\n courseTitle: \"Title \" + classNumber,\n courseNotes: \" \",\n seats: seats,\n numberRegistered: undefined,\n spacesAvailable: getRandom(1, seats),\n termCode: termCode,\n units: 4,\n sections: SECTIONS.filter(s => s.courseId === parseInt(`${termCode}${courseIndex}`)).map(s => new SectionModel(s)),\n },\n );\n }\n\n static createCourses(termCode: number): ICourseModel[] {\n let count = 0;\n\n const f = [\n ...DEPARTMENTS.map(d => CourseModel.createFake(d.prefix!, termCode!, ++count)),\n ...DEPARTMENTS.map(d => CourseModel.createFake(d.prefix!, termCode!, ++count)),\n ...DEPARTMENTS.map(d => CourseModel.createFake(d.prefix!, termCode!, ++count)),\n ]\n return [...f];\n }\n}\n\n//filter(d => d.schoolPrefix !== \"FA\" && d.prefix !== \"ART\")\n\nexport interface ICourseModel {\n courseId?: number;\n sisCatalogId?: string | undefined;\n prefix?: string | undefined;\n classNumber?: string | undefined;\n sequence?: string | undefined;\n suffix?: string | undefined;\n crossListedFlag?: string | undefined;\n publishedCourseId?: string | undefined;\n scheduledCourseId?: string | undefined;\n courseTitle?: string | undefined;\n description?: string | undefined;\n courseNotes?: string | undefined;\n departmentCode?: string | undefined;\n seats?: number;\n numberRegistered?: number;\n spacesAvailable?: number;\n isFull?: boolean;\n isClosed?: boolean;\n isCanceled?: boolean;\n levelOnePrefix?: string | undefined;\n levelTwoPrefix?: string | undefined;\n sections?: SectionModel[] | undefined;\n sisSqNumber?: number;\n // restrictClasses?: CourseRestrictClass[] | undefined;\n // restrictMajors?: CourseRestrictMajor[] | undefined;\n // restrictSchools?: CourseRestrictSchool[] | undefined;\n // corequisites?: SimplifiedCourseModel[] | undefined;\n // prerequisites?: SimplifiedCourseModel[] | undefined;\n courseModes?: CourseMode[] | undefined;\n termCode?: number;\n units?: number;\n}\n\nfunction getRandom(min: number, max: number): number { // min and max included\n return Math.floor(Math.random() * (max - min + 1) + min)\n}\n\nexport const COURSES: ICourseModel[] = [\n ...[\n new CourseModel({\n prefix: \"ART\",\n description: \"Art History\",\n departmentCode: \"FAHI\",\n levelOnePrefix: \"FAHI\",\n levelTwoPrefix: \"ART\",\n courseId: 23301,\n classNumber: \"123XG\",\n sequence: \"XG\",\n suffix: \" \",\n crossListedFlag: \"N\",\n publishedCourseId: \"ART-123XG\",\n scheduledCourseId: \"ART-123XG\",\n courseTitle: \"Art History\",\n courseNotes: \" \",\n seats: 20,\n numberRegistered: undefined,\n spacesAvailable: 5,\n termCode: 20233,\n units: 4,\n sections: SECTIONS.filter(s => s.courseId === 23301).map(s => new SectionModel(s))\n }),\n new CourseModel({\n prefix: \"ART\",\n description: \"Art History\",\n departmentCode: \"FAHI\",\n levelOnePrefix: \"FAHI\",\n levelTwoPrefix: \"ART\",\n courseId: 23321,\n classNumber: \"223XG\",\n sequence: \"XG\",\n suffix: \" \",\n crossListedFlag: \"N\",\n publishedCourseId: \"ART-223XG\",\n scheduledCourseId: \"ART-223XG\",\n courseTitle: \"Art History\",\n courseNotes: \" \",\n seats: 20,\n numberRegistered: undefined,\n spacesAvailable: 5,\n termCode: 20233,\n units: 4,\n sections: SECTIONS.filter(s => s.courseId === 23321).map(s => new SectionModel(s))\n }),\n new CourseModel({\n prefix: \"ART\",\n description: \"Art History\",\n departmentCode: \"FAHI\",\n levelOnePrefix: \"FAHI\",\n levelTwoPrefix: \"ART\",\n courseId: 23331,\n classNumber: \"323XG\",\n sequence: \"XG\",\n suffix: \" \",\n crossListedFlag: \"N\",\n publishedCourseId: \"ART-323XG\",\n scheduledCourseId: \"ART-323XG\",\n courseTitle: \"Art History\",\n courseNotes: \" \",\n seats: 20,\n numberRegistered: undefined,\n spacesAvailable: 5,\n termCode: 20233,\n units: 4,\n sections: SECTIONS.filter(s => s.courseId === 23301).map(s => new SectionModel(s))\n }),\n new CourseModel({\n prefix: \"ART\",\n description: \"Art History\",\n departmentCode: \"FAHI\",\n levelOnePrefix: \"FAHI\",\n levelTwoPrefix: \"ART\",\n courseId: 23341,\n classNumber: \"423XG\",\n sequence: \"XG\",\n suffix: \" \",\n crossListedFlag: \"N\",\n publishedCourseId: \"ART-423XG\",\n scheduledCourseId: \"ART-423XG\",\n courseTitle: \"Art History\",\n courseNotes: \" \",\n seats: 20,\n numberRegistered: undefined,\n spacesAvailable: 5,\n termCode: 20233,\n units: 4,\n sections: SECTIONS.filter(s => s.courseId === 23301).map(s => new SectionModel(s))\n }),\n new CourseModel({\n prefix: \"ART\",\n description: \"Creating and Understanding Visuals\",\n departmentCode: \"FAHI\",\n levelOnePrefix: \"FAHI\",\n levelTwoPrefix: \"ART\",\n courseId: 23302,\n classNumber: \"141g\",\n sequence: \"g\",\n suffix: \" \",\n crossListedFlag: \"N\",\n publishedCourseId: \"ART-141g\",\n scheduledCourseId: \"ART-141g\",\n courseTitle: \"Creating and Understanding Visuals\",\n courseNotes: \" \",\n seats: 20,\n numberRegistered: undefined,\n spacesAvailable: 5,\n termCode: 20233,\n units: 4,\n sections: SECTIONS.filter(s => s.courseId === 23302).map(s => new SectionModel(s))\n }),\n new CourseModel({\n prefix: \"ART\",\n description: \"Drawing for Art and Design\",\n departmentCode: \"FAHI\",\n levelOnePrefix: \"FAHI\",\n levelTwoPrefix: \"ART\",\n courseId: 23303,\n classNumber: \"156\",\n sequence: \"\",\n suffix: \" \",\n crossListedFlag: \"N\",\n publishedCourseId: \"ART-156\",\n scheduledCourseId: \"ART-156\",\n courseTitle: \"Drawing for Art and Design\",\n courseNotes: \" \",\n seats: 20,\n numberRegistered: undefined,\n spacesAvailable: 5,\n termCode: 20233,\n units: 4,\n sections: SECTIONS.filter(s => s.courseId === 23303).map(s => new SectionModel(s))\n }),\n new CourseModel({\n prefix: \"ART\",\n description: \"An art description that's a little flat.\",\n departmentCode: \"FAHI\",\n levelOnePrefix: \"FAHI\",\n levelTwoPrefix: \"ART\",\n courseId: 23300,\n classNumber: \"207\",\n sequence: \"A\",\n suffix: \" \",\n crossListedFlag: \"N\",\n publishedCourseId: \"ART-207A\",\n scheduledCourseId: \"ART-207A\",\n courseTitle: \"Two-Dimensional Art\",\n courseNotes: \" \",\n seats: 20,\n numberRegistered: undefined,\n spacesAvailable: 5,\n termCode: 20233,\n units: 4,\n sections: SECTIONS.filter(s => s.courseId === 23300).map(s => new SectionModel(s))\n }),\n new CourseModel({\n prefix: \"ART\",\n description: \"Studio Critique\",\n departmentCode: \"FAHI\",\n levelOnePrefix: \"FAHI\",\n levelTwoPrefix: \"ART\",\n courseId: 23304,\n classNumber: \"280\",\n sequence: \"\",\n suffix: \" \",\n crossListedFlag: \"N\",\n publishedCourseId: \"ART-280\",\n scheduledCourseId: \"ART-280\",\n courseTitle: \"Studio Critique\",\n courseNotes: \" \",\n seats: 20,\n numberRegistered: undefined,\n spacesAvailable: 5,\n termCode: 20233,\n units: 4,\n sections: SECTIONS.filter(s => s.courseId === 23304).map(s => new SectionModel(s))\n }),\n new CourseModel({\n prefix: \"ART\",\n description: \"Directed examination of personal approaches to drawing with emphasis on making visual and artistic decisions and developing additional skills and sources of inspiration. Individual expression will be encouraged.\",\n departmentCode: \"FAHI\",\n levelOnePrefix: \"FAHI\",\n levelTwoPrefix: \"ART\",\n courseId: 25689,\n classNumber: \"310\",\n sequence: \"\",\n suffix: \" \",\n crossListedFlag: \"N\",\n publishedCourseId: \"ART-310\",\n scheduledCourseId: \"ART-310\",\n courseTitle: \"Drawing II\",\n courseNotes: \" \",\n seats: 20,\n numberRegistered: undefined,\n spacesAvailable: 5,\n termCode: 20233,\n units: 2,\n sections: SECTIONS.filter(s => s.courseId === 25689).map(s => new SectionModel(s))\n }),\n new CourseModel({\n prefix: \"AHIS\",\n description: \"Methodologies, theories and critical traditions that have shaped the discipline. Emphasis will vary depending on faculty. Required of all first-year MA and PhD candidates.\",\n departmentCode: \"FAHI\",\n levelOnePrefix: \"FAHI\",\n levelTwoPrefix: \"AHIS\",\n courseId: 12543,\n classNumber: \"500\",\n sequence: \"\",\n suffix: \" \",\n crossListedFlag: \"N\",\n publishedCourseId: \"AHIS-500\",\n scheduledCourseId: \"AHIS-500\",\n courseTitle: \"Methods and Theory of Art History\",\n courseNotes: \" \",\n seats: 20,\n numberRegistered: 15,\n spacesAvailable: 5,\n termCode: 20233,\n units: 1,\n sections: SECTIONS.filter(s => s.courseId === 12543).map(s => new SectionModel(s))\n }),\n new CourseModel({\n prefix: \"CORE\",\n description: \"Mediterranean and European art and architecture presented in histori…\",\n departmentCode: \"CORE\",\n levelOnePrefix: \"CORE\",\n levelTwoPrefix: \"CORE\",\n courseId: 1001,\n classNumber: \"450\",\n sequence: \"\",\n suffix: \" \",\n crossListedFlag: \"N\",\n publishedCourseId: \"CORE-450\",\n scheduledCourseId: \"CORE-450\",\n courseTitle: \"Communication for Organizations: Exploring Art Creativity\",\n courseNotes: \" \",\n seats: 23,\n numberRegistered: undefined,\n spacesAvailable: 23,\n termCode: 20233,\n units: 4,\n sections: SECTIONS.filter(s => s.courseId === 1001).map(s => new SectionModel(s))\n }),\n new CourseModel({\n prefix: \"CRIT\",\n description: \"Ethics in the 21st Century: Business, Politics & the art of Technology\",\n departmentCode: \"CRIT\",\n levelOnePrefix: \"CRIT\",\n levelTwoPrefix: \"CRIT\",\n courseId: 1002,\n classNumber: \"105\",\n sequence: \"\",\n suffix: \" \",\n crossListedFlag: \"N\",\n publishedCourseId: \"CRIT-105\",\n scheduledCourseId: \"CRIT-105\",\n courseTitle: \"Social and Racial Injustice in the U.S.\",\n courseNotes: \" \",\n seats: 24,\n numberRegistered: undefined,\n spacesAvailable: 24,\n termCode: 20233,\n units: 4,\n sections: SECTIONS.filter(s => s.courseId === 1002).map(s => new SectionModel(s))\n }),\n\n //2022\n new CourseModel({\n prefix: \"ART\",\n description: \"Art History\",\n departmentCode: \"FAHI\",\n levelOnePrefix: \"FAHI\",\n levelTwoPrefix: \"ART\",\n courseId: 22301,\n classNumber: \"123XG\",\n sequence: \"XG\",\n suffix: \" \",\n crossListedFlag: \"N\",\n publishedCourseId: \"ART-132XG\",\n scheduledCourseId: \"ART-123XG\",\n courseTitle: \"Art History\",\n courseNotes: \" \",\n seats: 20,\n numberRegistered: undefined,\n spacesAvailable: 5,\n termCode: 20223,\n units: 4,\n sections: SECTIONS.filter(s => s.courseId === 22301).map(s => new SectionModel(s))\n }),\n new CourseModel({\n prefix: \"ART\",\n description: \"Creating and Understanding Visuals\",\n departmentCode: \"FAHI\",\n levelOnePrefix: \"FAHI\",\n levelTwoPrefix: \"ART\",\n courseId: 22302,\n classNumber: \"141g\",\n sequence: \"g\",\n suffix: \" \",\n crossListedFlag: \"N\",\n publishedCourseId: \"ART-141g\",\n scheduledCourseId: \"ART-141g\",\n courseTitle: \"Creating and Understanding Visuals\",\n courseNotes: \" \",\n seats: 20,\n numberRegistered: undefined,\n spacesAvailable: 5,\n termCode: 20233,\n units: 4,\n sections: SECTIONS.filter(s => s.courseId === 23302).map(s => new SectionModel(s))\n }),\n new CourseModel({\n prefix: \"ART\",\n description: \"Drawing for Art and Design\",\n departmentCode: \"FAHI\",\n levelOnePrefix: \"FAHI\",\n levelTwoPrefix: \"ART\",\n courseId: 22303,\n classNumber: \"156\",\n sequence: \"\",\n suffix: \" \",\n crossListedFlag: \"N\",\n publishedCourseId: \"ART-156\",\n scheduledCourseId: \"ART-156\",\n courseTitle: \"Drawing for Art and Design\",\n courseNotes: \" \",\n seats: 20,\n numberRegistered: undefined,\n spacesAvailable: 5,\n termCode: 20223,\n units: 4,\n sections: SECTIONS.filter(s => s.courseId === 22303).map(s => new SectionModel(s))\n }),\n new CourseModel({\n prefix: \"ART\",\n description: \"An art description that's a little flat.\",\n departmentCode: \"FAHI\",\n levelOnePrefix: \"FAHI\",\n levelTwoPrefix: \"ART\",\n courseId: 22300,\n classNumber: \"207\",\n sequence: \"A\",\n suffix: \" \",\n crossListedFlag: \"N\",\n publishedCourseId: \"ART-207A\",\n scheduledCourseId: \"ART-207A\",\n courseTitle: \"Two-Dimensional Art\",\n courseNotes: \" \",\n seats: 20,\n numberRegistered: undefined,\n spacesAvailable: 5,\n termCode: 20223,\n units: 4,\n sections: SECTIONS.filter(s => s.courseId === 22300).map(s => new SectionModel(s))\n }),\n new CourseModel({\n prefix: \"ART\",\n description: \"Studio Critique\",\n departmentCode: \"FAHI\",\n levelOnePrefix: \"FAHI\",\n levelTwoPrefix: \"ART\",\n courseId: 22304,\n classNumber: \"280\",\n sequence: \"\",\n suffix: \" \",\n crossListedFlag: \"N\",\n publishedCourseId: \"ART-280\",\n scheduledCourseId: \"ART-280\",\n courseTitle: \"Studio Critique\",\n courseNotes: \" \",\n seats: 20,\n numberRegistered: undefined,\n spacesAvailable: 5,\n termCode: 20223,\n units: 4,\n sections: SECTIONS.filter(s => s.courseId === 22304).map(s => new SectionModel(s))\n }),\n new CourseModel({\n prefix: \"ART\",\n description: \"Directed examination of personal approaches to drawing with emphasis on making visual and artistic decisions and developing additional skills and sources of inspiration. Individual expression will be encouraged.\",\n departmentCode: \"FAHI\",\n levelOnePrefix: \"FAHI\",\n levelTwoPrefix: \"ART\",\n courseId: 22689,\n classNumber: \"310\",\n sequence: \"\",\n suffix: \" \",\n crossListedFlag: \"N\",\n publishedCourseId: \"ART-310\",\n scheduledCourseId: \"ART-310\",\n courseTitle: \"Drawing II\",\n courseNotes: \" \",\n seats: 20,\n numberRegistered: undefined,\n spacesAvailable: 5,\n termCode: 20223,\n units: 2,\n sections: SECTIONS.filter(s => s.courseId === 22689).map(s => new SectionModel(s))\n }),\n\n new CourseModel({\n prefix: \"AHIS\",\n description: \"Methodologies, theories and critical traditions that have shaped the discipline. Emphasis will vary depending on faculty. Required of all first-year MA and PhD candidates.\",\n departmentCode: \"FAHI\",\n levelOnePrefix: \"FAHI\",\n levelTwoPrefix: \"AHIS\",\n courseId: 11543,\n classNumber: \"500\",\n sequence: \"\",\n suffix: \" \",\n crossListedFlag: \"N\",\n publishedCourseId: \"AHIS-500\",\n scheduledCourseId: \"AHIS-500\",\n courseTitle: \"Methods and Theory of Art History\",\n courseNotes: \" \",\n seats: 20,\n numberRegistered: 15,\n spacesAvailable: 5,\n termCode: 20223,\n units: 1,\n sections: SECTIONS.filter(s => s.courseId === 11543).map(s => new SectionModel(s))\n }),\n\n \n ],\n\n ...ACTIVE_TERMS.map(t => t.termCode)\n .map((termCode) => CourseModel.createCourses(termCode!)).flat(),\n\n ...ARCHIVED_TERMS.map(t => t.termCode)\n .map((termCode) => CourseModel.createCourses(termCode!)).flat(),\n];\n","export class School implements ISchool {\n prefix?: string | undefined;\n description?: string | undefined;\n sortIndex?: number;\n\n constructor(data?: ISchool) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.prefix = _data[\"prefix\"];\n this.description = _data[\"description\"];\n this.sortIndex = _data[\"sortIndex\"];\n }\n }\n\n static fromJS(data: any): School {\n data = typeof data === 'object' ? data : {};\n let result = new School();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"prefix\"] = this.prefix;\n data[\"description\"] = this.description;\n data[\"sortIndex\"] = this.sortIndex;\n return data;\n }\n}\n\nexport interface ISchool {\n prefix?: string | undefined;\n description?: string | undefined;\n sortIndex?: number;\n}\n\nexport const SCHOOLS: ISchool[] = [\n new School({\n prefix: \"LAS\",\n description: \"Dornsife College of Letters, Arts and Sciences\",\n sortIndex: 0\n }),\n new School(\n {\n prefix: \"ACCT\",\n description: \"Leventhal School of Accounting\",\n sortIndex: 1\n }),\n new School(\n {\n prefix: \"ARCH\",\n description: \"Architecture\",\n sortIndex: 2\n }),\n new School({\n prefix: \"FA\",\n description: \"Roski School of Art and Design\",\n sortIndex: 3\n }),\n new School({\n prefix: \"BVC\",\n description: \"Bovard College\",\n sortIndex: 4\n }),\n new School({\n prefix: \"BUS\",\n description: \"Marshall School of Business\",\n sortIndex: 5\n }),\n new School({\n prefix: \"CNTV\",\n description: \"Cinematic Arts\",\n sortIndex: 6\n }),\n new School(\n {\n prefix: \"ANSC\",\n description: \"Annenberg School for Communication and Journalism\",\n sortIndex: 7\n }),\n new School({\n prefix: \"DANC\",\n description: \"Kaufman School of Dance\",\n sortIndex: 8\n }),\n new School({\n prefix: \"DENT\",\n description: \"Ostrow School of Dentistry\",\n sortIndex: 9\n }),\n new School({\n prefix: \"THTR\",\n description: \"Dramatic Arts\",\n sortIndex: 10\n }),\n new School({\n prefix: \"EDUC\",\n description: \"Rossier School of Education\",\n sortIndex: 11\n }),\n new School({\n prefix: \"ENGR\",\n description: \"Viterbi School of Engineering\",\n sortIndex: 12\n }),\n new School({\n prefix: \"GERO\",\n description: \"Davis School of Gerontology\",\n sortIndex: 13\n }),\n new School({\n prefix: \"GRAD\",\n description: \"Graduate Studies\",\n sortIndex: 14\n }),\n new School({\n prefix: \"LAW\",\n description: \"Law\",\n sortIndex: 15\n }),\n new School({\n prefix: \"MED\",\n description: \"Keck School of Medicine\",\n sortIndex: 16\n }),\n new School({\n prefix: \"MUS\",\n description: \"Thornton School of Music\",\n sortIndex: 17\n }),\n new School({\n prefix: \"OT\",\n description: \"Chan Division of Occupational Science and Occupational Therapy\",\n sortIndex: 18\n }),\n new School({\n prefix: \"PHAR\",\n description: \"School of Pharmacy\",\n sortIndex: 19\n }),\n new School({\n prefix: \"PT\",\n description: \"Physical Therapy\",\n sortIndex: 20\n }),\n new School({\n prefix: \"PPD\",\n description: \"Price School of Public Policy\",\n sortIndex: 21\n }),\n new School({\n prefix: \"SOWK\",\n description: \"Dworak-Peck School of Social Work\",\n sortIndex: 22\n }),\n new School({\n prefix: 'ACAD',\n description: 'Jimmy Iovine and Andre Young Academy',\n sortIndex: 23\n }),\n];\n","import { SCHOOLS } from \"./school.model\";\n\nexport class Department implements IDepartment {\n prefix?: string | undefined;\n description?: string | undefined;\n sortIndex?: number;\n schoolPrefix?: string | undefined;\n\n // clearances?: DepartmentClearance[] | undefined;\n\n constructor(data?: IDepartment) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.prefix = _data[\"prefix\"];\n this.description = _data[\"description\"];\n this.sortIndex = _data[\"sortIndex\"];\n this.schoolPrefix = _data[\"schoolPrefix\"];\n // if (Array.isArray(_data[\"clearances\"])) {\n // this.clearances = [] as any;\n // for (let item of _data[\"clearances\"])\n // this.clearances!.push(DepartmentClearance.fromJS(item));\n // }\n }\n }\n\n static fromJS(data: any): Department {\n data = typeof data === 'object' ? data : {};\n let result = new Department();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"prefix\"] = this.prefix;\n data[\"description\"] = this.description;\n data[\"sortIndex\"] = this.sortIndex;\n data[\"schoolPrefix\"] = this.schoolPrefix;\n // if (Array.isArray(this.clearances)) {\n // data[\"clearances\"] = [];\n // for (let item of this.clearances)\n // data[\"clearances\"].push(item.toJSON());\n // }\n return data;\n }\n\n static createFakeDepartment(prefix: string, description: string, schoolPrefix?: string) {\n return new Department({\n prefix: prefix,\n description: description,\n schoolPrefix: schoolPrefix\n });\n }\n}\n\nexport interface IDepartment {\n prefix?: string | undefined;\n description?: string | undefined;\n sortIndex?: number;\n schoolPrefix?: string | undefined;\n // clearances?: DepartmentClearance[] | undefined;\n}\n\nexport const DEPARTMENTS: IDepartment[] =\n [\n ...SCHOOLS.filter(s => s.prefix !== \"FA\")\n .map(s => Department.createFakeDepartment(`${ s.prefix }1`, `DEPT 1`, s.prefix)),\n\n ...SCHOOLS.filter(s => s.prefix !== \"FA\")\n .map(s => Department.createFakeDepartment(`${ s.prefix }2`, `DEPT 2`, s.prefix)),\n\n ...SCHOOLS.filter(s => s.prefix !== \"FA\")\n .map(s => Department.createFakeDepartment(`${ s.prefix }3`, `DEPT 3`, s.prefix)),\n\n // new Department({\n // prefix: \"FASC\",\n // description: \"Sculpture\",\n // schoolPrefix: \"FA\"\n // }),\n new Department({\n prefix: \"ART\",\n description: \"Art\",\n schoolPrefix: \"FA\"\n }),\n new Department({\n prefix: \"AHIS\",\n description: \"Art History\",\n schoolPrefix: \"FA\"\n }),\n new Department({\n prefix: \"CRIT\",\n description: \"Critical Studies\",\n schoolPrefix: \"FA\",\n }),\n new Department({\n prefix: \"DES\",\n description: \"Design\",\n schoolPrefix: \"FA\"\n }),\n new Department({\n prefix: \"PAS\",\n description: \"Public Art Studies\",\n schoolPrefix: \"FA\"\n }),\n new Department({\n prefix: \"FAD\",\n description: \"Fine Arts\",\n schoolPrefix: \"FA\"\n }),\n // new Department({\n // prefix: \"FAMS\",\n // description: \"Museum Studies\",\n // schoolPrefix: \"FA\"\n // }),\n\n // new Department({\n // prefix: \"FAED\",\n // description: \"Art Education\",\n // schoolPrefix: \"FA\"\n // }),\n // new Department({\n // prefix: \"FACE\",\n // description: \"Ceramics\",\n // schoolPrefix: \"FA\"\n // }),\n // new Department({\n // prefix: \"FAIN\",\n // description: \"Intermedia\",\n // schoolPrefix: \"FA\"\n // }),\n // new Department({\n // prefix: \"FAPT\",\n // description: \"Painting\",\n // schoolPrefix: \"FA\"\n // }),\n // new Department({\n // prefix: \"FAPR\",\n // description: \"Printmaking\",\n // schoolPrefix: \"FA\"\n // }),\n // new Department({\n // prefix: \"FADW\",\n // description: \"Drawing\",\n // schoolPrefix: \"FA\"\n // }),\n // new Department({\n // prefix: \"FAPH\",\n // description: \"Photography\",\n // schoolPrefix: \"FA\"\n // }),\n // new Department({\n // prefix: \"FADN\",\n // description: \"Design\",\n // schoolPrefix: \"FA\"\n // }),\n // new Department({\n // prefix: \"FASA\",\n // description: \"Studio Arts\",\n // schoolPrefix: \"FA\"\n // })\n ]\n","export class ClearanceModel implements IClearanceModel {\n effectiveDate?: Date | undefined;\n expirationDate?: Date | undefined;\n unitCode?: string | undefined;\n sectionId?: number;\n personId?: number;\n\n constructor(data?: IClearanceModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.effectiveDate = _data[\"effectiveDate\"] ? new Date(_data[\"effectiveDate\"].toString()) : undefined;\n this.expirationDate = _data[\"expirationDate\"] ? new Date(_data[\"expirationDate\"].toString()) : undefined;\n this.unitCode = _data[\"unitCode\"];\n this.sectionId = _data[\"sectionId\"];\n this.personId = _data[\"personId\"];\n }\n }\n\n static fromJS(data: any): ClearanceModel {\n data = typeof data === 'object' ? data : {};\n let result = new ClearanceModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"effectiveDate\"] = this.effectiveDate ? this.effectiveDate.toISOString() : undefined;\n data[\"expirationDate\"] = this.expirationDate ? this.expirationDate.toISOString() : undefined;\n data[\"unitCode\"] = this.unitCode;\n data[\"sectionId\"] = this.sectionId;\n data[\"personId\"] = this.personId;\n return data;\n }\n}\n\nexport interface IClearanceModel {\n effectiveDate?: Date | undefined;\n expirationDate?: Date | undefined;\n unitCode?: string | undefined;\n sectionId?: number;\n personId?: number;\n}\n","export class ModeModel implements IModeModel {\n rnrModeCode?: string | undefined;\n description?: string | undefined;\n\n constructor(data?: IModeModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.rnrModeCode = _data[\"rnrModeCode\"];\n this.description = _data[\"description\"];\n }\n }\n\n static fromJS(data: any): ModeModel {\n data = typeof data === 'object' ? data : {};\n let result = new ModeModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"rnrModeCode\"] = this.rnrModeCode;\n data[\"description\"] = this.description;\n return data;\n }\n}\n\nexport interface IModeModel {\n rnrModeCode?: string | undefined;\n description?: string | undefined;\n}\n","import { ACTIVE_TERMS } from \"./active-terms.constant\";\nimport { ARCHIVED_TERMS } from \"./archived-terms.constant\";\n\nexport class SectionInstructor implements ISectionInstructor {\n sectionId?: number;\n rnrRoleCode?: string | undefined;\n uscId?: string | undefined;\n eId?: string | undefined;\n firstName?: string | undefined;\n lastName?: string | undefined;\n personName?: string | undefined;\n sisSeqNumber?: string | undefined;\n\n constructor(data?: ISectionInstructor) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.sectionId = _data[\"sectionId\"];\n this.rnrRoleCode = _data[\"rnrRoleCode\"];\n this.uscId = _data[\"uscId\"];\n this.eId = _data[\"eId\"];\n this.firstName = _data[\"firstName\"];\n this.lastName = _data[\"lastName\"];\n this.personName = _data[\"personName\"];\n this.sisSeqNumber = _data[\"sisSeqNumber\"];\n }\n }\n\n static fromJS(data: any): SectionInstructor {\n data = typeof data === 'object' ? data : {};\n let result = new SectionInstructor();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"sectionId\"] = this.sectionId;\n data[\"rnrRoleCode\"] = this.rnrRoleCode;\n data[\"uscId\"] = this.uscId;\n data[\"eId\"] = this.eId;\n data[\"firstName\"] = this.firstName;\n data[\"lastName\"] = this.lastName;\n data[\"personName\"] = this.personName;\n data[\"sisSeqNumber\"] = this.sisSeqNumber;\n return data;\n }\n\n static createFakeInstructor(termCode: number, index: number): SectionInstructor {\n const stringId: string = `${ termCode }${ index }`;\n const intId: number = parseInt(stringId);\n\n return new SectionInstructor({\n sectionId: intId,\n rnrRoleCode: \"IN\",\n uscId: stringId,\n firstName: \"First \" + (index - 6),\n lastName: \"Last \" + (index - 6),\n personName: \"Person\",\n sisSeqNumber: stringId\n });\n }\n}\n\nexport interface ISectionInstructor {\n sectionId?: number;\n rnrRoleCode?: string | undefined;\n uscId?: string | undefined;\n eId?: string | undefined;\n firstName?: string | undefined;\n lastName?: string | undefined;\n personName?: string | undefined;\n sisSeqNumber?: string | undefined;\n}\n\n//todo: fix these\nexport const SectionInstructors: ISectionInstructor[] = [\n new SectionInstructor({\n sectionId: 33001,\n rnrRoleCode: \"IN\",\n uscId: undefined,\n firstName: \"Kanti\",\n lastName: \"McMahon\",\n personName: \"Kanti McMahon\",\n }),\n new SectionInstructor({\n sectionId: 33002,\n rnrRoleCode: \"IN\",\n uscId: undefined,\n firstName: \"Tulugaq\",\n lastName: \"Alescio\",\n personName: \"Tulugaq Alescio\",\n }),\n new SectionInstructor({\n sectionId: 33003,\n rnrRoleCode: \"IN\",\n uscId: undefined,\n firstName: \"Armani\",\n lastName: \"Sempers\",\n personName: \"Armani Sempers\",\n }),\n new SectionInstructor({\n sectionId: 55411,\n rnrRoleCode: \"IN\",\n uscId: \"1111111\",\n firstName: \"Marisa\",\n lastName: \"Mandler\",\n personName: \"Marisa Mandler\",\n }),\n new SectionInstructor({\n sectionId: 33432,\n rnrRoleCode: \"IN\",\n uscId: undefined,\n firstName: \"Jason\",\n lastName: \"Smith\",\n personName: \"Jason Smith\",\n }),\n\n new SectionInstructor({\n sectionId: 33433,\n rnrRoleCode: \"IN\",\n uscId: \"1111111\",\n firstName: \"Stephanie\",\n lastName: \"Jackson\",\n personName: \"Stephanie Jackson\",\n }),\n new SectionInstructor({\n sectionId: 33434,\n rnrRoleCode: \"IN\",\n uscId: undefined,\n firstName: \"Jason\",\n lastName: \"Smith\",\n personName: \"Jason Smith\",\n }),\n new SectionInstructor({\n sectionId: 33435,\n rnrRoleCode: \"IN\",\n uscId: undefined,\n firstName: \"Jason\",\n lastName: \"Smith\",\n personName: \"Jason Smith\",\n }),\n new SectionInstructor({\n sectionId: 33436,\n rnrRoleCode: \"IN\",\n uscId: undefined,\n firstName: \"Jason\",\n lastName: \"Smith\",\n personName: \"Jason Smith\",\n }),\n new SectionInstructor({\n sectionId: 10011,\n rnrRoleCode: \"IN\",\n uscId: undefined,\n firstName: \"Hartley\",\n lastName: \"Bull\",\n personName: \"Hartley Bull\",\n }),\n new SectionInstructor({\n sectionId: 10012,\n rnrRoleCode: \"IN\",\n uscId: undefined,\n firstName: \"Hartley\",\n lastName: \"Bull\",\n personName: \"Hartley Bull\",\n }),\n new SectionInstructor({\n sectionId: 10022,\n rnrRoleCode: \"IN\",\n uscId: undefined,\n firstName: \"Vic\",\n lastName: \"Thomas\",\n personName: \"Vic Thomas\",\n }),\n new SectionInstructor({\n sectionId: 11808,\n rnrRoleCode: \"IN\",\n uscId: \"111111111\",\n firstName: \"Hector\",\n lastName: \"Reyes\",\n personName: \"Hector Reyes\",\n }),\n\n ...ACTIVE_TERMS.map(t => t.termCode)\n .map(termCode => [\n SectionInstructor.createFakeInstructor(termCode!, 7),\n SectionInstructor.createFakeInstructor(termCode!, 8),\n SectionInstructor.createFakeInstructor(termCode!, 9),\n ]).flat(),\n ...ARCHIVED_TERMS.map(t => t.termCode)\n .map(termCode => [\n SectionInstructor.createFakeInstructor(termCode!, 7),\n SectionInstructor.createFakeInstructor(termCode!, 8),\n SectionInstructor.createFakeInstructor(termCode!, 9),\n ]).flat()\n];\n","import { ACTIVE_TERMS } from \"./active-terms.constant\";\nimport { ARCHIVED_TERMS } from \"./archived-terms.constant\";\n\nexport class SectionLocation implements ISectionLocation {\n sectionId?: number;\n dayCodes?: string[] | undefined;\n startTime?: string | undefined;\n endTime?: string | undefined;\n location?: string | undefined;\n campusCode?: string | undefined;\n buildingCode?: string | undefined;\n roomNumber?: string | undefined;\n lastUpdtTs?: Date | undefined;\n sisSqNumber?: number;\n\n constructor(data?: ISectionLocation) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.sectionId = _data[\"sectionId\"];\n if (Array.isArray(_data[\"dayCodes\"])) {\n this.dayCodes = [] as any;\n for (let item of _data[\"dayCodes\"])\n this.dayCodes!.push(item);\n }\n this.startTime = _data[\"startTime\"];\n this.endTime = _data[\"endTime\"];\n this.location = _data[\"location\"];\n this.campusCode = _data[\"campusCode\"];\n this.buildingCode = _data[\"buildingCode\"];\n this.roomNumber = _data[\"roomNumber\"];\n this.lastUpdtTs = _data[\"lastUpdtTs\"] ? new Date(_data[\"lastUpdtTs\"].toString()) : undefined;\n this.sisSqNumber = _data[\"sisSqNumber\"];\n }\n }\n\n static fromJS(data: any): SectionLocation {\n data = typeof data === 'object' ? data : {};\n let result = new SectionLocation();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"sectionId\"] = this.sectionId;\n if (Array.isArray(this.dayCodes)) {\n data[\"dayCodes\"] = [];\n for (let item of this.dayCodes)\n data[\"dayCodes\"].push(item);\n }\n data[\"startTime\"] = this.startTime;\n data[\"endTime\"] = this.endTime;\n data[\"location\"] = this.location;\n data[\"campusCode\"] = this.campusCode;\n data[\"buildingCode\"] = this.buildingCode;\n data[\"roomNumber\"] = this.roomNumber;\n data[\"lastUpdtTs\"] = this.lastUpdtTs ? this.lastUpdtTs.toISOString() : undefined;\n data[\"sisSqNumber\"] = this.sisSqNumber;\n return data;\n }\n}\n\nexport interface ISectionLocation {\n sectionId?: number;\n dayCodes?: string[] | undefined;\n startTime?: string | undefined;\n endTime?: string | undefined;\n location?: string | undefined;\n campusCode?: string | undefined;\n buildingCode?: string | undefined;\n roomNumber?: string | undefined;\n // lastUpdtTs?: Date | undefined;\n // sisSqNumber?: number;\n}\n\nexport const SECTION_LOCATIONS: ISectionLocation[] = [\n ...[\n new SectionLocation({\n sectionId: 33001,\n dayCodes: ['Mon', 'Wed'],\n startTime: \"08:00\",\n endTime: \"10:00\",\n location: \"SGM 001\",\n campusCode: \"UPC\",\n buildingCode: \"SGM\",\n roomNumber: \"001\"\n }),\n new SectionLocation({\n sectionId: 33021,\n dayCodes: ['Mon', 'Wed'],\n startTime: \"08:00\",\n endTime: \"10:00\",\n location: \"SGM 111\",\n campusCode: \"UPC\",\n buildingCode: \"SGM\",\n roomNumber: \"111\"\n }),\n new SectionLocation({\n sectionId: 33031,\n dayCodes: ['Mon', 'Wed'],\n startTime: \"08:00\",\n endTime: \"10:00\",\n location: \"SGM 110\",\n campusCode: \"UPC\",\n buildingCode: \"SGM\",\n roomNumber: \"110\"\n }),\n new SectionLocation({\n sectionId: 33041,\n dayCodes: ['Mon', 'Wed'],\n startTime: \"08:00\",\n endTime: \"10:00\",\n location: \"SGM 112\",\n campusCode: \"UPC\",\n buildingCode: \"SGM\",\n roomNumber: \"112\"\n }),\n new SectionLocation({\n sectionId: 33002,\n dayCodes: ['Mon', 'Wed'],\n startTime: \"09:00\",\n endTime: \"11:00\",\n location: \"SGM 011\",\n campusCode: \"UPC\",\n buildingCode: \"SGM\",\n roomNumber: \"011\"\n }),\n new SectionLocation({\n sectionId: 33002,\n dayCodes: ['Tue', 'Thu'],\n startTime: \"09:00\",\n endTime: \"11:00\",\n location: \"SGM 011\",\n campusCode: \"UPC\",\n buildingCode: \"SGM\",\n roomNumber: \"011\"\n }),\n new SectionLocation({\n sectionId: 33003,\n dayCodes: ['Fri'],\n startTime: \"12:00\",\n endTime: \"3:00\",\n location: \"SGM 654\",\n campusCode: \"UPC\",\n buildingCode: \"SGM\",\n roomNumber: \"654\"\n }),\n new SectionLocation({\n sectionId: 11805,\n dayCodes: ['Tue'],\n startTime: \"14:30\",\n endTime: \"15:50\",\n location: \"THH 301\",\n campusCode: \"UPC\",\n buildingCode: \"THH\",\n roomNumber: \"301\"\n }),\n new SectionLocation({\n sectionId: 33004,\n dayCodes: ['Monday'],\n startTime: \"18:00\",\n endTime: \"21:00\",\n location: \"THH 311\",\n campusCode: \"UPC\",\n buildingCode: \"THH\",\n roomNumber: \"311\"\n }),\n new SectionLocation({\n sectionId: 55411,\n dayCodes: ['Tue'],\n startTime: \"15:00\",\n endTime: \"16:50\",\n location: \"WAH 102A\",\n campusCode: \"UPC\",\n buildingCode: \"WAH\",\n roomNumber: \"102A\"\n }),\n //HIS 500 Start\n new SectionLocation({\n sectionId: 33432,\n dayCodes: ['Mon'],\n startTime: \"08:00\",\n endTime: \"10:00\",\n location: \"SGM 207\",\n campusCode: \"UPC\",\n buildingCode: \"SGM\",\n roomNumber: \"207\"\n }),\n new SectionLocation({\n sectionId: 33433,\n dayCodes: ['Mon', 'Wed'],\n startTime: \"09:00\",\n endTime: \"10:00\",\n location: \"SGM 207\",\n campusCode: \"UPC\",\n buildingCode: \"SGM\",\n roomNumber: \"207\"\n }),\n new SectionLocation({\n sectionId: 33434,\n dayCodes: ['Mon'],\n startTime: \"13:00\",\n endTime: \"15:00\",\n location: \"SGM 207\",\n campusCode: \"UPC\",\n buildingCode: \"SGM\",\n roomNumber: \"207\"\n }),\n new SectionLocation({\n sectionId: 33435,\n dayCodes: ['Tue', 'Thu'],\n startTime: \"09:00\",\n endTime: \"10:00\",\n location: \"SGM 207\",\n campusCode: \"UPC\",\n buildingCode: \"SGM\",\n roomNumber: \"207\"\n }),\n new SectionLocation({\n sectionId: 33436,\n dayCodes: ['Tue'],\n startTime: \"13:00\",\n endTime: \"15:00\",\n location: \"SGM 207\",\n campusCode: \"UPC\",\n buildingCode: \"SGM\",\n roomNumber: \"207\"\n }),\n new SectionLocation({\n sectionId: 33437,\n dayCodes: ['Fri'],\n startTime: \"13:00\",\n endTime: \"15:00\",\n location: \"SGM 209\",\n campusCode: \"UPC\",\n buildingCode: \"SGM\",\n roomNumber: \"209\"\n }),\n //HIS 500 End\n new SectionLocation({\n sectionId: 10011,\n dayCodes: ['Mon'],\n startTime: \"14:30\",\n endTime: \"15:50\",\n location: \"THH 301\",\n campusCode: \"UPC\",\n buildingCode: \"THH\",\n roomNumber: \"301\"\n }),\n new SectionLocation({\n sectionId: 10012,\n dayCodes: ['Fri'],\n startTime: \"14:30\",\n endTime: \"15:50\",\n location: \"THH 301\",\n campusCode: \"UPC\",\n buildingCode: \"THH\",\n roomNumber: \"301\"\n }),\n\n new SectionLocation({\n sectionId: 10022,\n dayCodes: ['Mon', 'Wed'],\n startTime: \"10:30\",\n endTime: \"12:30\",\n location: \"THH 201\",\n campusCode: \"UPC\",\n buildingCode: \"THH\",\n roomNumber: \"201\"\n }),\n\n //2022\n new SectionLocation({\n sectionId: 23001,\n dayCodes: ['Mon', 'Wed'],\n startTime: \"08:00\",\n endTime: \"10:00\",\n location: \"SGM 001\",\n campusCode: \"UPC\",\n buildingCode: \"SGM\",\n roomNumber: \"001\"\n }),\n new SectionLocation({\n sectionId: 23002,\n dayCodes: ['Mon', 'Wed'],\n startTime: \"09:00\",\n endTime: \"11:00\",\n location: \"SGM 011\",\n campusCode: \"UPC\",\n buildingCode: \"SGM\",\n roomNumber: \"011\"\n }),\n new SectionLocation({\n sectionId: 23002,\n dayCodes: ['Tue', 'Thu'],\n startTime: \"09:00\",\n endTime: \"11:00\",\n location: \"SGM 011\",\n campusCode: \"UPC\",\n buildingCode: \"SGM\",\n roomNumber: \"011\"\n }),\n new SectionLocation({\n sectionId: 23003,\n dayCodes: ['Fri'],\n startTime: \"12:00\",\n endTime: \"3:00\",\n location: \"SGM 654\",\n campusCode: \"UPC\",\n buildingCode: \"SGM\",\n roomNumber: \"654\"\n }),\n new SectionLocation({\n sectionId: 11808,\n dayCodes: ['Tue'],\n startTime: \"14:30\",\n endTime: \"15:50\",\n location: \"WPH 301\",\n campusCode: \"UPC\",\n buildingCode: \"WPH\",\n roomNumber: \"206\"\n }),\n new SectionLocation({\n sectionId: 23004,\n dayCodes: ['Monday'],\n startTime: \"18:00\",\n endTime: \"21:00\",\n location: \"THH 311\",\n campusCode: \"UPC\",\n buildingCode: \"THH\",\n roomNumber: \"311\"\n }),\n new SectionLocation({\n sectionId: 22411,\n dayCodes: ['Tue'],\n startTime: \"15:00\",\n endTime: \"16:50\",\n location: \"WAH 102A\",\n campusCode: \"UPC\",\n buildingCode: \"WAH\",\n roomNumber: \"102A\"\n }),\n\n\n ],\n\n ...ACTIVE_TERMS.map(t => {\n const actives = []\n for (let courseCount = 0; courseCount < 13; courseCount++) {\n for (let sectionCount = 0; sectionCount < 2; sectionCount++) {\n const startTime = Math.floor(Math.random() * (20 - 12 + 1)) + 12;\n actives.push(new SectionLocation({\n sectionId: parseInt(`${ t.termCode }${ courseCount }${ sectionCount }`),\n dayCodes: sectionCount % 2 === 0 ? ['Mon', 'Wed', 'Fri'] : ['Tue', 'Thu'],\n startTime: `${ startTime }:00`,\n endTime: `${ startTime + 2 }:00`,\n location: `OFF-${ t.termCode }${ courseCount }${ sectionCount }`,\n campusCode: \"UPC\",\n buildingCode: \"OFF\",\n roomNumber: `OFF-${ t.termCode }${ courseCount }${ sectionCount }`\n })\n )\n }\n }\n return actives;\n }).flat(),\n\n ...ARCHIVED_TERMS.map(t => {\n const actives = []\n for (let courseCount = 0; courseCount < 13; courseCount++) {\n for (let sectionCount = 0; sectionCount < 2; sectionCount++) {\n const startTime = Math.floor(Math.random() * (20 - 8 + 1)) + 8;\n actives.push(new SectionLocation({\n sectionId: parseInt(`${ t.termCode }${ courseCount }${ sectionCount }`),\n dayCodes: sectionCount % 2 === 0 ? ['Mon', 'Wed', 'Fri'] : ['Tue', 'Thu'],\n startTime: `${ startTime }:00`,\n endTime: `${ startTime + 2 }:00`,\n location: `OFF-${ t.termCode }${ courseCount }${ sectionCount }`,\n campusCode: \"UPC\",\n buildingCode: \"OFF\",\n roomNumber: `OFF-${ t.termCode }${ courseCount }${ sectionCount }`\n })\n )\n }\n }\n return actives;\n }).flat(),\n];\n","export class WaitlistModel implements IWaitlistModel {\n effectiveDate?: Date | undefined;\n expirationDate?: Date | undefined;\n waitlistPriority?: string | undefined;\n\n constructor(data?: IWaitlistModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.effectiveDate = _data[\"effectiveDate\"] ? new Date(_data[\"effectiveDate\"].toString()) : undefined;\n this.expirationDate = _data[\"expirationDate\"] ? new Date(_data[\"expirationDate\"].toString()) : undefined;\n this.waitlistPriority = _data[\"waitlistPriority\"];\n }\n }\n\n static fromJS(data: any): WaitlistModel {\n data = typeof data === 'object' ? data : {};\n let result = new WaitlistModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"effectiveDate\"] = this.effectiveDate ? this.effectiveDate.toISOString() : undefined;\n data[\"expirationDate\"] = this.expirationDate ? this.expirationDate.toISOString() : undefined;\n data[\"waitlistPriority\"] = this.waitlistPriority;\n return data;\n }\n}\n\nexport interface IWaitlistModel {\n effectiveDate?: Date | undefined;\n expirationDate?: Date | undefined;\n waitlistPriority?: string | undefined;\n}\n","import { ACTIVE_TERMS } from \"./active-terms.constant\";\nimport { ARCHIVED_TERMS } from \"./archived-terms.constant\";\n\nexport class SessionModel implements ISessionModel {\n rnrSessionId?: number;\n sisSessionId?: string | undefined;\n termCode?: string | undefined;\n description?: string | undefined;\n rnrSessionCode?: string | undefined;\n gradingCycleCode?: string | undefined;\n partHealthFeeCode?: string | undefined;\n summerWeekHealthFeeCode?: string | undefined;\n summerMaxHealthFeeCode?: string | undefined;\n studentFeeCode?: string | undefined;\n lastApplyDate?: Date | undefined;\n preRegBeginDate?: Date | undefined;\n preRegEndDate?: Date | undefined;\n earlyRegBeginDate?: Date | undefined;\n earlyRegEndDate?: Date | undefined;\n regBeginDate?: Date | undefined;\n regEndDate?: Date | undefined;\n classBeginDate?: Date | undefined;\n classEndDate?: Date | undefined;\n lateRegBeginDate?: Date | undefined;\n lateRegEndDate?: Date | undefined;\n lastAddDropDate?: Date | undefined;\n healthInsuranceDueDate?: Date | undefined;\n withdrawWowDate?: Date | undefined;\n withdrawWwDate?: Date | undefined;\n gradePostDate?: Date | undefined;\n fullTimeUnitCode?: string | undefined;\n stopDate?: Date | undefined;\n orientationFeeCode?: string | undefined;\n week2BeginDate?: Date | undefined;\n week2EndDate?: Date | undefined;\n week2PercentPenalty?: number;\n week2FeeCode?: string | undefined;\n week3BeginDate?: Date | undefined;\n week3EndDate?: Date | undefined;\n week3PercentPenalty?: number;\n week3FeeCode?: string | undefined;\n orientationMandatory?: string | undefined;\n oissMandatory?: string | undefined;\n oissFeeCode?: string | undefined;\n gradOrientationMandatory?: string | undefined;\n gradOrientationFeeCode?: string | undefined;\n finalExamBeginDate?: Date | undefined;\n finalExamEndDate?: Date | undefined;\n insuranceMinimumUnits?: number;\n uscCampusCode?: string | undefined;\n midtermGradingBeginDate?: Date | undefined;\n midtermGradingEndDate?: Date | undefined;\n finalGradingBeginDate?: Date | undefined;\n finalGradingEndDate?: Date | undefined;\n contactName?: string | undefined;\n contactPhone?: string | undefined;\n break1BeginDate?: Date | undefined;\n break1EndDate?: Date | undefined;\n break2BeginDate?: Date | undefined;\n break2EndDate?: Date | undefined;\n lastEnrollmentOptionDate?: Date | undefined;\n\n constructor(data?: ISessionModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.rnrSessionId = _data[\"rnrSessionId\"];\n this.sisSessionId = _data[\"sisSessionId\"];\n this.termCode = _data[\"termCode\"];\n this.description = _data[\"description\"];\n this.rnrSessionCode = _data[\"rnrSessionCode\"];\n this.gradingCycleCode = _data[\"gradingCycleCode\"];\n this.partHealthFeeCode = _data[\"partHealthFeeCode\"];\n this.summerWeekHealthFeeCode = _data[\"summerWeekHealthFeeCode\"];\n this.summerMaxHealthFeeCode = _data[\"summerMaxHealthFeeCode\"];\n this.studentFeeCode = _data[\"studentFeeCode\"];\n this.lastApplyDate = _data[\"lastApplyDate\"] ? new Date(_data[\"lastApplyDate\"].toString()) : undefined;\n this.preRegBeginDate = _data[\"preRegBeginDate\"] ? new Date(_data[\"preRegBeginDate\"].toString()) : undefined;\n this.preRegEndDate = _data[\"preRegEndDate\"] ? new Date(_data[\"preRegEndDate\"].toString()) : undefined;\n this.earlyRegBeginDate = _data[\"earlyRegBeginDate\"] ? new Date(_data[\"earlyRegBeginDate\"].toString()) : undefined;\n this.earlyRegEndDate = _data[\"earlyRegEndDate\"] ? new Date(_data[\"earlyRegEndDate\"].toString()) : undefined;\n this.regBeginDate = _data[\"regBeginDate\"] ? new Date(_data[\"regBeginDate\"].toString()) : undefined;\n this.regEndDate = _data[\"regEndDate\"] ? new Date(_data[\"regEndDate\"].toString()) : undefined;\n this.classBeginDate = _data[\"classBeginDate\"] ? new Date(_data[\"classBeginDate\"].toString()) : undefined;\n this.classEndDate = _data[\"classEndDate\"] ? new Date(_data[\"classEndDate\"].toString()) : undefined;\n this.lateRegBeginDate = _data[\"lateRegBeginDate\"] ? new Date(_data[\"lateRegBeginDate\"].toString()) : undefined;\n this.lateRegEndDate = _data[\"lateRegEndDate\"] ? new Date(_data[\"lateRegEndDate\"].toString()) : undefined;\n this.lastAddDropDate = _data[\"lastAddDropDate\"] ? new Date(_data[\"lastAddDropDate\"].toString()) : undefined;\n this.healthInsuranceDueDate = _data[\"healthInsuranceDueDate\"] ? new Date(_data[\"healthInsuranceDueDate\"].toString()) : undefined;\n this.withdrawWowDate = _data[\"withdrawWowDate\"] ? new Date(_data[\"withdrawWowDate\"].toString()) : undefined;\n this.withdrawWwDate = _data[\"withdrawWwDate\"] ? new Date(_data[\"withdrawWwDate\"].toString()) : undefined;\n this.gradePostDate = _data[\"gradePostDate\"] ? new Date(_data[\"gradePostDate\"].toString()) : undefined;\n this.fullTimeUnitCode = _data[\"fullTimeUnitCode\"];\n this.stopDate = _data[\"stopDate\"] ? new Date(_data[\"stopDate\"].toString()) : undefined;\n this.orientationFeeCode = _data[\"orientationFeeCode\"];\n this.week2BeginDate = _data[\"week2BeginDate\"] ? new Date(_data[\"week2BeginDate\"].toString()) : undefined;\n this.week2EndDate = _data[\"week2EndDate\"] ? new Date(_data[\"week2EndDate\"].toString()) : undefined;\n this.week2PercentPenalty = _data[\"week2PercentPenalty\"];\n this.week2FeeCode = _data[\"week2FeeCode\"];\n this.week3BeginDate = _data[\"week3BeginDate\"] ? new Date(_data[\"week3BeginDate\"].toString()) : undefined;\n this.week3EndDate = _data[\"week3EndDate\"] ? new Date(_data[\"week3EndDate\"].toString()) : undefined;\n this.week3PercentPenalty = _data[\"week3PercentPenalty\"];\n this.week3FeeCode = _data[\"week3FeeCode\"];\n this.orientationMandatory = _data[\"orientationMandatory\"];\n this.oissMandatory = _data[\"oissMandatory\"];\n this.oissFeeCode = _data[\"oissFeeCode\"];\n this.gradOrientationMandatory = _data[\"gradOrientationMandatory\"];\n this.gradOrientationFeeCode = _data[\"gradOrientationFeeCode\"];\n this.finalExamBeginDate = _data[\"finalExamBeginDate\"] ? new Date(_data[\"finalExamBeginDate\"].toString()) : undefined;\n this.finalExamEndDate = _data[\"finalExamEndDate\"] ? new Date(_data[\"finalExamEndDate\"].toString()) : undefined;\n this.insuranceMinimumUnits = _data[\"insuranceMinimumUnits\"];\n this.uscCampusCode = _data[\"uscCampusCode\"];\n this.midtermGradingBeginDate = _data[\"midtermGradingBeginDate\"] ? new Date(_data[\"midtermGradingBeginDate\"].toString()) : undefined;\n this.midtermGradingEndDate = _data[\"midtermGradingEndDate\"] ? new Date(_data[\"midtermGradingEndDate\"].toString()) : undefined;\n this.finalGradingBeginDate = _data[\"finalGradingBeginDate\"] ? new Date(_data[\"finalGradingBeginDate\"].toString()) : undefined;\n this.finalGradingEndDate = _data[\"finalGradingEndDate\"] ? new Date(_data[\"finalGradingEndDate\"].toString()) : undefined;\n this.contactName = _data[\"contactName\"];\n this.contactPhone = _data[\"contactPhone\"];\n this.break1BeginDate = _data[\"break1BeginDate\"] ? new Date(_data[\"break1BeginDate\"].toString()) : undefined;\n this.break1EndDate = _data[\"break1EndDate\"] ? new Date(_data[\"break1EndDate\"].toString()) : undefined;\n this.break2BeginDate = _data[\"break2BeginDate\"] ? new Date(_data[\"break2BeginDate\"].toString()) : undefined;\n this.break2EndDate = _data[\"break2EndDate\"] ? new Date(_data[\"break2EndDate\"].toString()) : undefined;\n this.lastEnrollmentOptionDate = _data[\"lastEnrollmentOptionDate\"] ? new Date(_data[\"lastEnrollmentOptionDate\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): SessionModel {\n data = typeof data === 'object' ? data : {};\n let result = new SessionModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"rnrSessionId\"] = this.rnrSessionId;\n data[\"sisSessionId\"] = this.sisSessionId;\n data[\"termCode\"] = this.termCode;\n data[\"description\"] = this.description;\n data[\"rnrSessionCode\"] = this.rnrSessionCode;\n data[\"gradingCycleCode\"] = this.gradingCycleCode;\n data[\"partHealthFeeCode\"] = this.partHealthFeeCode;\n data[\"summerWeekHealthFeeCode\"] = this.summerWeekHealthFeeCode;\n data[\"summerMaxHealthFeeCode\"] = this.summerMaxHealthFeeCode;\n data[\"studentFeeCode\"] = this.studentFeeCode;\n data[\"lastApplyDate\"] = this.lastApplyDate ? this.lastApplyDate.toISOString() : undefined;\n data[\"preRegBeginDate\"] = this.preRegBeginDate ? this.preRegBeginDate.toISOString() : undefined;\n data[\"preRegEndDate\"] = this.preRegEndDate ? this.preRegEndDate.toISOString() : undefined;\n data[\"earlyRegBeginDate\"] = this.earlyRegBeginDate ? this.earlyRegBeginDate.toISOString() : undefined;\n data[\"earlyRegEndDate\"] = this.earlyRegEndDate ? this.earlyRegEndDate.toISOString() : undefined;\n data[\"regBeginDate\"] = this.regBeginDate ? this.regBeginDate.toISOString() : undefined;\n data[\"regEndDate\"] = this.regEndDate ? this.regEndDate.toISOString() : undefined;\n data[\"classBeginDate\"] = this.classBeginDate ? this.classBeginDate.toISOString() : undefined;\n data[\"classEndDate\"] = this.classEndDate ? this.classEndDate.toISOString() : undefined;\n data[\"lateRegBeginDate\"] = this.lateRegBeginDate ? this.lateRegBeginDate.toISOString() : undefined;\n data[\"lateRegEndDate\"] = this.lateRegEndDate ? this.lateRegEndDate.toISOString() : undefined;\n data[\"lastAddDropDate\"] = this.lastAddDropDate ? this.lastAddDropDate.toISOString() : undefined;\n data[\"healthInsuranceDueDate\"] = this.healthInsuranceDueDate ? this.healthInsuranceDueDate.toISOString() : undefined;\n data[\"withdrawWowDate\"] = this.withdrawWowDate ? this.withdrawWowDate.toISOString() : undefined;\n data[\"withdrawWwDate\"] = this.withdrawWwDate ? this.withdrawWwDate.toISOString() : undefined;\n data[\"gradePostDate\"] = this.gradePostDate ? this.gradePostDate.toISOString() : undefined;\n data[\"fullTimeUnitCode\"] = this.fullTimeUnitCode;\n data[\"stopDate\"] = this.stopDate ? this.stopDate.toISOString() : undefined;\n data[\"orientationFeeCode\"] = this.orientationFeeCode;\n data[\"week2BeginDate\"] = this.week2BeginDate ? this.week2BeginDate.toISOString() : undefined;\n data[\"week2EndDate\"] = this.week2EndDate ? this.week2EndDate.toISOString() : undefined;\n data[\"week2PercentPenalty\"] = this.week2PercentPenalty;\n data[\"week2FeeCode\"] = this.week2FeeCode;\n data[\"week3BeginDate\"] = this.week3BeginDate ? this.week3BeginDate.toISOString() : undefined;\n data[\"week3EndDate\"] = this.week3EndDate ? this.week3EndDate.toISOString() : undefined;\n data[\"week3PercentPenalty\"] = this.week3PercentPenalty;\n data[\"week3FeeCode\"] = this.week3FeeCode;\n data[\"orientationMandatory\"] = this.orientationMandatory;\n data[\"oissMandatory\"] = this.oissMandatory;\n data[\"oissFeeCode\"] = this.oissFeeCode;\n data[\"gradOrientationMandatory\"] = this.gradOrientationMandatory;\n data[\"gradOrientationFeeCode\"] = this.gradOrientationFeeCode;\n data[\"finalExamBeginDate\"] = this.finalExamBeginDate ? this.finalExamBeginDate.toISOString() : undefined;\n data[\"finalExamEndDate\"] = this.finalExamEndDate ? this.finalExamEndDate.toISOString() : undefined;\n data[\"insuranceMinimumUnits\"] = this.insuranceMinimumUnits;\n data[\"uscCampusCode\"] = this.uscCampusCode;\n data[\"midtermGradingBeginDate\"] = this.midtermGradingBeginDate ? this.midtermGradingBeginDate.toISOString() : undefined;\n data[\"midtermGradingEndDate\"] = this.midtermGradingEndDate ? this.midtermGradingEndDate.toISOString() : undefined;\n data[\"finalGradingBeginDate\"] = this.finalGradingBeginDate ? this.finalGradingBeginDate.toISOString() : undefined;\n data[\"finalGradingEndDate\"] = this.finalGradingEndDate ? this.finalGradingEndDate.toISOString() : undefined;\n data[\"contactName\"] = this.contactName;\n data[\"contactPhone\"] = this.contactPhone;\n data[\"break1BeginDate\"] = this.break1BeginDate ? this.break1BeginDate.toISOString() : undefined;\n data[\"break1EndDate\"] = this.break1EndDate ? this.break1EndDate.toISOString() : undefined;\n data[\"break2BeginDate\"] = this.break2BeginDate ? this.break2BeginDate.toISOString() : undefined;\n data[\"break2EndDate\"] = this.break2EndDate ? this.break2EndDate.toISOString() : undefined;\n data[\"lastEnrollmentOptionDate\"] = this.lastEnrollmentOptionDate ? this.lastEnrollmentOptionDate.toISOString() : undefined;\n return data;\n }\n\n static createFakeSession(termCode: number, index: number): SessionModel {\n const stringId: string = `${termCode}${index}`;\n const intId: number = parseInt(stringId);\n\n return new SessionModel({\n rnrSessionId: intId,\n sisSessionId: \"SIS\" + stringId,\n termCode: stringId,\n description: `${termCode} Description`,\n rnrSessionCode: '00' + index,\n classBeginDate: new Date(\"2023-08-21\"),\n classEndDate: new Date(\"2023-12-02\"),\n lastAddDropDate: new Date(\"2023-09-08\"),\n withdrawWowDate: new Date(\"2023-11-10\"),\n fullTimeUnitCode: \"6.0\",\n finalExamBeginDate: new Date(\"2023-12-06\"),\n finalExamEndDate: new Date(\"2023-12-13\"),\n uscCampusCode: \"UPC-1\",\n finalGradingBeginDate: new Date(\"2023-12-06\"),\n finalGradingEndDate: new Date(\"2023-12-19\"),\n break1BeginDate: new Date(\"2023-11-22\"),\n break1EndDate: new Date(\"2023-11-26\"),\n lastEnrollmentOptionDate: new Date(\"2023-10-06\"),\n });\n }\n}\n\nexport interface ISessionModel {\n rnrSessionId?: number;\n sisSessionId?: string | undefined;\n termCode?: string | undefined;\n description?: string | undefined;\n rnrSessionCode?: string | undefined;\n gradingCycleCode?: string | undefined;\n partHealthFeeCode?: string | undefined;\n summerWeekHealthFeeCode?: string | undefined;\n summerMaxHealthFeeCode?: string | undefined;\n studentFeeCode?: string | undefined;\n lastApplyDate?: Date | undefined;\n preRegBeginDate?: Date | undefined;\n preRegEndDate?: Date | undefined;\n earlyRegBeginDate?: Date | undefined;\n earlyRegEndDate?: Date | undefined;\n regBeginDate?: Date | undefined;\n regEndDate?: Date | undefined;\n classBeginDate?: Date | undefined;\n classEndDate?: Date | undefined;\n lateRegBeginDate?: Date | undefined;\n lateRegEndDate?: Date | undefined;\n lastAddDropDate?: Date | undefined;\n healthInsuranceDueDate?: Date | undefined;\n withdrawWowDate?: Date | undefined;\n withdrawWwDate?: Date | undefined;\n gradePostDate?: Date | undefined;\n fullTimeUnitCode?: string | undefined;\n stopDate?: Date | undefined;\n orientationFeeCode?: string | undefined;\n week2BeginDate?: Date | undefined;\n week2EndDate?: Date | undefined;\n week2PercentPenalty?: number;\n week2FeeCode?: string | undefined;\n week3BeginDate?: Date | undefined;\n week3EndDate?: Date | undefined;\n week3PercentPenalty?: number;\n week3FeeCode?: string | undefined;\n orientationMandatory?: string | undefined;\n oissMandatory?: string | undefined;\n oissFeeCode?: string | undefined;\n gradOrientationMandatory?: string | undefined;\n gradOrientationFeeCode?: string | undefined;\n finalExamBeginDate?: Date | undefined;\n finalExamEndDate?: Date | undefined;\n insuranceMinimumUnits?: number;\n uscCampusCode?: string | undefined;\n midtermGradingBeginDate?: Date | undefined;\n midtermGradingEndDate?: Date | undefined;\n finalGradingBeginDate?: Date | undefined;\n finalGradingEndDate?: Date | undefined;\n contactName?: string | undefined;\n contactPhone?: string | undefined;\n break1BeginDate?: Date | undefined;\n break1EndDate?: Date | undefined;\n break2BeginDate?: Date | undefined;\n break2EndDate?: Date | undefined;\n lastEnrollmentOptionDate?: Date | undefined;\n}\n\n\nexport const SESSIONS: ISessionModel[] = [\n ...[\n // new SessionModel({\n // rnrSessionId: 20233,\n // sisSessionId: \"33433\",\n // termCode: (20233).toString(),\n // description: `20233 Description`,\n // rnrSessionCode: \"003\",\n // classBeginDate: new Date(\"2023-08-21\"),\n // classEndDate: new Date(\"2023-12-02\"),\n // lastAddDropDate: new Date(\"2023-09-08\"),\n // withdrawWowDate: new Date(\"2023-11-10\"),\n // fullTimeUnitCode: \"6.0\",\n // finalExamBeginDate: new Date(\"2023-12-06\"),\n // finalExamEndDate: new Date(\"2023-12-13\"),\n // uscCampusCode: \"UPC-1\",\n // finalGradingBeginDate: new Date(\"2023-12-06\"),\n // finalGradingEndDate: new Date(\"2023-12-19\"),\n // break1BeginDate: new Date(\"2023-11-22\"),\n // break1EndDate: new Date(\"2023-11-26\"),\n // lastEnrollmentOptionDate: new Date(\"2023-10-06\"),\n // })\n ],\n ...ACTIVE_TERMS.map(t => t)\n .map((t) => {\n const r = [\n new SessionModel({\n rnrSessionId: parseInt(`${t.termCode}`),\n sisSessionId: `${t.termCode}`,\n termCode: `${t.termCode}`,\n description: `${t.year} ${t.seasonName} Session`,\n rnrSessionCode: \"001\",\n classBeginDate: new Date(`${t.year}-08-21`),\n classEndDate: new Date(`${t.year}-12-02`),\n lastAddDropDate: new Date(`${t.year}-09-08`),\n withdrawWowDate: new Date(`${t.year}-11-10`),\n fullTimeUnitCode: \"6.0\",\n finalExamBeginDate: new Date(`${t.year}-12-06`),\n finalExamEndDate: new Date(`${t.year}-12-13`),\n uscCampusCode: \"UPC-1\",\n finalGradingBeginDate: new Date(`${t.year}-12-06`),\n finalGradingEndDate: new Date(`${t.year}-12-19`),\n break1BeginDate: new Date(`${t.year}-11-22`),\n break1EndDate: new Date(`${t.year}-11-26`),\n lastEnrollmentOptionDate: new Date(`${t.year}-10-06`),\n }),\n ]\n\n return [...r];\n }).flat(),\n\n ...ARCHIVED_TERMS.map(t => t)\n .map((t) => {\n const r = [\n new SessionModel({\n rnrSessionId: parseInt(`${t.termCode}`),\n sisSessionId: `${t.termCode}`,\n termCode: `${t.termCode}`,\n description: `${t.year} ${t.seasonName} Session`,\n rnrSessionCode: \"001\",\n classBeginDate: new Date(`${t.year}-08-21`),\n classEndDate: new Date(`${t.year}-12-02`),\n lastAddDropDate: new Date(`${t.year}-09-08`),\n withdrawWowDate: new Date(`${t.year}-11-10`),\n fullTimeUnitCode: \"6.0\",\n finalExamBeginDate: new Date(`${t.year}-12-06`),\n finalExamEndDate: new Date(`${t.year}-12-13`),\n uscCampusCode: \"UPC-1\",\n finalGradingBeginDate: new Date(`${t.year}-12-06`),\n finalGradingEndDate: new Date(`${t.year}-12-19`),\n break1BeginDate: new Date(`${t.year}-11-22`),\n break1EndDate: new Date(`${t.year}-11-26`),\n lastEnrollmentOptionDate: new Date(`${t.year}-10-06`),\n }),\n ]\n\n return [...r];\n }).flat(),\n]","import { ClearanceModel } from \"@app/core/mocks/clearance.model\";\nimport { CourseModel } from \"@app/core/mocks/course.model\";\nimport { ModeModel } from \"@app/core/mocks/mode.model\";\nimport { SectionInstructor, SectionInstructors } from \"@app/core/mocks/section-instructor.model\";\nimport { SECTION_LOCATIONS, SectionLocation } from \"@app/core/mocks/section-location.model\";\nimport { WaitlistModel } from \"@app/core/mocks/waitlist.model\";\nimport { ACTIVE_TERMS } from \"./active-terms.constant\";\nimport { ARCHIVED_TERMS } from \"./archived-terms.constant\";\nimport { SessionModel, SESSIONS } from \"./session.model\";\n\nexport class SectionModel implements ISectionModel {\n sectionId?: number;\n courseId?: number;\n type?: string | undefined;\n sisSectionId?: string | undefined;\n termCode?: string | undefined;\n rnrSessionId?: number;\n name?: string | undefined;\n notes?: string | undefined;\n description?: string | undefined;\n departmentalClearanceFlag?: string | undefined;\n rnrModeCode?: string | undefined;\n linkCode?: string | undefined;\n campusCode?: string | undefined;\n seats?: number;\n waitlistSize?: number;\n roomId?: number;\n cancelDate?: Date | undefined;\n manualDate?: Date | undefined;\n publishFlag?: string | undefined;\n publishSectionFlag?: string | undefined;\n blackboardFlag?: string | undefined;\n dlCode?: string | undefined;\n numberRegistered?: number;\n spacesAvailable?: number;\n isFull?: boolean;\n isClosed?: boolean;\n isCanceled?: boolean;\n session?: SessionModel;\n course?: CourseModel;\n rnrMode?: ModeModel;\n sectionUnits?: number | undefined;\n linkedSections?: number[] | undefined;\n locations?: SectionLocation[] | undefined;\n instructors?: SectionInstructor[] | undefined;\n waitlists?: WaitlistModel[] | undefined;\n clearances?: ClearanceModel[] | undefined;\n\n constructor(data?: ISectionModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.sectionId = _data[\"sectionId\"];\n this.courseId = _data[\"courseId\"];\n this.type = _data[\"type\"];\n this.sisSectionId = _data[\"sisSectionId\"];\n this.termCode = _data[\"termCode\"];\n this.rnrSessionId = _data[\"rnrSessionId\"];\n this.name = _data[\"name\"];\n this.notes = _data[\"notes\"];\n this.description = _data[\"description\"];\n this.departmentalClearanceFlag = _data[\"departmentalClearanceFlag\"];\n this.rnrModeCode = _data[\"rnrModeCode\"];\n this.linkCode = _data[\"linkCode\"];\n this.campusCode = _data[\"campusCode\"];\n this.seats = _data[\"seats\"];\n this.waitlistSize = _data[\"waitlistSize\"];\n this.roomId = _data[\"roomId\"];\n this.cancelDate = _data[\"cancelDate\"] ? new Date(_data[\"cancelDate\"].toString()) : undefined;\n this.manualDate = _data[\"manualDate\"] ? new Date(_data[\"manualDate\"].toString()) : undefined;\n this.publishFlag = _data[\"publishFlag\"];\n this.publishSectionFlag = _data[\"publishSectionFlag\"];\n this.blackboardFlag = _data[\"blackboardFlag\"];\n this.dlCode = _data[\"dlCode\"];\n this.numberRegistered = _data[\"numberRegistered\"];\n this.spacesAvailable = _data[\"spacesAvailable\"];\n this.isFull = _data[\"isFull\"];\n this.isClosed = _data[\"isClosed\"];\n this.isCanceled = _data[\"isCanceled\"];\n this.sectionUnits = _data[\"sectionUnits\"];\n this.session = _data[\"session\"] ? SessionModel.fromJS(_data[\"session\"]) : undefined;\n this.course = _data[\"course\"] ? CourseModel.fromJS(_data[\"course\"]) : undefined;\n this.rnrMode = _data[\"rnrMode\"] ? ModeModel.fromJS(_data[\"rnrMode\"]) : undefined;\n // if (Array.isArray(_data[\"sectionUnits\"])) {\n // this.sectionUnits = [] as any;\n // for (let item of _data[\"sectionUnits\"])\n // this.sectionUnits!.push(SectionUnitModel.fromJS(item));\n // }\n if (Array.isArray(_data[\"linkedSections\"])) {\n this.linkedSections = [] as any;\n for (let item of _data[\"linkedSections\"])\n this.linkedSections!.push(item);\n }\n if (Array.isArray(_data[\"locations\"])) {\n this.locations = [] as any;\n for (let item of _data[\"locations\"])\n this.locations!.push(SectionLocation.fromJS(item));\n }\n if (Array.isArray(_data[\"instructors\"])) {\n this.instructors = [] as any;\n for (let item of _data[\"instructors\"])\n this.instructors!.push(SectionInstructor.fromJS(item));\n }\n if (Array.isArray(_data[\"waitlists\"])) {\n this.waitlists = [] as any;\n for (let item of _data[\"waitlists\"])\n this.waitlists!.push(WaitlistModel.fromJS(item));\n }\n if (Array.isArray(_data[\"clearances\"])) {\n this.clearances = [] as any;\n for (let item of _data[\"clearances\"])\n this.clearances!.push(ClearanceModel.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): SectionModel {\n data = typeof data === 'object' ? data : {};\n let result = new SectionModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"sectionId\"] = this.sectionId;\n data[\"courseId\"] = this.courseId;\n data[\"type\"] = this.type;\n data[\"sisSectionId\"] = this.sisSectionId;\n data[\"termCode\"] = this.termCode;\n data[\"rnrSessionId\"] = this.rnrSessionId;\n data[\"name\"] = this.name;\n data[\"notes\"] = this.notes;\n data[\"description\"] = this.description;\n data[\"departmentalClearanceFlag\"] = this.departmentalClearanceFlag;\n data[\"rnrModeCode\"] = this.rnrModeCode;\n data[\"linkCode\"] = this.linkCode;\n data[\"campusCode\"] = this.campusCode;\n data[\"seats\"] = this.seats;\n data[\"waitlistSize\"] = this.waitlistSize;\n data[\"roomId\"] = this.roomId;\n data[\"cancelDate\"] = this.cancelDate ? this.cancelDate.toISOString() : undefined;\n data[\"manualDate\"] = this.manualDate ? this.manualDate.toISOString() : undefined;\n data[\"publishFlag\"] = this.publishFlag;\n data[\"publishSectionFlag\"] = this.publishSectionFlag;\n data[\"blackboardFlag\"] = this.blackboardFlag;\n data[\"dlCode\"] = this.dlCode;\n data[\"numberRegistered\"] = this.numberRegistered;\n data[\"spacesAvailable\"] = this.spacesAvailable;\n data[\"isFull\"] = this.isFull;\n data[\"isClosed\"] = this.isClosed;\n data[\"sectionUnits\"] = this.sectionUnits;\n data[\"isCanceled\"] = this.isCanceled;\n data[\"session\"] = this.session ? this.session.toJSON() : undefined;\n data[\"course\"] = this.course ? this.course.toJSON() : undefined;\n data[\"rnrMode\"] = this.rnrMode ? this.rnrMode.toJSON() : undefined;\n // if (Array.isArray(this.sectionUnits)) {\n // data[\"sectionUnits\"] = [];\n // for (let item of this.sectionUnits)\n // data[\"sectionUnits\"].push(item.toJSON());\n // }\n if (Array.isArray(this.linkedSections)) {\n data[\"linkedSections\"] = [];\n for (let item of this.linkedSections)\n data[\"linkedSections\"].push(item);\n }\n if (Array.isArray(this.locations)) {\n data[\"locations\"] = [];\n for (let item of this.locations)\n data[\"locations\"].push(item.toJSON());\n }\n if (Array.isArray(this.instructors)) {\n data[\"instructors\"] = [];\n for (let item of this.instructors)\n data[\"instructors\"].push(item.toJSON());\n }\n if (Array.isArray(this.waitlists)) {\n data[\"waitlists\"] = [];\n for (let item of this.waitlists)\n data[\"waitlists\"].push(item.toJSON());\n }\n if (Array.isArray(this.clearances)) {\n data[\"clearances\"] = [];\n for (let item of this.clearances)\n data[\"clearances\"].push(item.toJSON());\n }\n return data;\n }\n\n static CreateFakeSection(termCode: number, index: number): SectionModel {\n const stringId: string = `${termCode}${index}`;\n const intId: number = parseInt(stringId);\n\n return new SectionModel({\n sectionId: intId,\n courseId: intId,\n type: \"Lecture\",\n sisSectionId: \"SIS\" + stringId,\n termCode: stringId,\n rnrSessionId: intId,\n name: stringId + \" Name\",\n notes: stringId + \" Notes\",\n description: stringId + \" Description\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 17,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: undefined,\n spacesAvailable: undefined,\n sectionUnits: 1,\n instructors: SectionInstructors.filter(i => i.sectionId === intId).map(i => new SectionInstructor(i)),\n session: new SessionModel(SESSIONS.find(s => s.rnrSessionId === intId)),\n })\n }\n}\n\nexport interface ISectionModel {\n sectionId?: number;\n courseId?: number;\n type?: string | undefined;\n sisSectionId?: string | undefined;\n termCode?: string | undefined;\n rnrSessionId?: number;\n name?: string | undefined;\n notes?: string | undefined;\n description?: string | undefined;\n departmentalClearanceFlag?: string | undefined;\n rnrModeCode?: string | undefined;\n linkCode?: string | undefined;\n campusCode?: string | undefined;\n seats?: number;\n waitlistSize?: number;\n roomId?: number;\n cancelDate?: Date | undefined;\n manualDate?: Date | undefined;\n publishFlag?: string | undefined;\n publishSectionFlag?: string | undefined;\n blackboardFlag?: string | undefined;\n dlCode?: string | undefined;\n numberRegistered?: number;\n spacesAvailable?: number;\n isFull?: boolean;\n isClosed?: boolean;\n isCanceled?: boolean;\n session?: SessionModel;\n course?: CourseModel;\n rnrMode?: ModeModel;\n sectionUnits?: number | undefined;\n linkedSections?: number[] | undefined;\n locations?: SectionLocation[] | undefined;\n instructors?: SectionInstructor[] | undefined;\n waitlists?: WaitlistModel[] | undefined;\n clearances?: ClearanceModel[] | undefined;\n}\n\nexport const SECTIONS: ISectionModel[] = [\n ...[\n new SectionModel({\n sectionId: 33001,\n courseId: 23301,\n type: \"Lecture\",\n sisSectionId: \"33001\",\n termCode: \"20233\",\n rnrSessionId: 33001,\n name: \"\",\n notes: \"\",\n description: \"Description\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 20,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 5,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 33001).map(l => new SectionLocation(l)),\n instructors: SectionInstructors.filter(i => i.sectionId === 33001).map(i => new SectionInstructor(i)),\n }),\n new SectionModel({\n sectionId: 33021,\n courseId: 23321,\n type: \"Lecture\",\n sisSectionId: \"33001\",\n termCode: \"20233\",\n rnrSessionId: 33001,\n name: \"\",\n notes: \"\",\n description: \"Description\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 20,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 5,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 33021).map(l => new SectionLocation(l)),\n instructors: undefined, //SectionInstructors.filter(i => i.sectionId === 33001).map(i => new SectionInstructor(i)),\n }),\n new SectionModel({\n sectionId: 33031,\n courseId: 23331,\n type: \"Lecture\",\n sisSectionId: \"33001\",\n termCode: \"20233\",\n rnrSessionId: 33001,\n name: \"\",\n notes: \"\",\n description: \"Description\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 20,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 5,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 33031).map(l => new SectionLocation(l)),\n instructors: undefined, //SectionInstructors.filter(i => i.sectionId === 33001).map(i => new SectionInstructor(i)),\n }),\n new SectionModel({\n sectionId: 33041,\n courseId: 23341,\n type: \"Lecture\",\n sisSectionId: \"33001\",\n termCode: \"20233\",\n rnrSessionId: 33001,\n name: \"\",\n notes: \"\",\n description: \"Description\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 20,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 5,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 33041).map(l => new SectionLocation(l)),\n instructors: undefined, //SectionInstructors.filter(i => i.sectionId === 33001).map(i => new SectionInstructor(i)),\n }),\n new SectionModel({\n sectionId: 33002,\n courseId: 23302,\n type: \"Lecture\",\n sisSectionId: \"33002\",\n termCode: \"20233\",\n rnrSessionId: 33002,\n name: \"\",\n notes: \"\",\n description: \"Description\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 120,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 105,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 33002).map(l => new SectionLocation(l)),\n instructors: SectionInstructors.filter(i => i.sectionId === 33002).map(i => new SectionInstructor(i)),\n }),\n new SectionModel({\n sectionId: 33003,\n courseId: 23303,\n type: \"Lecture\",\n sisSectionId: \"33003\",\n termCode: \"20233\",\n rnrSessionId: 33003,\n name: \"\",\n notes: \"\",\n description: \"Description\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 75,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 19,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 33003).map(l => new SectionLocation(l)),\n instructors: SectionInstructors.filter(i => i.sectionId === 33003).map(i => new SectionInstructor(i)),\n }),\n new SectionModel({\n sectionId: 33004,\n courseId: 23303,\n type: \"Lecture\",\n sisSectionId: \"33004\",\n termCode: \"20233\",\n rnrSessionId: 33434,\n name: \"\",\n notes: \"\",\n description: \"Description\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 75,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 19,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 33004).map(l => new SectionLocation(l)),\n instructors: SectionInstructors.filter(i => i.sectionId === 33004).map(i => new SectionInstructor(i)),\n }),\n new SectionModel({\n sectionId: 33005,\n courseId: 23303,\n type: \"Lecture\",\n sisSectionId: \"33005\",\n termCode: \"20233\",\n rnrSessionId: 33005,\n name: \"\",\n notes: \"\",\n description: \"Description\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 75,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 19,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 33005).map(l => new SectionLocation(l)),\n instructors: undefined //SectionInstructors.filter(i => i.sectionId === 33005).map(i => new SectionInstructor(i)),\n }),\n new SectionModel({\n sectionId: 11805,\n courseId: 23300,\n type: \"Lecture\",\n sisSectionId: \"33434\",\n termCode: \"20233\",\n rnrSessionId: 33434,\n name: \"\",\n notes: \"\",\n description: \"\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 150,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 130,\n spacesAvailable: 20,\n sectionUnits: 4,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 11805).map(l => new SectionLocation(l)),\n instructors: undefined,\n }),\n new SectionModel({\n sectionId: 33004,\n courseId: 23304,\n type: \"Lecture\",\n sisSectionId: \"33434\",\n termCode: \"20233\",\n rnrSessionId: 33434,\n name: \"\",\n notes: \"\",\n description: \"Description\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 75,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 19,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 33004).map(l => new SectionLocation(l)),\n instructors: undefined//SectionInstructors.filter(i => i.sectionId === 33004).map(i => new SectionInstructor(i)),\n }),\n new SectionModel({\n sectionId: 55411,\n courseId: 25689,\n type: \"Lecture\",\n sisSectionId: \"33434\",\n termCode: \"20233\",\n rnrSessionId: 33434,\n name: \"\",\n notes: \"\",\n description: \"Description\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 20,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 16,\n spacesAvailable: undefined,\n sectionUnits: 2,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 55411).map(l => new SectionLocation(l)),\n instructors: SectionInstructors.filter(i => i.sectionId === 55411).map(i => new SectionInstructor(i)),\n }),\n\n //AHIS 500 Start\n new SectionModel({\n sectionId: 33432,\n courseId: 12543,\n type: \"Lecture\",\n sisSectionId: \"33434\",\n termCode: \"20233\",\n rnrSessionId: 33434,\n name: \"\",\n notes: \"\",\n description: \"Description\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 20,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 5,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 33432).map(l => new SectionLocation(l)),\n instructors: SectionInstructors.filter(i => i.sectionId === 33432).map(i => new SectionInstructor(i)),\n }), \n new SectionModel({\n sectionId: 33433,\n courseId: 12543,\n type: \"Lecture\",\n sisSectionId: \"33434\",\n termCode: \"20233\",\n rnrSessionId: 33434,\n name: \"\",\n notes: \"\",\n description: \"\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 20,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 10,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 33433).map(l => new SectionLocation(l)),\n instructors: SectionInstructors.filter(i => i.sectionId === 33433).map(i => new SectionInstructor(i)),\n }),\n new SectionModel({\n sectionId: 33434,\n courseId: 12543,\n type: \"Lecture\",\n sisSectionId: \"33434\",\n termCode: \"20233\",\n rnrSessionId: 33434,\n name: \"\",\n notes: \"\",\n description: \"\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 20,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 16,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 33434).map(l => new SectionLocation(l)),\n instructors: SectionInstructors.filter(i => i.sectionId === 33434).map(i => new SectionInstructor(i)),\n }),\n new SectionModel({\n sectionId: 33435,\n courseId: 12543,\n type: \"Lecture\",\n sisSectionId: \"33435\",\n termCode: \"20233\",\n rnrSessionId: 33435,\n name: \"\",\n notes: \"\",\n description: \"Description\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 20,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 18,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 33435).map(l => new SectionLocation(l)),\n instructors: SectionInstructors.filter(i => i.sectionId === 33435).map(i => new SectionInstructor(i)),\n }),\n new SectionModel({\n sectionId: 33436,\n courseId: 12543,\n type: \"Lecture\",\n sisSectionId: \"33436\",\n termCode: \"20233\",\n rnrSessionId: 33436,\n name: \"\",\n notes: \"\",\n description: \"\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 20,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 8,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 33436).map(l => new SectionLocation(l)),\n instructors: SectionInstructors.filter(i => i.sectionId === 33436).map(i => new SectionInstructor(i)),\n }),\n new SectionModel({\n sectionId: 33437,\n courseId: 12543,\n type: \"Lecture\",\n sisSectionId: \"33437\",\n termCode: \"20233\",\n rnrSessionId: 33437,\n name: \"\",\n notes: \"\",\n description: \"\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 20,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 3,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 33437).map(l => new SectionLocation(l)),\n instructors: undefined//SectionInstructors.filter(i => i.sectionId === 33437).map(i => new SectionInstructor(i)),\n }),\n\n\n //***\n new SectionModel({\n sectionId: 10011,\n courseId: 1001,\n type: \"Discussion\",\n sisSectionId: \"1001\",\n termCode: \"20233\",\n rnrSessionId: 1001,\n name: \"\",\n notes: \"\",\n description: \"\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 20,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 16,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 10011).map(l => new SectionLocation(l)),\n instructors: SectionInstructors.filter(i => i.sectionId === 10011).map(i => new SectionInstructor(i)),\n }),\n new SectionModel({\n sectionId: 10012,\n courseId: 1001,\n type: \"Discussion\",\n sisSectionId: \"1001\",\n termCode: \"20233\",\n rnrSessionId: 1001,\n name: \"\",\n notes: \"\",\n description: \"\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 20,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 16,\n spacesAvailable: undefined,\n sectionUnits: 4,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 10012).map(l => new SectionLocation(l)),\n instructors: SectionInstructors.filter(i => i.sectionId === 10012).map(i => new SectionInstructor(i)),\n }),\n new SectionModel({\n sectionId: 10022,\n courseId: 1002,\n type: \"Discussion\",\n sisSectionId: \"10022\",\n termCode: \"20233\",\n rnrSessionId: 10022,\n name: \"\",\n notes: \"\",\n description: \"\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 20,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 16,\n spacesAvailable: undefined,\n sectionUnits: 4,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 10022).map(l => new SectionLocation(l)),\n instructors: SectionInstructors.filter(i => i.sectionId === 10022).map(i => new SectionInstructor(i)),\n }),\n\n //2022\n new SectionModel({\n sectionId: 23001,\n courseId: 22301,\n type: \"Lecture\",\n sisSectionId: \"23001\",\n termCode: \"20223\",\n rnrSessionId: 23001,\n name: \"\",\n notes: \"\",\n description: \"Description\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 20,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 5,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 23001).map(l => new SectionLocation(l)),\n instructors: SectionInstructors.filter(i => i.sectionId === 23001).map(i => new SectionInstructor(i)),\n }),\n new SectionModel({\n sectionId: 23002,\n courseId: 22302,\n type: \"Lecture\",\n sisSectionId: \"23002\",\n termCode: \"20223\",\n rnrSessionId: 23002,\n name: \"\",\n notes: \"\",\n description: \"Description\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 120,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 105,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 23002).map(l => new SectionLocation(l)),\n instructors: SectionInstructors.filter(i => i.sectionId === 23002).map(i => new SectionInstructor(i)),\n }),\n new SectionModel({\n sectionId: 23003,\n courseId: 22303,\n type: \"Lecture\",\n sisSectionId: \"23003\",\n termCode: \"20223\",\n rnrSessionId: 23003,\n name: \"\",\n notes: \"\",\n description: \"Description\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 75,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 19,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 23003).map(l => new SectionLocation(l)),\n instructors: SectionInstructors.filter(i => i.sectionId === 23003).map(i => new SectionInstructor(i)),\n }),\n new SectionModel({\n sectionId: 11808,\n courseId: 22300,\n type: \"Lecture\",\n sisSectionId: \"33432\",\n termCode: \"20223\",\n rnrSessionId: 33434,\n name: \"\",\n notes: \"\",\n description: \"\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 150,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 130,\n spacesAvailable: 20,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 11808).map(l => new SectionLocation(l)),\n instructors: SectionInstructors.filter(i => i.sectionId === 11808).map(i => new SectionInstructor(i)),\n }),\n new SectionModel({\n sectionId: 23004,\n courseId: 22304,\n type: \"Lecture\",\n sisSectionId: \"23004\",\n termCode: \"20233\",\n rnrSessionId: 23004,\n name: \"\",\n notes: \"\",\n description: \"Description\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 75,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 19,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 23004).map(l => new SectionLocation(l)),\n instructors: undefined//SectionInstructors.filter(i => i.sectionId === 33004).map(i => new SectionInstructor(i)),\n }),\n new SectionModel({\n sectionId: 22411,\n courseId: 22689,\n type: \"Lecture\",\n sisSectionId: \"22411\",\n termCode: \"20223\",\n rnrSessionId: 22411,\n name: \"\",\n notes: \"\",\n description: \"Description\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 20,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 16,\n spacesAvailable: undefined,\n sectionUnits: 2,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 22411).map(l => new SectionLocation(l)),\n instructors: SectionInstructors.filter(i => i.sectionId === 22411).map(i => new SectionInstructor(i)),\n }),\n new SectionModel({\n sectionId: 23432,\n courseId: 11543,\n type: \"Lecture\",\n sisSectionId: \"23432\",\n termCode: \"20223\",\n rnrSessionId: 23432,\n name: \"\",\n notes: \"\",\n description: \"Description\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 20,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: 5,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === 23432).map(l => new SectionLocation(l)),\n instructors: SectionInstructors.filter(i => i.sectionId === 23432).map(i => new SectionInstructor(i)),\n }),\n\n\n\n ],\n\n ...ACTIVE_TERMS.map((t) => t.termCode)\n .map((termCode) => {\n const actives = [];\n for (let courseCount = 0; courseCount < 13; courseCount++) {\n for (let sectionCount = 0; sectionCount < 2; sectionCount++) {\n actives.push(new SectionModel({\n sectionId: parseInt(`${termCode}${courseCount}${sectionCount}`),\n courseId: parseInt(`${termCode}${courseCount}`),\n type: \"Lecture\",\n sisSectionId: `${termCode}${courseCount}${sectionCount}`,\n termCode: `${termCode}`,\n rnrSessionId: parseInt(`${termCode}${courseCount}${sectionCount}`),\n name: `Section ${termCode}${courseCount}${sectionCount} Name`,\n notes: \"Notes\",\n description: \"Description\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 17,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: undefined,\n spacesAvailable: undefined,\n sectionUnits: 1,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === parseInt(`${termCode}${courseCount}${sectionCount}`)).map(l => new SectionLocation(l)),\n instructors: SectionInstructors.filter(i => i.sectionId === parseInt(`${termCode}${courseCount}${sectionCount}`)).map(i => new SectionInstructor(i)),\n session: new SessionModel(SESSIONS.find(s => s.rnrSessionId === parseInt(`${termCode}`))),\n })\n )\n }\n }\n return actives\n }\n ).flat(),\n ...ARCHIVED_TERMS.map((t) => t.termCode)\n .map((termCode) => {\n const actives = [];\n for (let courseCount = 0; courseCount < 13; courseCount++) {\n for (let sectionCount = 0; sectionCount < 2; sectionCount++) {\n actives.push(new SectionModel({\n sectionId: parseInt(`${termCode}${courseCount}${sectionCount}`),\n courseId: parseInt(`${termCode}${courseCount}`),\n type: \"Lecture\",\n sisSectionId: `${termCode}${courseCount}${sectionCount}`,\n termCode: `${termCode}`,\n rnrSessionId: parseInt(`${termCode}${courseCount}${sectionCount}`),\n name: `Section ${termCode}${courseCount}${sectionCount} Name`,\n notes: \"Notes\",\n description: \"Description\",\n departmentalClearanceFlag: \"Y\",\n rnrModeCode: \"C\",\n linkCode: undefined,\n campusCode: \"UPC-1\",\n seats: 17,\n waitlistSize: 0,\n roomId: 1,\n cancelDate: undefined,\n manualDate: undefined,\n publishFlag: \"Y\",\n publishSectionFlag: \"Y\",\n blackboardFlag: \"N\",\n dlCode: undefined,\n numberRegistered: undefined,\n spacesAvailable: undefined,\n sectionUnits: 4,\n locations: SECTION_LOCATIONS.filter(l => l.sectionId === parseInt(`${termCode}${courseCount}${sectionCount}`)).map(l => new SectionLocation(l)),\n instructors: SectionInstructors.filter(i => i.sectionId === parseInt(`${termCode}${courseCount}${sectionCount}`)).map(i => new SectionInstructor(i)),\n session: new SessionModel(SESSIONS.find(s => s.rnrSessionId === parseInt(`${termCode}`))),\n })\n )\n }\n }\n return actives\n }\n ).flat()\n];\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: 'phoneFormat',\n})\nexport class PhoneFormatPipe implements PipeTransform {\n\n transform(value: string): string {\n return `(${value.slice(0, 3)}) ${value.slice(3, 6)}-${value.slice(6)}`;\n }\n}\n","//----------------------\n// \n// Generated using the NSwag toolchain v13.18.2.0 (NJsonSchema v10.8.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// \n//----------------------\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\nimport { catchError as _observableCatch, mergeMap as _observableMergeMap } from 'rxjs/operators';\nimport { Observable, of as _observableOf, throwError as _observableThrow } from 'rxjs';\nimport { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';\n\nexport const API_BASE_URL = new InjectionToken('API_BASE_URL');\n\n@Injectable()\nexport class Client {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n /**\n * @return Success\n */\n apiAnnouncementGetAnnouncement(): Observable {\n let url_ = this.baseUrl + \"/api/Announcement/GetAnnouncement\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiAnnouncementGetAnnouncement(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiAnnouncementGetAnnouncement(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiAnnouncementGetAnnouncement(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = AnnouncementVM.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n apiAnnouncementPostAnnouncement(body?: AnnouncementVM | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Announcement/PostAnnouncement\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiAnnouncementPostAnnouncement(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiAnnouncementPostAnnouncement(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiAnnouncementPostAnnouncement(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param termCode (optional)\n * @return Success\n */\n apiConfigurationGetByTermCode(termCode?: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Configuration/GetByTermCode?\";\n if (termCode === null)\n throw new Error(\"The parameter 'termCode' cannot be null.\");\n else if (termCode !== undefined)\n url_ += \"termCode=\" + encodeURIComponent(\"\" + termCode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiConfigurationGetByTermCode(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiConfigurationGetByTermCode(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiConfigurationGetByTermCode(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ConfigurationVM.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n apiConfigurationAddSchoolOrProgram(body?: ConfigurationAddSchoolOrProgramVM | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Configuration/AddSchoolOrProgram\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiConfigurationAddSchoolOrProgram(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiConfigurationAddSchoolOrProgram(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiConfigurationAddSchoolOrProgram(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ConfigurationVM.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n apiConfigurationEditProgram(body?: ConfigurationEditProgramVM | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Configuration/EditProgram\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiConfigurationEditProgram(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiConfigurationEditProgram(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiConfigurationEditProgram(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ConfigurationVM.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n apiConfigurationDeleteSchool(body?: ConfigurationDeleteSchoolVM | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Configuration/DeleteSchool\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiConfigurationDeleteSchool(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiConfigurationDeleteSchool(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiConfigurationDeleteSchool(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ConfigurationVM.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n apiConfigurationDeleteProgram(body?: ConfigurationDeleteProgramVM | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Configuration/DeleteProgram\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiConfigurationDeleteProgram(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiConfigurationDeleteProgram(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiConfigurationDeleteProgram(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ConfigurationVM.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n apiConfigurationUpdateSchoolSortOrders(body?: ConfigurationVM | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Configuration/UpdateSchoolSortOrders\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiConfigurationUpdateSchoolSortOrders(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiConfigurationUpdateSchoolSortOrders(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiConfigurationUpdateSchoolSortOrders(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ConfigurationVM.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n apiConfigurationUpdateProgramSortOrders(body?: ConfigurationUpdateProgramSortOrdersVM | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Configuration/UpdateProgramSortOrders\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiConfigurationUpdateProgramSortOrders(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiConfigurationUpdateProgramSortOrders(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiConfigurationUpdateProgramSortOrders(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ConfigurationVM.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n apiConfigurationImport(body?: TermImportVM | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Configuration/Import\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiConfigurationImport(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiConfigurationImport(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiConfigurationImport(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TermVM.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n apiPeTermsAll(): Observable {\n let url_ = this.baseUrl + \"/api/Pe/TermsAll\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiPeTermsAll(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiPeTermsAll(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiPeTermsAll(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(PeTerm.fromJS(item));\n }\n else {\n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n apiPeSessionsAll(): Observable {\n let url_ = this.baseUrl + \"/api/Pe/SessionsAll\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiPeSessionsAll(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiPeSessionsAll(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiPeSessionsAll(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(PeSession.fromJS(item));\n }\n else {\n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param rnrSessionId (optional)\n * @return Success\n */\n apiPeSessionByRnrSessionId(rnrSessionId?: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Pe/SessionByRnrSessionId?\";\n if (rnrSessionId === null)\n throw new Error(\"The parameter 'rnrSessionId' cannot be null.\");\n else if (rnrSessionId !== undefined)\n url_ += \"rnrSessionId=\" + encodeURIComponent(\"\" + rnrSessionId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiPeSessionByRnrSessionId(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiPeSessionByRnrSessionId(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiPeSessionByRnrSessionId(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PeSession.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n apiPeSchoolsAll(): Observable {\n let url_ = this.baseUrl + \"/api/Pe/SchoolsAll\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiPeSchoolsAll(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiPeSchoolsAll(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiPeSchoolsAll(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(SchoolVM.fromJS(item));\n }\n else {\n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n apiPeProgramsAll(): Observable {\n let url_ = this.baseUrl + \"/api/Pe/ProgramsAll\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiPeProgramsAll(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiPeProgramsAll(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiPeProgramsAll(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(ProgramVM.fromJS(item));\n }\n else {\n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n apiPeCoursePrefixesAll(): Observable {\n let url_ = this.baseUrl + \"/api/Pe/CoursePrefixesAll\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiPeCoursePrefixesAll(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiPeCoursePrefixesAll(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiPeCoursePrefixesAll(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(CoursePrefixVM.fromJS(item));\n }\n else {\n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param pageNumber (optional)\n * @param itemsPerPage (optional)\n * @return Success\n */\n apiPeCoursesAll(pageNumber?: number | undefined, itemsPerPage?: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Pe/CoursesAll?\";\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"pageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (itemsPerPage === null)\n throw new Error(\"The parameter 'itemsPerPage' cannot be null.\");\n else if (itemsPerPage !== undefined)\n url_ += \"itemsPerPage=\" + encodeURIComponent(\"\" + itemsPerPage) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiPeCoursesAll(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiPeCoursesAll(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiPeCoursesAll(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(CourseVM.fromJS(item));\n }\n else {\n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param termCode (optional)\n * @param pageNumber (optional)\n * @param itemsPerPage (optional)\n * @return Success\n */\n apiPeCoursesByTerm(termCode?: number | undefined, pageNumber?: number | undefined, itemsPerPage?: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Pe/CoursesByTerm?\";\n if (termCode === null)\n throw new Error(\"The parameter 'termCode' cannot be null.\");\n else if (termCode !== undefined)\n url_ += \"termCode=\" + encodeURIComponent(\"\" + termCode) + \"&\";\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"pageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (itemsPerPage === null)\n throw new Error(\"The parameter 'itemsPerPage' cannot be null.\");\n else if (itemsPerPage !== undefined)\n url_ += \"itemsPerPage=\" + encodeURIComponent(\"\" + itemsPerPage) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiPeCoursesByTerm(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiPeCoursesByTerm(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiPeCoursesByTerm(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(CourseVM.fromJS(item));\n }\n else {\n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param prefix (optional)\n * @param termCode (optional)\n * @return Success\n */\n apiPeCoursesHavePrefixInTerm(prefix?: string | undefined, termCode?: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Pe/CoursesHavePrefixInTerm?\";\n if (prefix === null)\n throw new Error(\"The parameter 'prefix' cannot be null.\");\n else if (prefix !== undefined)\n url_ += \"prefix=\" + encodeURIComponent(\"\" + prefix) + \"&\";\n if (termCode === null)\n throw new Error(\"The parameter 'termCode' cannot be null.\");\n else if (termCode !== undefined)\n url_ += \"termCode=\" + encodeURIComponent(\"\" + termCode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiPeCoursesHavePrefixInTerm(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiPeCoursesHavePrefixInTerm(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiPeCoursesHavePrefixInTerm(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param course (optional)\n * @return Success\n */\n apiPeDoesCourseExist(course?: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Pe/DoesCourseExist?\";\n if (course === null)\n throw new Error(\"The parameter 'course' cannot be null.\");\n else if (course !== undefined)\n url_ += \"course=\" + encodeURIComponent(\"\" + course) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiPeDoesCourseExist(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiPeDoesCourseExist(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiPeDoesCourseExist(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n apiPeGetConfigurableTermsFromPe(): Observable {\n let url_ = this.baseUrl + \"/api/Pe/GetConfigurableTermsFromPe\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiPeGetConfigurableTermsFromPe(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiPeGetConfigurableTermsFromPe(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiPeGetConfigurableTermsFromPe(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(PeConfigurableTermVM.fromJS(item));\n }\n else {\n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param termCode (optional)\n * @return Success\n */\n apiPeGetConfigurableSessionsByTermCode(termCode?: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Pe/GetConfigurableSessionsByTermCode?\";\n if (termCode === null)\n throw new Error(\"The parameter 'termCode' cannot be null.\");\n else if (termCode !== undefined)\n url_ += \"termCode=\" + encodeURIComponent(\"\" + termCode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiPeGetConfigurableSessionsByTermCode(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiPeGetConfigurableSessionsByTermCode(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiPeGetConfigurableSessionsByTermCode(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(PeConfigurableSessionVM.fromJS(item));\n }\n else {\n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n apiPePopulateLegacyTermsFromPe(): Observable {\n let url_ = this.baseUrl + \"/api/Pe/PopulateLegacyTermsFromPe\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiPePopulateLegacyTermsFromPe(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiPePopulateLegacyTermsFromPe(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiPePopulateLegacyTermsFromPe(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(PeTerm.fromJS(item));\n }\n else {\n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param termCode (optional)\n * @return Success\n */\n apiProgramsTermCode(termCode?: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Programs/TermCode?\";\n if (termCode === null)\n throw new Error(\"The parameter 'termCode' cannot be null.\");\n else if (termCode !== undefined)\n url_ += \"termCode=\" + encodeURIComponent(\"\" + termCode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiProgramsTermCode(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiProgramsTermCode(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiProgramsTermCode(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(ProgramVM.fromJS(item));\n }\n else {\n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param termCode (optional)\n * @param school (optional)\n * @param program (optional)\n * @return Success\n */\n apiProgramsPrefix(termCode?: number | undefined, school?: string | undefined, program?: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Programs/Prefix?\";\n if (termCode === null)\n throw new Error(\"The parameter 'termCode' cannot be null.\");\n else if (termCode !== undefined)\n url_ += \"termCode=\" + encodeURIComponent(\"\" + termCode) + \"&\";\n if (school === null)\n throw new Error(\"The parameter 'school' cannot be null.\");\n else if (school !== undefined)\n url_ += \"school=\" + encodeURIComponent(\"\" + school) + \"&\";\n if (program === null)\n throw new Error(\"The parameter 'program' cannot be null.\");\n else if (program !== undefined)\n url_ += \"program=\" + encodeURIComponent(\"\" + program) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiProgramsPrefix(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiProgramsPrefix(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiProgramsPrefix(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProgramDetailsVM.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param termCode (optional)\n * @param school (optional)\n * @param program (optional)\n * @return Success\n */\n apiProgramsCourses(termCode?: number | undefined, school?: string | undefined, program?: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Programs/Courses?\";\n if (termCode === null)\n throw new Error(\"The parameter 'termCode' cannot be null.\");\n else if (termCode !== undefined)\n url_ += \"termCode=\" + encodeURIComponent(\"\" + termCode) + \"&\";\n if (school === null)\n throw new Error(\"The parameter 'school' cannot be null.\");\n else if (school !== undefined)\n url_ += \"school=\" + encodeURIComponent(\"\" + school) + \"&\";\n if (program === null)\n throw new Error(\"The parameter 'program' cannot be null.\");\n else if (program !== undefined)\n url_ += \"program=\" + encodeURIComponent(\"\" + program) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiProgramsCourses(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiProgramsCourses(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiProgramsCourses(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProgramCoursesVM.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param termCode (optional)\n * @return Success\n */\n apiSchoolsTermCode(termCode?: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Schools/TermCode?\";\n if (termCode === null)\n throw new Error(\"The parameter 'termCode' cannot be null.\");\n else if (termCode !== undefined)\n url_ += \"termCode=\" + encodeURIComponent(\"\" + termCode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiSchoolsTermCode(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiSchoolsTermCode(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiSchoolsTermCode(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(SchoolVM.fromJS(item));\n }\n else {\n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n apiTermsAll(): Observable {\n let url_ = this.baseUrl + \"/api/Terms/All\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiTermsAll(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiTermsAll(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiTermsAll(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(TermVM.fromJS(item));\n }\n else {\n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n apiTermsActive(): Observable {\n let url_ = this.baseUrl + \"/api/Terms/Active\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiTermsActive(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiTermsActive(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiTermsActive(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(TermVM.fromJS(item));\n }\n else {\n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param termCode (optional)\n * @return Success\n */\n apiTermsTermCode(termCode?: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Terms/TermCode?\";\n if (termCode === null)\n throw new Error(\"The parameter 'termCode' cannot be null.\");\n else if (termCode !== undefined)\n url_ += \"termCode=\" + encodeURIComponent(\"\" + termCode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiTermsTermCode(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiTermsTermCode(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiTermsTermCode(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TermVM.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param status (optional)\n * @return Success\n */\n apiTermsStatus(status?: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Terms/Status?\";\n if (status === null)\n throw new Error(\"The parameter 'status' cannot be null.\");\n else if (status !== undefined)\n url_ += \"status=\" + encodeURIComponent(\"\" + status) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiTermsStatus(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiTermsStatus(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiTermsStatus(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n if (Array.isArray(resultData200)) {\n result200 = [] as any;\n for (let item of resultData200)\n result200!.push(TermVM.fromJS(item));\n }\n else {\n result200 = null;\n }\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n apiTermsNew(body?: TermAddVM | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Terms/New\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiTermsNew(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiTermsNew(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiTermsNew(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TermVM.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n apiTermsCreate(body?: TermCreateVM | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Terms/Create\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiTermsCreate(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiTermsCreate(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiTermsCreate(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TermVM.fromJS(resultData200);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n apiTermsEdit(body?: TermVM | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Terms/Edit\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiTermsEdit(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiTermsEdit(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiTermsEdit(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param termCode (optional)\n * @return Success\n */\n apiTermsDelete(termCode?: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Terms/Delete?\";\n if (termCode === null)\n throw new Error(\"The parameter 'termCode' cannot be null.\");\n else if (termCode !== undefined)\n url_ += \"termCode=\" + encodeURIComponent(\"\" + termCode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiTermsDelete(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiTermsDelete(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiTermsDelete(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n apiUsersRole(): Observable {\n let url_ = this.baseUrl + \"/api/Users/Role\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.processApiUsersRole(response_);\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.processApiUsersRole(response_ as any);\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApiUsersRole(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = resultData200 !== undefined ? resultData200 : null;\n\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport class AnnouncementVM implements IAnnouncementVM {\n message?: string | undefined;\n messageType?: string | undefined;\n\n constructor(data?: IAnnouncementVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.message = _data[\"message\"];\n this.messageType = _data[\"messageType\"];\n }\n }\n\n static fromJS(data: any): AnnouncementVM {\n data = typeof data === 'object' ? data : {};\n let result = new AnnouncementVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"message\"] = this.message;\n data[\"messageType\"] = this.messageType;\n return data;\n }\n}\n\nexport interface IAnnouncementVM {\n message?: string | undefined;\n messageType?: string | undefined;\n}\n\nexport class Configuration implements IConfiguration {\n dateCreated?: Date;\n dateModified?: Date | undefined;\n id?: number;\n termCode?: number;\n schoolsConfig?: ConfigurationSchool[] | undefined;\n term?: Term;\n\n constructor(data?: IConfiguration) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.dateCreated = _data[\"dateCreated\"] ? new Date(_data[\"dateCreated\"].toString()) : undefined;\n this.dateModified = _data[\"dateModified\"] ? new Date(_data[\"dateModified\"].toString()) : undefined;\n this.id = _data[\"id\"];\n this.termCode = _data[\"termCode\"];\n if (Array.isArray(_data[\"schoolsConfig\"])) {\n this.schoolsConfig = [] as any;\n for (let item of _data[\"schoolsConfig\"])\n this.schoolsConfig!.push(ConfigurationSchool.fromJS(item));\n }\n this.term = _data[\"term\"] ? Term.fromJS(_data[\"term\"]) : undefined;\n }\n }\n\n static fromJS(data: any): Configuration {\n data = typeof data === 'object' ? data : {};\n let result = new Configuration();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"dateCreated\"] = this.dateCreated ? this.dateCreated.toISOString() : undefined;\n data[\"dateModified\"] = this.dateModified ? this.dateModified.toISOString() : undefined;\n data[\"id\"] = this.id;\n data[\"termCode\"] = this.termCode;\n if (Array.isArray(this.schoolsConfig)) {\n data[\"schoolsConfig\"] = [];\n for (let item of this.schoolsConfig)\n data[\"schoolsConfig\"].push(item.toJSON());\n }\n data[\"term\"] = this.term ? this.term.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IConfiguration {\n dateCreated?: Date;\n dateModified?: Date | undefined;\n id?: number;\n termCode?: number;\n schoolsConfig?: ConfigurationSchool[] | undefined;\n term?: Term;\n}\n\nexport class ConfigurationAddSchoolOrProgramVM implements IConfigurationAddSchoolOrProgramVM {\n termCode!: number;\n operationType?: ConfigurationAddType;\n newSchoolPrefix?: string | undefined;\n newProgramPrefix?: string | undefined;\n prefixes?: ConfigurationPrefixAddVM[] | undefined;\n courses?: ConfigurationCourseAddVM[] | undefined;\n\n constructor(data?: IConfigurationAddSchoolOrProgramVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.termCode = _data[\"termCode\"];\n this.operationType = _data[\"operationType\"];\n this.newSchoolPrefix = _data[\"newSchoolPrefix\"];\n this.newProgramPrefix = _data[\"newProgramPrefix\"];\n if (Array.isArray(_data[\"prefixes\"])) {\n this.prefixes = [] as any;\n for (let item of _data[\"prefixes\"])\n this.prefixes!.push(ConfigurationPrefixAddVM.fromJS(item));\n }\n if (Array.isArray(_data[\"courses\"])) {\n this.courses = [] as any;\n for (let item of _data[\"courses\"])\n this.courses!.push(ConfigurationCourseAddVM.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ConfigurationAddSchoolOrProgramVM {\n data = typeof data === 'object' ? data : {};\n let result = new ConfigurationAddSchoolOrProgramVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"termCode\"] = this.termCode;\n data[\"operationType\"] = this.operationType;\n data[\"newSchoolPrefix\"] = this.newSchoolPrefix;\n data[\"newProgramPrefix\"] = this.newProgramPrefix;\n if (Array.isArray(this.prefixes)) {\n data[\"prefixes\"] = [];\n for (let item of this.prefixes)\n data[\"prefixes\"].push(item.toJSON());\n }\n if (Array.isArray(this.courses)) {\n data[\"courses\"] = [];\n for (let item of this.courses)\n data[\"courses\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IConfigurationAddSchoolOrProgramVM {\n termCode: number;\n operationType?: ConfigurationAddType;\n newSchoolPrefix?: string | undefined;\n newProgramPrefix?: string | undefined;\n prefixes?: ConfigurationPrefixAddVM[] | undefined;\n courses?: ConfigurationCourseAddVM[] | undefined;\n}\n\nexport enum ConfigurationAddType {\n NewSchool = \"NewSchool\",\n NewProgramToExistingSchool = \"NewProgramToExistingSchool\",\n}\n\nexport class ConfigurationCourse implements IConfigurationCourse {\n dateCreated?: Date;\n dateModified?: Date | undefined;\n id?: number;\n programConfigurationId!: number;\n prefix?: string | undefined;\n classNumber?: number;\n sequence?: string | undefined;\n programConfiguration?: ConfigurationProgram;\n\n constructor(data?: IConfigurationCourse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.dateCreated = _data[\"dateCreated\"] ? new Date(_data[\"dateCreated\"].toString()) : undefined;\n this.dateModified = _data[\"dateModified\"] ? new Date(_data[\"dateModified\"].toString()) : undefined;\n this.id = _data[\"id\"];\n this.programConfigurationId = _data[\"programConfigurationId\"];\n this.prefix = _data[\"prefix\"];\n this.classNumber = _data[\"classNumber\"];\n this.sequence = _data[\"sequence\"];\n this.programConfiguration = _data[\"programConfiguration\"] ? ConfigurationProgram.fromJS(_data[\"programConfiguration\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ConfigurationCourse {\n data = typeof data === 'object' ? data : {};\n let result = new ConfigurationCourse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"dateCreated\"] = this.dateCreated ? this.dateCreated.toISOString() : undefined;\n data[\"dateModified\"] = this.dateModified ? this.dateModified.toISOString() : undefined;\n data[\"id\"] = this.id;\n data[\"programConfigurationId\"] = this.programConfigurationId;\n data[\"prefix\"] = this.prefix;\n data[\"classNumber\"] = this.classNumber;\n data[\"sequence\"] = this.sequence;\n data[\"programConfiguration\"] = this.programConfiguration ? this.programConfiguration.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IConfigurationCourse {\n dateCreated?: Date;\n dateModified?: Date | undefined;\n id?: number;\n programConfigurationId: number;\n prefix?: string | undefined;\n classNumber?: number;\n sequence?: string | undefined;\n programConfiguration?: ConfigurationProgram;\n}\n\nexport class ConfigurationCourseAddVM implements IConfigurationCourseAddVM {\n programConfigurationId!: number;\n prefix?: string | undefined;\n classNumber?: number;\n sequence?: string | undefined;\n\n constructor(data?: IConfigurationCourseAddVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.programConfigurationId = _data[\"programConfigurationId\"];\n this.prefix = _data[\"prefix\"];\n this.classNumber = _data[\"classNumber\"];\n this.sequence = _data[\"sequence\"];\n }\n }\n\n static fromJS(data: any): ConfigurationCourseAddVM {\n data = typeof data === 'object' ? data : {};\n let result = new ConfigurationCourseAddVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"programConfigurationId\"] = this.programConfigurationId;\n data[\"prefix\"] = this.prefix;\n data[\"classNumber\"] = this.classNumber;\n data[\"sequence\"] = this.sequence;\n return data;\n }\n}\n\nexport interface IConfigurationCourseAddVM {\n programConfigurationId: number;\n prefix?: string | undefined;\n classNumber?: number;\n sequence?: string | undefined;\n}\n\nexport class ConfigurationCourseUpdates implements IConfigurationCourseUpdates {\n adds?: ConfigurationCourseAddVM[] | undefined;\n updates?: ConfigurationCourse[] | undefined;\n deleteIds?: number[] | undefined;\n\n constructor(data?: IConfigurationCourseUpdates) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"adds\"])) {\n this.adds = [] as any;\n for (let item of _data[\"adds\"])\n this.adds!.push(ConfigurationCourseAddVM.fromJS(item));\n }\n if (Array.isArray(_data[\"updates\"])) {\n this.updates = [] as any;\n for (let item of _data[\"updates\"])\n this.updates!.push(ConfigurationCourse.fromJS(item));\n }\n if (Array.isArray(_data[\"deleteIds\"])) {\n this.deleteIds = [] as any;\n for (let item of _data[\"deleteIds\"])\n this.deleteIds!.push(item);\n }\n }\n }\n\n static fromJS(data: any): ConfigurationCourseUpdates {\n data = typeof data === 'object' ? data : {};\n let result = new ConfigurationCourseUpdates();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.adds)) {\n data[\"adds\"] = [];\n for (let item of this.adds)\n data[\"adds\"].push(item.toJSON());\n }\n if (Array.isArray(this.updates)) {\n data[\"updates\"] = [];\n for (let item of this.updates)\n data[\"updates\"].push(item.toJSON());\n }\n if (Array.isArray(this.deleteIds)) {\n data[\"deleteIds\"] = [];\n for (let item of this.deleteIds)\n data[\"deleteIds\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IConfigurationCourseUpdates {\n adds?: ConfigurationCourseAddVM[] | undefined;\n updates?: ConfigurationCourse[] | undefined;\n deleteIds?: number[] | undefined;\n}\n\nexport class ConfigurationDeleteProgramVM implements IConfigurationDeleteProgramVM {\n configurationId!: number;\n programId!: number;\n prefix?: string | undefined;\n\n constructor(data?: IConfigurationDeleteProgramVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.configurationId = _data[\"configurationId\"];\n this.programId = _data[\"programId\"];\n this.prefix = _data[\"prefix\"];\n }\n }\n\n static fromJS(data: any): ConfigurationDeleteProgramVM {\n data = typeof data === 'object' ? data : {};\n let result = new ConfigurationDeleteProgramVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"configurationId\"] = this.configurationId;\n data[\"programId\"] = this.programId;\n data[\"prefix\"] = this.prefix;\n return data;\n }\n}\n\nexport interface IConfigurationDeleteProgramVM {\n configurationId: number;\n programId: number;\n prefix?: string | undefined;\n}\n\nexport class ConfigurationDeleteSchoolVM implements IConfigurationDeleteSchoolVM {\n configurationId!: number;\n schoolId!: number;\n prefix?: string | undefined;\n\n constructor(data?: IConfigurationDeleteSchoolVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.configurationId = _data[\"configurationId\"];\n this.schoolId = _data[\"schoolId\"];\n this.prefix = _data[\"prefix\"];\n }\n }\n\n static fromJS(data: any): ConfigurationDeleteSchoolVM {\n data = typeof data === 'object' ? data : {};\n let result = new ConfigurationDeleteSchoolVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"configurationId\"] = this.configurationId;\n data[\"schoolId\"] = this.schoolId;\n data[\"prefix\"] = this.prefix;\n return data;\n }\n}\n\nexport interface IConfigurationDeleteSchoolVM {\n configurationId: number;\n schoolId: number;\n prefix?: string | undefined;\n}\n\nexport class ConfigurationEditProgramVM implements IConfigurationEditProgramVM {\n configurationId!: number;\n programConfigurationId!: number;\n prefixUpdates?: ConfigurationPrefixUpdates;\n courseUpdates?: ConfigurationCourseUpdates;\n\n constructor(data?: IConfigurationEditProgramVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.configurationId = _data[\"configurationId\"];\n this.programConfigurationId = _data[\"programConfigurationId\"];\n this.prefixUpdates = _data[\"prefixUpdates\"] ? ConfigurationPrefixUpdates.fromJS(_data[\"prefixUpdates\"]) : undefined;\n this.courseUpdates = _data[\"courseUpdates\"] ? ConfigurationCourseUpdates.fromJS(_data[\"courseUpdates\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ConfigurationEditProgramVM {\n data = typeof data === 'object' ? data : {};\n let result = new ConfigurationEditProgramVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"configurationId\"] = this.configurationId;\n data[\"programConfigurationId\"] = this.programConfigurationId;\n data[\"prefixUpdates\"] = this.prefixUpdates ? this.prefixUpdates.toJSON() : undefined;\n data[\"courseUpdates\"] = this.courseUpdates ? this.courseUpdates.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IConfigurationEditProgramVM {\n configurationId: number;\n programConfigurationId: number;\n prefixUpdates?: ConfigurationPrefixUpdates;\n courseUpdates?: ConfigurationCourseUpdates;\n}\n\nexport class ConfigurationPrefix implements IConfigurationPrefix {\n dateCreated?: Date;\n dateModified?: Date | undefined;\n id?: number;\n programConfigurationId!: number;\n prefix?: string | undefined;\n anyPrefixSelected?: boolean;\n sessionId?: string | undefined;\n anySessionSelected?: boolean;\n programConfiguration?: ConfigurationProgram;\n\n constructor(data?: IConfigurationPrefix) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.dateCreated = _data[\"dateCreated\"] ? new Date(_data[\"dateCreated\"].toString()) : undefined;\n this.dateModified = _data[\"dateModified\"] ? new Date(_data[\"dateModified\"].toString()) : undefined;\n this.id = _data[\"id\"];\n this.programConfigurationId = _data[\"programConfigurationId\"];\n this.prefix = _data[\"prefix\"];\n this.anyPrefixSelected = _data[\"anyPrefixSelected\"];\n this.sessionId = _data[\"sessionId\"];\n this.anySessionSelected = _data[\"anySessionSelected\"];\n this.programConfiguration = _data[\"programConfiguration\"] ? ConfigurationProgram.fromJS(_data[\"programConfiguration\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ConfigurationPrefix {\n data = typeof data === 'object' ? data : {};\n let result = new ConfigurationPrefix();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"dateCreated\"] = this.dateCreated ? this.dateCreated.toISOString() : undefined;\n data[\"dateModified\"] = this.dateModified ? this.dateModified.toISOString() : undefined;\n data[\"id\"] = this.id;\n data[\"programConfigurationId\"] = this.programConfigurationId;\n data[\"prefix\"] = this.prefix;\n data[\"anyPrefixSelected\"] = this.anyPrefixSelected;\n data[\"sessionId\"] = this.sessionId;\n data[\"anySessionSelected\"] = this.anySessionSelected;\n data[\"programConfiguration\"] = this.programConfiguration ? this.programConfiguration.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IConfigurationPrefix {\n dateCreated?: Date;\n dateModified?: Date | undefined;\n id?: number;\n programConfigurationId: number;\n prefix?: string | undefined;\n anyPrefixSelected?: boolean;\n sessionId?: string | undefined;\n anySessionSelected?: boolean;\n programConfiguration?: ConfigurationProgram;\n}\n\nexport class ConfigurationPrefixAddVM implements IConfigurationPrefixAddVM {\n programConfigurationId!: number;\n prefix?: string | undefined;\n anyPrefixSelected?: boolean;\n sessionId?: string | undefined;\n anySessionSelected?: boolean;\n\n constructor(data?: IConfigurationPrefixAddVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.programConfigurationId = _data[\"programConfigurationId\"];\n this.prefix = _data[\"prefix\"];\n this.anyPrefixSelected = _data[\"anyPrefixSelected\"];\n this.sessionId = _data[\"sessionId\"];\n this.anySessionSelected = _data[\"anySessionSelected\"];\n }\n }\n\n static fromJS(data: any): ConfigurationPrefixAddVM {\n data = typeof data === 'object' ? data : {};\n let result = new ConfigurationPrefixAddVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"programConfigurationId\"] = this.programConfigurationId;\n data[\"prefix\"] = this.prefix;\n data[\"anyPrefixSelected\"] = this.anyPrefixSelected;\n data[\"sessionId\"] = this.sessionId;\n data[\"anySessionSelected\"] = this.anySessionSelected;\n return data;\n }\n}\n\nexport interface IConfigurationPrefixAddVM {\n programConfigurationId: number;\n prefix?: string | undefined;\n anyPrefixSelected?: boolean;\n sessionId?: string | undefined;\n anySessionSelected?: boolean;\n}\n\nexport class ConfigurationPrefixUpdates implements IConfigurationPrefixUpdates {\n adds?: ConfigurationPrefixAddVM[] | undefined;\n updates?: ConfigurationPrefix[] | undefined;\n deleteIds?: number[] | undefined;\n\n constructor(data?: IConfigurationPrefixUpdates) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"adds\"])) {\n this.adds = [] as any;\n for (let item of _data[\"adds\"])\n this.adds!.push(ConfigurationPrefixAddVM.fromJS(item));\n }\n if (Array.isArray(_data[\"updates\"])) {\n this.updates = [] as any;\n for (let item of _data[\"updates\"])\n this.updates!.push(ConfigurationPrefix.fromJS(item));\n }\n if (Array.isArray(_data[\"deleteIds\"])) {\n this.deleteIds = [] as any;\n for (let item of _data[\"deleteIds\"])\n this.deleteIds!.push(item);\n }\n }\n }\n\n static fromJS(data: any): ConfigurationPrefixUpdates {\n data = typeof data === 'object' ? data : {};\n let result = new ConfigurationPrefixUpdates();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.adds)) {\n data[\"adds\"] = [];\n for (let item of this.adds)\n data[\"adds\"].push(item.toJSON());\n }\n if (Array.isArray(this.updates)) {\n data[\"updates\"] = [];\n for (let item of this.updates)\n data[\"updates\"].push(item.toJSON());\n }\n if (Array.isArray(this.deleteIds)) {\n data[\"deleteIds\"] = [];\n for (let item of this.deleteIds)\n data[\"deleteIds\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IConfigurationPrefixUpdates {\n adds?: ConfigurationPrefixAddVM[] | undefined;\n updates?: ConfigurationPrefix[] | undefined;\n deleteIds?: number[] | undefined;\n}\n\nexport class ConfigurationProgram implements IConfigurationProgram {\n dateCreated?: Date;\n dateModified?: Date | undefined;\n id?: number;\n schoolConfigurationId!: number;\n prefix?: string | undefined;\n sortOrder?: number;\n prefixesConfig?: ConfigurationPrefix[] | undefined;\n coursesConfig?: ConfigurationCourse[] | undefined;\n schoolConfiguration?: ConfigurationSchool;\n\n constructor(data?: IConfigurationProgram) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.dateCreated = _data[\"dateCreated\"] ? new Date(_data[\"dateCreated\"].toString()) : undefined;\n this.dateModified = _data[\"dateModified\"] ? new Date(_data[\"dateModified\"].toString()) : undefined;\n this.id = _data[\"id\"];\n this.schoolConfigurationId = _data[\"schoolConfigurationId\"];\n this.prefix = _data[\"prefix\"];\n this.sortOrder = _data[\"sortOrder\"];\n if (Array.isArray(_data[\"prefixesConfig\"])) {\n this.prefixesConfig = [] as any;\n for (let item of _data[\"prefixesConfig\"])\n this.prefixesConfig!.push(ConfigurationPrefix.fromJS(item));\n }\n if (Array.isArray(_data[\"coursesConfig\"])) {\n this.coursesConfig = [] as any;\n for (let item of _data[\"coursesConfig\"])\n this.coursesConfig!.push(ConfigurationCourse.fromJS(item));\n }\n this.schoolConfiguration = _data[\"schoolConfiguration\"] ? ConfigurationSchool.fromJS(_data[\"schoolConfiguration\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ConfigurationProgram {\n data = typeof data === 'object' ? data : {};\n let result = new ConfigurationProgram();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"dateCreated\"] = this.dateCreated ? this.dateCreated.toISOString() : undefined;\n data[\"dateModified\"] = this.dateModified ? this.dateModified.toISOString() : undefined;\n data[\"id\"] = this.id;\n data[\"schoolConfigurationId\"] = this.schoolConfigurationId;\n data[\"prefix\"] = this.prefix;\n data[\"sortOrder\"] = this.sortOrder;\n if (Array.isArray(this.prefixesConfig)) {\n data[\"prefixesConfig\"] = [];\n for (let item of this.prefixesConfig)\n data[\"prefixesConfig\"].push(item.toJSON());\n }\n if (Array.isArray(this.coursesConfig)) {\n data[\"coursesConfig\"] = [];\n for (let item of this.coursesConfig)\n data[\"coursesConfig\"].push(item.toJSON());\n }\n data[\"schoolConfiguration\"] = this.schoolConfiguration ? this.schoolConfiguration.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IConfigurationProgram {\n dateCreated?: Date;\n dateModified?: Date | undefined;\n id?: number;\n schoolConfigurationId: number;\n prefix?: string | undefined;\n sortOrder?: number;\n prefixesConfig?: ConfigurationPrefix[] | undefined;\n coursesConfig?: ConfigurationCourse[] | undefined;\n schoolConfiguration?: ConfigurationSchool;\n}\n\nexport class ConfigurationSchool implements IConfigurationSchool {\n dateCreated?: Date;\n dateModified?: Date | undefined;\n id?: number;\n configurationId!: number;\n prefix?: string | undefined;\n sortOrder?: number;\n programsConfig?: ConfigurationProgram[] | undefined;\n configuration?: Configuration;\n\n constructor(data?: IConfigurationSchool) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.dateCreated = _data[\"dateCreated\"] ? new Date(_data[\"dateCreated\"].toString()) : undefined;\n this.dateModified = _data[\"dateModified\"] ? new Date(_data[\"dateModified\"].toString()) : undefined;\n this.id = _data[\"id\"];\n this.configurationId = _data[\"configurationId\"];\n this.prefix = _data[\"prefix\"];\n this.sortOrder = _data[\"sortOrder\"];\n if (Array.isArray(_data[\"programsConfig\"])) {\n this.programsConfig = [] as any;\n for (let item of _data[\"programsConfig\"])\n this.programsConfig!.push(ConfigurationProgram.fromJS(item));\n }\n this.configuration = _data[\"configuration\"] ? Configuration.fromJS(_data[\"configuration\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ConfigurationSchool {\n data = typeof data === 'object' ? data : {};\n let result = new ConfigurationSchool();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"dateCreated\"] = this.dateCreated ? this.dateCreated.toISOString() : undefined;\n data[\"dateModified\"] = this.dateModified ? this.dateModified.toISOString() : undefined;\n data[\"id\"] = this.id;\n data[\"configurationId\"] = this.configurationId;\n data[\"prefix\"] = this.prefix;\n data[\"sortOrder\"] = this.sortOrder;\n if (Array.isArray(this.programsConfig)) {\n data[\"programsConfig\"] = [];\n for (let item of this.programsConfig)\n data[\"programsConfig\"].push(item.toJSON());\n }\n data[\"configuration\"] = this.configuration ? this.configuration.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IConfigurationSchool {\n dateCreated?: Date;\n dateModified?: Date | undefined;\n id?: number;\n configurationId: number;\n prefix?: string | undefined;\n sortOrder?: number;\n programsConfig?: ConfigurationProgram[] | undefined;\n configuration?: Configuration;\n}\n\nexport class ConfigurationUpdateProgramSortOrdersVM implements IConfigurationUpdateProgramSortOrdersVM {\n configurationId!: number;\n schoolConfigurationId!: number;\n programsConfig?: ConfigurationProgram[] | undefined;\n\n constructor(data?: IConfigurationUpdateProgramSortOrdersVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.configurationId = _data[\"configurationId\"];\n this.schoolConfigurationId = _data[\"schoolConfigurationId\"];\n if (Array.isArray(_data[\"programsConfig\"])) {\n this.programsConfig = [] as any;\n for (let item of _data[\"programsConfig\"])\n this.programsConfig!.push(ConfigurationProgram.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ConfigurationUpdateProgramSortOrdersVM {\n data = typeof data === 'object' ? data : {};\n let result = new ConfigurationUpdateProgramSortOrdersVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"configurationId\"] = this.configurationId;\n data[\"schoolConfigurationId\"] = this.schoolConfigurationId;\n if (Array.isArray(this.programsConfig)) {\n data[\"programsConfig\"] = [];\n for (let item of this.programsConfig)\n data[\"programsConfig\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IConfigurationUpdateProgramSortOrdersVM {\n configurationId: number;\n schoolConfigurationId: number;\n programsConfig?: ConfigurationProgram[] | undefined;\n}\n\nexport class ConfigurationVM implements IConfigurationVM {\n dateCreated?: Date;\n dateModified?: Date | undefined;\n id!: number;\n termCode!: number;\n schoolsConfig?: ConfigurationSchool[] | undefined;\n\n constructor(data?: IConfigurationVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.dateCreated = _data[\"dateCreated\"] ? new Date(_data[\"dateCreated\"].toString()) : undefined;\n this.dateModified = _data[\"dateModified\"] ? new Date(_data[\"dateModified\"].toString()) : undefined;\n this.id = _data[\"id\"];\n this.termCode = _data[\"termCode\"];\n if (Array.isArray(_data[\"schoolsConfig\"])) {\n this.schoolsConfig = [] as any;\n for (let item of _data[\"schoolsConfig\"])\n this.schoolsConfig!.push(ConfigurationSchool.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ConfigurationVM {\n data = typeof data === 'object' ? data : {};\n let result = new ConfigurationVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"dateCreated\"] = this.dateCreated ? this.dateCreated.toISOString() : undefined;\n data[\"dateModified\"] = this.dateModified ? this.dateModified.toISOString() : undefined;\n data[\"id\"] = this.id;\n data[\"termCode\"] = this.termCode;\n if (Array.isArray(this.schoolsConfig)) {\n data[\"schoolsConfig\"] = [];\n for (let item of this.schoolsConfig)\n data[\"schoolsConfig\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IConfigurationVM {\n dateCreated?: Date;\n dateModified?: Date | undefined;\n id: number;\n termCode: number;\n schoolsConfig?: ConfigurationSchool[] | undefined;\n}\n\nexport class CourseCodeVM implements ICourseCodeVM {\n prefix?: string | undefined;\n theRest?: string | undefined;\n readonly courseHyphen?: string | undefined;\n readonly courseSpace?: string | undefined;\n ands?: CourseCodeVM[] | undefined;\n\n constructor(data?: ICourseCodeVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.prefix = _data[\"prefix\"];\n this.theRest = _data[\"theRest\"];\n (this).courseHyphen = _data[\"courseHyphen\"];\n (this).courseSpace = _data[\"courseSpace\"];\n if (Array.isArray(_data[\"ands\"])) {\n this.ands = [] as any;\n for (let item of _data[\"ands\"])\n this.ands!.push(CourseCodeVM.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): CourseCodeVM {\n data = typeof data === 'object' ? data : {};\n let result = new CourseCodeVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"prefix\"] = this.prefix;\n data[\"theRest\"] = this.theRest;\n data[\"courseHyphen\"] = this.courseHyphen;\n data[\"courseSpace\"] = this.courseSpace;\n if (Array.isArray(this.ands)) {\n data[\"ands\"] = [];\n for (let item of this.ands)\n data[\"ands\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ICourseCodeVM {\n prefix?: string | undefined;\n theRest?: string | undefined;\n courseHyphen?: string | undefined;\n courseSpace?: string | undefined;\n ands?: CourseCodeVM[] | undefined;\n}\n\nexport class CoursePrefixVM implements ICoursePrefixVM {\n termCode?: number;\n prefix!: string;\n name!: string;\n sortOrder!: number;\n\n constructor(data?: ICoursePrefixVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.termCode = _data[\"termCode\"];\n this.prefix = _data[\"prefix\"];\n this.name = _data[\"name\"];\n this.sortOrder = _data[\"sortOrder\"];\n }\n }\n\n static fromJS(data: any): CoursePrefixVM {\n data = typeof data === 'object' ? data : {};\n let result = new CoursePrefixVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"termCode\"] = this.termCode;\n data[\"prefix\"] = this.prefix;\n data[\"name\"] = this.name;\n data[\"sortOrder\"] = this.sortOrder;\n return data;\n }\n}\n\nexport interface ICoursePrefixVM {\n termCode?: number;\n prefix: string;\n name: string;\n sortOrder: number;\n}\n\nexport class CourseVM implements ICourseVM {\n termCode?: number;\n prefix!: string;\n name!: string;\n sortOrder!: number;\n courseId?: number;\n startTermCode?: number;\n endTermCode?: number | undefined;\n classNumber?: string | undefined;\n sequence?: string | undefined;\n suffix?: string | undefined;\n description?: string | undefined;\n readonly fullCourseName?: string | undefined;\n isCrossListed?: boolean;\n maxUnits?: string | undefined;\n courseNotes?: string | undefined;\n termNotes?: string | undefined;\n duplicateCredit?: string | undefined;\n recommendedPrep?: string | undefined;\n courseUnits?: number[] | undefined;\n sections?: SectionVM[] | undefined;\n prerequisiteCourseCodes?: RequisiteVM[] | undefined;\n corequisiteCourseCodes?: RequisiteVM[] | undefined;\n courseRestrictions?: RestrictionVm[] | undefined;\n majorRestrictions?: RestrictionVm[] | undefined;\n schoolRestrictions?: RestrictionVm[] | undefined;\n\n constructor(data?: ICourseVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.termCode = _data[\"termCode\"];\n this.prefix = _data[\"prefix\"];\n this.name = _data[\"name\"];\n this.sortOrder = _data[\"sortOrder\"];\n this.courseId = _data[\"courseId\"];\n this.startTermCode = _data[\"startTermCode\"];\n this.endTermCode = _data[\"endTermCode\"];\n this.classNumber = _data[\"classNumber\"];\n this.sequence = _data[\"sequence\"];\n this.suffix = _data[\"suffix\"];\n this.description = _data[\"description\"];\n (this).fullCourseName = _data[\"fullCourseName\"];\n this.isCrossListed = _data[\"isCrossListed\"];\n this.maxUnits = _data[\"maxUnits\"];\n this.courseNotes = _data[\"courseNotes\"];\n this.termNotes = _data[\"termNotes\"];\n this.duplicateCredit = _data[\"duplicateCredit\"];\n this.recommendedPrep = _data[\"recommendedPrep\"];\n if (Array.isArray(_data[\"courseUnits\"])) {\n this.courseUnits = [] as any;\n for (let item of _data[\"courseUnits\"])\n this.courseUnits!.push(item);\n }\n if (Array.isArray(_data[\"sections\"])) {\n this.sections = [] as any;\n for (let item of _data[\"sections\"])\n this.sections!.push(SectionVM.fromJS(item));\n }\n if (Array.isArray(_data[\"prerequisiteCourseCodes\"])) {\n this.prerequisiteCourseCodes = [] as any;\n for (let item of _data[\"prerequisiteCourseCodes\"])\n this.prerequisiteCourseCodes!.push(RequisiteVM.fromJS(item));\n }\n if (Array.isArray(_data[\"corequisiteCourseCodes\"])) {\n this.corequisiteCourseCodes = [] as any;\n for (let item of _data[\"corequisiteCourseCodes\"])\n this.corequisiteCourseCodes!.push(RequisiteVM.fromJS(item));\n }\n if (Array.isArray(_data[\"courseRestrictions\"])) {\n this.courseRestrictions = [] as any;\n for (let item of _data[\"courseRestrictions\"])\n this.courseRestrictions!.push(RestrictionVm.fromJS(item));\n }\n if (Array.isArray(_data[\"majorRestrictions\"])) {\n this.majorRestrictions = [] as any;\n for (let item of _data[\"majorRestrictions\"])\n this.majorRestrictions!.push(RestrictionVm.fromJS(item));\n }\n if (Array.isArray(_data[\"schoolRestrictions\"])) {\n this.schoolRestrictions = [] as any;\n for (let item of _data[\"schoolRestrictions\"])\n this.schoolRestrictions!.push(RestrictionVm.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): CourseVM {\n data = typeof data === 'object' ? data : {};\n let result = new CourseVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"termCode\"] = this.termCode;\n data[\"prefix\"] = this.prefix;\n data[\"name\"] = this.name;\n data[\"sortOrder\"] = this.sortOrder;\n data[\"courseId\"] = this.courseId;\n data[\"startTermCode\"] = this.startTermCode;\n data[\"endTermCode\"] = this.endTermCode;\n data[\"classNumber\"] = this.classNumber;\n data[\"sequence\"] = this.sequence;\n data[\"suffix\"] = this.suffix;\n data[\"description\"] = this.description;\n data[\"fullCourseName\"] = this.fullCourseName;\n data[\"isCrossListed\"] = this.isCrossListed;\n data[\"maxUnits\"] = this.maxUnits;\n data[\"courseNotes\"] = this.courseNotes;\n data[\"termNotes\"] = this.termNotes;\n data[\"duplicateCredit\"] = this.duplicateCredit;\n data[\"recommendedPrep\"] = this.recommendedPrep;\n if (Array.isArray(this.courseUnits)) {\n data[\"courseUnits\"] = [];\n for (let item of this.courseUnits)\n data[\"courseUnits\"].push(item);\n }\n if (Array.isArray(this.sections)) {\n data[\"sections\"] = [];\n for (let item of this.sections)\n data[\"sections\"].push(item.toJSON());\n }\n if (Array.isArray(this.prerequisiteCourseCodes)) {\n data[\"prerequisiteCourseCodes\"] = [];\n for (let item of this.prerequisiteCourseCodes)\n data[\"prerequisiteCourseCodes\"].push(item.toJSON());\n }\n if (Array.isArray(this.corequisiteCourseCodes)) {\n data[\"corequisiteCourseCodes\"] = [];\n for (let item of this.corequisiteCourseCodes)\n data[\"corequisiteCourseCodes\"].push(item.toJSON());\n }\n if (Array.isArray(this.courseRestrictions)) {\n data[\"courseRestrictions\"] = [];\n for (let item of this.courseRestrictions)\n data[\"courseRestrictions\"].push(item.toJSON());\n }\n if (Array.isArray(this.majorRestrictions)) {\n data[\"majorRestrictions\"] = [];\n for (let item of this.majorRestrictions)\n data[\"majorRestrictions\"].push(item.toJSON());\n }\n if (Array.isArray(this.schoolRestrictions)) {\n data[\"schoolRestrictions\"] = [];\n for (let item of this.schoolRestrictions)\n data[\"schoolRestrictions\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ICourseVM {\n termCode?: number;\n prefix: string;\n name: string;\n sortOrder: number;\n courseId?: number;\n startTermCode?: number;\n endTermCode?: number | undefined;\n classNumber?: string | undefined;\n sequence?: string | undefined;\n suffix?: string | undefined;\n description?: string | undefined;\n fullCourseName?: string | undefined;\n isCrossListed?: boolean;\n maxUnits?: string | undefined;\n courseNotes?: string | undefined;\n termNotes?: string | undefined;\n duplicateCredit?: string | undefined;\n recommendedPrep?: string | undefined;\n courseUnits?: number[] | undefined;\n sections?: SectionVM[] | undefined;\n prerequisiteCourseCodes?: RequisiteVM[] | undefined;\n corequisiteCourseCodes?: RequisiteVM[] | undefined;\n courseRestrictions?: RestrictionVm[] | undefined;\n majorRestrictions?: RestrictionVm[] | undefined;\n schoolRestrictions?: RestrictionVm[] | undefined;\n}\n\nexport class DepartmentClearance implements IDepartmentClearance {\n prefix?: string | undefined;\n infoType?: string | undefined;\n buildingCode?: string | undefined;\n room?: string | undefined;\n phoneNumber?: string | undefined;\n uscEmail?: string | undefined;\n uscUrl?: string | undefined;\n\n constructor(data?: IDepartmentClearance) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.prefix = _data[\"prefix\"];\n this.infoType = _data[\"infoType\"];\n this.buildingCode = _data[\"buildingCode\"];\n this.room = _data[\"room\"];\n this.phoneNumber = _data[\"phoneNumber\"];\n this.uscEmail = _data[\"uscEmail\"];\n this.uscUrl = _data[\"uscUrl\"];\n }\n }\n\n static fromJS(data: any): DepartmentClearance {\n data = typeof data === 'object' ? data : {};\n let result = new DepartmentClearance();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"prefix\"] = this.prefix;\n data[\"infoType\"] = this.infoType;\n data[\"buildingCode\"] = this.buildingCode;\n data[\"room\"] = this.room;\n data[\"phoneNumber\"] = this.phoneNumber;\n data[\"uscEmail\"] = this.uscEmail;\n data[\"uscUrl\"] = this.uscUrl;\n return data;\n }\n}\n\nexport interface IDepartmentClearance {\n prefix?: string | undefined;\n infoType?: string | undefined;\n buildingCode?: string | undefined;\n room?: string | undefined;\n phoneNumber?: string | undefined;\n uscEmail?: string | undefined;\n uscUrl?: string | undefined;\n}\n\nexport class InstructorVM implements IInstructorVM {\n firstName?: string | undefined;\n lastName?: string | undefined;\n\n constructor(data?: IInstructorVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.firstName = _data[\"firstName\"];\n this.lastName = _data[\"lastName\"];\n }\n }\n\n static fromJS(data: any): InstructorVM {\n data = typeof data === 'object' ? data : {};\n let result = new InstructorVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"firstName\"] = this.firstName;\n data[\"lastName\"] = this.lastName;\n return data;\n }\n}\n\nexport interface IInstructorVM {\n firstName?: string | undefined;\n lastName?: string | undefined;\n}\n\nexport class PeConfigurableSessionVM implements IPeConfigurableSessionVM {\n sessionCode!: string;\n termCode!: string;\n name!: string;\n\n constructor(data?: IPeConfigurableSessionVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.sessionCode = _data[\"sessionCode\"];\n this.termCode = _data[\"termCode\"];\n this.name = _data[\"name\"];\n }\n }\n\n static fromJS(data: any): PeConfigurableSessionVM {\n data = typeof data === 'object' ? data : {};\n let result = new PeConfigurableSessionVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"sessionCode\"] = this.sessionCode;\n data[\"termCode\"] = this.termCode;\n data[\"name\"] = this.name;\n return data;\n }\n}\n\nexport interface IPeConfigurableSessionVM {\n sessionCode: string;\n termCode: string;\n name: string;\n}\n\nexport class PeConfigurableTermVM implements IPeConfigurableTermVM {\n termCode!: number;\n season!: TermSeason;\n year!: number;\n readonly seasonName!: string;\n dateActive?: Date | undefined;\n dateArchived?: Date | undefined;\n\n constructor(data?: IPeConfigurableTermVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.termCode = _data[\"termCode\"];\n this.season = _data[\"season\"];\n this.year = _data[\"year\"];\n (this).seasonName = _data[\"seasonName\"];\n this.dateActive = _data[\"dateActive\"] ? new Date(_data[\"dateActive\"].toString()) : undefined;\n this.dateArchived = _data[\"dateArchived\"] ? new Date(_data[\"dateArchived\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): PeConfigurableTermVM {\n data = typeof data === 'object' ? data : {};\n let result = new PeConfigurableTermVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"termCode\"] = this.termCode;\n data[\"season\"] = this.season;\n data[\"year\"] = this.year;\n data[\"seasonName\"] = this.seasonName;\n data[\"dateActive\"] = this.dateActive ? this.dateActive.toISOString() : undefined;\n data[\"dateArchived\"] = this.dateArchived ? this.dateArchived.toISOString() : undefined;\n return data;\n }\n}\n\nexport interface IPeConfigurableTermVM {\n termCode: number;\n season: TermSeason;\n year: number;\n seasonName: string;\n dateActive?: Date | undefined;\n dateArchived?: Date | undefined;\n}\n\nexport class PeCourse implements IPeCourse {\n sections?: PeSection[] | undefined;\n courseId?: number;\n prefix?: string | undefined;\n classNumber?: string | undefined;\n sequence?: string | undefined;\n startTerm?: string | undefined;\n endTerm?: string | undefined;\n courseTitle?: string | undefined;\n description?: string | undefined;\n sisCatalogId!: string;\n suffix?: string | undefined;\n crossListedFlag?: string | undefined;\n publishedCourseId?: string | undefined;\n scheduledCourseId?: string | undefined;\n courseNotes?: string | undefined;\n departmentCode?: string | undefined;\n uscSchoolCode?: string | undefined;\n gradeType?: string | undefined;\n sexCode?: string | undefined;\n lastOfferedTermCode?: number | undefined;\n divFlag?: string | undefined;\n maxUnits?: string | undefined;\n\n constructor(data?: IPeCourse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"sections\"])) {\n this.sections = [] as any;\n for (let item of _data[\"sections\"])\n this.sections!.push(PeSection.fromJS(item));\n }\n this.courseId = _data[\"courseId\"];\n this.prefix = _data[\"prefix\"];\n this.classNumber = _data[\"classNumber\"];\n this.sequence = _data[\"sequence\"];\n this.startTerm = _data[\"startTerm\"];\n this.endTerm = _data[\"endTerm\"];\n this.courseTitle = _data[\"courseTitle\"];\n this.description = _data[\"description\"];\n this.sisCatalogId = _data[\"sisCatalogId\"];\n this.suffix = _data[\"suffix\"];\n this.crossListedFlag = _data[\"crossListedFlag\"];\n this.publishedCourseId = _data[\"publishedCourseId\"];\n this.scheduledCourseId = _data[\"scheduledCourseId\"];\n this.courseNotes = _data[\"courseNotes\"];\n this.departmentCode = _data[\"departmentCode\"];\n this.uscSchoolCode = _data[\"uscSchoolCode\"];\n this.gradeType = _data[\"gradeType\"];\n this.sexCode = _data[\"sexCode\"];\n this.lastOfferedTermCode = _data[\"lastOfferedTermCode\"];\n this.divFlag = _data[\"divFlag\"];\n this.maxUnits = _data[\"maxUnits\"];\n }\n }\n\n static fromJS(data: any): PeCourse {\n data = typeof data === 'object' ? data : {};\n let result = new PeCourse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.sections)) {\n data[\"sections\"] = [];\n for (let item of this.sections)\n data[\"sections\"].push(item.toJSON());\n }\n data[\"courseId\"] = this.courseId;\n data[\"prefix\"] = this.prefix;\n data[\"classNumber\"] = this.classNumber;\n data[\"sequence\"] = this.sequence;\n data[\"startTerm\"] = this.startTerm;\n data[\"endTerm\"] = this.endTerm;\n data[\"courseTitle\"] = this.courseTitle;\n data[\"description\"] = this.description;\n data[\"sisCatalogId\"] = this.sisCatalogId;\n data[\"suffix\"] = this.suffix;\n data[\"crossListedFlag\"] = this.crossListedFlag;\n data[\"publishedCourseId\"] = this.publishedCourseId;\n data[\"scheduledCourseId\"] = this.scheduledCourseId;\n data[\"courseNotes\"] = this.courseNotes;\n data[\"departmentCode\"] = this.departmentCode;\n data[\"uscSchoolCode\"] = this.uscSchoolCode;\n data[\"gradeType\"] = this.gradeType;\n data[\"sexCode\"] = this.sexCode;\n data[\"lastOfferedTermCode\"] = this.lastOfferedTermCode;\n data[\"divFlag\"] = this.divFlag;\n data[\"maxUnits\"] = this.maxUnits;\n return data;\n }\n}\n\nexport interface IPeCourse {\n sections?: PeSection[] | undefined;\n courseId?: number;\n prefix?: string | undefined;\n classNumber?: string | undefined;\n sequence?: string | undefined;\n startTerm?: string | undefined;\n endTerm?: string | undefined;\n courseTitle?: string | undefined;\n description?: string | undefined;\n sisCatalogId: string;\n suffix?: string | undefined;\n crossListedFlag?: string | undefined;\n publishedCourseId?: string | undefined;\n scheduledCourseId?: string | undefined;\n courseNotes?: string | undefined;\n departmentCode?: string | undefined;\n uscSchoolCode?: string | undefined;\n gradeType?: string | undefined;\n sexCode?: string | undefined;\n lastOfferedTermCode?: number | undefined;\n divFlag?: string | undefined;\n maxUnits?: string | undefined;\n}\n\nexport class PeCourseWr implements IPeCourseWr {\n courseId?: number;\n prefix?: string | undefined;\n courseTitle?: string | undefined;\n classNumber?: string | undefined;\n sequence?: string | undefined;\n suffix?: string | undefined;\n description?: string | undefined;\n courseNotes?: string | undefined;\n crossListedFlag?: string | undefined;\n sisCatalogId!: string;\n publishedCourseId?: string | undefined;\n scheduledCourseId?: string | undefined;\n departmentCode?: string | undefined;\n courseUscSchoolCode?: string | undefined;\n gradeType?: string | undefined;\n sexCode?: string | undefined;\n recommendedPrep?: string | undefined;\n duplicateCredit?: string | undefined;\n prerequisiteCourseCode?: string | undefined;\n classLevelCode?: string | undefined;\n classRestrictionType?: string | undefined;\n classIncludeExcludeCode?: string | undefined;\n postCode?: string | undefined;\n majorRestrictionType?: string | undefined;\n postIncludeExcludeCode?: string | undefined;\n uscSchoolCode?: string | undefined;\n schoolRestrictionType?: string | undefined;\n schoolIncludeExcludeCode?: string | undefined;\n courseUnit?: number | undefined;\n unitSisSqNumber?: number | undefined;\n courseGeneralEducationId?: number | undefined;\n generalEducationCode?: string | undefined;\n geSisSqNumber?: number | undefined;\n conferringUnitCode?: string | undefined;\n generalEducationDocCode?: string | undefined;\n rnrModeCode?: string | undefined;\n rnrModeHours?: string | undefined;\n\n constructor(data?: IPeCourseWr) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.courseId = _data[\"courseId\"];\n this.prefix = _data[\"prefix\"];\n this.courseTitle = _data[\"courseTitle\"];\n this.classNumber = _data[\"classNumber\"];\n this.sequence = _data[\"sequence\"];\n this.suffix = _data[\"suffix\"];\n this.description = _data[\"description\"];\n this.courseNotes = _data[\"courseNotes\"];\n this.crossListedFlag = _data[\"crossListedFlag\"];\n this.sisCatalogId = _data[\"sisCatalogId\"];\n this.publishedCourseId = _data[\"publishedCourseId\"];\n this.scheduledCourseId = _data[\"scheduledCourseId\"];\n this.departmentCode = _data[\"departmentCode\"];\n this.courseUscSchoolCode = _data[\"courseUscSchoolCode\"];\n this.gradeType = _data[\"gradeType\"];\n this.sexCode = _data[\"sexCode\"];\n this.recommendedPrep = _data[\"recommendedPrep\"];\n this.duplicateCredit = _data[\"duplicateCredit\"];\n this.prerequisiteCourseCode = _data[\"prerequisiteCourseCode\"];\n this.classLevelCode = _data[\"classLevelCode\"];\n this.classRestrictionType = _data[\"classRestrictionType\"];\n this.classIncludeExcludeCode = _data[\"classIncludeExcludeCode\"];\n this.postCode = _data[\"postCode\"];\n this.majorRestrictionType = _data[\"majorRestrictionType\"];\n this.postIncludeExcludeCode = _data[\"postIncludeExcludeCode\"];\n this.uscSchoolCode = _data[\"uscSchoolCode\"];\n this.schoolRestrictionType = _data[\"schoolRestrictionType\"];\n this.schoolIncludeExcludeCode = _data[\"schoolIncludeExcludeCode\"];\n this.courseUnit = _data[\"courseUnit\"];\n this.unitSisSqNumber = _data[\"unitSisSqNumber\"];\n this.courseGeneralEducationId = _data[\"courseGeneralEducationId\"];\n this.generalEducationCode = _data[\"generalEducationCode\"];\n this.geSisSqNumber = _data[\"geSisSqNumber\"];\n this.conferringUnitCode = _data[\"conferringUnitCode\"];\n this.generalEducationDocCode = _data[\"generalEducationDocCode\"];\n this.rnrModeCode = _data[\"rnrModeCode\"];\n this.rnrModeHours = _data[\"rnrModeHours\"];\n }\n }\n\n static fromJS(data: any): PeCourseWr {\n data = typeof data === 'object' ? data : {};\n let result = new PeCourseWr();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"courseId\"] = this.courseId;\n data[\"prefix\"] = this.prefix;\n data[\"courseTitle\"] = this.courseTitle;\n data[\"classNumber\"] = this.classNumber;\n data[\"sequence\"] = this.sequence;\n data[\"suffix\"] = this.suffix;\n data[\"description\"] = this.description;\n data[\"courseNotes\"] = this.courseNotes;\n data[\"crossListedFlag\"] = this.crossListedFlag;\n data[\"sisCatalogId\"] = this.sisCatalogId;\n data[\"publishedCourseId\"] = this.publishedCourseId;\n data[\"scheduledCourseId\"] = this.scheduledCourseId;\n data[\"departmentCode\"] = this.departmentCode;\n data[\"courseUscSchoolCode\"] = this.courseUscSchoolCode;\n data[\"gradeType\"] = this.gradeType;\n data[\"sexCode\"] = this.sexCode;\n data[\"recommendedPrep\"] = this.recommendedPrep;\n data[\"duplicateCredit\"] = this.duplicateCredit;\n data[\"prerequisiteCourseCode\"] = this.prerequisiteCourseCode;\n data[\"classLevelCode\"] = this.classLevelCode;\n data[\"classRestrictionType\"] = this.classRestrictionType;\n data[\"classIncludeExcludeCode\"] = this.classIncludeExcludeCode;\n data[\"postCode\"] = this.postCode;\n data[\"majorRestrictionType\"] = this.majorRestrictionType;\n data[\"postIncludeExcludeCode\"] = this.postIncludeExcludeCode;\n data[\"uscSchoolCode\"] = this.uscSchoolCode;\n data[\"schoolRestrictionType\"] = this.schoolRestrictionType;\n data[\"schoolIncludeExcludeCode\"] = this.schoolIncludeExcludeCode;\n data[\"courseUnit\"] = this.courseUnit;\n data[\"unitSisSqNumber\"] = this.unitSisSqNumber;\n data[\"courseGeneralEducationId\"] = this.courseGeneralEducationId;\n data[\"generalEducationCode\"] = this.generalEducationCode;\n data[\"geSisSqNumber\"] = this.geSisSqNumber;\n data[\"conferringUnitCode\"] = this.conferringUnitCode;\n data[\"generalEducationDocCode\"] = this.generalEducationDocCode;\n data[\"rnrModeCode\"] = this.rnrModeCode;\n data[\"rnrModeHours\"] = this.rnrModeHours;\n return data;\n }\n}\n\nexport interface IPeCourseWr {\n courseId?: number;\n prefix?: string | undefined;\n courseTitle?: string | undefined;\n classNumber?: string | undefined;\n sequence?: string | undefined;\n suffix?: string | undefined;\n description?: string | undefined;\n courseNotes?: string | undefined;\n crossListedFlag?: string | undefined;\n sisCatalogId: string;\n publishedCourseId?: string | undefined;\n scheduledCourseId?: string | undefined;\n departmentCode?: string | undefined;\n courseUscSchoolCode?: string | undefined;\n gradeType?: string | undefined;\n sexCode?: string | undefined;\n recommendedPrep?: string | undefined;\n duplicateCredit?: string | undefined;\n prerequisiteCourseCode?: string | undefined;\n classLevelCode?: string | undefined;\n classRestrictionType?: string | undefined;\n classIncludeExcludeCode?: string | undefined;\n postCode?: string | undefined;\n majorRestrictionType?: string | undefined;\n postIncludeExcludeCode?: string | undefined;\n uscSchoolCode?: string | undefined;\n schoolRestrictionType?: string | undefined;\n schoolIncludeExcludeCode?: string | undefined;\n courseUnit?: number | undefined;\n unitSisSqNumber?: number | undefined;\n courseGeneralEducationId?: number | undefined;\n generalEducationCode?: string | undefined;\n geSisSqNumber?: number | undefined;\n conferringUnitCode?: string | undefined;\n generalEducationDocCode?: string | undefined;\n rnrModeCode?: string | undefined;\n rnrModeHours?: string | undefined;\n}\n\nexport class PeSection implements IPeSection {\n course?: PeCourse;\n session?: PeSession;\n sectionId?: number;\n courseId?: number;\n type!: string;\n sisSectionId!: string;\n termCode!: string;\n rnrSessionId?: number;\n name?: string | undefined;\n notes?: string | undefined;\n description?: string | undefined;\n tuitionUnitOverride?: number | undefined;\n dClearanceFlag?: string | undefined;\n rnrModeCode!: string;\n linkCode?: string | undefined;\n campusCode?: string | undefined;\n glObjectCode?: string | undefined;\n seats?: number | undefined;\n waitlistSize?: number | undefined;\n roomId?: number | undefined;\n cancelDate?: Date | undefined;\n overrideFlag?: string | undefined;\n manualDate?: Date | undefined;\n publishFlag?: string | undefined;\n publishSectionFlag?: string | undefined;\n addDate?: Date | undefined;\n blackboardFlag?: string | undefined;\n adastraDate?: Date | undefined;\n adastraOper?: string | undefined;\n adastraUpdateString?: string | undefined;\n ogssFlag?: string | undefined;\n ogRoleUpdatedFlag?: string | undefined;\n ogGradeUpdatedFlag?: string | undefined;\n grUpdateDate?: Date | undefined;\n apUpdateDate?: Date | undefined;\n ovUpdateDate?: Date | undefined;\n dlCode?: string | undefined;\n sGlAccountNumber?: string | undefined;\n sourceCode?: string | undefined;\n priorSisSectionId?: string | undefined;\n sectionMidtermBeginDate?: Date | undefined;\n sectionMidtermEndDate?: Date | undefined;\n sectionFinalBeginDate?: Date | undefined;\n sectionFinalEndDate?: Date | undefined;\n slackYn?: string | undefined;\n zoomYn?: string | undefined;\n gradObjective?: string | undefined;\n fdmPpgg?: string | undefined;\n fdmCostCenter?: string | undefined;\n fdmCompany?: string | undefined;\n fdmSpendRevenueUg?: string | undefined;\n fdmLedgerAccountUg?: string | undefined;\n fdmSpendRevenueG?: string | undefined;\n fdmLedgerAccountG?: string | undefined;\n numberRegistered?: number | undefined;\n spacesAvailable?: number | undefined;\n studentActiveWaiting?: number | undefined;\n\n constructor(data?: IPeSection) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.course = _data[\"course\"] ? PeCourse.fromJS(_data[\"course\"]) : undefined;\n this.session = _data[\"session\"] ? PeSession.fromJS(_data[\"session\"]) : undefined;\n this.sectionId = _data[\"sectionId\"];\n this.courseId = _data[\"courseId\"];\n this.type = _data[\"type\"];\n this.sisSectionId = _data[\"sisSectionId\"];\n this.termCode = _data[\"termCode\"];\n this.rnrSessionId = _data[\"rnrSessionId\"];\n this.name = _data[\"name\"];\n this.notes = _data[\"notes\"];\n this.description = _data[\"description\"];\n this.tuitionUnitOverride = _data[\"tuitionUnitOverride\"];\n this.dClearanceFlag = _data[\"dClearanceFlag\"];\n this.rnrModeCode = _data[\"rnrModeCode\"];\n this.linkCode = _data[\"linkCode\"];\n this.campusCode = _data[\"campusCode\"];\n this.glObjectCode = _data[\"glObjectCode\"];\n this.seats = _data[\"seats\"];\n this.waitlistSize = _data[\"waitlistSize\"];\n this.roomId = _data[\"roomId\"];\n this.cancelDate = _data[\"cancelDate\"] ? new Date(_data[\"cancelDate\"].toString()) : undefined;\n this.overrideFlag = _data[\"overrideFlag\"];\n this.manualDate = _data[\"manualDate\"] ? new Date(_data[\"manualDate\"].toString()) : undefined;\n this.publishFlag = _data[\"publishFlag\"];\n this.publishSectionFlag = _data[\"publishSectionFlag\"];\n this.addDate = _data[\"addDate\"] ? new Date(_data[\"addDate\"].toString()) : undefined;\n this.blackboardFlag = _data[\"blackboardFlag\"];\n this.adastraDate = _data[\"adastraDate\"] ? new Date(_data[\"adastraDate\"].toString()) : undefined;\n this.adastraOper = _data[\"adastraOper\"];\n this.adastraUpdateString = _data[\"adastraUpdateString\"];\n this.ogssFlag = _data[\"ogssFlag\"];\n this.ogRoleUpdatedFlag = _data[\"ogRoleUpdatedFlag\"];\n this.ogGradeUpdatedFlag = _data[\"ogGradeUpdatedFlag\"];\n this.grUpdateDate = _data[\"grUpdateDate\"] ? new Date(_data[\"grUpdateDate\"].toString()) : undefined;\n this.apUpdateDate = _data[\"apUpdateDate\"] ? new Date(_data[\"apUpdateDate\"].toString()) : undefined;\n this.ovUpdateDate = _data[\"ovUpdateDate\"] ? new Date(_data[\"ovUpdateDate\"].toString()) : undefined;\n this.dlCode = _data[\"dlCode\"];\n this.sGlAccountNumber = _data[\"sGlAccountNumber\"];\n this.sourceCode = _data[\"sourceCode\"];\n this.priorSisSectionId = _data[\"priorSisSectionId\"];\n this.sectionMidtermBeginDate = _data[\"sectionMidtermBeginDate\"] ? new Date(_data[\"sectionMidtermBeginDate\"].toString()) : undefined;\n this.sectionMidtermEndDate = _data[\"sectionMidtermEndDate\"] ? new Date(_data[\"sectionMidtermEndDate\"].toString()) : undefined;\n this.sectionFinalBeginDate = _data[\"sectionFinalBeginDate\"] ? new Date(_data[\"sectionFinalBeginDate\"].toString()) : undefined;\n this.sectionFinalEndDate = _data[\"sectionFinalEndDate\"] ? new Date(_data[\"sectionFinalEndDate\"].toString()) : undefined;\n this.slackYn = _data[\"slackYn\"];\n this.zoomYn = _data[\"zoomYn\"];\n this.gradObjective = _data[\"gradObjective\"];\n this.fdmPpgg = _data[\"fdmPpgg\"];\n this.fdmCostCenter = _data[\"fdmCostCenter\"];\n this.fdmCompany = _data[\"fdmCompany\"];\n this.fdmSpendRevenueUg = _data[\"fdmSpendRevenueUg\"];\n this.fdmLedgerAccountUg = _data[\"fdmLedgerAccountUg\"];\n this.fdmSpendRevenueG = _data[\"fdmSpendRevenueG\"];\n this.fdmLedgerAccountG = _data[\"fdmLedgerAccountG\"];\n this.numberRegistered = _data[\"numberRegistered\"];\n this.spacesAvailable = _data[\"spacesAvailable\"];\n this.studentActiveWaiting = _data[\"studentActiveWaiting\"];\n }\n }\n\n static fromJS(data: any): PeSection {\n data = typeof data === 'object' ? data : {};\n let result = new PeSection();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"course\"] = this.course ? this.course.toJSON() : undefined;\n data[\"session\"] = this.session ? this.session.toJSON() : undefined;\n data[\"sectionId\"] = this.sectionId;\n data[\"courseId\"] = this.courseId;\n data[\"type\"] = this.type;\n data[\"sisSectionId\"] = this.sisSectionId;\n data[\"termCode\"] = this.termCode;\n data[\"rnrSessionId\"] = this.rnrSessionId;\n data[\"name\"] = this.name;\n data[\"notes\"] = this.notes;\n data[\"description\"] = this.description;\n data[\"tuitionUnitOverride\"] = this.tuitionUnitOverride;\n data[\"dClearanceFlag\"] = this.dClearanceFlag;\n data[\"rnrModeCode\"] = this.rnrModeCode;\n data[\"linkCode\"] = this.linkCode;\n data[\"campusCode\"] = this.campusCode;\n data[\"glObjectCode\"] = this.glObjectCode;\n data[\"seats\"] = this.seats;\n data[\"waitlistSize\"] = this.waitlistSize;\n data[\"roomId\"] = this.roomId;\n data[\"cancelDate\"] = this.cancelDate ? this.cancelDate.toISOString() : undefined;\n data[\"overrideFlag\"] = this.overrideFlag;\n data[\"manualDate\"] = this.manualDate ? this.manualDate.toISOString() : undefined;\n data[\"publishFlag\"] = this.publishFlag;\n data[\"publishSectionFlag\"] = this.publishSectionFlag;\n data[\"addDate\"] = this.addDate ? this.addDate.toISOString() : undefined;\n data[\"blackboardFlag\"] = this.blackboardFlag;\n data[\"adastraDate\"] = this.adastraDate ? this.adastraDate.toISOString() : undefined;\n data[\"adastraOper\"] = this.adastraOper;\n data[\"adastraUpdateString\"] = this.adastraUpdateString;\n data[\"ogssFlag\"] = this.ogssFlag;\n data[\"ogRoleUpdatedFlag\"] = this.ogRoleUpdatedFlag;\n data[\"ogGradeUpdatedFlag\"] = this.ogGradeUpdatedFlag;\n data[\"grUpdateDate\"] = this.grUpdateDate ? this.grUpdateDate.toISOString() : undefined;\n data[\"apUpdateDate\"] = this.apUpdateDate ? this.apUpdateDate.toISOString() : undefined;\n data[\"ovUpdateDate\"] = this.ovUpdateDate ? this.ovUpdateDate.toISOString() : undefined;\n data[\"dlCode\"] = this.dlCode;\n data[\"sGlAccountNumber\"] = this.sGlAccountNumber;\n data[\"sourceCode\"] = this.sourceCode;\n data[\"priorSisSectionId\"] = this.priorSisSectionId;\n data[\"sectionMidtermBeginDate\"] = this.sectionMidtermBeginDate ? this.sectionMidtermBeginDate.toISOString() : undefined;\n data[\"sectionMidtermEndDate\"] = this.sectionMidtermEndDate ? this.sectionMidtermEndDate.toISOString() : undefined;\n data[\"sectionFinalBeginDate\"] = this.sectionFinalBeginDate ? this.sectionFinalBeginDate.toISOString() : undefined;\n data[\"sectionFinalEndDate\"] = this.sectionFinalEndDate ? this.sectionFinalEndDate.toISOString() : undefined;\n data[\"slackYn\"] = this.slackYn;\n data[\"zoomYn\"] = this.zoomYn;\n data[\"gradObjective\"] = this.gradObjective;\n data[\"fdmPpgg\"] = this.fdmPpgg;\n data[\"fdmCostCenter\"] = this.fdmCostCenter;\n data[\"fdmCompany\"] = this.fdmCompany;\n data[\"fdmSpendRevenueUg\"] = this.fdmSpendRevenueUg;\n data[\"fdmLedgerAccountUg\"] = this.fdmLedgerAccountUg;\n data[\"fdmSpendRevenueG\"] = this.fdmSpendRevenueG;\n data[\"fdmLedgerAccountG\"] = this.fdmLedgerAccountG;\n data[\"numberRegistered\"] = this.numberRegistered;\n data[\"spacesAvailable\"] = this.spacesAvailable;\n data[\"studentActiveWaiting\"] = this.studentActiveWaiting;\n return data;\n }\n}\n\nexport interface IPeSection {\n course?: PeCourse;\n session?: PeSession;\n sectionId?: number;\n courseId?: number;\n type: string;\n sisSectionId: string;\n termCode: string;\n rnrSessionId?: number;\n name?: string | undefined;\n notes?: string | undefined;\n description?: string | undefined;\n tuitionUnitOverride?: number | undefined;\n dClearanceFlag?: string | undefined;\n rnrModeCode: string;\n linkCode?: string | undefined;\n campusCode?: string | undefined;\n glObjectCode?: string | undefined;\n seats?: number | undefined;\n waitlistSize?: number | undefined;\n roomId?: number | undefined;\n cancelDate?: Date | undefined;\n overrideFlag?: string | undefined;\n manualDate?: Date | undefined;\n publishFlag?: string | undefined;\n publishSectionFlag?: string | undefined;\n addDate?: Date | undefined;\n blackboardFlag?: string | undefined;\n adastraDate?: Date | undefined;\n adastraOper?: string | undefined;\n adastraUpdateString?: string | undefined;\n ogssFlag?: string | undefined;\n ogRoleUpdatedFlag?: string | undefined;\n ogGradeUpdatedFlag?: string | undefined;\n grUpdateDate?: Date | undefined;\n apUpdateDate?: Date | undefined;\n ovUpdateDate?: Date | undefined;\n dlCode?: string | undefined;\n sGlAccountNumber?: string | undefined;\n sourceCode?: string | undefined;\n priorSisSectionId?: string | undefined;\n sectionMidtermBeginDate?: Date | undefined;\n sectionMidtermEndDate?: Date | undefined;\n sectionFinalBeginDate?: Date | undefined;\n sectionFinalEndDate?: Date | undefined;\n slackYn?: string | undefined;\n zoomYn?: string | undefined;\n gradObjective?: string | undefined;\n fdmPpgg?: string | undefined;\n fdmCostCenter?: string | undefined;\n fdmCompany?: string | undefined;\n fdmSpendRevenueUg?: string | undefined;\n fdmLedgerAccountUg?: string | undefined;\n fdmSpendRevenueG?: string | undefined;\n fdmLedgerAccountG?: string | undefined;\n numberRegistered?: number | undefined;\n spacesAvailable?: number | undefined;\n studentActiveWaiting?: number | undefined;\n}\n\nexport class PeSectionWr implements IPeSectionWr {\n courseWr?: PeCourseWr;\n session?: PeSession;\n sectionId?: number;\n courseId?: number;\n sisSectionId!: string;\n termCode!: string;\n rnrSessionId?: number;\n name?: string | undefined;\n notes?: string | undefined;\n description?: string | undefined;\n tuitionUnitOverride?: number | undefined;\n dClearanceFlag?: string | undefined;\n rnrModeCode!: string;\n rnrMode!: string;\n linkCode?: string | undefined;\n campusCode?: string | undefined;\n glObjectCode?: string | undefined;\n seats?: number | undefined;\n waitlistSize?: number | undefined;\n roomId?: number | undefined;\n cancelDate?: Date | undefined;\n overrideFlag?: string | undefined;\n manualDate?: Date | undefined;\n publishFlag?: string | undefined;\n publishSectionFlag?: string | undefined;\n addDate?: Date | undefined;\n addOper?: string | undefined;\n updatedDate?: Date | undefined;\n updatedOper?: string | undefined;\n blackboardFlag?: string | undefined;\n adastraDate?: Date | undefined;\n adastraOper?: string | undefined;\n adastraUpdateString?: string | undefined;\n ogssFlag?: string | undefined;\n ogRoleUpdatedFlag?: string | undefined;\n ogGradeUpdatedFlag?: string | undefined;\n grUpdateDate?: Date | undefined;\n apUpdateDate?: Date | undefined;\n ovUpdateDate?: Date | undefined;\n dlCode?: string | undefined;\n sGlAccountNumber?: string | undefined;\n sourceCode?: string | undefined;\n priorSisSectionId?: string | undefined;\n sectionMidtermBeginDate?: Date | undefined;\n sectionMidtermEndDate?: Date | undefined;\n sectionFinalBeginDate?: Date | undefined;\n sectionFinalEndDate?: Date | undefined;\n slackYn?: string | undefined;\n zoomYn?: string | undefined;\n numberRegistered?: number | undefined;\n spacesAvailable?: number | undefined;\n studentActiveWaiting?: number | undefined;\n sectionFeeId?: number | undefined;\n feeCode?: string | undefined;\n feeAmount?: number | undefined;\n dayCode?: string | undefined;\n startTime?: string | undefined;\n endTime?: string | undefined;\n location?: string | undefined;\n buildingCode?: string | undefined;\n roomNumber?: string | undefined;\n sectionLocationSqNumber?: number | undefined;\n rnrRoleCode?: string | undefined;\n firstName?: string | undefined;\n lastName?: string | undefined;\n personName?: string | undefined;\n uscid?: string | undefined;\n eid?: string | undefined;\n legalLastName?: string | undefined;\n legalMiddleName?: string | undefined;\n legalFirstName?: string | undefined;\n preferredLastName?: string | undefined;\n preferredMiddleName?: string | undefined;\n preferredFirstName?: string | undefined;\n homeDepartmentCode?: string | undefined;\n homeDepartment?: string | undefined;\n employeeType?: string | undefined;\n employeeStatus?: string | undefined;\n workEmail?: string | undefined;\n workerType?: string | undefined;\n instructor?: string | undefined;\n sectionUnitId?: number | undefined;\n unitCode?: string | undefined;\n sectionUnitFeeId?: number | undefined;\n sectionUnitFeeCode?: string | undefined;\n sectionUnitFeeAmount?: number | undefined;\n sectionUnitPerUnit?: number | undefined;\n\n constructor(data?: IPeSectionWr) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.courseWr = _data[\"courseWr\"] ? PeCourseWr.fromJS(_data[\"courseWr\"]) : undefined;\n this.session = _data[\"session\"] ? PeSession.fromJS(_data[\"session\"]) : undefined;\n this.sectionId = _data[\"sectionId\"];\n this.courseId = _data[\"courseId\"];\n this.sisSectionId = _data[\"sisSectionId\"];\n this.termCode = _data[\"termCode\"];\n this.rnrSessionId = _data[\"rnrSessionId\"];\n this.name = _data[\"name\"];\n this.notes = _data[\"notes\"];\n this.description = _data[\"description\"];\n this.tuitionUnitOverride = _data[\"tuitionUnitOverride\"];\n this.dClearanceFlag = _data[\"dClearanceFlag\"];\n this.rnrModeCode = _data[\"rnrModeCode\"];\n this.rnrMode = _data[\"rnrMode\"];\n this.linkCode = _data[\"linkCode\"];\n this.campusCode = _data[\"campusCode\"];\n this.glObjectCode = _data[\"glObjectCode\"];\n this.seats = _data[\"seats\"];\n this.waitlistSize = _data[\"waitlistSize\"];\n this.roomId = _data[\"roomId\"];\n this.cancelDate = _data[\"cancelDate\"] ? new Date(_data[\"cancelDate\"].toString()) : undefined;\n this.overrideFlag = _data[\"overrideFlag\"];\n this.manualDate = _data[\"manualDate\"] ? new Date(_data[\"manualDate\"].toString()) : undefined;\n this.publishFlag = _data[\"publishFlag\"];\n this.publishSectionFlag = _data[\"publishSectionFlag\"];\n this.addDate = _data[\"addDate\"] ? new Date(_data[\"addDate\"].toString()) : undefined;\n this.addOper = _data[\"addOper\"];\n this.updatedDate = _data[\"updatedDate\"] ? new Date(_data[\"updatedDate\"].toString()) : undefined;\n this.updatedOper = _data[\"updatedOper\"];\n this.blackboardFlag = _data[\"blackboardFlag\"];\n this.adastraDate = _data[\"adastraDate\"] ? new Date(_data[\"adastraDate\"].toString()) : undefined;\n this.adastraOper = _data[\"adastraOper\"];\n this.adastraUpdateString = _data[\"adastraUpdateString\"];\n this.ogssFlag = _data[\"ogssFlag\"];\n this.ogRoleUpdatedFlag = _data[\"ogRoleUpdatedFlag\"];\n this.ogGradeUpdatedFlag = _data[\"ogGradeUpdatedFlag\"];\n this.grUpdateDate = _data[\"grUpdateDate\"] ? new Date(_data[\"grUpdateDate\"].toString()) : undefined;\n this.apUpdateDate = _data[\"apUpdateDate\"] ? new Date(_data[\"apUpdateDate\"].toString()) : undefined;\n this.ovUpdateDate = _data[\"ovUpdateDate\"] ? new Date(_data[\"ovUpdateDate\"].toString()) : undefined;\n this.dlCode = _data[\"dlCode\"];\n this.sGlAccountNumber = _data[\"sGlAccountNumber\"];\n this.sourceCode = _data[\"sourceCode\"];\n this.priorSisSectionId = _data[\"priorSisSectionId\"];\n this.sectionMidtermBeginDate = _data[\"sectionMidtermBeginDate\"] ? new Date(_data[\"sectionMidtermBeginDate\"].toString()) : undefined;\n this.sectionMidtermEndDate = _data[\"sectionMidtermEndDate\"] ? new Date(_data[\"sectionMidtermEndDate\"].toString()) : undefined;\n this.sectionFinalBeginDate = _data[\"sectionFinalBeginDate\"] ? new Date(_data[\"sectionFinalBeginDate\"].toString()) : undefined;\n this.sectionFinalEndDate = _data[\"sectionFinalEndDate\"] ? new Date(_data[\"sectionFinalEndDate\"].toString()) : undefined;\n this.slackYn = _data[\"slackYn\"];\n this.zoomYn = _data[\"zoomYn\"];\n this.numberRegistered = _data[\"numberRegistered\"];\n this.spacesAvailable = _data[\"spacesAvailable\"];\n this.studentActiveWaiting = _data[\"studentActiveWaiting\"];\n this.sectionFeeId = _data[\"sectionFeeId\"];\n this.feeCode = _data[\"feeCode\"];\n this.feeAmount = _data[\"feeAmount\"];\n this.dayCode = _data[\"dayCode\"];\n this.startTime = _data[\"startTime\"];\n this.endTime = _data[\"endTime\"];\n this.location = _data[\"location\"];\n this.buildingCode = _data[\"buildingCode\"];\n this.roomNumber = _data[\"roomNumber\"];\n this.sectionLocationSqNumber = _data[\"sectionLocationSqNumber\"];\n this.rnrRoleCode = _data[\"rnrRoleCode\"];\n this.firstName = _data[\"firstName\"];\n this.lastName = _data[\"lastName\"];\n this.personName = _data[\"personName\"];\n this.uscid = _data[\"uscid\"];\n this.eid = _data[\"eid\"];\n this.legalLastName = _data[\"legalLastName\"];\n this.legalMiddleName = _data[\"legalMiddleName\"];\n this.legalFirstName = _data[\"legalFirstName\"];\n this.preferredLastName = _data[\"preferredLastName\"];\n this.preferredMiddleName = _data[\"preferredMiddleName\"];\n this.preferredFirstName = _data[\"preferredFirstName\"];\n this.homeDepartmentCode = _data[\"homeDepartmentCode\"];\n this.homeDepartment = _data[\"homeDepartment\"];\n this.employeeType = _data[\"employeeType\"];\n this.employeeStatus = _data[\"employeeStatus\"];\n this.workEmail = _data[\"workEmail\"];\n this.workerType = _data[\"workerType\"];\n this.instructor = _data[\"instructor\"];\n this.sectionUnitId = _data[\"sectionUnitId\"];\n this.unitCode = _data[\"unitCode\"];\n this.sectionUnitFeeId = _data[\"sectionUnitFeeId\"];\n this.sectionUnitFeeCode = _data[\"sectionUnitFeeCode\"];\n this.sectionUnitFeeAmount = _data[\"sectionUnitFeeAmount\"];\n this.sectionUnitPerUnit = _data[\"sectionUnitPerUnit\"];\n }\n }\n\n static fromJS(data: any): PeSectionWr {\n data = typeof data === 'object' ? data : {};\n let result = new PeSectionWr();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"courseWr\"] = this.courseWr ? this.courseWr.toJSON() : undefined;\n data[\"session\"] = this.session ? this.session.toJSON() : undefined;\n data[\"sectionId\"] = this.sectionId;\n data[\"courseId\"] = this.courseId;\n data[\"sisSectionId\"] = this.sisSectionId;\n data[\"termCode\"] = this.termCode;\n data[\"rnrSessionId\"] = this.rnrSessionId;\n data[\"name\"] = this.name;\n data[\"notes\"] = this.notes;\n data[\"description\"] = this.description;\n data[\"tuitionUnitOverride\"] = this.tuitionUnitOverride;\n data[\"dClearanceFlag\"] = this.dClearanceFlag;\n data[\"rnrModeCode\"] = this.rnrModeCode;\n data[\"rnrMode\"] = this.rnrMode;\n data[\"linkCode\"] = this.linkCode;\n data[\"campusCode\"] = this.campusCode;\n data[\"glObjectCode\"] = this.glObjectCode;\n data[\"seats\"] = this.seats;\n data[\"waitlistSize\"] = this.waitlistSize;\n data[\"roomId\"] = this.roomId;\n data[\"cancelDate\"] = this.cancelDate ? this.cancelDate.toISOString() : undefined;\n data[\"overrideFlag\"] = this.overrideFlag;\n data[\"manualDate\"] = this.manualDate ? this.manualDate.toISOString() : undefined;\n data[\"publishFlag\"] = this.publishFlag;\n data[\"publishSectionFlag\"] = this.publishSectionFlag;\n data[\"addDate\"] = this.addDate ? this.addDate.toISOString() : undefined;\n data[\"addOper\"] = this.addOper;\n data[\"updatedDate\"] = this.updatedDate ? this.updatedDate.toISOString() : undefined;\n data[\"updatedOper\"] = this.updatedOper;\n data[\"blackboardFlag\"] = this.blackboardFlag;\n data[\"adastraDate\"] = this.adastraDate ? this.adastraDate.toISOString() : undefined;\n data[\"adastraOper\"] = this.adastraOper;\n data[\"adastraUpdateString\"] = this.adastraUpdateString;\n data[\"ogssFlag\"] = this.ogssFlag;\n data[\"ogRoleUpdatedFlag\"] = this.ogRoleUpdatedFlag;\n data[\"ogGradeUpdatedFlag\"] = this.ogGradeUpdatedFlag;\n data[\"grUpdateDate\"] = this.grUpdateDate ? this.grUpdateDate.toISOString() : undefined;\n data[\"apUpdateDate\"] = this.apUpdateDate ? this.apUpdateDate.toISOString() : undefined;\n data[\"ovUpdateDate\"] = this.ovUpdateDate ? this.ovUpdateDate.toISOString() : undefined;\n data[\"dlCode\"] = this.dlCode;\n data[\"sGlAccountNumber\"] = this.sGlAccountNumber;\n data[\"sourceCode\"] = this.sourceCode;\n data[\"priorSisSectionId\"] = this.priorSisSectionId;\n data[\"sectionMidtermBeginDate\"] = this.sectionMidtermBeginDate ? this.sectionMidtermBeginDate.toISOString() : undefined;\n data[\"sectionMidtermEndDate\"] = this.sectionMidtermEndDate ? this.sectionMidtermEndDate.toISOString() : undefined;\n data[\"sectionFinalBeginDate\"] = this.sectionFinalBeginDate ? this.sectionFinalBeginDate.toISOString() : undefined;\n data[\"sectionFinalEndDate\"] = this.sectionFinalEndDate ? this.sectionFinalEndDate.toISOString() : undefined;\n data[\"slackYn\"] = this.slackYn;\n data[\"zoomYn\"] = this.zoomYn;\n data[\"numberRegistered\"] = this.numberRegistered;\n data[\"spacesAvailable\"] = this.spacesAvailable;\n data[\"studentActiveWaiting\"] = this.studentActiveWaiting;\n data[\"sectionFeeId\"] = this.sectionFeeId;\n data[\"feeCode\"] = this.feeCode;\n data[\"feeAmount\"] = this.feeAmount;\n data[\"dayCode\"] = this.dayCode;\n data[\"startTime\"] = this.startTime;\n data[\"endTime\"] = this.endTime;\n data[\"location\"] = this.location;\n data[\"buildingCode\"] = this.buildingCode;\n data[\"roomNumber\"] = this.roomNumber;\n data[\"sectionLocationSqNumber\"] = this.sectionLocationSqNumber;\n data[\"rnrRoleCode\"] = this.rnrRoleCode;\n data[\"firstName\"] = this.firstName;\n data[\"lastName\"] = this.lastName;\n data[\"personName\"] = this.personName;\n data[\"uscid\"] = this.uscid;\n data[\"eid\"] = this.eid;\n data[\"legalLastName\"] = this.legalLastName;\n data[\"legalMiddleName\"] = this.legalMiddleName;\n data[\"legalFirstName\"] = this.legalFirstName;\n data[\"preferredLastName\"] = this.preferredLastName;\n data[\"preferredMiddleName\"] = this.preferredMiddleName;\n data[\"preferredFirstName\"] = this.preferredFirstName;\n data[\"homeDepartmentCode\"] = this.homeDepartmentCode;\n data[\"homeDepartment\"] = this.homeDepartment;\n data[\"employeeType\"] = this.employeeType;\n data[\"employeeStatus\"] = this.employeeStatus;\n data[\"workEmail\"] = this.workEmail;\n data[\"workerType\"] = this.workerType;\n data[\"instructor\"] = this.instructor;\n data[\"sectionUnitId\"] = this.sectionUnitId;\n data[\"unitCode\"] = this.unitCode;\n data[\"sectionUnitFeeId\"] = this.sectionUnitFeeId;\n data[\"sectionUnitFeeCode\"] = this.sectionUnitFeeCode;\n data[\"sectionUnitFeeAmount\"] = this.sectionUnitFeeAmount;\n data[\"sectionUnitPerUnit\"] = this.sectionUnitPerUnit;\n return data;\n }\n}\n\nexport interface IPeSectionWr {\n courseWr?: PeCourseWr;\n session?: PeSession;\n sectionId?: number;\n courseId?: number;\n sisSectionId: string;\n termCode: string;\n rnrSessionId?: number;\n name?: string | undefined;\n notes?: string | undefined;\n description?: string | undefined;\n tuitionUnitOverride?: number | undefined;\n dClearanceFlag?: string | undefined;\n rnrModeCode: string;\n rnrMode: string;\n linkCode?: string | undefined;\n campusCode?: string | undefined;\n glObjectCode?: string | undefined;\n seats?: number | undefined;\n waitlistSize?: number | undefined;\n roomId?: number | undefined;\n cancelDate?: Date | undefined;\n overrideFlag?: string | undefined;\n manualDate?: Date | undefined;\n publishFlag?: string | undefined;\n publishSectionFlag?: string | undefined;\n addDate?: Date | undefined;\n addOper?: string | undefined;\n updatedDate?: Date | undefined;\n updatedOper?: string | undefined;\n blackboardFlag?: string | undefined;\n adastraDate?: Date | undefined;\n adastraOper?: string | undefined;\n adastraUpdateString?: string | undefined;\n ogssFlag?: string | undefined;\n ogRoleUpdatedFlag?: string | undefined;\n ogGradeUpdatedFlag?: string | undefined;\n grUpdateDate?: Date | undefined;\n apUpdateDate?: Date | undefined;\n ovUpdateDate?: Date | undefined;\n dlCode?: string | undefined;\n sGlAccountNumber?: string | undefined;\n sourceCode?: string | undefined;\n priorSisSectionId?: string | undefined;\n sectionMidtermBeginDate?: Date | undefined;\n sectionMidtermEndDate?: Date | undefined;\n sectionFinalBeginDate?: Date | undefined;\n sectionFinalEndDate?: Date | undefined;\n slackYn?: string | undefined;\n zoomYn?: string | undefined;\n numberRegistered?: number | undefined;\n spacesAvailable?: number | undefined;\n studentActiveWaiting?: number | undefined;\n sectionFeeId?: number | undefined;\n feeCode?: string | undefined;\n feeAmount?: number | undefined;\n dayCode?: string | undefined;\n startTime?: string | undefined;\n endTime?: string | undefined;\n location?: string | undefined;\n buildingCode?: string | undefined;\n roomNumber?: string | undefined;\n sectionLocationSqNumber?: number | undefined;\n rnrRoleCode?: string | undefined;\n firstName?: string | undefined;\n lastName?: string | undefined;\n personName?: string | undefined;\n uscid?: string | undefined;\n eid?: string | undefined;\n legalLastName?: string | undefined;\n legalMiddleName?: string | undefined;\n legalFirstName?: string | undefined;\n preferredLastName?: string | undefined;\n preferredMiddleName?: string | undefined;\n preferredFirstName?: string | undefined;\n homeDepartmentCode?: string | undefined;\n homeDepartment?: string | undefined;\n employeeType?: string | undefined;\n employeeStatus?: string | undefined;\n workEmail?: string | undefined;\n workerType?: string | undefined;\n instructor?: string | undefined;\n sectionUnitId?: number | undefined;\n unitCode?: string | undefined;\n sectionUnitFeeId?: number | undefined;\n sectionUnitFeeCode?: string | undefined;\n sectionUnitFeeAmount?: number | undefined;\n sectionUnitPerUnit?: number | undefined;\n}\n\nexport class PeSession implements IPeSession {\n sections?: PeSection[] | undefined;\n sectionWrs?: PeSectionWr[] | undefined;\n termCode!: string;\n rnrSessionCode!: string;\n description?: string | undefined;\n lastDropDate?: Date | undefined;\n rnrSessionId?: number;\n sisSessionId!: string;\n gradingCycleCode?: string | undefined;\n ugUnitTuitionFeeCode?: string | undefined;\n gFlatTuitionFeeCode?: string | undefined;\n gUnitTuitionFeeCode?: string | undefined;\n ugFlatTuitionFeeCode?: string | undefined;\n partHealthFeeCode?: string | undefined;\n summerWeekHealthFeeCode?: string | undefined;\n summerMaxHealthFeeCode?: string | undefined;\n studentFeeCode?: string | undefined;\n fullHealthFeeCode?: string | undefined;\n lastApplyDate?: Date | undefined;\n preRegBeginDate?: Date | undefined;\n preRegEndDate?: Date | undefined;\n earlyRegBeginDate?: Date | undefined;\n earlyRegEndDate?: Date | undefined;\n regBeginDate?: Date | undefined;\n regEndDate?: Date | undefined;\n classBeginDate?: Date | undefined;\n classEndDate?: Date | undefined;\n lateRegBeginDate?: Date | undefined;\n lateRegEndDate?: Date | undefined;\n healthInsuranceDueDate?: Date | undefined;\n withdrawWOWDate?: Date | undefined;\n withdrawWWDate?: Date | undefined;\n gradePostDate?: Date | undefined;\n fullTimeUnitCode?: string | undefined;\n stopDate?: Date | undefined;\n orientationFeeCode?: string | undefined;\n week2BeginDate?: Date | undefined;\n week2EndDate?: Date | undefined;\n week2PercentPenalty?: number | undefined;\n week2FeeCode?: string | undefined;\n week3BeginDate?: Date | undefined;\n week3EndDate?: Date | undefined;\n week3PercentPenalty?: number | undefined;\n week3FeeCode?: string | undefined;\n orientationMandatory?: string | undefined;\n oissMandatory?: string | undefined;\n oissFeeCode?: string | undefined;\n rnrSessionOper?: string | undefined;\n trxPrintD?: string | undefined;\n burOper?: string | undefined;\n gradOrientationMandatory?: string | undefined;\n gradOrientationFeeCode?: string | undefined;\n finalExamBeginDate?: Date | undefined;\n finalExamEndDate?: Date | undefined;\n f211?: string | undefined;\n insuranceMinimumUnits?: number | undefined;\n uscCampusCode?: string | undefined;\n midtermGradingBeginDate?: Date | undefined;\n midtermGradingEndDate?: Date | undefined;\n finalGradingBeginDate?: Date | undefined;\n finalGradingEndDate?: Date | undefined;\n contactName?: string | undefined;\n contactPhone?: string | undefined;\n break1BeginDate?: Date | undefined;\n break1EndDate?: Date | undefined;\n break2BeginDate?: Date | undefined;\n break2EndDate?: Date | undefined;\n summerTid?: string | undefined;\n lastEnrollmentOptionDate?: Date | undefined;\n\n constructor(data?: IPeSession) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"sections\"])) {\n this.sections = [] as any;\n for (let item of _data[\"sections\"])\n this.sections!.push(PeSection.fromJS(item));\n }\n if (Array.isArray(_data[\"sectionWrs\"])) {\n this.sectionWrs = [] as any;\n for (let item of _data[\"sectionWrs\"])\n this.sectionWrs!.push(PeSectionWr.fromJS(item));\n }\n this.termCode = _data[\"termCode\"];\n this.rnrSessionCode = _data[\"rnrSessionCode\"];\n this.description = _data[\"description\"];\n this.lastDropDate = _data[\"lastDropDate\"] ? new Date(_data[\"lastDropDate\"].toString()) : undefined;\n this.rnrSessionId = _data[\"rnrSessionId\"];\n this.sisSessionId = _data[\"sisSessionId\"];\n this.gradingCycleCode = _data[\"gradingCycleCode\"];\n this.ugUnitTuitionFeeCode = _data[\"ugUnitTuitionFeeCode\"];\n this.gFlatTuitionFeeCode = _data[\"gFlatTuitionFeeCode\"];\n this.gUnitTuitionFeeCode = _data[\"gUnitTuitionFeeCode\"];\n this.ugFlatTuitionFeeCode = _data[\"ugFlatTuitionFeeCode\"];\n this.partHealthFeeCode = _data[\"partHealthFeeCode\"];\n this.summerWeekHealthFeeCode = _data[\"summerWeekHealthFeeCode\"];\n this.summerMaxHealthFeeCode = _data[\"summerMaxHealthFeeCode\"];\n this.studentFeeCode = _data[\"studentFeeCode\"];\n this.fullHealthFeeCode = _data[\"fullHealthFeeCode\"];\n this.lastApplyDate = _data[\"lastApplyDate\"] ? new Date(_data[\"lastApplyDate\"].toString()) : undefined;\n this.preRegBeginDate = _data[\"preRegBeginDate\"] ? new Date(_data[\"preRegBeginDate\"].toString()) : undefined;\n this.preRegEndDate = _data[\"preRegEndDate\"] ? new Date(_data[\"preRegEndDate\"].toString()) : undefined;\n this.earlyRegBeginDate = _data[\"earlyRegBeginDate\"] ? new Date(_data[\"earlyRegBeginDate\"].toString()) : undefined;\n this.earlyRegEndDate = _data[\"earlyRegEndDate\"] ? new Date(_data[\"earlyRegEndDate\"].toString()) : undefined;\n this.regBeginDate = _data[\"regBeginDate\"] ? new Date(_data[\"regBeginDate\"].toString()) : undefined;\n this.regEndDate = _data[\"regEndDate\"] ? new Date(_data[\"regEndDate\"].toString()) : undefined;\n this.classBeginDate = _data[\"classBeginDate\"] ? new Date(_data[\"classBeginDate\"].toString()) : undefined;\n this.classEndDate = _data[\"classEndDate\"] ? new Date(_data[\"classEndDate\"].toString()) : undefined;\n this.lateRegBeginDate = _data[\"lateRegBeginDate\"] ? new Date(_data[\"lateRegBeginDate\"].toString()) : undefined;\n this.lateRegEndDate = _data[\"lateRegEndDate\"] ? new Date(_data[\"lateRegEndDate\"].toString()) : undefined;\n this.healthInsuranceDueDate = _data[\"healthInsuranceDueDate\"] ? new Date(_data[\"healthInsuranceDueDate\"].toString()) : undefined;\n this.withdrawWOWDate = _data[\"withdrawWOWDate\"] ? new Date(_data[\"withdrawWOWDate\"].toString()) : undefined;\n this.withdrawWWDate = _data[\"withdrawWWDate\"] ? new Date(_data[\"withdrawWWDate\"].toString()) : undefined;\n this.gradePostDate = _data[\"gradePostDate\"] ? new Date(_data[\"gradePostDate\"].toString()) : undefined;\n this.fullTimeUnitCode = _data[\"fullTimeUnitCode\"];\n this.stopDate = _data[\"stopDate\"] ? new Date(_data[\"stopDate\"].toString()) : undefined;\n this.orientationFeeCode = _data[\"orientationFeeCode\"];\n this.week2BeginDate = _data[\"week2BeginDate\"] ? new Date(_data[\"week2BeginDate\"].toString()) : undefined;\n this.week2EndDate = _data[\"week2EndDate\"] ? new Date(_data[\"week2EndDate\"].toString()) : undefined;\n this.week2PercentPenalty = _data[\"week2PercentPenalty\"];\n this.week2FeeCode = _data[\"week2FeeCode\"];\n this.week3BeginDate = _data[\"week3BeginDate\"] ? new Date(_data[\"week3BeginDate\"].toString()) : undefined;\n this.week3EndDate = _data[\"week3EndDate\"] ? new Date(_data[\"week3EndDate\"].toString()) : undefined;\n this.week3PercentPenalty = _data[\"week3PercentPenalty\"];\n this.week3FeeCode = _data[\"week3FeeCode\"];\n this.orientationMandatory = _data[\"orientationMandatory\"];\n this.oissMandatory = _data[\"oissMandatory\"];\n this.oissFeeCode = _data[\"oissFeeCode\"];\n this.rnrSessionOper = _data[\"rnrSessionOper\"];\n this.trxPrintD = _data[\"trxPrintD\"];\n this.burOper = _data[\"burOper\"];\n this.gradOrientationMandatory = _data[\"gradOrientationMandatory\"];\n this.gradOrientationFeeCode = _data[\"gradOrientationFeeCode\"];\n this.finalExamBeginDate = _data[\"finalExamBeginDate\"] ? new Date(_data[\"finalExamBeginDate\"].toString()) : undefined;\n this.finalExamEndDate = _data[\"finalExamEndDate\"] ? new Date(_data[\"finalExamEndDate\"].toString()) : undefined;\n this.f211 = _data[\"f211\"];\n this.insuranceMinimumUnits = _data[\"insuranceMinimumUnits\"];\n this.uscCampusCode = _data[\"uscCampusCode\"];\n this.midtermGradingBeginDate = _data[\"midtermGradingBeginDate\"] ? new Date(_data[\"midtermGradingBeginDate\"].toString()) : undefined;\n this.midtermGradingEndDate = _data[\"midtermGradingEndDate\"] ? new Date(_data[\"midtermGradingEndDate\"].toString()) : undefined;\n this.finalGradingBeginDate = _data[\"finalGradingBeginDate\"] ? new Date(_data[\"finalGradingBeginDate\"].toString()) : undefined;\n this.finalGradingEndDate = _data[\"finalGradingEndDate\"] ? new Date(_data[\"finalGradingEndDate\"].toString()) : undefined;\n this.contactName = _data[\"contactName\"];\n this.contactPhone = _data[\"contactPhone\"];\n this.break1BeginDate = _data[\"break1BeginDate\"] ? new Date(_data[\"break1BeginDate\"].toString()) : undefined;\n this.break1EndDate = _data[\"break1EndDate\"] ? new Date(_data[\"break1EndDate\"].toString()) : undefined;\n this.break2BeginDate = _data[\"break2BeginDate\"] ? new Date(_data[\"break2BeginDate\"].toString()) : undefined;\n this.break2EndDate = _data[\"break2EndDate\"] ? new Date(_data[\"break2EndDate\"].toString()) : undefined;\n this.summerTid = _data[\"summerTid\"];\n this.lastEnrollmentOptionDate = _data[\"lastEnrollmentOptionDate\"] ? new Date(_data[\"lastEnrollmentOptionDate\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): PeSession {\n data = typeof data === 'object' ? data : {};\n let result = new PeSession();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.sections)) {\n data[\"sections\"] = [];\n for (let item of this.sections)\n data[\"sections\"].push(item.toJSON());\n }\n if (Array.isArray(this.sectionWrs)) {\n data[\"sectionWrs\"] = [];\n for (let item of this.sectionWrs)\n data[\"sectionWrs\"].push(item.toJSON());\n }\n data[\"termCode\"] = this.termCode;\n data[\"rnrSessionCode\"] = this.rnrSessionCode;\n data[\"description\"] = this.description;\n data[\"lastDropDate\"] = this.lastDropDate ? this.lastDropDate.toISOString() : undefined;\n data[\"rnrSessionId\"] = this.rnrSessionId;\n data[\"sisSessionId\"] = this.sisSessionId;\n data[\"gradingCycleCode\"] = this.gradingCycleCode;\n data[\"ugUnitTuitionFeeCode\"] = this.ugUnitTuitionFeeCode;\n data[\"gFlatTuitionFeeCode\"] = this.gFlatTuitionFeeCode;\n data[\"gUnitTuitionFeeCode\"] = this.gUnitTuitionFeeCode;\n data[\"ugFlatTuitionFeeCode\"] = this.ugFlatTuitionFeeCode;\n data[\"partHealthFeeCode\"] = this.partHealthFeeCode;\n data[\"summerWeekHealthFeeCode\"] = this.summerWeekHealthFeeCode;\n data[\"summerMaxHealthFeeCode\"] = this.summerMaxHealthFeeCode;\n data[\"studentFeeCode\"] = this.studentFeeCode;\n data[\"fullHealthFeeCode\"] = this.fullHealthFeeCode;\n data[\"lastApplyDate\"] = this.lastApplyDate ? this.lastApplyDate.toISOString() : undefined;\n data[\"preRegBeginDate\"] = this.preRegBeginDate ? this.preRegBeginDate.toISOString() : undefined;\n data[\"preRegEndDate\"] = this.preRegEndDate ? this.preRegEndDate.toISOString() : undefined;\n data[\"earlyRegBeginDate\"] = this.earlyRegBeginDate ? this.earlyRegBeginDate.toISOString() : undefined;\n data[\"earlyRegEndDate\"] = this.earlyRegEndDate ? this.earlyRegEndDate.toISOString() : undefined;\n data[\"regBeginDate\"] = this.regBeginDate ? this.regBeginDate.toISOString() : undefined;\n data[\"regEndDate\"] = this.regEndDate ? this.regEndDate.toISOString() : undefined;\n data[\"classBeginDate\"] = this.classBeginDate ? this.classBeginDate.toISOString() : undefined;\n data[\"classEndDate\"] = this.classEndDate ? this.classEndDate.toISOString() : undefined;\n data[\"lateRegBeginDate\"] = this.lateRegBeginDate ? this.lateRegBeginDate.toISOString() : undefined;\n data[\"lateRegEndDate\"] = this.lateRegEndDate ? this.lateRegEndDate.toISOString() : undefined;\n data[\"healthInsuranceDueDate\"] = this.healthInsuranceDueDate ? this.healthInsuranceDueDate.toISOString() : undefined;\n data[\"withdrawWOWDate\"] = this.withdrawWOWDate ? this.withdrawWOWDate.toISOString() : undefined;\n data[\"withdrawWWDate\"] = this.withdrawWWDate ? this.withdrawWWDate.toISOString() : undefined;\n data[\"gradePostDate\"] = this.gradePostDate ? this.gradePostDate.toISOString() : undefined;\n data[\"fullTimeUnitCode\"] = this.fullTimeUnitCode;\n data[\"stopDate\"] = this.stopDate ? this.stopDate.toISOString() : undefined;\n data[\"orientationFeeCode\"] = this.orientationFeeCode;\n data[\"week2BeginDate\"] = this.week2BeginDate ? this.week2BeginDate.toISOString() : undefined;\n data[\"week2EndDate\"] = this.week2EndDate ? this.week2EndDate.toISOString() : undefined;\n data[\"week2PercentPenalty\"] = this.week2PercentPenalty;\n data[\"week2FeeCode\"] = this.week2FeeCode;\n data[\"week3BeginDate\"] = this.week3BeginDate ? this.week3BeginDate.toISOString() : undefined;\n data[\"week3EndDate\"] = this.week3EndDate ? this.week3EndDate.toISOString() : undefined;\n data[\"week3PercentPenalty\"] = this.week3PercentPenalty;\n data[\"week3FeeCode\"] = this.week3FeeCode;\n data[\"orientationMandatory\"] = this.orientationMandatory;\n data[\"oissMandatory\"] = this.oissMandatory;\n data[\"oissFeeCode\"] = this.oissFeeCode;\n data[\"rnrSessionOper\"] = this.rnrSessionOper;\n data[\"trxPrintD\"] = this.trxPrintD;\n data[\"burOper\"] = this.burOper;\n data[\"gradOrientationMandatory\"] = this.gradOrientationMandatory;\n data[\"gradOrientationFeeCode\"] = this.gradOrientationFeeCode;\n data[\"finalExamBeginDate\"] = this.finalExamBeginDate ? this.finalExamBeginDate.toISOString() : undefined;\n data[\"finalExamEndDate\"] = this.finalExamEndDate ? this.finalExamEndDate.toISOString() : undefined;\n data[\"f211\"] = this.f211;\n data[\"insuranceMinimumUnits\"] = this.insuranceMinimumUnits;\n data[\"uscCampusCode\"] = this.uscCampusCode;\n data[\"midtermGradingBeginDate\"] = this.midtermGradingBeginDate ? this.midtermGradingBeginDate.toISOString() : undefined;\n data[\"midtermGradingEndDate\"] = this.midtermGradingEndDate ? this.midtermGradingEndDate.toISOString() : undefined;\n data[\"finalGradingBeginDate\"] = this.finalGradingBeginDate ? this.finalGradingBeginDate.toISOString() : undefined;\n data[\"finalGradingEndDate\"] = this.finalGradingEndDate ? this.finalGradingEndDate.toISOString() : undefined;\n data[\"contactName\"] = this.contactName;\n data[\"contactPhone\"] = this.contactPhone;\n data[\"break1BeginDate\"] = this.break1BeginDate ? this.break1BeginDate.toISOString() : undefined;\n data[\"break1EndDate\"] = this.break1EndDate ? this.break1EndDate.toISOString() : undefined;\n data[\"break2BeginDate\"] = this.break2BeginDate ? this.break2BeginDate.toISOString() : undefined;\n data[\"break2EndDate\"] = this.break2EndDate ? this.break2EndDate.toISOString() : undefined;\n data[\"summerTid\"] = this.summerTid;\n data[\"lastEnrollmentOptionDate\"] = this.lastEnrollmentOptionDate ? this.lastEnrollmentOptionDate.toISOString() : undefined;\n return data;\n }\n}\n\nexport interface IPeSession {\n sections?: PeSection[] | undefined;\n sectionWrs?: PeSectionWr[] | undefined;\n termCode: string;\n rnrSessionCode: string;\n description?: string | undefined;\n lastDropDate?: Date | undefined;\n rnrSessionId?: number;\n sisSessionId: string;\n gradingCycleCode?: string | undefined;\n ugUnitTuitionFeeCode?: string | undefined;\n gFlatTuitionFeeCode?: string | undefined;\n gUnitTuitionFeeCode?: string | undefined;\n ugFlatTuitionFeeCode?: string | undefined;\n partHealthFeeCode?: string | undefined;\n summerWeekHealthFeeCode?: string | undefined;\n summerMaxHealthFeeCode?: string | undefined;\n studentFeeCode?: string | undefined;\n fullHealthFeeCode?: string | undefined;\n lastApplyDate?: Date | undefined;\n preRegBeginDate?: Date | undefined;\n preRegEndDate?: Date | undefined;\n earlyRegBeginDate?: Date | undefined;\n earlyRegEndDate?: Date | undefined;\n regBeginDate?: Date | undefined;\n regEndDate?: Date | undefined;\n classBeginDate?: Date | undefined;\n classEndDate?: Date | undefined;\n lateRegBeginDate?: Date | undefined;\n lateRegEndDate?: Date | undefined;\n healthInsuranceDueDate?: Date | undefined;\n withdrawWOWDate?: Date | undefined;\n withdrawWWDate?: Date | undefined;\n gradePostDate?: Date | undefined;\n fullTimeUnitCode?: string | undefined;\n stopDate?: Date | undefined;\n orientationFeeCode?: string | undefined;\n week2BeginDate?: Date | undefined;\n week2EndDate?: Date | undefined;\n week2PercentPenalty?: number | undefined;\n week2FeeCode?: string | undefined;\n week3BeginDate?: Date | undefined;\n week3EndDate?: Date | undefined;\n week3PercentPenalty?: number | undefined;\n week3FeeCode?: string | undefined;\n orientationMandatory?: string | undefined;\n oissMandatory?: string | undefined;\n oissFeeCode?: string | undefined;\n rnrSessionOper?: string | undefined;\n trxPrintD?: string | undefined;\n burOper?: string | undefined;\n gradOrientationMandatory?: string | undefined;\n gradOrientationFeeCode?: string | undefined;\n finalExamBeginDate?: Date | undefined;\n finalExamEndDate?: Date | undefined;\n f211?: string | undefined;\n insuranceMinimumUnits?: number | undefined;\n uscCampusCode?: string | undefined;\n midtermGradingBeginDate?: Date | undefined;\n midtermGradingEndDate?: Date | undefined;\n finalGradingBeginDate?: Date | undefined;\n finalGradingEndDate?: Date | undefined;\n contactName?: string | undefined;\n contactPhone?: string | undefined;\n break1BeginDate?: Date | undefined;\n break1EndDate?: Date | undefined;\n break2BeginDate?: Date | undefined;\n break2EndDate?: Date | undefined;\n summerTid?: string | undefined;\n lastEnrollmentOptionDate?: Date | undefined;\n}\n\nexport class PeTerm implements IPeTerm {\n termCode?: string | undefined;\n description?: string | undefined;\n termBeginDate?: Date | undefined;\n\n constructor(data?: IPeTerm) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.termCode = _data[\"termCode\"];\n this.description = _data[\"description\"];\n this.termBeginDate = _data[\"termBeginDate\"] ? new Date(_data[\"termBeginDate\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): PeTerm {\n data = typeof data === 'object' ? data : {};\n let result = new PeTerm();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"termCode\"] = this.termCode;\n data[\"description\"] = this.description;\n data[\"termBeginDate\"] = this.termBeginDate ? this.termBeginDate.toISOString() : undefined;\n return data;\n }\n}\n\nexport interface IPeTerm {\n termCode?: string | undefined;\n description?: string | undefined;\n termBeginDate?: Date | undefined;\n}\n\nexport class ProgramCoursesVM implements IProgramCoursesVM {\n termCode?: number;\n schoolPrefix?: string | undefined;\n programPrefix?: string | undefined;\n courses?: CourseVM[] | undefined;\n\n constructor(data?: IProgramCoursesVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.termCode = _data[\"termCode\"];\n this.schoolPrefix = _data[\"schoolPrefix\"];\n this.programPrefix = _data[\"programPrefix\"];\n if (Array.isArray(_data[\"courses\"])) {\n this.courses = [] as any;\n for (let item of _data[\"courses\"])\n this.courses!.push(CourseVM.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProgramCoursesVM {\n data = typeof data === 'object' ? data : {};\n let result = new ProgramCoursesVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"termCode\"] = this.termCode;\n data[\"schoolPrefix\"] = this.schoolPrefix;\n data[\"programPrefix\"] = this.programPrefix;\n if (Array.isArray(this.courses)) {\n data[\"courses\"] = [];\n for (let item of this.courses)\n data[\"courses\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProgramCoursesVM {\n termCode?: number;\n schoolPrefix?: string | undefined;\n programPrefix?: string | undefined;\n courses?: CourseVM[] | undefined;\n}\n\nexport class ProgramDetailsVM implements IProgramDetailsVM {\n termCode?: number;\n prefix!: string;\n name!: string;\n sortOrder!: number;\n programNote?: string | undefined;\n departmentClearances?: DepartmentClearance[] | undefined;\n\n constructor(data?: IProgramDetailsVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.termCode = _data[\"termCode\"];\n this.prefix = _data[\"prefix\"];\n this.name = _data[\"name\"];\n this.sortOrder = _data[\"sortOrder\"];\n this.programNote = _data[\"programNote\"];\n if (Array.isArray(_data[\"departmentClearances\"])) {\n this.departmentClearances = [] as any;\n for (let item of _data[\"departmentClearances\"])\n this.departmentClearances!.push(DepartmentClearance.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProgramDetailsVM {\n data = typeof data === 'object' ? data : {};\n let result = new ProgramDetailsVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"termCode\"] = this.termCode;\n data[\"prefix\"] = this.prefix;\n data[\"name\"] = this.name;\n data[\"sortOrder\"] = this.sortOrder;\n data[\"programNote\"] = this.programNote;\n if (Array.isArray(this.departmentClearances)) {\n data[\"departmentClearances\"] = [];\n for (let item of this.departmentClearances)\n data[\"departmentClearances\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProgramDetailsVM {\n termCode?: number;\n prefix: string;\n name: string;\n sortOrder: number;\n programNote?: string | undefined;\n departmentClearances?: DepartmentClearance[] | undefined;\n}\n\nexport class ProgramVM implements IProgramVM {\n termCode?: number;\n prefix!: string;\n name!: string;\n sortOrder!: number;\n schools?: SchoolVM[] | undefined;\n courses?: CourseVM[] | undefined;\n programNote?: string | undefined;\n departmentClearances?: DepartmentClearance[] | undefined;\n\n constructor(data?: IProgramVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.termCode = _data[\"termCode\"];\n this.prefix = _data[\"prefix\"];\n this.name = _data[\"name\"];\n this.sortOrder = _data[\"sortOrder\"];\n if (Array.isArray(_data[\"schools\"])) {\n this.schools = [] as any;\n for (let item of _data[\"schools\"])\n this.schools!.push(SchoolVM.fromJS(item));\n }\n if (Array.isArray(_data[\"courses\"])) {\n this.courses = [] as any;\n for (let item of _data[\"courses\"])\n this.courses!.push(CourseVM.fromJS(item));\n }\n this.programNote = _data[\"programNote\"];\n if (Array.isArray(_data[\"departmentClearances\"])) {\n this.departmentClearances = [] as any;\n for (let item of _data[\"departmentClearances\"])\n this.departmentClearances!.push(DepartmentClearance.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProgramVM {\n data = typeof data === 'object' ? data : {};\n let result = new ProgramVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"termCode\"] = this.termCode;\n data[\"prefix\"] = this.prefix;\n data[\"name\"] = this.name;\n data[\"sortOrder\"] = this.sortOrder;\n if (Array.isArray(this.schools)) {\n data[\"schools\"] = [];\n for (let item of this.schools)\n data[\"schools\"].push(item.toJSON());\n }\n if (Array.isArray(this.courses)) {\n data[\"courses\"] = [];\n for (let item of this.courses)\n data[\"courses\"].push(item.toJSON());\n }\n data[\"programNote\"] = this.programNote;\n if (Array.isArray(this.departmentClearances)) {\n data[\"departmentClearances\"] = [];\n for (let item of this.departmentClearances)\n data[\"departmentClearances\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProgramVM {\n termCode?: number;\n prefix: string;\n name: string;\n sortOrder: number;\n schools?: SchoolVM[] | undefined;\n courses?: CourseVM[] | undefined;\n programNote?: string | undefined;\n departmentClearances?: DepartmentClearance[] | undefined;\n}\n\nexport class RequisiteVM implements IRequisiteVM {\n order?: number;\n requiredCourses?: number;\n courseOptions?: CourseCodeVM[] | undefined;\n\n constructor(data?: IRequisiteVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.order = _data[\"order\"];\n this.requiredCourses = _data[\"requiredCourses\"];\n if (Array.isArray(_data[\"courseOptions\"])) {\n this.courseOptions = [] as any;\n for (let item of _data[\"courseOptions\"])\n this.courseOptions!.push(CourseCodeVM.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): RequisiteVM {\n data = typeof data === 'object' ? data : {};\n let result = new RequisiteVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"order\"] = this.order;\n data[\"requiredCourses\"] = this.requiredCourses;\n if (Array.isArray(this.courseOptions)) {\n data[\"courseOptions\"] = [];\n for (let item of this.courseOptions)\n data[\"courseOptions\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IRequisiteVM {\n order?: number;\n requiredCourses?: number;\n courseOptions?: CourseCodeVM[] | undefined;\n}\n\nexport enum RestrictionType {\n Inclusive = \"Inclusive\",\n Exclusive = \"Exclusive\",\n}\n\nexport class RestrictionVm implements IRestrictionVm {\n groupCode?: string | undefined;\n groupDescription?: string | undefined;\n restrictionCode?: string | undefined;\n restriction?: RestrictionType;\n\n constructor(data?: IRestrictionVm) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.groupCode = _data[\"groupCode\"];\n this.groupDescription = _data[\"groupDescription\"];\n this.restrictionCode = _data[\"restrictionCode\"];\n this.restriction = _data[\"restriction\"];\n }\n }\n\n static fromJS(data: any): RestrictionVm {\n data = typeof data === 'object' ? data : {};\n let result = new RestrictionVm();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"groupCode\"] = this.groupCode;\n data[\"groupDescription\"] = this.groupDescription;\n data[\"restrictionCode\"] = this.restrictionCode;\n data[\"restriction\"] = this.restriction;\n return data;\n }\n}\n\nexport interface IRestrictionVm {\n groupCode?: string | undefined;\n groupDescription?: string | undefined;\n restrictionCode?: string | undefined;\n restriction?: RestrictionType;\n}\n\nexport enum RoleType {\n None = \"None\",\n Student = \"Student\",\n Faculty = \"Faculty\",\n Admin = \"Admin\",\n Dev = \"Dev\",\n}\n\nexport class ScheduleVM implements IScheduleVM {\n dayCode?: string | undefined;\n days?: string[] | undefined;\n startTime?: string | undefined;\n endTime?: string | undefined;\n location?: string | undefined;\n building?: string | undefined;\n room?: string | undefined;\n sectionLocationSqNumber?: number | undefined;\n readonly buildingRoom?: string | undefined;\n\n constructor(data?: IScheduleVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.dayCode = _data[\"dayCode\"];\n if (Array.isArray(_data[\"days\"])) {\n this.days = [] as any;\n for (let item of _data[\"days\"])\n this.days!.push(item);\n }\n this.startTime = _data[\"startTime\"];\n this.endTime = _data[\"endTime\"];\n this.location = _data[\"location\"];\n this.building = _data[\"building\"];\n this.room = _data[\"room\"];\n this.sectionLocationSqNumber = _data[\"sectionLocationSqNumber\"];\n (this).buildingRoom = _data[\"buildingRoom\"];\n }\n }\n\n static fromJS(data: any): ScheduleVM {\n data = typeof data === 'object' ? data : {};\n let result = new ScheduleVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"dayCode\"] = this.dayCode;\n if (Array.isArray(this.days)) {\n data[\"days\"] = [];\n for (let item of this.days)\n data[\"days\"].push(item);\n }\n data[\"startTime\"] = this.startTime;\n data[\"endTime\"] = this.endTime;\n data[\"location\"] = this.location;\n data[\"building\"] = this.building;\n data[\"room\"] = this.room;\n data[\"sectionLocationSqNumber\"] = this.sectionLocationSqNumber;\n data[\"buildingRoom\"] = this.buildingRoom;\n return data;\n }\n}\n\nexport interface IScheduleVM {\n dayCode?: string | undefined;\n days?: string[] | undefined;\n startTime?: string | undefined;\n endTime?: string | undefined;\n location?: string | undefined;\n building?: string | undefined;\n room?: string | undefined;\n sectionLocationSqNumber?: number | undefined;\n buildingRoom?: string | undefined;\n}\n\nexport class SchoolVM implements ISchoolVM {\n termCode?: number;\n prefix!: string;\n name!: string;\n sortOrder!: number;\n programs?: ProgramVM[] | undefined;\n\n constructor(data?: ISchoolVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.termCode = _data[\"termCode\"];\n this.prefix = _data[\"prefix\"];\n this.name = _data[\"name\"];\n this.sortOrder = _data[\"sortOrder\"];\n if (Array.isArray(_data[\"programs\"])) {\n this.programs = [] as any;\n for (let item of _data[\"programs\"])\n this.programs!.push(ProgramVM.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): SchoolVM {\n data = typeof data === 'object' ? data : {};\n let result = new SchoolVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"termCode\"] = this.termCode;\n data[\"prefix\"] = this.prefix;\n data[\"name\"] = this.name;\n data[\"sortOrder\"] = this.sortOrder;\n if (Array.isArray(this.programs)) {\n data[\"programs\"] = [];\n for (let item of this.programs)\n data[\"programs\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ISchoolVM {\n termCode?: number;\n prefix: string;\n name: string;\n sortOrder: number;\n programs?: ProgramVM[] | undefined;\n}\n\nexport class SectionVM implements ISectionVM {\n termCode?: string | undefined;\n sisSectionId?: string | undefined;\n linkCode?: string | undefined;\n rnrSessionId?: number;\n peSectionId?: number;\n courseId?: number;\n hasDClearance?: boolean;\n classType?: string | undefined;\n name?: string | undefined;\n notes?: string | undefined;\n description?: string | undefined;\n group?: string | undefined;\n schedule?: ScheduleVM[] | undefined;\n totalSeats?: number | undefined;\n registeredSeats?: number | undefined;\n rnrMode?: string | undefined;\n session?: SessionVM;\n units?: string[] | undefined;\n instructors?: InstructorVM[] | undefined;\n syllabus?: string[] | undefined;\n isCancelled?: boolean;\n readonly isFull?: boolean;\n rnrModeCode?: string | undefined;\n\n constructor(data?: ISectionVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.termCode = _data[\"termCode\"];\n this.sisSectionId = _data[\"sisSectionId\"];\n this.linkCode = _data[\"linkCode\"];\n this.rnrSessionId = _data[\"rnrSessionId\"];\n this.peSectionId = _data[\"peSectionId\"];\n this.courseId = _data[\"courseId\"];\n this.hasDClearance = _data[\"hasDClearance\"];\n this.classType = _data[\"classType\"];\n this.name = _data[\"name\"];\n this.notes = _data[\"notes\"];\n this.description = _data[\"description\"];\n this.group = _data[\"group\"];\n if (Array.isArray(_data[\"schedule\"])) {\n this.schedule = [] as any;\n for (let item of _data[\"schedule\"])\n this.schedule!.push(ScheduleVM.fromJS(item));\n }\n this.totalSeats = _data[\"totalSeats\"];\n this.registeredSeats = _data[\"registeredSeats\"];\n this.rnrMode = _data[\"rnrMode\"];\n this.session = _data[\"session\"] ? SessionVM.fromJS(_data[\"session\"]) : undefined;\n if (Array.isArray(_data[\"units\"])) {\n this.units = [] as any;\n for (let item of _data[\"units\"])\n this.units!.push(item);\n }\n if (Array.isArray(_data[\"instructors\"])) {\n this.instructors = [] as any;\n for (let item of _data[\"instructors\"])\n this.instructors!.push(InstructorVM.fromJS(item));\n }\n if (Array.isArray(_data[\"syllabus\"])) {\n this.syllabus = [] as any;\n for (let item of _data[\"syllabus\"])\n this.syllabus!.push(item);\n }\n this.isCancelled = _data[\"isCancelled\"];\n (this).isFull = _data[\"isFull\"];\n this.rnrModeCode = _data[\"rnrModeCode\"];\n }\n }\n\n static fromJS(data: any): SectionVM {\n data = typeof data === 'object' ? data : {};\n let result = new SectionVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"termCode\"] = this.termCode;\n data[\"sisSectionId\"] = this.sisSectionId;\n data[\"linkCode\"] = this.linkCode;\n data[\"rnrSessionId\"] = this.rnrSessionId;\n data[\"peSectionId\"] = this.peSectionId;\n data[\"courseId\"] = this.courseId;\n data[\"hasDClearance\"] = this.hasDClearance;\n data[\"classType\"] = this.classType;\n data[\"name\"] = this.name;\n data[\"notes\"] = this.notes;\n data[\"description\"] = this.description;\n data[\"group\"] = this.group;\n if (Array.isArray(this.schedule)) {\n data[\"schedule\"] = [];\n for (let item of this.schedule)\n data[\"schedule\"].push(item.toJSON());\n }\n data[\"totalSeats\"] = this.totalSeats;\n data[\"registeredSeats\"] = this.registeredSeats;\n data[\"rnrMode\"] = this.rnrMode;\n data[\"session\"] = this.session ? this.session.toJSON() : undefined;\n if (Array.isArray(this.units)) {\n data[\"units\"] = [];\n for (let item of this.units)\n data[\"units\"].push(item);\n }\n if (Array.isArray(this.instructors)) {\n data[\"instructors\"] = [];\n for (let item of this.instructors)\n data[\"instructors\"].push(item.toJSON());\n }\n if (Array.isArray(this.syllabus)) {\n data[\"syllabus\"] = [];\n for (let item of this.syllabus)\n data[\"syllabus\"].push(item);\n }\n data[\"isCancelled\"] = this.isCancelled;\n data[\"isFull\"] = this.isFull;\n data[\"rnrModeCode\"] = this.rnrModeCode;\n return data;\n }\n}\n\nexport interface ISectionVM {\n termCode?: string | undefined;\n sisSectionId?: string | undefined;\n linkCode?: string | undefined;\n rnrSessionId?: number;\n peSectionId?: number;\n courseId?: number;\n hasDClearance?: boolean;\n classType?: string | undefined;\n name?: string | undefined;\n notes?: string | undefined;\n description?: string | undefined;\n group?: string | undefined;\n schedule?: ScheduleVM[] | undefined;\n totalSeats?: number | undefined;\n registeredSeats?: number | undefined;\n rnrMode?: string | undefined;\n session?: SessionVM;\n units?: string[] | undefined;\n instructors?: InstructorVM[] | undefined;\n syllabus?: string[] | undefined;\n isCancelled?: boolean;\n isFull?: boolean;\n rnrModeCode?: string | undefined;\n}\n\nexport class SessionVM implements ISessionVM {\n termCode?: string | undefined;\n rnrSessionCode?: string | undefined;\n description?: string | undefined;\n rnrSessionId?: number;\n\n constructor(data?: ISessionVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.termCode = _data[\"termCode\"];\n this.rnrSessionCode = _data[\"rnrSessionCode\"];\n this.description = _data[\"description\"];\n this.rnrSessionId = _data[\"rnrSessionId\"];\n }\n }\n\n static fromJS(data: any): SessionVM {\n data = typeof data === 'object' ? data : {};\n let result = new SessionVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"termCode\"] = this.termCode;\n data[\"rnrSessionCode\"] = this.rnrSessionCode;\n data[\"description\"] = this.description;\n data[\"rnrSessionId\"] = this.rnrSessionId;\n return data;\n }\n}\n\nexport interface ISessionVM {\n termCode?: string | undefined;\n rnrSessionCode?: string | undefined;\n description?: string | undefined;\n rnrSessionId?: number;\n}\n\nexport class Term implements ITerm {\n termCode?: number;\n createdBy?: string | undefined;\n updatedBy?: string | undefined;\n dateActive?: Date | undefined;\n dateArchived?: Date | undefined;\n dateCreated?: Date | undefined;\n dateModified?: Date | undefined;\n configuration?: Configuration;\n\n constructor(data?: ITerm) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.termCode = _data[\"termCode\"];\n this.createdBy = _data[\"createdBy\"];\n this.updatedBy = _data[\"updatedBy\"];\n this.dateActive = _data[\"dateActive\"] ? new Date(_data[\"dateActive\"].toString()) : undefined;\n this.dateArchived = _data[\"dateArchived\"] ? new Date(_data[\"dateArchived\"].toString()) : undefined;\n this.dateCreated = _data[\"dateCreated\"] ? new Date(_data[\"dateCreated\"].toString()) : undefined;\n this.dateModified = _data[\"dateModified\"] ? new Date(_data[\"dateModified\"].toString()) : undefined;\n this.configuration = _data[\"configuration\"] ? Configuration.fromJS(_data[\"configuration\"]) : undefined;\n }\n }\n\n static fromJS(data: any): Term {\n data = typeof data === 'object' ? data : {};\n let result = new Term();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"termCode\"] = this.termCode;\n data[\"createdBy\"] = this.createdBy;\n data[\"updatedBy\"] = this.updatedBy;\n data[\"dateActive\"] = this.dateActive ? this.dateActive.toISOString() : undefined;\n data[\"dateArchived\"] = this.dateArchived ? this.dateArchived.toISOString() : undefined;\n data[\"dateCreated\"] = this.dateCreated ? this.dateCreated.toISOString() : undefined;\n data[\"dateModified\"] = this.dateModified ? this.dateModified.toISOString() : undefined;\n data[\"configuration\"] = this.configuration ? this.configuration.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITerm {\n termCode?: number;\n createdBy?: string | undefined;\n updatedBy?: string | undefined;\n dateActive?: Date | undefined;\n dateArchived?: Date | undefined;\n dateCreated?: Date | undefined;\n dateModified?: Date | undefined;\n configuration?: Configuration;\n}\n\nexport class TermAddVM implements ITermAddVM {\n season!: TermSeason;\n year!: number;\n dateActive!: Date;\n dateArchived!: Date;\n copiedFromTermCode?: number | undefined;\n\n constructor(data?: ITermAddVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.season = _data[\"season\"];\n this.year = _data[\"year\"];\n this.dateActive = _data[\"dateActive\"] ? new Date(_data[\"dateActive\"].toString()) : undefined;\n this.dateArchived = _data[\"dateArchived\"] ? new Date(_data[\"dateArchived\"].toString()) : undefined;\n this.copiedFromTermCode = _data[\"copiedFromTermCode\"];\n }\n }\n\n static fromJS(data: any): TermAddVM {\n data = typeof data === 'object' ? data : {};\n let result = new TermAddVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"season\"] = this.season;\n data[\"year\"] = this.year;\n data[\"dateActive\"] = this.dateActive ? this.dateActive.toISOString() : undefined;\n data[\"dateArchived\"] = this.dateArchived ? this.dateArchived.toISOString() : undefined;\n data[\"copiedFromTermCode\"] = this.copiedFromTermCode;\n return data;\n }\n}\n\nexport interface ITermAddVM {\n season: TermSeason;\n year: number;\n dateActive: Date;\n dateArchived: Date;\n copiedFromTermCode?: number | undefined;\n}\n\nexport class TermCreateVM implements ITermCreateVM {\n season?: TermSeason;\n year?: number;\n lastDropDate?: Date;\n\n constructor(data?: ITermCreateVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.season = _data[\"season\"];\n this.year = _data[\"year\"];\n this.lastDropDate = _data[\"lastDropDate\"] ? new Date(_data[\"lastDropDate\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): TermCreateVM {\n data = typeof data === 'object' ? data : {};\n let result = new TermCreateVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"season\"] = this.season;\n data[\"year\"] = this.year;\n data[\"lastDropDate\"] = this.lastDropDate ? this.lastDropDate.toISOString() : undefined;\n return data;\n }\n}\n\nexport interface ITermCreateVM {\n season?: TermSeason;\n year?: number;\n lastDropDate?: Date;\n}\n\nexport class TermImportVM implements ITermImportVM {\n termCode!: number;\n dateActive!: Date;\n dateArchived!: Date;\n configuration!: ConfigurationVM;\n\n constructor(data?: ITermImportVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.configuration = new ConfigurationVM();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.termCode = _data[\"termCode\"];\n this.dateActive = _data[\"dateActive\"] ? new Date(_data[\"dateActive\"].toString()) : undefined;\n this.dateArchived = _data[\"dateArchived\"] ? new Date(_data[\"dateArchived\"].toString()) : undefined;\n this.configuration = _data[\"configuration\"] ? ConfigurationVM.fromJS(_data[\"configuration\"]) : new ConfigurationVM();\n }\n }\n\n static fromJS(data: any): TermImportVM {\n data = typeof data === 'object' ? data : {};\n let result = new TermImportVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"termCode\"] = this.termCode;\n data[\"dateActive\"] = this.dateActive ? this.dateActive.toISOString() : undefined;\n data[\"dateArchived\"] = this.dateArchived ? this.dateArchived.toISOString() : undefined;\n data[\"configuration\"] = this.configuration ? this.configuration.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITermImportVM {\n termCode: number;\n dateActive: Date;\n dateArchived: Date;\n configuration: ConfigurationVM;\n}\n\nexport enum TermSeason {\n Spring = \"Spring\",\n Summer = \"Summer\",\n Fall = \"Fall\",\n}\n\nexport enum TermStatus {\n Draft = \"Draft\",\n Active = \"Active\",\n Archived = \"Archived\",\n}\n\nexport class TermVM implements ITermVM {\n termCode!: number;\n season!: TermSeason;\n year!: number;\n readonly seasonName!: string;\n statusCodes?: TermStatus[] | undefined;\n createdBy?: string | undefined;\n updatedBy?: string | undefined;\n dateActive?: Date | undefined;\n dateArchived?: Date | undefined;\n dateCreated?: Date | undefined;\n dateModified?: Date | undefined;\n createdByUser?: UserVM;\n\n constructor(data?: ITermVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.termCode = _data[\"termCode\"];\n this.season = _data[\"season\"];\n this.year = _data[\"year\"];\n (this).seasonName = _data[\"seasonName\"];\n if (Array.isArray(_data[\"statusCodes\"])) {\n this.statusCodes = [] as any;\n for (let item of _data[\"statusCodes\"])\n this.statusCodes!.push(item);\n }\n this.createdBy = _data[\"createdBy\"];\n this.updatedBy = _data[\"updatedBy\"];\n this.dateActive = _data[\"dateActive\"] ? new Date(_data[\"dateActive\"].toString()) : undefined;\n this.dateArchived = _data[\"dateArchived\"] ? new Date(_data[\"dateArchived\"].toString()) : undefined;\n this.dateCreated = _data[\"dateCreated\"] ? new Date(_data[\"dateCreated\"].toString()) : undefined;\n this.dateModified = _data[\"dateModified\"] ? new Date(_data[\"dateModified\"].toString()) : undefined;\n this.createdByUser = _data[\"createdByUser\"] ? UserVM.fromJS(_data[\"createdByUser\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TermVM {\n data = typeof data === 'object' ? data : {};\n let result = new TermVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"termCode\"] = this.termCode;\n data[\"season\"] = this.season;\n data[\"year\"] = this.year;\n data[\"seasonName\"] = this.seasonName;\n if (Array.isArray(this.statusCodes)) {\n data[\"statusCodes\"] = [];\n for (let item of this.statusCodes)\n data[\"statusCodes\"].push(item);\n }\n data[\"createdBy\"] = this.createdBy;\n data[\"updatedBy\"] = this.updatedBy;\n data[\"dateActive\"] = this.dateActive ? this.dateActive.toISOString() : undefined;\n data[\"dateArchived\"] = this.dateArchived ? this.dateArchived.toISOString() : undefined;\n data[\"dateCreated\"] = this.dateCreated ? this.dateCreated.toISOString() : undefined;\n data[\"dateModified\"] = this.dateModified ? this.dateModified.toISOString() : undefined;\n data[\"createdByUser\"] = this.createdByUser ? this.createdByUser.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITermVM {\n termCode: number;\n season: TermSeason;\n year: number;\n seasonName: string;\n statusCodes?: TermStatus[] | undefined;\n createdBy?: string | undefined;\n updatedBy?: string | undefined;\n dateActive?: Date | undefined;\n dateArchived?: Date | undefined;\n dateCreated?: Date | undefined;\n dateModified?: Date | undefined;\n createdByUser?: UserVM;\n}\n\nexport class UserVM implements IUserVM {\n id?: string;\n firstName?: string | undefined;\n lastName?: string | undefined;\n readonly fullName?: string | undefined;\n uscId?: string | undefined;\n role?: RoleType;\n\n constructor(data?: IUserVM) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.firstName = _data[\"firstName\"];\n this.lastName = _data[\"lastName\"];\n (this).fullName = _data[\"fullName\"];\n this.uscId = _data[\"uscId\"];\n this.role = _data[\"role\"];\n }\n }\n\n static fromJS(data: any): UserVM {\n data = typeof data === 'object' ? data : {};\n let result = new UserVM();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"firstName\"] = this.firstName;\n data[\"lastName\"] = this.lastName;\n data[\"fullName\"] = this.fullName;\n data[\"uscId\"] = this.uscId;\n data[\"role\"] = this.role;\n return data;\n }\n}\n\nexport interface IUserVM {\n id?: string;\n firstName?: string | undefined;\n lastName?: string | undefined;\n fullName?: string | undefined;\n uscId?: string | undefined;\n role?: RoleType;\n}\n\nexport class ApiException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): Observable {\n if (result !== null && result !== undefined)\n return _observableThrow(result);\n else\n return _observableThrow(new ApiException(message, status, response, headers, null));\n}\n\nfunction blobToText(blob: any): Observable {\n return new Observable((observer: any) => {\n if (!blob) {\n observer.next(\"\");\n observer.complete();\n } else {\n let reader = new FileReader();\n reader.onload = event => {\n observer.next((event.target as any).result);\n observer.complete();\n };\n reader.readAsText(blob);\n }\n });\n}\n","import { Injectable, SecurityContext } from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\nimport Swal, { SweetAlertOptions } from 'sweetalert2'\n\nenum AlertTypes {\n Error = 0,\n Success = 1,\n Info = 2,\n Warning = 4,\n}\n\n@Injectable()\nexport class AlertService {\n defaults: SweetAlertOptions = {\n width: 560,\n heightAuto: true,\n padding: 0,\n background: '#F7F7F5',\n showConfirmButton: false,\n position: 'top',\n backdrop: false,\n showCloseButton: true,\n allowEscapeKey: true\n }\n\n constructor(private sanitizer: DomSanitizer) {\n }\n\n error(message: string, title: string = 'System Error'): void {\n this.fireAlert(AlertTypes.Error, message, title);\n }\n\n success(message: string, title: string = 'Success'): void {\n this.fireAlert(AlertTypes.Success, message, title);\n }\n\n private fireAlert(alertType: AlertTypes, message: string, title: string): void {\n let iconFileName = '';\n let alertTypeClass = '';\n\n switch (alertType) {\n case AlertTypes.Error:\n iconFileName = 'stop_black.svg';\n alertTypeClass = 'error';\n break;\n case AlertTypes.Success:\n iconFileName = 'success.svg';\n alertTypeClass = 'success';\n break;\n case AlertTypes.Info:\n alertTypeClass = 'info';\n break;\n case AlertTypes.Warning:\n alertTypeClass = 'warning';\n break;\n default:\n break;\n }\n\n const html = `\n
\n
\"icon\"
\n
\n
${ title }
\n
${ message }
\n
\n
\n `\n\n const sanitizedHtml = this.sanitizer.sanitize(SecurityContext.HTML, html);\n\n Swal.fire({\n ...this.defaults,\n html: sanitizedHtml ? sanitizedHtml : '',\n customClass: {\n popup: `swal-custom-container ${ alertTypeClass }`,\n closeButton: 'swal-custom-close-button',\n },\n })\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { WebRegService } from \"@app/core/services/api-request.service\";\nimport { map, Observable } from \"rxjs\";\nimport { AnnouncementVM } from \"./WebRegApiClient\";\nimport { HttpClient } from \"@angular/common/http\";\n\n\n@Injectable()\nexport class AnnouncementService {\n\n\n constructor(private apiService: WebRegService, private http: HttpClient) {\n }\n\n getAnnouncement(): Observable {\n // let a = this.http\n // .get(\"/announcement/getannouncement\")\n // .pipe(map(data => console.log(data)));\n\n // return this.http.get(\"/announcement/getannouncement\");\n\n return this.apiService.apiAnnouncementGetAnnouncement()\n .pipe(map(resp => {\n return resp;\n }));\n }\n\n postAnnouncement(message: AnnouncementVM): Observable {\n return this.apiService.apiAnnouncementPostAnnouncement(message)\n .pipe(map(resp => {\n return resp;\n }));\n }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable, Optional } from \"@angular/core\";\nimport { API_BASE_URL, Client } from \"@app/core/services/WebRegApiClient\";\nimport { AuthenticationService } from \"./authentication.service\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class WebRegService extends Client {\n\n constructor(http: HttpClient,\n private auth: AuthenticationService,\n @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n super(http, baseUrl);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { catchError, filter, map, Observable, of, shareReplay } from 'rxjs';\n\nconst ANONYMOUS: Session = null;\nconst CACHE_SIZE = 1;\n\n@Injectable({ providedIn: 'root' })\nexport class AuthenticationService {\n private session$: Observable | null = null\n\n\n constructor(private http: HttpClient) {\n }\n\n public getSession(ignoreCache: boolean = false) {\n if (!this.session$ || ignoreCache) {\n this.session$ = this.http.get('bff/user').pipe(\n catchError(err => {\n return of(ANONYMOUS);\n }),\n shareReplay(CACHE_SIZE)\n );\n }\n return this.session$;\n }\n\n public getIsAuthenticated(ignoreCache: boolean = false) {\n return this.getSession(ignoreCache).pipe(\n map(UserIsAuthenticated)\n );\n }\n\n public getIsAnonymous(ignoreCache: boolean = false) {\n return this.getSession(ignoreCache).pipe(\n map(UserIsAnonymous)\n );\n }\n\n public getUsername(ignoreCache: boolean = false) {\n return this.getSession(ignoreCache).pipe(\n filter(UserIsAuthenticated),\n map(s => s.find(c => c.type === 'name')?.value)\n );\n }\n\n public getIsAdmin(ignoreCache: boolean = false) {\n return this.getSession(ignoreCache).pipe(\n filter(UserIsAuthenticated),\n map(s => s.find(c => c.type === 'socrole')?.value === 'admin'\n || s.find(c => c.type === 'socrole')?.value === 'dev')\n );\n }\n\n public getIsDev(ignoreCache: boolean = false) {\n return this.getSession(ignoreCache).pipe(\n filter(UserIsAuthenticated),\n map(s => s.find(c => c.type === 'socrole')?.value === 'dev')\n );\n }\n\n public getLogoutUrl(ignoreCache: boolean = false) {\n return this.getSession(ignoreCache).pipe(\n filter(UserIsAuthenticated),\n map(s => s.find(c => c.type === 'bff:logout_url')?.value)\n );\n }\n}\n\nexport interface Claim {\n type: string;\n value: string;\n}\n\nexport type Session = Claim[] | null;\n\nfunction UserIsAuthenticated(s: Session): s is Claim[] {\n return s !== null;\n}\n\nfunction UserIsAnonymous(s: Session): s is null {\n return s === null;\n}\n","import { Injectable } from \"@angular/core\";\nimport { COURSES, ICourseModel } from \"@app/core/mocks/course.model\";\nimport { map, Observable, of } from \"rxjs\";\nimport { getMinutesFromTime24 } from \"./dateTime.service\";\nimport {\n FilterDefault,\n IFilterOptions\n} from \"@modules/main/term/components/search/filter-dialog/filter-dialog.component\";\nimport { WebRegService } from \"./api-request.service\";\n\n\n@Injectable()\nexport class CoursesService {\n\n constructor(private apiService: WebRegService) {\n }\n\n getCoursesHavePrefixInTerm(prefix: string, term: number): Observable {\n return this.apiService.apiPeCoursesHavePrefixInTerm(prefix, term)\n .pipe(map(resp => {\n return resp;\n }));\n }\n\n getDoesCourseExist(courseCode: string): Observable {\n return this.apiService.apiPeDoesCourseExist(courseCode)\n .pipe(map(resp => {\n return resp;\n }));\n }\n\n //** Reactive UI Prototype Remnants - Will Probably jus be removed as replaced. */\n getByCourseId(id: number) {\n return of(COURSES.filter(c => c.courseId === id))\n }\n\n getBySchoolPrefixDepartmentPrefix(termCode: string | undefined,\n schoolPrefix: string | undefined,\n departmentPrefix: string | undefined,\n ignoreCase: boolean = true): Observable {\n // if (ignoreCase) {\n // return of((COURSES.filter(x => x.termCode?.toString().toLowerCase() === termCode?.toLowerCase()\n // && x.levelTwoPrefix?.toLowerCase().includes(departmentPrefix?.toLowerCase() || '')).map(r => r)));\n // }\n\n return of((COURSES.filter(x => {\n if (x.termCode?.toString() !== termCode\n || !departmentPrefix\n || !x.levelTwoPrefix) {\n return;\n }\n\n const levelTwoPrefix = ignoreCase ? x.levelTwoPrefix.toLowerCase() : x.levelOnePrefix;\n departmentPrefix = ignoreCase ? departmentPrefix.toLowerCase() : departmentPrefix;\n\n if (levelTwoPrefix?.includes(departmentPrefix)) {\n return x;\n }\n return;\n }).map(r => r).sort((a, b) => (parseInt(a.classNumber) - parseInt(b.classNumber)))));\n }\n\n searchQuick(termCode: number | undefined,\n searchTerm: string,\n ignoreCase: boolean = true,\n filters: IFilterOptions = FilterDefault): Observable {\n\n const termCourses = COURSES.filter(c => {\n if (!c.termCode || c.termCode !== termCode) {\n return;\n }\n\n termCode = termCode || 0;\n\n const title = (ignoreCase ? c.courseTitle?.toLowerCase() : c.courseTitle) || '';\n searchTerm = (ignoreCase ? searchTerm.toLowerCase() : searchTerm) || '';\n let sectionNames = c.sections?.flatMap(s => ignoreCase ? s.name?.toLowerCase() : s.name);\n const combinedId = `${c.prefix} ${c.classNumber}${c.sequence}`;\n const courseId = (ignoreCase ? combinedId?.toLowerCase() : combinedId) || '';\n\n if (title.includes(searchTerm)\n || sectionNames?.some(s => s?.includes(searchTerm))\n || courseId.includes(searchTerm)\n ) {\n\n return c;\n }\n\n return;\n });\n\n const filtered = this.applyFilters(termCourses, filters);\n return of(filtered);\n }\n\n searchByTitlePrefix(termCode: number | undefined,\n searchTerm: string,\n ignoreCase: boolean = true,\n filters: IFilterOptions = FilterDefault): ICourseModel[] {\n const courses = COURSES.filter(c => {\n if (!c.termCode || c.termCode !== termCode) {\n return;\n }\n\n let prefix = c.prefix || '';\n let title = c.courseTitle || '';\n searchTerm = searchTerm || '';\n termCode = termCode || 0;\n\n prefix = ignoreCase ? prefix.toLowerCase() : prefix;\n title = ignoreCase ? title.toLowerCase() : title;\n searchTerm = ignoreCase ? searchTerm.toLowerCase() : searchTerm;\n\n if (prefix.includes(searchTerm)\n || title.includes(searchTerm)) {\n return c;\n }\n\n return;\n });\n\n const filtered = this.applyFilters(courses, filters);\n return filtered;\n }\n\n searchByTitlePrefixDescription(termCode: number | undefined,\n searchTerm: string,\n ignoreCase: boolean = true,\n filters: IFilterOptions = FilterDefault): ICourseModel[] {\n const courses = COURSES.filter(c => {\n if (!c.termCode || c.termCode !== termCode) {\n return;\n }\n\n let prefix = c.prefix || '';\n let title = c.courseTitle || '';\n let description = c.description || '';\n searchTerm = searchTerm || '';\n termCode = termCode || 0;\n\n prefix = ignoreCase ? prefix.toLowerCase() : prefix;\n title = ignoreCase ? title.toLowerCase() : title;\n description = ignoreCase ? description.toLowerCase() : description;\n searchTerm = ignoreCase ? searchTerm.toLowerCase() : searchTerm;\n\n if (prefix.includes(searchTerm)\n || title.includes(searchTerm)\n || description.includes(searchTerm)) {\n return c;\n }\n\n return;\n });\n\n const filtered = this.applyFilters(courses, filters);\n return filtered;\n }\n\n searchByAll(termCode: number | undefined,\n searchTerm: string,\n ignoreCase: boolean = true,\n filters: IFilterOptions = FilterDefault): ICourseModel[] {\n\n searchTerm = (ignoreCase ? searchTerm?.toLowerCase() : searchTerm) || '';\n\n const courses = COURSES.filter(c => {\n if (!c.termCode || c.termCode !== termCode) {\n return;\n }\n\n const prefix = (ignoreCase ? c.prefix?.toLowerCase() : c.prefix) || '';\n const title = (ignoreCase ? c.courseTitle?.toLowerCase() : c.courseTitle) || '';\n const description = (ignoreCase ? c.description?.toLowerCase() : c.description) || '';\n const courseId = (ignoreCase ? c.courseId?.toString().toLowerCase() : c.courseId?.toString()) || '';\n const classNumber = (ignoreCase ? c.classNumber?.toLowerCase() : c.classNumber) || '';\n const courseNotes = (ignoreCase ? c.courseNotes?.toLowerCase() : c.courseNotes) || '';\n\n const combinedId = `${c.prefix} ${c.classNumber}${c.sequence}`;\n const catalogNumber = (ignoreCase ? combinedId?.toLowerCase() : combinedId) || '';\n\n if (prefix.includes(searchTerm)\n || title.includes(searchTerm)\n || description.includes(searchTerm)\n || courseId.includes(searchTerm)\n || classNumber.includes(searchTerm)\n || courseNotes.includes(searchTerm)\n || catalogNumber.includes(searchTerm)) {\n\n return c;\n }\n\n return;\n });\n\n return this.applyFilters(courses, filters);\n }\n\n search(termCode: string | undefined,\n searchValue: string,\n ignoreCase: boolean = true,\n filters: IFilterOptions = FilterDefault): Observable {\n const courses = COURSES.filter(c => {\n if (c.termCode?.toString() !== termCode\n || !c.courseTitle\n || !c.prefix) {\n return;\n }\n\n const prefix: string = ignoreCase ? c.prefix.toLowerCase() : c.prefix;\n const courseTitle: string = ignoreCase ? c.courseTitle.toLowerCase() : c.courseTitle;\n\n if (courseTitle.includes(searchValue) || prefix.includes(searchValue)) {\n return c;\n }\n\n return;\n });\n\n const filterd = this.applyFilters(courses, filters);\n return of(filterd);\n }\n\n private applyFilters(courses: ICourseModel[], filters: IFilterOptions = FilterDefault): ICourseModel[] {\n const requiredDayCodes = (filters?.days.length === 1 && filters.days[0] === 'Any')\n ? ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n : filters!.days;\n\n return courses.filter((course) =>\n (filters.units === 0 || filters.units === course.units)\n && course.sections?.some((section) =>\n section.locations?.some((location) =>\n location.dayCodes?.some((day) => requiredDayCodes.includes(day))\n && (location?.startTime && getMinutesFromTime24(location?.startTime) >= getMinutesFromTime24(filters!.timeRangeMin))\n && (location?.endTime && getMinutesFromTime24(location.endTime) <= getMinutesFromTime24(filters!.timeRangeMax))\n )\n )\n );\n }\n}\n","export function getMinutesFromTime24(timeString: string): number {\n const [hours, minutes] = timeString.split(':').map(Number);\n return hours * 60 + minutes;\n};\n\nexport function getTime24FromMinutes(totalMinutes: number): string {\n const hours = Math.floor(totalMinutes / 60);\n const minutes = totalMinutes % 60;\n return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`\n};\n\nexport function convert24HourTo12Hour(time: string): string {\n const timeArray = time.split(':');\n const hours24 = parseInt(timeArray[0], 10);\n const minutes = parseInt(timeArray[1], 10);\n\n const period = (hours24 < 12 || hours24 === 24) ? 'AM' : 'PM';\n const hours12 = hours24 <= 12 ? hours24 : (hours24 - 12);\n\n return `${hours12.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')} ${period}`;\n};\n","import { Injectable } from \"@angular/core\";\nimport { DEPARTMENTS, IDepartment } from \"@app/core/mocks/department.model\";\nimport { Observable, of } from \"rxjs\";\n\n\n@Injectable()\nexport class DepartmentsService {\n\n constructor() {\n }\n\n getDepartmentByPrefixCode(termCode: string | undefined, departmentPrefix: string | undefined): Observable {\n return of((DEPARTMENTS.filter(x => x.prefix === departmentPrefix)[0]));\n }\n\n searchDepartmentsBydescription(searchTerm: string | undefined,\n ignoreCase: boolean = true): IDepartment[] {\n return (DEPARTMENTS.filter(x => {\n if (!x.description || !searchTerm) {\n return;\n }\n\n const description = ignoreCase ? x.description.toLowerCase() : x.description;\n searchTerm = ignoreCase ? searchTerm.toLowerCase() : searchTerm;\n\n if (description.includes(searchTerm)) {\n return x;\n }\n\n return;\n }));\n }\n\n searchDepartmentsByDescriptionOrPrefixCode(searchTerm: string | undefined,\n ignoreCase: boolean = true): IDepartment[] {\n return (DEPARTMENTS.filter(x => {\n\n let prefix = x?.prefix || '';\n let description = x?.description || '';\n searchTerm = searchTerm || '';\n\n prefix = ignoreCase ? prefix.toLowerCase() : prefix;\n description = ignoreCase ? description.toLowerCase() : description;\n searchTerm = ignoreCase ? searchTerm?.toLowerCase() : searchTerm;\n\n if (prefix.includes(searchTerm)\n || description.includes(searchTerm)) {\n return x;\n }\n\n return;\n }));\n }\n\n getDepartmentsBySchoolCode(termCode: string | undefined, schoolPrefix: string | undefined): Observable {\n return of((DEPARTMENTS.filter(x => x.schoolPrefix === schoolPrefix).map(r => r)));\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { WebRegService } from \"@app/core/services/api-request.service\";\nimport { map, Observable } from \"rxjs\";\nimport { ICoursePrefixVM, IPeConfigurableSessionVM, IPeConfigurableTermVM, IPeSession } from \"./WebRegApiClient\";\n\n\n@Injectable()\nexport class PeService {\n\n constructor(private apiService: WebRegService) {\n }\n\n getConfigurableTermsFromPe(): Observable {\n return this.apiService.apiPeGetConfigurableTermsFromPe()\n .pipe(map(resp => resp.map(r => r.toJSON() as IPeConfigurableTermVM)));\n }\n\n getConfigurableSessions(termCode: number): Observable {\n return this.apiService.apiPeGetConfigurableSessionsByTermCode(termCode)\n .pipe(map(resp =>\n resp.map(r => r.toJSON() as IPeConfigurableSessionVM)))\n }\n\n getSessions(): Observable {\n return this.apiService.apiPeSessionsAll()\n .pipe(map(resp => resp.map(r => r.toJSON() as IPeSession)));\n }\n\n getSessionByRnrSessionId(rnrSessionId: number): Observable {\n return this.apiService.apiPeSessionByRnrSessionId(rnrSessionId)\n .pipe(map(resp => resp.toJSON() as IPeSession))\n }\n\n getCoursePrefixes(): Observable {\n return this.apiService.apiPeCoursePrefixesAll()\n .pipe(map(resp => resp.map(r => r.toJSON() as ICoursePrefixVM)));\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { WebRegService } from \"@app/core/services/api-request.service\";\nimport { map, Observable } from \"rxjs\";\nimport { IProgramDetailsVM, IProgramVM } from \"./WebRegApiClient\";\n\n\n@Injectable()\nexport class ProgramsService {\n\n constructor(private apiService: WebRegService) {\n }\n\n getAll(): Observable {\n return this.apiService.apiPeProgramsAll()\n .pipe(map(resp => resp.map(r => r.toJSON() as IProgramVM)))\n }\n\n getByTermCode(termCode: number): Observable {\n return this.apiService.apiProgramsTermCode(termCode)\n .pipe(map(resp => resp.map(r => r.toJSON() as IProgramVM)))\n }\n\n getByTermCodeAndSchoolCode(termCode: number, schoolCode: string): Observable {\n return this.apiService.apiProgramsTermCode(termCode)\n .pipe(map(resp => resp.map(r => r.toJSON() as IProgramVM)\n .filter(p => p.schools?.map(s => s.prefix).includes(schoolCode))\n ))\n }\n\n getDetails(termCode: number, schoolCode: string, programCode: string): Observable {\n return this.apiService.apiProgramsPrefix(termCode, schoolCode, programCode)\n .pipe(map(r => r.toJSON() as IProgramDetailsVM)\n );\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { WebRegService } from \"@app/core/services/api-request.service\";\nimport { map, Observable } from \"rxjs\";\nimport { SchoolVM } from \"./WebRegApiClient\";\n\n\n@Injectable()\nexport class SchoolsService {\n\n constructor(private apiService: WebRegService) {\n }\n\n // getAll(): Observable {\n // return this.apiService.peSchoolsAll()\n // .pipe(map(resp => resp.map(r => r.toJSON() as ISchoolVM)))\n // }\n\n getByTermCode(termCode: number | null): Observable {\n return this.apiService.apiSchoolsTermCode(termCode || 0)\n .pipe(map(resp => resp.map(r => r.toJSON() as SchoolVM)));\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { CustomToastrConfig } from \"@models/custom-toastr-config.interface\";\nimport { ActiveToast, ToastrService } from \"ngx-toastr\";\n\n\n@Injectable()\nexport class ToastNotificationService {\n // @ts-ignore\n defaults: CustomToastrConfig = {\n timeOut: 5000,\n extendedTimeOut: 5000,\n closeButton: true,\n cancelButton: false\n }\n\n constructor(private toastr: ToastrService) {\n }\n\n withCancel(message: string): ActiveToast {\n const config = {\n timeOut: 5000,\n extendedTimeOut: 5000,\n closeButton: true,\n cancelButton: true,\n progressBar: true,\n progressAnimation: \"increasing\"\n } as CustomToastrConfig;\n\n return this.fireToastr(message, config);\n }\n\n informational(message: string): ActiveToast {\n return this.fireToastr(message);\n }\n\n private fireToastr(message: string, config: CustomToastrConfig = this.defaults): ActiveToast {\n return this.toastr.success(\n message,\n '',\n config,\n )\n }\n}\n","import {\n ConfigurationAddSchoolOrProgramVM,\n ConfigurationDeleteProgramVM,\n ConfigurationDeleteSchoolVM,\n ConfigurationEditProgramVM,\n ConfigurationUpdateProgramSortOrdersVM,\n ConfigurationVM,\n IConfigurationVM\n} from \"@app/core/services/WebRegApiClient\";\nimport { ApiResponseErrorModel } from '@models/api-response-error.model';\nimport { createAction, props } from \"@ngrx/store\";\n\nexport const loadAll = createAction(\n \"[Admin] Load All Configurations\"\n);\n\nexport const configurationInserted = createAction(\n \"[Configurations Effect] Configuration Loaded\",\n props<{ configuration: IConfigurationVM }>()\n);\n\nexport const loadConfigurationByTermCode = createAction(\n \"[Configuration Effect] Load Configuration By Term Code\",\n props<{ termCode: number }>()\n);\n\nexport const loadConfigurationByTermCodeFailure = createAction(\n \"[Configuration Effect] Load Configuration By Term Code Failure\",\n props<{ error: ApiResponseErrorModel | string }>()\n);\n\n// CREATE\n\n// UPDATE\nexport const addSchoolOrProgram = createAction(\n \"[Admin Configurations] Add School or Program\",\n props<{ model: ConfigurationAddSchoolOrProgramVM }>()\n);\n\nexport const addSchoolOrProgramSuccess = createAction(\n \"[Admin Configurations] Configuration School or Program Successfully Added\",\n props<{ model: ConfigurationAddSchoolOrProgramVM, configuration: IConfigurationVM }>()\n);\n\nexport const addSchoolOrProgramFailure = createAction(\n \"[Admin Configurations] Add School or Program Failure\",\n props<{ model: ConfigurationAddSchoolOrProgramVM, error: ApiResponseErrorModel }>()\n);\n\nexport const editProgram = createAction(\n \"[Admin Configurations] Edit Program\",\n props<{ model: ConfigurationEditProgramVM }>()\n);\n\nexport const editProgramSuccess = createAction(\n \"[Admin Configurations] Configuration Program Successfully Edited\",\n props<{ model: ConfigurationEditProgramVM, configuration: IConfigurationVM }>()\n);\n\nexport const editProgramFailure = createAction(\n \"[Admin Configurations] Edit Program Failure\",\n props<{ model: ConfigurationEditProgramVM, error: ApiResponseErrorModel }>()\n);\n\nexport const updateSchoolSortOrders = createAction(\n \"[Admin Configurations] Update Sort Order of Schools\",\n props<{ configuration: ConfigurationVM }>()\n);\n\nexport const updateSchoolSortOrdersSuccess = createAction(\n \"[Admin Configurations] Successfully updated school sort orders\",\n props<{ configuration: IConfigurationVM }>()\n);\n\nexport const updateSchoolSortOrdersFailure = createAction(\n \"[Admin Configurations] Failed to update school sort orders\",\n props<{ model: ConfigurationVM, error: ApiResponseErrorModel }>()\n);\n\nexport const updateProgramSortOrders = createAction(\n \"[Admin Configurations] Update Sort Order of Programs\",\n props<{ model: ConfigurationUpdateProgramSortOrdersVM }>()\n);\n\nexport const updateProgramSortOrdersSuccess = createAction(\n \"[Admin Configurations] Successfully updated program sort orders\",\n props<{ model: ConfigurationUpdateProgramSortOrdersVM, configuration: IConfigurationVM }>()\n);\n\nexport const updateProgramSortOrdersFailure = createAction(\n \"[Admin Configurations] Failed to update program sort orders\",\n props<{ model: ConfigurationUpdateProgramSortOrdersVM, error: ApiResponseErrorModel }>()\n);\n\n// DELETE\n\nexport const removeConfigurationByTermCode = createAction(\n \"[Admin Configurations] Remove Configuration By Term Code\",\n props<{ termCode: number }>()\n);\n\nexport const removeConfiguration = createAction(\n \"[Admin Configurations] Remove Configuration\",\n props<{ configuration: IConfigurationVM }>()\n);\n\nexport const deleteSchool = createAction(\n \"[Admin Configurations] Delete School\",\n props<{ model: ConfigurationDeleteSchoolVM }>()\n);\n\nexport const deleteSchoolSuccess = createAction(\n \"[Admin Configurations] Configuration School Successfully Deleted\",\n props<{ model: ConfigurationDeleteSchoolVM, configuration: IConfigurationVM }>()\n);\n\nexport const deleteSchoolFailure = createAction(\n \"[Admin Configurations] Delete School Failure\",\n props<{ model: ConfigurationDeleteSchoolVM, error: ApiResponseErrorModel }>()\n);\n\nexport const deleteProgram = createAction(\n \"[Admin Configurations] Delete Program\",\n props<{ model: ConfigurationDeleteProgramVM }>()\n);\n\nexport const deleteProgramSuccess = createAction(\n \"[Admin Configurations] Configuration Program Successfully Deleted\",\n props<{ model: ConfigurationDeleteProgramVM, configuration: IConfigurationVM }>()\n);\n\nexport const deleteProgramFailure = createAction(\n \"[Admin Configurations] Delete Program Failure\",\n props<{ model: ConfigurationDeleteProgramVM, error: ApiResponseErrorModel }>()\n);\n\nexport const setIsConfigurationEditSuccessfullyCompleted = createAction(\n \"[Configuration Actions] Set IsConfigurationEditSuccessfullyCompleted\",\n props<{ value: boolean }>()\n);\n\n","import { IConfigurationVM } from \"@app/core/services/WebRegApiClient\";\nimport { ApiResponseErrorModel } from \"@models/api-response-error.model\";\nimport { createEntityAdapter, EntityState } from \"@ngrx/entity\";\nimport { createReducer, on } from \"@ngrx/store\";\nimport { ConfigurationActions } from \"./configurations-action-types\";\n\nexport interface ConfigurationsState extends EntityState {\n areConfigurationsLoaded: boolean;\n isConfigurationEditSuccessfullyCompleted: boolean;\n error: ApiResponseErrorModel | undefined;\n}\n\nexport function selectId(a: IConfigurationVM): number {\n return a.id;\n}\n\nexport const areConfigurationsLoaded = (state: ConfigurationsState) => state.areConfigurationsLoaded;\nexport const setIsConfigurationEditSuccessfullyCompleted = (state: ConfigurationsState) => state.isConfigurationEditSuccessfullyCompleted;\n\nexport const adapter = createEntityAdapter(\n {\n selectId: selectId\n }\n);\n\nexport const initialConfigurationsState = adapter.getInitialState({\n areConfigurationsLoaded: false,\n isConfigurationEditSuccessfullyCompleted: false,\n isConfigurationLoaded: false\n});\n\nexport const getErrorMessage = (state: ConfigurationsState) => state.error;\n\nexport const configurationsReducer = createReducer(\n initialConfigurationsState,\n\n on(ConfigurationActions.configurationInserted, (state, action) =>\n adapter.addOne(action.configuration, { ...state })\n ),\n\n on(ConfigurationActions.loadConfigurationByTermCodeFailure, (state, action) => {\n return {\n ...state,\n error: action.error\n }\n }\n ),\n\n on(ConfigurationActions.deleteSchoolSuccess, (state, action) =>\n adapter.setOne(action.configuration, {\n ...state\n })),\n\n on(ConfigurationActions.deleteSchoolFailure, (state, action) => {\n return {\n ...state,\n error: action.error\n }\n }\n ),\n\n on(ConfigurationActions.deleteProgramSuccess, (state, action) =>\n adapter.setOne(action.configuration, {\n ...state\n })),\n\n on(ConfigurationActions.deleteProgramFailure, (state, action) => {\n return {\n ...state,\n error: action.error\n }\n }\n ),\n\n on(ConfigurationActions.addSchoolOrProgramSuccess, (state, action) =>\n adapter.setOne(action.configuration, {\n ...state,\n isConfigurationEditSuccessfullyCompleted: true\n })),\n\n on(ConfigurationActions.addSchoolOrProgramFailure, (state, action) => {\n return {\n ...state,\n isConfigurationEditSuccessfullyCompleted: false,\n error: action.error\n }\n }\n ),\n\n on(ConfigurationActions.editProgramSuccess, (state, action) =>\n adapter.setOne(action.configuration, {\n ...state,\n isConfigurationEditSuccessfullyCompleted: true\n })),\n\n on(ConfigurationActions.editProgramFailure, (state, action) => {\n return {\n ...state,\n isConfigurationEditSuccessfullyCompleted: false,\n error: action.error\n }\n }\n ),\n\n on(ConfigurationActions.updateSchoolSortOrdersSuccess, (state, action) =>\n adapter.setOne(action.configuration, {\n ...state\n })),\n\n on(ConfigurationActions.updateProgramSortOrdersSuccess, (state, action) =>\n adapter.setOne(action.configuration, {\n ...state\n })),\n\n on(ConfigurationActions.setIsConfigurationEditSuccessfullyCompleted, (state, action) => {\n return {\n ...state,\n isConfigurationEditSuccessfullyCompleted: action.value,\n }\n }\n ),\n\n on(ConfigurationActions.removeConfiguration, (state, action) =>\n adapter.removeOne(action.configuration.id, {\n ...state\n })\n ),\n);\n\nexport const {\n selectAll,\n selectEntities\n} = adapter.getSelectors();\n","import { createAction, props } from \"@ngrx/store\";\n\nexport const updateAppTitle = createAction(\n \"[AppTitle] Update Application Title\",\n props<{ title: string }>()\n );","import { createReducer, on } from \"@ngrx/store\";\nimport { AppTitleState } from \"./app-title.state\";\nimport { AppTitleActions } from \"./app-title-action-types\";\nimport { Title } from \"@angular/platform-browser\";\nimport { createEntityAdapter } from \"@ngrx/entity\";\n\nconst initialState:AppTitleState = {\n title: 'Loading...'\n}\n\nexport const adapter = createEntityAdapter( );\n\nexport const getTitle = (state: AppTitleState) => state.title;\n\nexport const appTitleReducer = createReducer(\n initialState,\n\n on(AppTitleActions.updateAppTitle, (state, action) =>({\n ...state,\n title:action.title\n })),\n)","import { ITermAddVM, ITermCreateVM, ITermVM } from \"@app/core/services/WebRegApiClient\";\nimport { ApiResponseErrorModel } from \"@models/api-response-error.model\";\nimport { createAction, props } from \"@ngrx/store\";\n\nexport const loadAll = createAction(\n \"[Admin] Load All Terms\"\n);\n\nexport const loadAllFailure = createAction(\n \"[Terms Effect] Load All Terms Failure\",\n props<{ error: ApiResponseErrorModel | string }>()\n);\n\nexport const loadActive = createAction(\n \"[Terms Effect] Load Active Terms\"\n);\n\nexport const loadActiveFailure = createAction(\n \"[Terms Effect] Load Active Terms Failure\",\n props<{ error: ApiResponseErrorModel | string }>()\n);\n\nexport const loadSelectedTerm = createAction(\n \"[Selected Term Resolver] Load Selected Term\",\n props<{ termCode: number | null }>()\n);\n\nexport const refreshTermByTermCode = createAction(\n \"[Term Actions] Refresh By Term Code\",\n props<{ termCode: number | null }>()\n);\n\nexport const refreshSuccess = createAction(\n \"[Term Actions] Term Successfully Refreshed\",\n props<{ term: ITermVM }>()\n);\n\nexport const updateSelectedTerm = createAction(\n \"[Select Term] Current Selected Term Updated\",\n props<{ selectedTerm: ITermVM }>()\n);\n\nexport const updateNavSelectedTerm = createAction(\n \"[Select Term In Nav] Current Nav-Selected Term Updated\",\n props<{ navSelectedTerm: ITermVM }>()\n);\n\nexport const activeTermsInserted = createAction(\n \"[Terms Effect] Active Terms Loaded\",\n props<{ terms: ITermVM[] }>()\n);\n\nexport const allTermsInserted = createAction(\n \"[Terms Effect] All Terms Loaded\",\n props<{ terms: ITermVM[] }>()\n);\n\n// CREATE\nexport const createTerm = createAction(\n \"[Create Term] Create Term\",\n props<{ newTerm: ITermAddVM, dialogId: string }>()\n);\n\nexport const createSuccess = createAction(\n \"[Terms] Create Success\", props<{ term: ITermVM, dialogId: string }>()\n);\n\nexport const createFailure = createAction(\n \"[Terms] Create Failure\", props<{ term: ITermCreateVM, error: ApiResponseErrorModel }>()\n);\n\n// UPDATE\nexport const updateTerm = createAction(\n \"[Admin Terms] Update Term\",\n props<{ term: ITermVM, dialogId: string }>()\n);\n\nexport const updateSuccess = createAction(\n \"[Admin Terms] Term Successfully Updated\",\n props<{ term: ITermVM, dialogId: string }>()\n);\n\nexport const updateFailure = createAction(\n \"[Admin Terms] Update Failure\",\n props<{ term: ITermVM, error: ApiResponseErrorModel }>()\n);\n\n// DELETE\nexport const deleteTerm = createAction(\n \"[Admin Terms] Delete Term\",\n props<{ term: ITermVM }>()\n);\n\nexport const deleteSuccess = createAction(\n \"[Admin Terms] Term Successfully Deleted\",\n props<{ term: ITermVM }>()\n);\n\nexport const deleteFailure = createAction(\n \"[Admin Terms] Delete Failure\",\n props<{ term: ITermVM, error: ApiResponseErrorModel }>()\n);\n","import { ITermVM } from \"@app/core/services/WebRegApiClient\";\nimport { ApiResponseErrorModel } from \"@models/api-response-error.model\";\nimport { TermActions } from \"@modules/main/homepage/store/terms/terms-action-types\";\nimport { createEntityAdapter, EntityState } from \"@ngrx/entity\";\nimport { createReducer, on } from \"@ngrx/store\";\n\nexport interface TermsState extends EntityState {\n isSelectedTermLoaded: boolean;\n areActiveTermsLoaded: boolean;\n areAllTermsLoaded: boolean;\n selectedTerm: ITermVM;\n selectedTermCode: string | undefined;\n error: ApiResponseErrorModel | string | undefined;\n errorLoading: ApiResponseErrorModel | string | undefined;\n isSaving: boolean;\n navSelectedTerm: ITermVM;\n}\n\nexport function selectTermCode(a: ITermVM): number {\n return a.termCode;\n}\n\nexport const areActiveTermsLoaded = (state: TermsState) => state.areActiveTermsLoaded;\nexport const areAllTermsLoaded = (state: TermsState) => state.areAllTermsLoaded;\nexport const isSaving = (state: TermsState) => state.isSaving;\nexport const isSelectedTermLoaded = (state: TermsState) => state.isSelectedTermLoaded;\n\nexport const adapter = createEntityAdapter(\n {\n selectId: selectTermCode\n }\n);\n\nexport const initialTermsState = adapter.getInitialState({\n isSelectedTermLoaded: false,\n areActiveTermsLoaded: false,\n areAllTermsLoaded: false,\n isSaving: false,\n});\n\nexport const getSelectedTerm = (state: TermsState) => state.selectedTerm;\nexport const getNavSelectedTerm = (state: TermsState) => state.navSelectedTerm;\n\nexport const getErrorMessage = (state: TermsState) => state.error;\nexport const getErrorLoadingMessage = (state: TermsState) => state.errorLoading;\n\nexport const termsReducer = createReducer(\n initialTermsState,\n\n on(TermActions.updateSelectedTerm, (state, action) =>\n adapter.setOne(action.selectedTerm, {\n ...state,\n selectedTerm: action.selectedTerm,\n selectedTermCode: action.selectedTerm.termCode,\n selectedTermCodeLoaded: true\n })),\n\n on(TermActions.updateNavSelectedTerm, (state, action) =>\n adapter.setOne(action.navSelectedTerm, {\n ...state,\n navSelectedTerm: action.navSelectedTerm,\n })),\n\n on(TermActions.loadActiveFailure, (state, action) => {\n return {\n ...state,\n errorLoading: action.error\n }\n }\n ),\n\n on(TermActions.loadAllFailure, (state, action) => {\n return {\n ...state,\n errorLoading: action.error\n }\n }\n ),\n\n on(TermActions.activeTermsInserted, (state, action) =>\n adapter.addMany(action.terms, { ...state, areActiveTermsLoaded: true })),\n\n on(TermActions.allTermsInserted, (state, action) =>\n adapter.addMany(action.terms, { ...state, areAllTermsLoaded: true })),\n\n on(TermActions.createTerm, (state, action) => {\n return {\n ...state,\n isSaving: true\n }\n }),\n\n on(TermActions.createSuccess, (state, action) =>\n adapter.setOne(action.term, {\n ...state,\n selectedTermCodeLoaded: false,\n isSaving: false\n })),\n\n on(TermActions.createFailure, (state, action) => {\n return {\n ...state,\n error: action.error,\n isSaving: false\n }\n }\n ),\n\n on(TermActions.deleteSuccess, (state, action) =>\n adapter.removeOne(action.term.termCode, {\n ...state\n })),\n\n on(TermActions.deleteFailure, (state, action) => {\n return {\n ...state,\n error: action.error\n }\n }\n ),\n\n on(TermActions.updateTerm, (state, action) => {\n return {\n ...state,\n isSaving: true\n }\n }),\n\n on(TermActions.updateSuccess, (state, action) =>\n adapter.setOne(action.term, {\n ...state,\n isSaving: false\n })),\n\n on(TermActions.updateFailure, (state, action) => {\n return {\n ...state,\n error: action.error,\n isSaving: false\n }\n }\n ),\n\n on(TermActions.refreshSuccess, (state, action) =>\n adapter.setOne(action.term, {\n ...state\n })),\n);\n\nexport const {\n selectAll,\n selectEntities\n} = adapter.getSelectors();\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { FormControl } from '@angular/forms';\nimport { getMinutesFromTime24, getTime24FromMinutes } from '@app/core/services/dateTime.service';\n\nexport interface IFilterOptions {\n days: string[];\n timeRangeMin: string;\n timeRangeMax: string;\n units: number;\n isAvailableCoursesChecked: boolean;\n isOnlineCoursesChecked: boolean;\n isOpenToAllChecked: boolean;\n}\n\nexport const FilterDefault: IFilterOptions = {\n days: ['Any'],\n timeRangeMin: '05:00',\n timeRangeMax: '23:30',\n units: 0,\n isAvailableCoursesChecked: false,\n isOnlineCoursesChecked: false,\n isOpenToAllChecked: false\n}\n\n@Component({\n selector: 'filter-dialog',\n styleUrls: ['filter-dialog.component.scss'],\n templateUrl: 'filter-dialog.component.html',\n})\nexport class FilterDialog {\n timeRangeStep: number = 30;\n\n timeMin: string = \"05:00\";\n timeMax: string = \"23:30\";\n timeRangeMin: number = getMinutesFromTime24(this.timeMin);\n timeRangeMax: number = getMinutesFromTime24(this.timeMax);\n\n selectedMinTime: string = this.timeMin;\n selectedMaxTime: string = this.timeMax;\n\n monControl = new FormControl(false);\n tueControl = new FormControl(false);\n wedControl = new FormControl(false);\n thuControl = new FormControl(false);\n friControl = new FormControl(false);\n satControl = new FormControl(false);\n sunControl = new FormControl(false);\n\n minTimeControl = new FormControl(this.timeRangeMin);\n maxTimeControl = new FormControl(this.timeRangeMax);\n\n unitsControl = new FormControl({ value: '1', disabled: false });\n\n availableCoursesControl = new FormControl({ value: false, disabled: false });\n onlineCoursesControl = new FormControl({ value: false, disabled: false });\n allMajorsControl = new FormControl({ value: false, disabled: false });\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: IFilterOptions,\n ) {\n if (!data) {\n data = FilterDefault\n }\n\n this.monControl.setValue(data.days.includes('Mon') || false);\n this.tueControl.setValue(data.days.includes('Tue') || false);\n this.wedControl.setValue(data.days.includes('Wed') || false);\n this.thuControl.setValue(data.days.includes('Thu') || false);\n this.friControl.setValue(data.days.includes('Fri') || false);\n this.satControl.setValue(data.days.includes('Sat') || false);\n this.sunControl.setValue(data.days.includes('Sun') || false);\n this.unitsControl.setValue(data.units.toString() || '0');\n this.availableCoursesControl.setValue(data.isAvailableCoursesChecked);\n this.onlineCoursesControl.setValue(data.isOnlineCoursesChecked);\n this.allMajorsControl.setValue(data.isOpenToAllChecked);\n\n console.log(\"Filter Dialog Contstructor\");\n console.log(data.timeRangeMin);\n console.log(data.timeRangeMax);\n\n const minTime: string = data.timeRangeMin\n ? data.timeRangeMin\n : this.timeMin;\n const maxTime: string = data.timeRangeMax\n ? data.timeRangeMax\n : this.timeMax;\n\n this.minTimeControl.setValue(getMinutesFromTime24(minTime));\n this.maxTimeControl.setValue(getMinutesFromTime24(maxTime));\n\n this.selectedMinTime = getTime24FromMinutes(getMinutesFromTime24(minTime) || this.timeRangeMin);\n this.selectedMaxTime = getTime24FromMinutes(getMinutesFromTime24(maxTime) || this.timeRangeMax);\n\n this.minTimeControl.valueChanges.pipe().subscribe(value => {\n this.selectedMinTime = getTime24FromMinutes(value || this.timeRangeMin);\n });\n\n this.maxTimeControl.valueChanges.pipe().subscribe(value => {\n this.selectedMaxTime = getTime24FromMinutes(value || this.timeRangeMax);\n });\n }\n\n onApplyClick() {\n const days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\n const dayBools: boolean[] = [\n this.monControl.value || false,\n this.tueControl.value || false,\n this.wedControl.value || false,\n this.thuControl.value || false,\n this.friControl.value || false,\n this.satControl.value || false,\n this.sunControl.value || false,\n ];\n\n const reqDays: string[] = dayBools.map((s, i) => s ? days[i] : null)\n .filter(d => d !== null)\n .map(i => String(i));\n\n const filtersToApply: IFilterOptions = {\n days: reqDays.length === 0 ? ['Any'] : reqDays,\n timeRangeMin: getTime24FromMinutes(this.minTimeControl.value || this.timeRangeMin),\n timeRangeMax: getTime24FromMinutes(this.maxTimeControl.value || this.timeRangeMax),\n units: parseInt(this.unitsControl.value || \"0\"),\n isAvailableCoursesChecked: this.availableCoursesControl.value || false,\n isOnlineCoursesChecked: this.onlineCoursesControl.value || false,\n isOpenToAllChecked: this.onlineCoursesControl.value || false,\n }\n\n this.dialogRef.close(filtersToApply);\n }\n\n onResetFilters() {\n this.monControl.setValue(FilterDefault.days.includes('Mon') || false);\n this.tueControl.setValue(FilterDefault.days.includes('Tue') || false);\n this.wedControl.setValue(FilterDefault.days.includes('Wed') || false);\n this.thuControl.setValue(FilterDefault.days.includes('Thu') || false);\n this.friControl.setValue(FilterDefault.days.includes('Fri') || false);\n this.satControl.setValue(FilterDefault.days.includes('Sat') || false);\n this.sunControl.setValue(FilterDefault.days.includes('Sun') || false);\n this.unitsControl.setValue(FilterDefault.units.toString());\n this.availableCoursesControl.setValue(FilterDefault.isAvailableCoursesChecked);\n this.onlineCoursesControl.setValue(FilterDefault.isOnlineCoursesChecked);\n this.allMajorsControl.setValue(FilterDefault.isOpenToAllChecked);\n this.minTimeControl.setValue(getMinutesFromTime24(FilterDefault.timeRangeMin));\n this.maxTimeControl.setValue(getMinutesFromTime24(FilterDefault.timeRangeMax));\n }\n\n onNoClick(): void {\n this.dialogRef.close(undefined);\n }\n}","
filter
\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatButtonToggleModule } from \"@angular/material/button-toggle\";\nimport { MatCardModule } from \"@angular/material/card\";\nimport { MatChipsModule } from \"@angular/material/chips\";\nimport { MatDialogModule } from \"@angular/material/dialog\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatListModule } from \"@angular/material/list\";\nimport { MatSidenavModule } from \"@angular/material/sidenav\";\nimport { MatSortModule } from \"@angular/material/sort\";\nimport { MatTableModule } from \"@angular/material/table\";\nimport { RouterModule } from \"@angular/router\";\nimport { DateInsertAtPipe } from \"@app/core/pipes/date-insert-at.pipe\";\nimport { ConfirmationDialogComponent } from \"@shared-components/confirmation-dialog/confirmation-dialog.component\";\nimport { CustomToastComponent } from \"@shared-components/custom-toast/custom-toast.component\";\nimport { DClearanceMessageComponent } from \"@shared-components/d-clearance-message/d-clearance-message.component\";\nimport {\n AdminNavListItemComponent\n} from \"@shared-components/nav-list-items/admin-nav-list-item/admin-nav-list-item.component\";\nimport { NavListItemComponent } from \"@shared-components/nav-list-items/nav-list-item/nav-list-item.component\";\nimport { NgxStyleLibraryModule } from \"@uscapp/ngx-style-library\";\n\nimport { AnnouncementComponent } from './announcement/announcement.component';\nimport { FooterContentComponent } from './footer-content/footer-content.component';\nimport { HeaderContentComponent } from './header-content/header-content.component';\nimport { MobileTableComponent } from './mobile-table/mobile-table.component';\nimport { TermDropdownComponent } from './term-dropdown/term-dropdown.component';\nimport { TermStatusComponent } from './term-status/term-status.component';\nimport { BadgeComponent } from './badge/badge.component';\nimport { CourseStatusComponent } from \"@shared-components/course-status/course-status.component\";\nimport { SectionStatusComponent } from \"@shared-components/section-status/section-status.component\";\nimport { ChipComponent } from './chip/chip.component';\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatOptionModule } from \"@angular/material/core\";\nimport { MatSelectModule } from \"@angular/material/select\";\nimport { UserComponent } from \"@shared-components/user-component/user.component\";\n\n@NgModule({\n declarations: [\n TermDropdownComponent,\n FooterContentComponent,\n HeaderContentComponent,\n AnnouncementComponent,\n NavListItemComponent,\n AdminNavListItemComponent,\n DateInsertAtPipe,\n TermStatusComponent,\n DClearanceMessageComponent,\n MobileTableComponent,\n ConfirmationDialogComponent,\n CustomToastComponent,\n BadgeComponent,\n CourseStatusComponent,\n SectionStatusComponent,\n ChipComponent,\n UserComponent\n ],\n exports: [\n TermDropdownComponent,\n FooterContentComponent,\n HeaderContentComponent,\n AnnouncementComponent,\n NavListItemComponent,\n AdminNavListItemComponent,\n NgxStyleLibraryModule,\n DateInsertAtPipe,\n TermStatusComponent,\n DClearanceMessageComponent,\n ConfirmationDialogComponent,\n BadgeComponent,\n CourseStatusComponent,\n SectionStatusComponent,\n UserComponent\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n NgxStyleLibraryModule,\n RouterModule,\n MatSidenavModule,\n MatListModule,\n MatIconModule,\n MatChipsModule,\n MatCardModule,\n MatTableModule,\n MatSortModule,\n MatButtonToggleModule,\n MatButtonModule,\n MatDialogModule,\n MatFormFieldModule,\n MatOptionModule,\n MatSelectModule,\n ]\n})\nexport class SharedComponentsModule {\n}\n","import { ICoursePrefixVM } from \"@app/core/services/WebRegApiClient\";\nimport { createAction, props } from \"@ngrx/store\";\nimport { ApiResponseErrorModel } from \"@models/api-response-error.model\";\n\nexport const loadAll = createAction(\n \"[Admin] Load All CoursePrefixes\"\n);\n\nexport const coursePrefixesInserted = createAction(\n \"[CoursePrefixes Effect] CoursePrefixes Loaded\",\n props<{ coursePrefixes: ICoursePrefixVM[] }>()\n);\n\nexport const loadAllFailure = createAction(\n \"[CoursePrefixes Effect] CoursePrefixes Load Failure\",\n props<{ error: ApiResponseErrorModel | string }>()\n);\n","import { ICoursePrefixVM } from \"@app/core/services/WebRegApiClient\";\nimport { CoursePrefixActions } from \"@app/store/coursePrefixes/coursePrefixes-action-types\";\nimport { ApiResponseErrorModel } from \"@models/api-response-error.model\";\nimport { createEntityAdapter, EntityState } from \"@ngrx/entity\";\nimport { createReducer, on } from \"@ngrx/store\";\n\nexport interface CoursePrefixesState extends EntityState {\n areCoursePrefixesLoaded: boolean;\n error: ApiResponseErrorModel | undefined;\n}\n\nexport function selectId(a: ICoursePrefixVM): string {\n return a.prefix;\n}\n\nexport const areCoursePrefixesLoaded = (state: CoursePrefixesState) => state.areCoursePrefixesLoaded;\n\nexport const adapter = createEntityAdapter(\n {\n selectId: selectId\n }\n);\n\nexport const initialCoursePrefixesState = adapter.getInitialState({\n areCoursePrefixesLoaded: false\n});\n\nexport const getErrorMessage = (state: CoursePrefixesState) => state.error;\n\nexport const coursePrefixesReducer = createReducer(\n initialCoursePrefixesState,\n\n on(CoursePrefixActions.coursePrefixesInserted, (state, action) =>\n adapter.addMany(action.coursePrefixes, { ...state, areCoursePrefixesLoaded: true })\n ),\n\n on(CoursePrefixActions.loadAllFailure, (state, action) => {\n return {\n ...state,\n error: action.error\n }\n }\n ),\n);\n\nexport const {\n selectAll,\n selectEntities\n} = adapter.getSelectors();\n","import { IPeConfigurableSessionVM } from \"@app/core/services/WebRegApiClient\";\nimport { createAction, props } from \"@ngrx/store\";\nimport { ApiResponseErrorModel } from \"@models/api-response-error.model\";\n\nexport const loadAll = createAction(\n \"[Admin] Load All Pe Configurable Sessions\",\n props<{ termCode: number }>()\n);\n\nexport const sessionsInsertedForTerm = createAction(\n \"[Admin Pe Configurable Sessions Effect] Pe Configurable Sessions Loaded For Term\",\n props<{ sessions: IPeConfigurableSessionVM[], termCode: number }>()\n);\n\nexport const loadAllFailure = createAction(\n \"[Admin Pe Configurable Sessions Effect] Pe Configurable Sessions For Term Failure\",\n props<{ error: ApiResponseErrorModel | string }>()\n);\n","import { IPeConfigurableSessionVM } from \"@app/core/services/WebRegApiClient\";\nimport { ApiResponseErrorModel } from \"@models/api-response-error.model\";\nimport { createEntityAdapter, EntityState } from \"@ngrx/entity\";\nimport { createReducer, on } from \"@ngrx/store\";\nimport {\n PeConfigurableSessionActions\n} from \"@app/store/pe-configurable-sessions/pe-configurable-sessions-action-types\";\nimport { TermActions } from \"@modules/main/homepage/store/terms/terms-action-types\";\n\nexport interface PeConfigurableSessionsState extends EntityState {\n arePeConfigurableSessionsLoadedForTerm: Record;\n error: ApiResponseErrorModel | undefined;\n}\n\nexport function selectId(a: IPeConfigurableSessionVM): string {\n return a.sessionCode + a.termCode;\n}\n\nexport const arePeConfigurableSessionsLoadedForTerm = (state: PeConfigurableSessionsState, termCode: number) => state.arePeConfigurableSessionsLoadedForTerm[termCode];\n\nexport const adapter = createEntityAdapter(\n {\n selectId: selectId\n }\n);\n\nexport const initialPeConfigurableSessionsState = adapter.getInitialState({\n arePeConfigurableSessionsLoadedForTerm: {}\n});\n\nexport const getErrorMessage = (state: PeConfigurableSessionsState) => state.error;\n\nexport const peConfigurableSessionsReducer = createReducer(\n initialPeConfigurableSessionsState,\n\n on(PeConfigurableSessionActions.sessionsInsertedForTerm, (state, action) =>\n adapter.addMany(action.sessions, {\n ...state, arePeConfigurableSessionsLoadedForTerm: {\n ...state.arePeConfigurableSessionsLoadedForTerm,\n [action.termCode]: true\n },\n })\n ),\n\n on(PeConfigurableSessionActions.loadAllFailure, (state, action) => {\n return {\n ...state,\n error: action.error\n }\n }\n ),\n\n on(TermActions.deleteSuccess, (state, action) => {\n return {\n ...state,\n arePeConfigurableSessionsLoadedForTerm: {\n ...state.arePeConfigurableSessionsLoadedForTerm,\n [action.term.termCode]: false\n }\n }\n }\n ),\n);\n\nexport const {\n selectAll,\n selectEntities\n} = adapter.getSelectors();\n","import { IProgramCoursesVM } from \"@app/core/services/WebRegApiClient\";\nimport { createAction, props } from \"@ngrx/store\";\nimport { ApiResponseErrorModel } from \"@models/api-response-error.model\";\n\nexport const loadProgramCourseList = createAction(\n \"[Program Course List Actions] Load ProgramCourseList\",\n props<{ termCode: number, schoolCode: string, programCode: string }>()\n);\n\nexport const loadProgramCourseListSuccess = createAction(\n \"[Program Course List Effect] ProgramCourseList Successfully Loaded\",\n props<{ programCourseList: IProgramCoursesVM, concatenatedKey: string }>()\n);\n\nexport const loadProgramCourseListFailure = createAction(\n \"[Program Course List Effect] Load ProgramCourseList Failure\",\n props<{ error: ApiResponseErrorModel | string }>()\n);\n","import { IProgramCoursesVM } from \"@app/core/services/WebRegApiClient\";\nimport { ApiResponseErrorModel } from \"@models/api-response-error.model\";\nimport { createEntityAdapter, EntityState } from \"@ngrx/entity\";\nimport { createReducer, on } from \"@ngrx/store\";\nimport { ProgramCourseListActions } from \"@app/store/program-course-list/program-course-list-action-types\";\n\nexport interface ProgramCourseListState extends EntityState {\n areProgramCourseListLoadedForTermSchoolProgram: Record;\n error: ApiResponseErrorModel | string | undefined;\n}\n\nexport function selectId(a: IProgramCoursesVM): string {\n return a.termCode + a.schoolPrefix + a.programPrefix;\n}\n\nexport const areProgramCourseListLoadedForTermSchoolProgram = (state: ProgramCourseListState, concatenatedKey: string) => state.areProgramCourseListLoadedForTermSchoolProgram[concatenatedKey];\n\nexport const adapter = createEntityAdapter(\n {\n selectId: selectId\n }\n);\n\nexport const initialProgramCourseListState = adapter.getInitialState({\n areProgramCourseListLoadedForTermSchoolProgram: {}\n});\n\nexport const getErrorMessage = (state: ProgramCourseListState) => state.error;\n\nexport const programCourseListReducer = createReducer(\n initialProgramCourseListState,\n\n on(ProgramCourseListActions.loadProgramCourseListSuccess, (state, action) =>\n adapter.addOne(action.programCourseList, {\n ...state, areProgramCourseListLoadedForTermSchoolProgram: {\n ...state.areProgramCourseListLoadedForTermSchoolProgram,\n [action.concatenatedKey]: true\n }\n })\n ),\n\n on(ProgramCourseListActions.loadProgramCourseListFailure, (state, action) => {\n return {\n ...state,\n error: action.error\n }\n }\n ),\n);\n\nexport const {\n selectAll,\n selectEntities\n} = adapter.getSelectors();\n","import { createAction, props } from \"@ngrx/store\";\nimport { IProgramDetailsVM } from \"@app/core/services/WebRegApiClient\";\n\nexport const loadProgramDetailsByPrefix = createAction(\n \"[Program Details Actions] Load Program Details For Program\",\n props<{ termCode: number, schoolCode: string, prefix: string }>()\n);\n\nexport const programDetailsInsertedForProgram = createAction(\n \"[Program Details Actions] ProgramDetails Successfully Loaded For Program\",\n props<{ programDetails: IProgramDetailsVM, prefix: string }>()\n);\n","import { ApiResponseErrorModel } from \"@models/api-response-error.model\";\nimport { createEntityAdapter, EntityState } from \"@ngrx/entity\";\nimport { createReducer, on } from \"@ngrx/store\";\nimport { ProgramDetailsActions } from \"@app/store/program-details/program-details-action-types\";\nimport { IProgramDetailsVM } from \"@app/core/services/WebRegApiClient\";\n\nexport interface ProgramDetailsState extends EntityState {\n areProgramDetailsLoadedForProgram: Record;\n error: ApiResponseErrorModel | undefined;\n}\n\nexport function selectId(a: IProgramDetailsVM): string {\n return a.prefix;\n}\n\nexport const areProgramDetailsLoadedForProgram = (state: ProgramDetailsState, prefix: string) => state.areProgramDetailsLoadedForProgram[prefix];\n\nexport const adapter = createEntityAdapter(\n {\n selectId: selectId\n }\n);\n\nexport const initialProgramDetailsState = adapter.getInitialState({\n areProgramDetailsLoadedForProgram: {}\n});\n\nexport const getErrorMessage = (state: ProgramDetailsState) => state.error;\n\nexport const programDetailsReducer = createReducer(\n initialProgramDetailsState,\n\n on(ProgramDetailsActions.programDetailsInsertedForProgram, (state, action) =>\n adapter.addOne(action.programDetails, {\n ...state, areProgramDetailsLoadedForProgram: {\n ...state.areProgramDetailsLoadedForProgram,\n [action.prefix]: true\n }\n }))\n);\n\nexport const {\n selectAll,\n selectEntities\n} = adapter.getSelectors();\n","import { IProgramVM } from \"@app/core/services/WebRegApiClient\";\nimport { createAction, props } from \"@ngrx/store\";\nimport { ApiResponseErrorModel } from \"@models/api-response-error.model\";\n\nexport const loadAll = createAction(\n \"[Admin] Load All Programs\"\n);\n\nexport const loadProgramsByTermCode = createAction(\n \"[Program Actions] Load Programs By Term Code\",\n props<{ termCode: number }>()\n);\n\nexport const loadProgramsByTermCodeFailure = createAction(\n \"[Program Effect] Load Programs By Term Failure\",\n props<{ error: ApiResponseErrorModel | string }>()\n);\n\n\nexport const programsInsertedForTerm = createAction(\n \"[Program Actions] Programs Successfully Loaded For Term\",\n props<{ programs: IProgramVM[], termCode: number }>()\n);\n\nexport const programsInserted = createAction(\n \"[Programs Actions] Programs Loaded\",\n props<{ programs: IProgramVM[] }>()\n);\n","import { IProgramVM } from \"@app/core/services/WebRegApiClient\";\nimport { ProgramActions } from \"@app/store/programs/programs-action-types\";\nimport { ApiResponseErrorModel } from \"@models/api-response-error.model\";\nimport { createEntityAdapter, EntityState } from \"@ngrx/entity\";\nimport { createReducer, on } from \"@ngrx/store\";\nimport { TermActions } from \"@modules/main/homepage/store/terms/terms-action-types\";\n\nexport interface ProgramsState extends EntityState {\n areProgramsLoaded: boolean;\n areProgramsLoadedForTerm: Record;\n error: ApiResponseErrorModel | undefined;\n}\n\nexport function selectId(a: IProgramVM): string {\n return a.prefix + a.termCode;\n}\n\nexport const areProgramsLoaded = (state: ProgramsState) => state.areProgramsLoaded;\nexport const areProgramsLoadedForTerm = (state: ProgramsState, termCode: number) => state.areProgramsLoadedForTerm[termCode];\n\nexport const adapter = createEntityAdapter(\n {\n selectId: selectId\n }\n);\n\nexport const initialProgramsState = adapter.getInitialState({\n areProgramsLoaded: false,\n areProgramsLoadedForTerm: {}\n});\n\nexport const getErrorMessage = (state: ProgramsState) => state.error;\n\nexport const programsReducer = createReducer(\n initialProgramsState,\n\n on(ProgramActions.programsInserted, (state, action) =>\n adapter.addMany(action.programs, { ...state, areProgramsLoaded: true })\n ),\n\n on(ProgramActions.programsInsertedForTerm, (state, action) =>\n adapter.addMany(action.programs, {\n ...state, areProgramsLoadedForTerm: {\n ...state.areProgramsLoadedForTerm,\n [action.termCode]: true\n }\n })),\n\n on(ProgramActions.loadProgramsByTermCodeFailure, (state, action) => {\n return {\n ...state,\n error: action.error\n }\n }\n ),\n\n on(TermActions.deleteSuccess, (state, action) => {\n return {\n ...state,\n areProgramsLoadedForTerm: {\n ...state.areProgramsLoadedForTerm,\n [action.term.termCode]: false\n }\n }\n }\n ),\n);\n\nexport const {\n selectAll,\n selectEntities\n} = adapter.getSelectors();\n","import { ISchoolVM } from \"@app/core/services/WebRegApiClient\";\nimport { createAction, props } from \"@ngrx/store\";\nimport { ApiResponseErrorModel } from \"@models/api-response-error.model\";\n\nexport const loadSchoolsByTermCode = createAction(\n \"[School Actions] Load Schools By Term Code\",\n props<{ termCode: number }>()\n);\n\nexport const loadSchoolsByTermCodeSuccess = createAction(\n \"[School Actions] Schools Successfully Loaded\",\n props<{ schools: ISchoolVM[], termCode: number }>()\n);\n\nexport const loadSchoolsByTermCodeFailure = createAction(\n \"[School Effect] Load Schools By Term Failure\",\n props<{ error: ApiResponseErrorModel | string }>()\n);\n\nexport const removeSchoolsByTermCode = createAction(\n \"[School Actions] Remove Schools By Term Code\",\n props<{ schools: string[], termCode: number }>()\n);\n","import { ISchoolVM } from \"@app/core/services/WebRegApiClient\";\nimport { SchoolActions } from \"@app/store/schools/schools-action-types\";\nimport { ApiResponseErrorModel } from \"@models/api-response-error.model\";\nimport { createEntityAdapter, EntityState } from \"@ngrx/entity\";\nimport { createReducer, on } from \"@ngrx/store\";\nimport { TermActions } from \"@modules/main/homepage/store/terms/terms-action-types\";\n\nexport interface SchoolsState extends EntityState {\n areSchoolsLoadedForTerm: Record;\n error: ApiResponseErrorModel | string | undefined;\n}\n\nexport function selectId(a: ISchoolVM): string {\n return a.prefix + a.termCode;\n}\n\nexport const areSchoolsLoadedForTerm = (state: SchoolsState, termCode: number) => state.areSchoolsLoadedForTerm[termCode];\n\nexport const adapter = createEntityAdapter(\n {\n selectId: selectId\n }\n);\n\nexport const initialSchoolsState = adapter.getInitialState({\n areSchoolsLoadedForTerm: {}\n});\n\nexport const getErrorMessage = (state: SchoolsState) => state.error;\n\nexport const schoolsReducer = createReducer(\n initialSchoolsState,\n\n on(SchoolActions.loadSchoolsByTermCodeSuccess, (state, action) =>\n adapter.addMany(action.schools, {\n ...state, areSchoolsLoadedForTerm: {\n ...state.areSchoolsLoadedForTerm,\n [action.termCode]: true\n }\n })\n ),\n\n on(SchoolActions.loadSchoolsByTermCodeFailure, (state, action) => {\n return {\n ...state,\n error: action.error\n }\n }\n ),\n\n on(TermActions.deleteSuccess, (state, action) => {\n return {\n ...state,\n areSchoolsLoadedForTerm: {\n ...state.areSchoolsLoadedForTerm,\n [action.term.termCode]: false\n }\n }\n }\n ),\n\n on(SchoolActions.removeSchoolsByTermCode, (state, action) =>\n adapter.removeMany(action.schools, {\n ...state, areSchoolsLoadedForTerm: {\n ...state.areSchoolsLoadedForTerm,\n [action.termCode]: false\n }\n })\n ),\n);\n\nexport const {\n selectAll,\n selectEntities\n} = adapter.getSelectors();\n","import { ISchoolVM } from \"@app/core/services/WebRegApiClient\";\nimport * as fromSchools from \"@app/store/schools/schools.reducer\";\nimport { SchoolsState } from \"@app/store/schools/schools.reducer\";\nimport { createFeatureSelector, createSelector } from \"@ngrx/store\";\n\nexport const selectSchoolsState = createFeatureSelector(\"schools\");\n\nexport const areSchoolsLoadedForTerm = (props: { termCode: number }) => createSelector(\n selectSchoolsState,\n (state) => {\n return fromSchools.areSchoolsLoadedForTerm(state, props.termCode)\n }\n);\n\nexport const selectSchoolsError = createSelector(\n selectSchoolsState,\n fromSchools.getErrorMessage\n);\n\nexport const selectAllSchools = createSelector(\n selectSchoolsState,\n fromSchools.selectAll\n);\n\nexport const selectAllSchoolsSorted = createSelector(\n selectAllSchools,\n (schools) => schools.sort((a, b) => {\n var bVal: number = 0;\n if (b !== undefined) {\n bVal = b.termCode as number;\n\n }\n\n var aVal: number = 0;\n if (a !== undefined) {\n aVal = a.termCode as number;\n\n }\n\n return bVal - aVal;\n })\n);\n\nexport const selectAllSchoolsEntities = createSelector(\n selectSchoolsState,\n fromSchools.selectEntities\n)\n\nexport const selectSchoolById = (props: { id: number }) => createSelector(\n selectAllSchoolsEntities,\n schools => schools[props.id]\n);\n\nexport const selectSchoolsByTermCode = (props: { termCode: number }) => createSelector(\n selectAllSchools,\n (schools) => {\n return schools.filter((school: ISchoolVM) => school.termCode == props.termCode)\n }\n);\n\nexport const selectSchoolEntityIdsByTermCode = (props: { termCode: number }) => createSelector(\n selectAllSchoolsEntities,\n (entities) => Object.keys(entities).filter((id: string | number) => entities[id]?.termCode == props.termCode) as string[]\n);\n\n","import { IPeSession } from \"@app/core/services/WebRegApiClient\";\nimport { createAction, props } from \"@ngrx/store\";\n\nexport const loadSessionByRnrSessionId = createAction(\n \"[Sessions Effect] Load Session By RnrSessionId\",\n props<{ rnrSessionId: number }>()\n);\n\nexport const sessionInserted = createAction(\n \"[Sessions Effect] Sessions Loaded\",\n props<{ session: IPeSession, rnrSessionId: number }>()\n);\n","import { IPeSession } from \"@app/core/services/WebRegApiClient\";\nimport { ApiResponseErrorModel } from \"@models/api-response-error.model\";\nimport { createEntityAdapter, EntityState } from \"@ngrx/entity\";\nimport { createReducer, on } from \"@ngrx/store\";\nimport { SessionActions } from \"@app/store/sessions/sessions-action-types\";\n\nexport interface SessionsState extends EntityState {\n isSessionLoaded: Record;\n error: ApiResponseErrorModel | undefined;\n}\n\nexport function selectId(a: IPeSession): number {\n return a.rnrSessionId;\n}\n\nexport const isSessionLoaded = (state: SessionsState, rnrSessionId: number) => state.isSessionLoaded[rnrSessionId];\n\nexport const adapter = createEntityAdapter(\n {\n selectId: selectId\n }\n);\n\nexport const initialSessionsState = adapter.getInitialState({\n isSessionLoaded: {}\n});\n\nexport const getErrorMessage = (state: SessionsState) => state.error;\n\nexport const sessionsReducer = createReducer(\n initialSessionsState,\n\n on(SessionActions.sessionInserted, (state, action) =>\n adapter.addOne(action.session, {\n ...state, isSessionLoaded: {\n ...state.isSessionLoaded,\n [action.rnrSessionId]: true\n },\n })\n ),\n);\n\nexport const {\n selectAll,\n selectEntities\n} = adapter.getSelectors();\n","export const environment = {\n production: true,\n apiBaseUrl: \"https://beta-classes.usc.edu\",\n apiBaseHref: \"\",\n hasDatadog: true,\n datadog: {\n applicationId: '934f2b79-bc4d-4f7d-b12a-18d9923429e8',\n clientToken: 'pub9cb89f86f5d31f2cdc8c806b8b39d869',\n site: 'datadoghq.com',\n service: 'schedule-of-classes-ui',\n env: 'prod',\n allowedTracingUrls: [\"https://api.usc.edu/registration\"],\n version: '1.0.0',\n sessionSampleRate: 100,\n sessionReplaySampleRate: 10,\n trackUserInteractions: true,\n trackResources: true,\n trackLongTasks: true,\n defaultPrivacyLevel: 'mask-user-input'\n },\n features:{\n courseFilters: true\n }\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ɵRuntimeError as RuntimeError} from '@angular/core';\n\nimport {RuntimeErrorCode} from './errors';\n\nconst LINE_START = '\\n - ';\n\nexport function invalidTimingValue(exp: string|number): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_TIMING_VALUE,\n ngDevMode && `The provided timing value \"${exp}\" is invalid.`);\n}\n\nexport function negativeStepValue(): Error {\n return new RuntimeError(\n RuntimeErrorCode.NEGATIVE_STEP_VALUE,\n ngDevMode && 'Duration values below 0 are not allowed for this animation step.');\n}\n\nexport function negativeDelayValue(): Error {\n return new RuntimeError(\n RuntimeErrorCode.NEGATIVE_DELAY_VALUE,\n ngDevMode && 'Delay values below 0 are not allowed for this animation step.');\n}\n\nexport function invalidStyleParams(varName: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_STYLE_PARAMS,\n ngDevMode &&\n `Unable to resolve the local animation param ${varName} in the given list of values`);\n}\n\nexport function invalidParamValue(varName: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_PARAM_VALUE,\n ngDevMode && `Please provide a value for the animation param ${varName}`);\n}\n\nexport function invalidNodeType(nodeType: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_NODE_TYPE,\n ngDevMode && `Unable to resolve animation metadata node #${nodeType}`);\n}\n\nexport function invalidCssUnitValue(userProvidedProperty: string, value: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_CSS_UNIT_VALUE,\n ngDevMode && `Please provide a CSS unit value for ${userProvidedProperty}:${value}`);\n}\n\nexport function invalidTrigger(): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_TRIGGER,\n ngDevMode &&\n 'animation triggers cannot be prefixed with an `@` sign (e.g. trigger(\\'@foo\\', [...]))');\n}\n\nexport function invalidDefinition(): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_DEFINITION,\n ngDevMode && 'only state() and transition() definitions can sit inside of a trigger()');\n}\n\nexport function invalidState(metadataName: string, missingSubs: string[]): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_STATE,\n ngDevMode &&\n `state(\"${\n metadataName}\", ...) must define default values for all the following style substitutions: ${\n missingSubs.join(', ')}`);\n}\n\nexport function invalidStyleValue(value: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_STYLE_VALUE,\n ngDevMode && `The provided style string value ${value} is not allowed.`);\n}\n\nexport function invalidProperty(prop: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_PROPERTY,\n ngDevMode &&\n `The provided animation property \"${\n prop}\" is not a supported CSS property for animations`);\n}\n\nexport function invalidParallelAnimation(\n prop: string, firstStart: number, firstEnd: number, secondStart: number,\n secondEnd: number): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_PARALLEL_ANIMATION,\n ngDevMode &&\n `The CSS property \"${prop}\" that exists between the times of \"${firstStart}ms\" and \"${\n firstEnd}ms\" is also being animated in a parallel animation between the times of \"${\n secondStart}ms\" and \"${secondEnd}ms\"`);\n}\n\nexport function invalidKeyframes(): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_KEYFRAMES,\n ngDevMode && `keyframes() must be placed inside of a call to animate()`);\n}\n\nexport function invalidOffset(): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_OFFSET,\n ngDevMode && `Please ensure that all keyframe offsets are between 0 and 1`);\n}\n\nexport function keyframeOffsetsOutOfOrder(): Error {\n return new RuntimeError(\n RuntimeErrorCode.KEYFRAME_OFFSETS_OUT_OF_ORDER,\n ngDevMode && `Please ensure that all keyframe offsets are in order`);\n}\n\nexport function keyframesMissingOffsets(): Error {\n return new RuntimeError(\n RuntimeErrorCode.KEYFRAMES_MISSING_OFFSETS,\n ngDevMode && `Not all style() steps within the declared keyframes() contain offsets`);\n}\n\nexport function invalidStagger(): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_STAGGER,\n ngDevMode && `stagger() can only be used inside of query()`);\n}\n\nexport function invalidQuery(selector: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_QUERY,\n ngDevMode &&\n `\\`query(\"${selector}\")\\` returned zero elements. (Use \\`query(\"${\n selector}\", { optional: true })\\` if you wish to allow this.)`);\n}\n\nexport function invalidExpression(expr: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_EXPRESSION,\n ngDevMode && `The provided transition expression \"${expr}\" is not supported`);\n}\n\nexport function invalidTransitionAlias(alias: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_TRANSITION_ALIAS,\n ngDevMode && `The transition alias value \"${alias}\" is not supported`);\n}\n\nexport function validationFailed(errors: Error[]): Error {\n return new RuntimeError(\n RuntimeErrorCode.VALIDATION_FAILED,\n ngDevMode && `animation validation failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\n\nexport function buildingFailed(errors: Error[]): Error {\n return new RuntimeError(\n RuntimeErrorCode.BUILDING_FAILED,\n ngDevMode && `animation building failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\n\nexport function triggerBuildFailed(name: string, errors: Error[]): Error {\n return new RuntimeError(\n RuntimeErrorCode.TRIGGER_BUILD_FAILED,\n ngDevMode &&\n `The animation trigger \"${name}\" has failed to build due to the following errors:\\n - ${\n errors.map(err => err.message).join('\\n - ')}`);\n}\n\nexport function animationFailed(errors: Error[]): Error {\n return new RuntimeError(\n RuntimeErrorCode.ANIMATION_FAILED,\n ngDevMode &&\n `Unable to animate due to the following errors:${LINE_START}${\n errors.map(err => err.message).join(LINE_START)}`);\n}\n\nexport function registerFailed(errors: Error[]): Error {\n return new RuntimeError(\n RuntimeErrorCode.REGISTRATION_FAILED,\n ngDevMode &&\n `Unable to build the animation due to the following errors: ${\n errors.map(err => err.message).join('\\n')}`);\n}\n\nexport function missingOrDestroyedAnimation(): Error {\n return new RuntimeError(\n RuntimeErrorCode.MISSING_OR_DESTROYED_ANIMATION,\n ngDevMode && 'The requested animation doesn\\'t exist or has already been destroyed');\n}\n\nexport function createAnimationFailed(errors: Error[]): Error {\n return new RuntimeError(\n RuntimeErrorCode.CREATE_ANIMATION_FAILED,\n ngDevMode &&\n `Unable to create the animation due to the following errors:${\n errors.map(err => err.message).join('\\n')}`);\n}\n\nexport function missingPlayer(id: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.MISSING_PLAYER,\n ngDevMode && `Unable to find the timeline player referenced by ${id}`);\n}\n\nexport function missingTrigger(phase: string, name: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.MISSING_TRIGGER,\n ngDevMode &&\n `Unable to listen on the animation trigger event \"${\n phase}\" because the animation trigger \"${name}\" doesn\\'t exist!`);\n}\n\nexport function missingEvent(name: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.MISSING_EVENT,\n ngDevMode &&\n `Unable to listen on the animation trigger \"${\n name}\" because the provided event is undefined!`);\n}\n\nexport function unsupportedTriggerEvent(phase: string, name: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.UNSUPPORTED_TRIGGER_EVENT,\n ngDevMode &&\n `The provided animation trigger event \"${phase}\" for the animation trigger \"${\n name}\" is not supported!`);\n}\n\nexport function unregisteredTrigger(name: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.UNREGISTERED_TRIGGER,\n ngDevMode && `The provided animation trigger \"${name}\" has not been registered!`);\n}\n\nexport function triggerTransitionsFailed(errors: Error[]): Error {\n return new RuntimeError(\n RuntimeErrorCode.TRIGGER_TRANSITIONS_FAILED,\n ngDevMode &&\n `Unable to process animations due to the following failed trigger transitions\\n ${\n errors.map(err => err.message).join('\\n')}`);\n}\n\nexport function triggerParsingFailed(name: string, errors: Error[]): Error {\n return new RuntimeError(\n RuntimeErrorCode.TRIGGER_PARSING_FAILED,\n ngDevMode &&\n `Animation parsing for the ${name} trigger have failed:${LINE_START}${\n errors.map(err => err.message).join(LINE_START)}`);\n}\n\nexport function transitionFailed(name: string, errors: Error[]): Error {\n return new RuntimeError(\n RuntimeErrorCode.TRANSITION_FAILED,\n ngDevMode && `@${name} has failed due to:\\n ${errors.map(err => err.message).join('\\n- ')}`);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {AnimationEvent, AnimationPlayer, AUTO_STYLE, NoopAnimationPlayer, ɵAnimationGroupPlayer, ɵPRE_STYLE as PRE_STYLE, ɵStyleDataMap} from '@angular/animations';\n\nimport {AnimationStyleNormalizer} from '../../src/dsl/style_normalization/animation_style_normalizer';\nimport {animationFailed} from '../error_helpers';\n\nimport {ANIMATABLE_PROP_SET} from './web_animations/animatable_props_set';\n\nexport function optimizeGroupPlayer(players: AnimationPlayer[]): AnimationPlayer {\n switch (players.length) {\n case 0:\n return new NoopAnimationPlayer();\n case 1:\n return players[0];\n default:\n return new ɵAnimationGroupPlayer(players);\n }\n}\n\nexport function normalizeKeyframes(\n normalizer: AnimationStyleNormalizer, keyframes: Array<ɵStyleDataMap>,\n preStyles: ɵStyleDataMap = new Map(),\n postStyles: ɵStyleDataMap = new Map()): Array<ɵStyleDataMap> {\n const errors: Error[] = [];\n const normalizedKeyframes: Array<ɵStyleDataMap> = [];\n let previousOffset = -1;\n let previousKeyframe: ɵStyleDataMap|null = null;\n keyframes.forEach(kf => {\n const offset = kf.get('offset') as number;\n const isSameOffset = offset == previousOffset;\n const normalizedKeyframe: ɵStyleDataMap = (isSameOffset && previousKeyframe) || new Map();\n kf.forEach((val, prop) => {\n let normalizedProp = prop;\n let normalizedValue = val;\n if (prop !== 'offset') {\n normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors);\n switch (normalizedValue) {\n case PRE_STYLE:\n normalizedValue = preStyles.get(prop)!;\n break;\n\n case AUTO_STYLE:\n normalizedValue = postStyles.get(prop)!;\n break;\n\n default:\n normalizedValue =\n normalizer.normalizeStyleValue(prop, normalizedProp, normalizedValue, errors);\n break;\n }\n }\n normalizedKeyframe.set(normalizedProp, normalizedValue);\n });\n if (!isSameOffset) {\n normalizedKeyframes.push(normalizedKeyframe);\n }\n previousKeyframe = normalizedKeyframe;\n previousOffset = offset;\n });\n if (errors.length) {\n throw animationFailed(errors);\n }\n\n return normalizedKeyframes;\n}\n\nexport function listenOnPlayer(\n player: AnimationPlayer, eventName: string, event: AnimationEvent|undefined,\n callback: (event: any) => any) {\n switch (eventName) {\n case 'start':\n player.onStart(() => callback(event && copyAnimationEvent(event, 'start', player)));\n break;\n case 'done':\n player.onDone(() => callback(event && copyAnimationEvent(event, 'done', player)));\n break;\n case 'destroy':\n player.onDestroy(() => callback(event && copyAnimationEvent(event, 'destroy', player)));\n break;\n }\n}\n\nexport function copyAnimationEvent(\n e: AnimationEvent, phaseName: string, player: AnimationPlayer): AnimationEvent {\n const totalTime = player.totalTime;\n const disabled = (player as any).disabled ? true : false;\n const event = makeAnimationEvent(\n e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName,\n totalTime == undefined ? e.totalTime : totalTime, disabled);\n const data = (e as any)['_data'];\n if (data != null) {\n (event as any)['_data'] = data;\n }\n return event;\n}\n\nexport function makeAnimationEvent(\n element: any, triggerName: string, fromState: string, toState: string, phaseName: string = '',\n totalTime: number = 0, disabled?: boolean): AnimationEvent {\n return {element, triggerName, fromState, toState, phaseName, totalTime, disabled: !!disabled};\n}\n\nexport function getOrSetDefaultValue(map: Map, key: T, defaultValue: V) {\n let value = map.get(key);\n if (!value) {\n map.set(key, value = defaultValue);\n }\n return value;\n}\n\nexport function parseTimelineCommand(command: string): [string, string] {\n const separatorPos = command.indexOf(':');\n const id = command.substring(1, separatorPos);\n const action = command.slice(separatorPos + 1);\n return [id, action];\n}\n\nconst documentElement: HTMLElement|null =\n /* @__PURE__ */ (() => typeof document === 'undefined' ? null : document.documentElement)();\n\nexport function getParentElement(element: any): unknown|null {\n const parent = element.parentNode || element.host || null; // consider host to support shadow DOM\n if (parent === documentElement) {\n return null;\n }\n return parent;\n}\n\nfunction containsVendorPrefix(prop: string): boolean {\n // Webkit is the only real popular vendor prefix nowadays\n // cc: http://shouldiprefix.com/\n return prop.substring(1, 6) == 'ebkit'; // webkit or Webkit\n}\n\nlet _CACHED_BODY: {style: any}|null = null;\nlet _IS_WEBKIT = false;\nexport function validateStyleProperty(prop: string): boolean {\n if (!_CACHED_BODY) {\n _CACHED_BODY = getBodyNode() || {};\n _IS_WEBKIT = _CACHED_BODY!.style ? ('WebkitAppearance' in _CACHED_BODY!.style) : false;\n }\n\n let result = true;\n if (_CACHED_BODY!.style && !containsVendorPrefix(prop)) {\n result = prop in _CACHED_BODY!.style;\n if (!result && _IS_WEBKIT) {\n const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.slice(1);\n result = camelProp in _CACHED_BODY!.style;\n }\n }\n\n return result;\n}\n\nexport function validateWebAnimatableStyleProperty(prop: string): boolean {\n return ANIMATABLE_PROP_SET.has(prop);\n}\n\nexport function getBodyNode(): any|null {\n if (typeof document != 'undefined') {\n return document.body;\n }\n return null;\n}\n\nexport function containsElement(elm1: any, elm2: any): boolean {\n while (elm2) {\n if (elm2 === elm1) {\n return true;\n }\n elm2 = getParentElement(elm2);\n }\n return false;\n}\n\nexport function invokeQuery(element: any, selector: string, multi: boolean): any[] {\n if (multi) {\n return Array.from(element.querySelectorAll(selector));\n }\n const elem = element.querySelector(selector);\n return elem ? [elem] : [];\n}\n\nexport function hypenatePropsKeys(original: ɵStyleDataMap): ɵStyleDataMap {\n const newMap: ɵStyleDataMap = new Map();\n original.forEach((val, prop) => {\n const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2');\n newMap.set(newProp, val);\n });\n return newMap;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {AnimationPlayer, NoopAnimationPlayer} from '@angular/animations';\nimport {Injectable} from '@angular/core';\n\nimport {containsElement, getParentElement, invokeQuery, validateStyleProperty} from './shared';\n\n/**\n * @publicApi\n */\n@Injectable()\nexport class NoopAnimationDriver implements AnimationDriver {\n validateStyleProperty(prop: string): boolean {\n return validateStyleProperty(prop);\n }\n\n matchesElement(_element: any, _selector: string): boolean {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n\n containsElement(elm1: any, elm2: any): boolean {\n return containsElement(elm1, elm2);\n }\n\n getParentElement(element: unknown): unknown {\n return getParentElement(element);\n }\n\n query(element: any, selector: string, multi: boolean): any[] {\n return invokeQuery(element, selector, multi);\n }\n\n computeStyle(element: any, prop: string, defaultValue?: string): string {\n return defaultValue || '';\n }\n\n animate(\n element: any, keyframes: Array>, duration: number, delay: number,\n easing: string, previousPlayers: any[] = [],\n scrubberAccessRequested?: boolean): AnimationPlayer {\n return new NoopAnimationPlayer(duration, delay);\n }\n}\n\n/**\n * @publicApi\n */\nexport abstract class AnimationDriver {\n static NOOP: AnimationDriver = (/* @__PURE__ */ new NoopAnimationDriver());\n\n abstract validateStyleProperty(prop: string): boolean;\n\n abstract validateAnimatableStyleProperty?: (prop: string) => boolean;\n\n /**\n * @deprecated No longer in use. Will be removed.\n */\n abstract matchesElement(element: any, selector: string): boolean;\n\n abstract containsElement(elm1: any, elm2: any): boolean;\n\n /**\n * Obtains the parent element, if any. `null` is returned if the element does not have a parent.\n */\n abstract getParentElement(element: unknown): unknown;\n\n abstract query(element: any, selector: string, multi: boolean): any[];\n\n abstract computeStyle(element: any, prop: string, defaultValue?: string): string;\n\n abstract animate(\n element: any, keyframes: Array>, duration: number, delay: number,\n easing?: string|null, previousPlayers?: any[], scrubberAccessRequested?: boolean): any;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {AnimateTimings, AnimationMetadata, AnimationMetadataType, AnimationOptions, sequence, ɵStyleData, ɵStyleDataMap} from '@angular/animations';\n\nimport {Ast as AnimationAst, AstVisitor as AnimationAstVisitor} from './dsl/animation_ast';\nimport {AnimationDslVisitor} from './dsl/animation_dsl_visitor';\nimport {invalidNodeType, invalidParamValue, invalidStyleParams, invalidTimingValue, negativeDelayValue, negativeStepValue} from './error_helpers';\n\nexport const ONE_SECOND = 1000;\n\nexport const SUBSTITUTION_EXPR_START = '{{';\nexport const SUBSTITUTION_EXPR_END = '}}';\nexport const ENTER_CLASSNAME = 'ng-enter';\nexport const LEAVE_CLASSNAME = 'ng-leave';\nexport const NG_TRIGGER_CLASSNAME = 'ng-trigger';\nexport const NG_TRIGGER_SELECTOR = '.ng-trigger';\nexport const NG_ANIMATING_CLASSNAME = 'ng-animating';\nexport const NG_ANIMATING_SELECTOR = '.ng-animating';\n\nexport function resolveTimingValue(value: string|number) {\n if (typeof value == 'number') return value;\n\n const matches = value.match(/^(-?[\\.\\d]+)(m?s)/);\n if (!matches || matches.length < 2) return 0;\n\n return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n}\n\nfunction _convertTimeValueToMS(value: number, unit: string): number {\n switch (unit) {\n case 's':\n return value * ONE_SECOND;\n default: // ms or something else\n return value;\n }\n}\n\nexport function resolveTiming(\n timings: string|number|AnimateTimings, errors: Error[], allowNegativeValues?: boolean) {\n return timings.hasOwnProperty('duration') ?\n timings :\n parseTimeExpression(timings, errors, allowNegativeValues);\n}\n\nfunction parseTimeExpression(\n exp: string|number, errors: Error[], allowNegativeValues?: boolean): AnimateTimings {\n const regex = /^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;\n let duration: number;\n let delay: number = 0;\n let easing: string = '';\n if (typeof exp === 'string') {\n const matches = exp.match(regex);\n if (matches === null) {\n errors.push(invalidTimingValue(exp));\n return {duration: 0, delay: 0, easing: ''};\n }\n\n duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n\n const delayMatch = matches[3];\n if (delayMatch != null) {\n delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]);\n }\n\n const easingVal = matches[5];\n if (easingVal) {\n easing = easingVal;\n }\n } else {\n duration = exp;\n }\n\n if (!allowNegativeValues) {\n let containsErrors = false;\n let startIndex = errors.length;\n if (duration < 0) {\n errors.push(negativeStepValue());\n containsErrors = true;\n }\n if (delay < 0) {\n errors.push(negativeDelayValue());\n containsErrors = true;\n }\n if (containsErrors) {\n errors.splice(startIndex, 0, invalidTimingValue(exp));\n }\n }\n\n return {duration, delay, easing};\n}\n\nexport function copyObj(\n obj: {[key: string]: any}, destination: {[key: string]: any} = {}): {[key: string]: any} {\n Object.keys(obj).forEach(prop => {\n destination[prop] = obj[prop];\n });\n return destination;\n}\n\nexport function convertToMap(obj: ɵStyleData): ɵStyleDataMap {\n const styleMap: ɵStyleDataMap = new Map();\n Object.keys(obj).forEach(prop => {\n const val = obj[prop];\n styleMap.set(prop, val);\n });\n return styleMap;\n}\n\nexport function normalizeKeyframes(keyframes: Array<ɵStyleData>|\n Array<ɵStyleDataMap>): Array<ɵStyleDataMap> {\n if (!keyframes.length) {\n return [];\n }\n if (keyframes[0] instanceof Map) {\n return keyframes as Array<ɵStyleDataMap>;\n }\n return keyframes.map(kf => convertToMap(kf as ɵStyleData));\n}\n\nexport function normalizeStyles(styles: ɵStyleDataMap|Array<ɵStyleDataMap>): ɵStyleDataMap {\n const normalizedStyles: ɵStyleDataMap = new Map();\n if (Array.isArray(styles)) {\n styles.forEach(data => copyStyles(data, normalizedStyles));\n } else {\n copyStyles(styles, normalizedStyles);\n }\n return normalizedStyles;\n}\n\nexport function copyStyles(\n styles: ɵStyleDataMap, destination: ɵStyleDataMap = new Map(),\n backfill?: ɵStyleDataMap): ɵStyleDataMap {\n if (backfill) {\n for (let [prop, val] of backfill) {\n destination.set(prop, val);\n }\n }\n for (let [prop, val] of styles) {\n destination.set(prop, val);\n }\n return destination;\n}\n\nexport function setStyles(element: any, styles: ɵStyleDataMap, formerStyles?: ɵStyleDataMap) {\n styles.forEach((val, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n if (formerStyles && !formerStyles.has(prop)) {\n formerStyles.set(prop, element.style[camelProp]);\n }\n element.style[camelProp] = val;\n });\n}\n\nexport function eraseStyles(element: any, styles: ɵStyleDataMap) {\n styles.forEach((_, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n element.style[camelProp] = '';\n });\n}\n\nexport function normalizeAnimationEntry(steps: AnimationMetadata|\n AnimationMetadata[]): AnimationMetadata {\n if (Array.isArray(steps)) {\n if (steps.length == 1) return steps[0];\n return sequence(steps);\n }\n return steps as AnimationMetadata;\n}\n\nexport function validateStyleParams(\n value: string|number|null|undefined, options: AnimationOptions, errors: Error[]) {\n const params = options.params || {};\n const matches = extractStyleParams(value);\n if (matches.length) {\n matches.forEach(varName => {\n if (!params.hasOwnProperty(varName)) {\n errors.push(invalidStyleParams(varName));\n }\n });\n }\n}\n\nconst PARAM_REGEX =\n new RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 'g');\nexport function extractStyleParams(value: string|number|null|undefined): string[] {\n let params: string[] = [];\n if (typeof value === 'string') {\n let match: any;\n while (match = PARAM_REGEX.exec(value)) {\n params.push(match[1] as string);\n }\n PARAM_REGEX.lastIndex = 0;\n }\n return params;\n}\n\nexport function interpolateParams(\n value: string|number, params: {[name: string]: any}, errors: Error[]): string|number {\n const original = value.toString();\n const str = original.replace(PARAM_REGEX, (_, varName) => {\n let localVal = params[varName];\n // this means that the value was never overridden by the data passed in by the user\n if (localVal == null) {\n errors.push(invalidParamValue(varName));\n localVal = '';\n }\n return localVal.toString();\n });\n\n // we do this to assert that numeric values stay as they are\n return str == original ? value : str;\n}\n\nexport function iteratorToArray(iterator: any): any[] {\n const arr: any[] = [];\n let item = iterator.next();\n while (!item.done) {\n arr.push(item.value);\n item = iterator.next();\n }\n return arr;\n}\n\nconst DASH_CASE_REGEXP = /-+([a-z0-9])/g;\nexport function dashCaseToCamelCase(input: string): string {\n return input.replace(DASH_CASE_REGEXP, (...m: any[]) => m[1].toUpperCase());\n}\n\nexport function camelCaseToDashCase(input: string): string {\n return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nexport function allowPreviousPlayerStylesMerge(duration: number, delay: number) {\n return duration === 0 || delay === 0;\n}\n\nexport function balancePreviousStylesIntoKeyframes(\n element: any, keyframes: Array<ɵStyleDataMap>, previousStyles: ɵStyleDataMap) {\n if (previousStyles.size && keyframes.length) {\n let startingKeyframe = keyframes[0];\n let missingStyleProps: string[] = [];\n previousStyles.forEach((val, prop) => {\n if (!startingKeyframe.has(prop)) {\n missingStyleProps.push(prop);\n }\n startingKeyframe.set(prop, val);\n });\n\n if (missingStyleProps.length) {\n for (let i = 1; i < keyframes.length; i++) {\n let kf = keyframes[i];\n missingStyleProps.forEach(prop => kf.set(prop, computeStyle(element, prop)));\n }\n }\n }\n return keyframes;\n}\n\nexport function visitDslNode(\n visitor: AnimationDslVisitor, node: AnimationMetadata, context: any): any;\nexport function visitDslNode(\n visitor: AnimationAstVisitor, node: AnimationAst, context: any): any;\nexport function visitDslNode(visitor: any, node: any, context: any): any {\n switch (node.type) {\n case AnimationMetadataType.Trigger:\n return visitor.visitTrigger(node, context);\n case AnimationMetadataType.State:\n return visitor.visitState(node, context);\n case AnimationMetadataType.Transition:\n return visitor.visitTransition(node, context);\n case AnimationMetadataType.Sequence:\n return visitor.visitSequence(node, context);\n case AnimationMetadataType.Group:\n return visitor.visitGroup(node, context);\n case AnimationMetadataType.Animate:\n return visitor.visitAnimate(node, context);\n case AnimationMetadataType.Keyframes:\n return visitor.visitKeyframes(node, context);\n case AnimationMetadataType.Style:\n return visitor.visitStyle(node, context);\n case AnimationMetadataType.Reference:\n return visitor.visitReference(node, context);\n case AnimationMetadataType.AnimateChild:\n return visitor.visitAnimateChild(node, context);\n case AnimationMetadataType.AnimateRef:\n return visitor.visitAnimateRef(node, context);\n case AnimationMetadataType.Query:\n return visitor.visitQuery(node, context);\n case AnimationMetadataType.Stagger:\n return visitor.visitStagger(node, context);\n default:\n throw invalidNodeType(node.type);\n }\n}\n\nexport function computeStyle(element: any, prop: string): string {\n return (window.getComputedStyle(element))[prop];\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {invalidExpression, invalidTransitionAlias} from '../error_helpers';\n\nexport const ANY_STATE = '*';\nexport declare type TransitionMatcherFn =\n (fromState: any, toState: any, element: any, params: {[key: string]: any}) => boolean;\n\nexport function parseTransitionExpr(\n transitionValue: string|TransitionMatcherFn, errors: Error[]): TransitionMatcherFn[] {\n const expressions: TransitionMatcherFn[] = [];\n if (typeof transitionValue == 'string') {\n transitionValue.split(/\\s*,\\s*/).forEach(\n str => parseInnerTransitionStr(str, expressions, errors));\n } else {\n expressions.push(transitionValue);\n }\n return expressions;\n}\n\nfunction parseInnerTransitionStr(\n eventStr: string, expressions: TransitionMatcherFn[], errors: Error[]) {\n if (eventStr[0] == ':') {\n const result = parseAnimationAlias(eventStr, errors);\n if (typeof result == 'function') {\n expressions.push(result);\n return;\n }\n eventStr = result;\n }\n\n const match = eventStr.match(/^(\\*|[-\\w]+)\\s*()\\s*(\\*|[-\\w]+)$/);\n if (match == null || match.length < 4) {\n errors.push(invalidExpression(eventStr));\n return expressions;\n }\n\n const fromState = match[1];\n const separator = match[2];\n const toState = match[3];\n expressions.push(makeLambdaFromStates(fromState, toState));\n\n const isFullAnyStateExpr = fromState == ANY_STATE && toState == ANY_STATE;\n if (separator[0] == '<' && !isFullAnyStateExpr) {\n expressions.push(makeLambdaFromStates(toState, fromState));\n }\n}\n\nfunction parseAnimationAlias(alias: string, errors: Error[]): string|TransitionMatcherFn {\n switch (alias) {\n case ':enter':\n return 'void => *';\n case ':leave':\n return '* => void';\n case ':increment':\n return (fromState: any, toState: any): boolean => parseFloat(toState) > parseFloat(fromState);\n case ':decrement':\n return (fromState: any, toState: any): boolean => parseFloat(toState) < parseFloat(fromState);\n default:\n errors.push(invalidTransitionAlias(alias));\n return '* => *';\n }\n}\n\n// DO NOT REFACTOR ... keep the follow set instantiations\n// with the values intact (closure compiler for some reason\n// removes follow-up lines that add the values outside of\n// the constructor...\nconst TRUE_BOOLEAN_VALUES = new Set(['true', '1']);\nconst FALSE_BOOLEAN_VALUES = new Set(['false', '0']);\n\nfunction makeLambdaFromStates(lhs: string, rhs: string): TransitionMatcherFn {\n const LHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(lhs) || FALSE_BOOLEAN_VALUES.has(lhs);\n const RHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(rhs) || FALSE_BOOLEAN_VALUES.has(rhs);\n\n return (fromState: any, toState: any): boolean => {\n let lhsMatch = lhs == ANY_STATE || lhs == fromState;\n let rhsMatch = rhs == ANY_STATE || rhs == toState;\n\n if (!lhsMatch && LHS_MATCH_BOOLEAN && typeof fromState === 'boolean') {\n lhsMatch = fromState ? TRUE_BOOLEAN_VALUES.has(lhs) : FALSE_BOOLEAN_VALUES.has(lhs);\n }\n if (!rhsMatch && RHS_MATCH_BOOLEAN && typeof toState === 'boolean') {\n rhsMatch = toState ? TRUE_BOOLEAN_VALUES.has(rhs) : FALSE_BOOLEAN_VALUES.has(rhs);\n }\n\n return lhsMatch && rhsMatch;\n };\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {AnimateTimings, AnimationAnimateChildMetadata, AnimationAnimateMetadata, AnimationAnimateRefMetadata, AnimationGroupMetadata, AnimationKeyframesSequenceMetadata, AnimationMetadata, AnimationMetadataType, AnimationOptions, AnimationQueryMetadata, AnimationQueryOptions, AnimationReferenceMetadata, AnimationSequenceMetadata, AnimationStaggerMetadata, AnimationStateMetadata, AnimationStyleMetadata, AnimationTransitionMetadata, AnimationTriggerMetadata, AUTO_STYLE, style, ɵStyleDataMap} from '@angular/animations';\n\nimport {invalidDefinition, invalidKeyframes, invalidOffset, invalidParallelAnimation, invalidProperty, invalidStagger, invalidState, invalidStyleValue, invalidTrigger, keyframeOffsetsOutOfOrder, keyframesMissingOffsets} from '../error_helpers';\nimport {AnimationDriver} from '../render/animation_driver';\nimport {getOrSetDefaultValue} from '../render/shared';\nimport {convertToMap, copyObj, extractStyleParams, iteratorToArray, NG_ANIMATING_SELECTOR, NG_TRIGGER_SELECTOR, normalizeAnimationEntry, resolveTiming, SUBSTITUTION_EXPR_START, validateStyleParams, visitDslNode} from '../util';\nimport {pushUnrecognizedPropertiesWarning} from '../warning_helpers';\n\nimport {AnimateAst, AnimateChildAst, AnimateRefAst, Ast, DynamicTimingAst, GroupAst, KeyframesAst, QueryAst, ReferenceAst, SequenceAst, StaggerAst, StateAst, StyleAst, TimingAst, TransitionAst, TriggerAst} from './animation_ast';\nimport {AnimationDslVisitor} from './animation_dsl_visitor';\nimport {parseTransitionExpr} from './animation_transition_expr';\n\nconst SELF_TOKEN = ':self';\nconst SELF_TOKEN_REGEX = new RegExp(`s*${SELF_TOKEN}s*,?`, 'g');\n\n/*\n * [Validation]\n * The visitor code below will traverse the animation AST generated by the animation verb functions\n * (the output is a tree of objects) and attempt to perform a series of validations on the data. The\n * following corner-cases will be validated:\n *\n * 1. Overlap of animations\n * Given that a CSS property cannot be animated in more than one place at the same time, it's\n * important that this behavior is detected and validated. The way in which this occurs is that\n * each time a style property is examined, a string-map containing the property will be updated with\n * the start and end times for when the property is used within an animation step.\n *\n * If there are two or more parallel animations that are currently running (these are invoked by the\n * group()) on the same element then the validator will throw an error. Since the start/end timing\n * values are collected for each property then if the current animation step is animating the same\n * property and its timing values fall anywhere into the window of time that the property is\n * currently being animated within then this is what causes an error.\n *\n * 2. Timing values\n * The validator will validate to see if a timing value of `duration delay easing` or\n * `durationNumber` is valid or not.\n *\n * (note that upon validation the code below will replace the timing data with an object containing\n * {duration,delay,easing}.\n *\n * 3. Offset Validation\n * Each of the style() calls are allowed to have an offset value when placed inside of keyframes().\n * Offsets within keyframes() are considered valid when:\n *\n * - No offsets are used at all\n * - Each style() entry contains an offset value\n * - Each offset is between 0 and 1\n * - Each offset is greater to or equal than the previous one\n *\n * Otherwise an error will be thrown.\n */\nexport function buildAnimationAst(\n driver: AnimationDriver, metadata: AnimationMetadata|AnimationMetadata[], errors: Error[],\n warnings: string[]): Ast {\n return new AnimationAstBuilderVisitor(driver).build(metadata, errors, warnings);\n}\n\nconst ROOT_SELECTOR = '';\n\nexport class AnimationAstBuilderVisitor implements AnimationDslVisitor {\n constructor(private _driver: AnimationDriver) {}\n\n build(metadata: AnimationMetadata|AnimationMetadata[], errors: Error[], warnings: string[]):\n Ast {\n const context = new AnimationAstBuilderContext(errors);\n this._resetContextStyleTimingState(context);\n const ast =\n >visitDslNode(this, normalizeAnimationEntry(metadata), context);\n\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (context.unsupportedCSSPropertiesFound.size) {\n pushUnrecognizedPropertiesWarning(\n warnings,\n [...context.unsupportedCSSPropertiesFound.keys()],\n );\n }\n }\n\n return ast;\n }\n\n private _resetContextStyleTimingState(context: AnimationAstBuilderContext) {\n context.currentQuerySelector = ROOT_SELECTOR;\n context.collectedStyles = new Map>();\n context.collectedStyles.set(ROOT_SELECTOR, new Map());\n context.currentTime = 0;\n }\n\n visitTrigger(metadata: AnimationTriggerMetadata, context: AnimationAstBuilderContext):\n TriggerAst {\n let queryCount = context.queryCount = 0;\n let depCount = context.depCount = 0;\n const states: StateAst[] = [];\n const transitions: TransitionAst[] = [];\n if (metadata.name.charAt(0) == '@') {\n context.errors.push(invalidTrigger());\n }\n\n metadata.definitions.forEach(def => {\n this._resetContextStyleTimingState(context);\n if (def.type == AnimationMetadataType.State) {\n const stateDef = def as AnimationStateMetadata;\n const name = stateDef.name;\n name.toString().split(/\\s*,\\s*/).forEach(n => {\n stateDef.name = n;\n states.push(this.visitState(stateDef, context));\n });\n stateDef.name = name;\n } else if (def.type == AnimationMetadataType.Transition) {\n const transition = this.visitTransition(def as AnimationTransitionMetadata, context);\n queryCount += transition.queryCount;\n depCount += transition.depCount;\n transitions.push(transition);\n } else {\n context.errors.push(invalidDefinition());\n }\n });\n\n return {\n type: AnimationMetadataType.Trigger,\n name: metadata.name,\n states,\n transitions,\n queryCount,\n depCount,\n options: null\n };\n }\n\n visitState(metadata: AnimationStateMetadata, context: AnimationAstBuilderContext): StateAst {\n const styleAst = this.visitStyle(metadata.styles, context);\n const astParams = (metadata.options && metadata.options.params) || null;\n if (styleAst.containsDynamicStyles) {\n const missingSubs = new Set();\n const params = astParams || {};\n styleAst.styles.forEach(style => {\n if (style instanceof Map) {\n style.forEach(value => {\n extractStyleParams(value).forEach(sub => {\n if (!params.hasOwnProperty(sub)) {\n missingSubs.add(sub);\n }\n });\n });\n }\n });\n if (missingSubs.size) {\n const missingSubsArr = iteratorToArray(missingSubs.values());\n context.errors.push(invalidState(metadata.name, missingSubsArr));\n }\n }\n\n return {\n type: AnimationMetadataType.State,\n name: metadata.name,\n style: styleAst,\n options: astParams ? {params: astParams} : null\n };\n }\n\n visitTransition(metadata: AnimationTransitionMetadata, context: AnimationAstBuilderContext):\n TransitionAst {\n context.queryCount = 0;\n context.depCount = 0;\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n const matchers = parseTransitionExpr(metadata.expr, context.errors);\n\n return {\n type: AnimationMetadataType.Transition,\n matchers,\n animation,\n queryCount: context.queryCount,\n depCount: context.depCount,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n\n visitSequence(metadata: AnimationSequenceMetadata, context: AnimationAstBuilderContext):\n SequenceAst {\n return {\n type: AnimationMetadataType.Sequence,\n steps: metadata.steps.map(s => visitDslNode(this, s, context)),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n\n visitGroup(metadata: AnimationGroupMetadata, context: AnimationAstBuilderContext): GroupAst {\n const currentTime = context.currentTime;\n let furthestTime = 0;\n const steps = metadata.steps.map(step => {\n context.currentTime = currentTime;\n const innerAst = visitDslNode(this, step, context);\n furthestTime = Math.max(furthestTime, context.currentTime);\n return innerAst;\n });\n\n context.currentTime = furthestTime;\n return {\n type: AnimationMetadataType.Group,\n steps,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n\n visitAnimate(metadata: AnimationAnimateMetadata, context: AnimationAstBuilderContext):\n AnimateAst {\n const timingAst = constructTimingAst(metadata.timings, context.errors);\n context.currentAnimateTimings = timingAst;\n let styleAst: StyleAst|KeyframesAst;\n let styleMetadata: AnimationStyleMetadata|AnimationKeyframesSequenceMetadata =\n metadata.styles ? metadata.styles : style({});\n if (styleMetadata.type == AnimationMetadataType.Keyframes) {\n styleAst = this.visitKeyframes(styleMetadata as AnimationKeyframesSequenceMetadata, context);\n } else {\n let styleMetadata = metadata.styles as AnimationStyleMetadata;\n let isEmpty = false;\n if (!styleMetadata) {\n isEmpty = true;\n const newStyleData: {[prop: string]: string|number} = {};\n if (timingAst.easing) {\n newStyleData['easing'] = timingAst.easing;\n }\n styleMetadata = style(newStyleData);\n }\n context.currentTime += timingAst.duration + timingAst.delay;\n const _styleAst = this.visitStyle(styleMetadata, context);\n _styleAst.isEmptyStep = isEmpty;\n styleAst = _styleAst;\n }\n\n context.currentAnimateTimings = null;\n return {\n type: AnimationMetadataType.Animate,\n timings: timingAst,\n style: styleAst,\n options: null\n };\n }\n\n visitStyle(metadata: AnimationStyleMetadata, context: AnimationAstBuilderContext): StyleAst {\n const ast = this._makeStyleAst(metadata, context);\n this._validateStyleAst(ast, context);\n return ast;\n }\n\n private _makeStyleAst(metadata: AnimationStyleMetadata, context: AnimationAstBuilderContext):\n StyleAst {\n const styles: Array<(ɵStyleDataMap | string)> = [];\n const metadataStyles = Array.isArray(metadata.styles) ? metadata.styles : [metadata.styles];\n\n for (let styleTuple of metadataStyles) {\n if (typeof styleTuple === 'string') {\n if (styleTuple === AUTO_STYLE) {\n styles.push(styleTuple);\n } else {\n context.errors.push(invalidStyleValue(styleTuple));\n }\n } else {\n styles.push(convertToMap(styleTuple));\n }\n }\n\n let containsDynamicStyles = false;\n let collectedEasing: string|null = null;\n styles.forEach(styleData => {\n if (styleData instanceof Map) {\n if (styleData.has('easing')) {\n collectedEasing = styleData.get('easing') as string;\n styleData.delete('easing');\n }\n if (!containsDynamicStyles) {\n for (let value of styleData.values()) {\n if (value!.toString().indexOf(SUBSTITUTION_EXPR_START) >= 0) {\n containsDynamicStyles = true;\n break;\n }\n }\n }\n }\n });\n\n return {\n type: AnimationMetadataType.Style,\n styles,\n easing: collectedEasing,\n offset: metadata.offset,\n containsDynamicStyles,\n options: null\n };\n }\n\n private _validateStyleAst(ast: StyleAst, context: AnimationAstBuilderContext): void {\n const timings = context.currentAnimateTimings;\n let endTime = context.currentTime;\n let startTime = context.currentTime;\n if (timings && startTime > 0) {\n startTime -= timings.duration + timings.delay;\n }\n\n ast.styles.forEach(tuple => {\n if (typeof tuple === 'string') return;\n\n tuple.forEach((value, prop) => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._driver.validateStyleProperty(prop)) {\n tuple.delete(prop);\n context.unsupportedCSSPropertiesFound.add(prop);\n return;\n }\n }\n\n // This is guaranteed to have a defined Map at this querySelector location making it\n // safe to add the assertion here. It is set as a default empty map in prior methods.\n const collectedStyles = context.collectedStyles.get(context.currentQuerySelector!)!;\n const collectedEntry = collectedStyles.get(prop);\n let updateCollectedStyle = true;\n if (collectedEntry) {\n if (startTime != endTime && startTime >= collectedEntry.startTime &&\n endTime <= collectedEntry.endTime) {\n context.errors.push(invalidParallelAnimation(\n prop, collectedEntry.startTime, collectedEntry.endTime, startTime, endTime));\n updateCollectedStyle = false;\n }\n\n // we always choose the smaller start time value since we\n // want to have a record of the entire animation window where\n // the style property is being animated in between\n startTime = collectedEntry.startTime;\n }\n\n if (updateCollectedStyle) {\n collectedStyles.set(prop, {startTime, endTime});\n }\n\n if (context.options) {\n validateStyleParams(value, context.options, context.errors);\n }\n });\n });\n }\n\n visitKeyframes(metadata: AnimationKeyframesSequenceMetadata, context: AnimationAstBuilderContext):\n KeyframesAst {\n const ast: KeyframesAst = {type: AnimationMetadataType.Keyframes, styles: [], options: null};\n if (!context.currentAnimateTimings) {\n context.errors.push(invalidKeyframes());\n return ast;\n }\n\n const MAX_KEYFRAME_OFFSET = 1;\n\n let totalKeyframesWithOffsets = 0;\n const offsets: number[] = [];\n let offsetsOutOfOrder = false;\n let keyframesOutOfRange = false;\n let previousOffset: number = 0;\n\n const keyframes: StyleAst[] = metadata.steps.map(styles => {\n const style = this._makeStyleAst(styles, context);\n let offsetVal: number|null =\n style.offset != null ? style.offset : consumeOffset(style.styles);\n let offset: number = 0;\n if (offsetVal != null) {\n totalKeyframesWithOffsets++;\n offset = style.offset = offsetVal;\n }\n keyframesOutOfRange = keyframesOutOfRange || offset < 0 || offset > 1;\n offsetsOutOfOrder = offsetsOutOfOrder || offset < previousOffset;\n previousOffset = offset;\n offsets.push(offset);\n return style;\n });\n\n if (keyframesOutOfRange) {\n context.errors.push(invalidOffset());\n }\n\n if (offsetsOutOfOrder) {\n context.errors.push(keyframeOffsetsOutOfOrder());\n }\n\n const length = metadata.steps.length;\n let generatedOffset = 0;\n if (totalKeyframesWithOffsets > 0 && totalKeyframesWithOffsets < length) {\n context.errors.push(keyframesMissingOffsets());\n } else if (totalKeyframesWithOffsets == 0) {\n generatedOffset = MAX_KEYFRAME_OFFSET / (length - 1);\n }\n\n const limit = length - 1;\n const currentTime = context.currentTime;\n const currentAnimateTimings = context.currentAnimateTimings!;\n const animateDuration = currentAnimateTimings.duration;\n keyframes.forEach((kf, i) => {\n const offset = generatedOffset > 0 ? (i == limit ? 1 : (generatedOffset * i)) : offsets[i];\n const durationUpToThisFrame = offset * animateDuration;\n context.currentTime = currentTime + currentAnimateTimings.delay + durationUpToThisFrame;\n currentAnimateTimings.duration = durationUpToThisFrame;\n this._validateStyleAst(kf, context);\n kf.offset = offset;\n\n ast.styles.push(kf);\n });\n\n return ast;\n }\n\n visitReference(metadata: AnimationReferenceMetadata, context: AnimationAstBuilderContext):\n ReferenceAst {\n return {\n type: AnimationMetadataType.Reference,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n\n visitAnimateChild(metadata: AnimationAnimateChildMetadata, context: AnimationAstBuilderContext):\n AnimateChildAst {\n context.depCount++;\n return {\n type: AnimationMetadataType.AnimateChild,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n\n visitAnimateRef(metadata: AnimationAnimateRefMetadata, context: AnimationAstBuilderContext):\n AnimateRefAst {\n return {\n type: AnimationMetadataType.AnimateRef,\n animation: this.visitReference(metadata.animation, context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n\n visitQuery(metadata: AnimationQueryMetadata, context: AnimationAstBuilderContext): QueryAst {\n const parentSelector = context.currentQuerySelector!;\n const options = (metadata.options || {}) as AnimationQueryOptions;\n\n context.queryCount++;\n context.currentQuery = metadata;\n const [selector, includeSelf] = normalizeSelector(metadata.selector);\n context.currentQuerySelector =\n parentSelector.length ? (parentSelector + ' ' + selector) : selector;\n getOrSetDefaultValue(context.collectedStyles, context.currentQuerySelector, new Map());\n\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n context.currentQuery = null;\n context.currentQuerySelector = parentSelector;\n\n return {\n type: AnimationMetadataType.Query,\n selector,\n limit: options.limit || 0,\n optional: !!options.optional,\n includeSelf,\n animation,\n originalSelector: metadata.selector,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n\n visitStagger(metadata: AnimationStaggerMetadata, context: AnimationAstBuilderContext):\n StaggerAst {\n if (!context.currentQuery) {\n context.errors.push(invalidStagger());\n }\n const timings = metadata.timings === 'full' ?\n {duration: 0, delay: 0, easing: 'full'} :\n resolveTiming(metadata.timings, context.errors, true);\n\n return {\n type: AnimationMetadataType.Stagger,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n timings,\n options: null\n };\n }\n}\n\nfunction normalizeSelector(selector: string): [string, boolean] {\n const hasAmpersand = selector.split(/\\s*,\\s*/).find(token => token == SELF_TOKEN) ? true : false;\n if (hasAmpersand) {\n selector = selector.replace(SELF_TOKEN_REGEX, '');\n }\n\n // Note: the :enter and :leave aren't normalized here since those\n // selectors are filled in at runtime during timeline building\n selector = selector.replace(/@\\*/g, NG_TRIGGER_SELECTOR)\n .replace(/@\\w+/g, match => NG_TRIGGER_SELECTOR + '-' + match.slice(1))\n .replace(/:animating/g, NG_ANIMATING_SELECTOR);\n\n return [selector, hasAmpersand];\n}\n\n\nfunction normalizeParams(obj: {[key: string]: any}|any): {[key: string]: any}|null {\n return obj ? copyObj(obj) : null;\n}\n\nexport type StyleTimeTuple = {\n startTime: number; endTime: number;\n};\n\nexport class AnimationAstBuilderContext {\n public queryCount: number = 0;\n public depCount: number = 0;\n public currentTransition: AnimationTransitionMetadata|null = null;\n public currentQuery: AnimationQueryMetadata|null = null;\n public currentQuerySelector: string|null = null;\n public currentAnimateTimings: TimingAst|null = null;\n public currentTime: number = 0;\n public collectedStyles = new Map>();\n public options: AnimationOptions|null = null;\n public unsupportedCSSPropertiesFound: Set = new Set();\n constructor(public errors: Error[]) {}\n}\n\ntype OffsetStyles = string|ɵStyleDataMap;\n\nfunction consumeOffset(styles: OffsetStyles|Array): number|null {\n if (typeof styles == 'string') return null;\n\n let offset: number|null = null;\n\n if (Array.isArray(styles)) {\n styles.forEach(styleTuple => {\n if (styleTuple instanceof Map && styleTuple.has('offset')) {\n const obj = styleTuple as ɵStyleDataMap;\n offset = parseFloat(obj.get('offset') as string);\n obj.delete('offset');\n }\n });\n } else if (styles instanceof Map && styles.has('offset')) {\n const obj = styles;\n offset = parseFloat(obj.get('offset') as string);\n obj.delete('offset');\n }\n return offset;\n}\n\nfunction constructTimingAst(value: string|number|AnimateTimings, errors: Error[]) {\n if (value.hasOwnProperty('duration')) {\n return value as AnimateTimings;\n }\n\n if (typeof value == 'number') {\n const duration = resolveTiming(value, errors).duration;\n return makeTimingAst(duration, 0, '');\n }\n\n const strValue = value as string;\n const isDynamic = strValue.split(/\\s+/).some(v => v.charAt(0) == '{' && v.charAt(1) == '{');\n if (isDynamic) {\n const ast = makeTimingAst(0, 0, '') as any;\n ast.dynamic = true;\n ast.strValue = strValue;\n return ast as DynamicTimingAst;\n }\n\n const timings = resolveTiming(strValue, errors);\n return makeTimingAst(timings.duration, timings.delay, timings.easing);\n}\n\nfunction normalizeAnimationOptions(options: AnimationOptions|null): AnimationOptions {\n if (options) {\n options = copyObj(options);\n if (options['params']) {\n options['params'] = normalizeParams(options['params'])!;\n }\n } else {\n options = {};\n }\n return options;\n}\n\nfunction makeTimingAst(duration: number, delay: number, easing: string|null): TimingAst {\n return {duration, delay, easing};\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {ɵStyleDataMap} from '@angular/animations';\n\nimport {AnimationEngineInstruction, AnimationTransitionInstructionType} from '../render/animation_engine_instruction';\n\nexport interface AnimationTimelineInstruction extends AnimationEngineInstruction {\n element: any;\n keyframes: Array<ɵStyleDataMap>;\n preStyleProps: string[];\n postStyleProps: string[];\n duration: number;\n delay: number;\n totalTime: number;\n easing: string|null;\n stretchStartingKeyframe?: boolean;\n subTimeline: boolean;\n}\n\nexport function createTimelineInstruction(\n element: any, keyframes: Array<ɵStyleDataMap>, preStyleProps: string[],\n postStyleProps: string[], duration: number, delay: number, easing: string|null = null,\n subTimeline: boolean = false): AnimationTimelineInstruction {\n return {\n type: AnimationTransitionInstructionType.TimelineAnimation,\n element,\n keyframes,\n preStyleProps,\n postStyleProps,\n duration,\n delay,\n totalTime: duration + delay,\n easing,\n subTimeline\n };\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {AnimationTimelineInstruction} from './animation_timeline_instruction';\n\nexport class ElementInstructionMap {\n private _map = new Map();\n\n get(element: any): AnimationTimelineInstruction[] {\n return this._map.get(element) || [];\n }\n\n append(element: any, instructions: AnimationTimelineInstruction[]) {\n let existingInstructions = this._map.get(element);\n if (!existingInstructions) {\n this._map.set(element, existingInstructions = []);\n }\n existingInstructions.push(...instructions);\n }\n\n has(element: any): boolean {\n return this._map.has(element);\n }\n\n clear() {\n this._map.clear();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {AnimateChildOptions, AnimateTimings, AnimationMetadataType, AnimationOptions, AnimationQueryOptions, AUTO_STYLE, ɵPRE_STYLE as PRE_STYLE, ɵStyleDataMap} from '@angular/animations';\n\nimport {invalidQuery} from '../error_helpers';\nimport {AnimationDriver} from '../render/animation_driver';\nimport {copyStyles, interpolateParams, iteratorToArray, resolveTiming, resolveTimingValue, visitDslNode} from '../util';\n\nimport {AnimateAst, AnimateChildAst, AnimateRefAst, Ast, AstVisitor, DynamicTimingAst, GroupAst, KeyframesAst, QueryAst, ReferenceAst, SequenceAst, StaggerAst, StateAst, StyleAst, TimingAst, TransitionAst, TriggerAst} from './animation_ast';\nimport {AnimationTimelineInstruction, createTimelineInstruction} from './animation_timeline_instruction';\nimport {ElementInstructionMap} from './element_instruction_map';\n\nconst ONE_FRAME_IN_MILLISECONDS = 1;\nconst ENTER_TOKEN = ':enter';\nconst ENTER_TOKEN_REGEX = new RegExp(ENTER_TOKEN, 'g');\nconst LEAVE_TOKEN = ':leave';\nconst LEAVE_TOKEN_REGEX = new RegExp(LEAVE_TOKEN, 'g');\n\n/*\n * The code within this file aims to generate web-animations-compatible keyframes from Angular's\n * animation DSL code.\n *\n * The code below will be converted from:\n *\n * ```\n * sequence([\n * style({ opacity: 0 }),\n * animate(1000, style({ opacity: 0 }))\n * ])\n * ```\n *\n * To:\n * ```\n * keyframes = [{ opacity: 0, offset: 0 }, { opacity: 1, offset: 1 }]\n * duration = 1000\n * delay = 0\n * easing = ''\n * ```\n *\n * For this operation to cover the combination of animation verbs (style, animate, group, etc...) a\n * combination of AST traversal and merge-sort-like algorithms are used.\n *\n * [AST Traversal]\n * Each of the animation verbs, when executed, will return an string-map object representing what\n * type of action it is (style, animate, group, etc...) and the data associated with it. This means\n * that when functional composition mix of these functions is evaluated (like in the example above)\n * then it will end up producing a tree of objects representing the animation itself.\n *\n * When this animation object tree is processed by the visitor code below it will visit each of the\n * verb statements within the visitor. And during each visit it will build the context of the\n * animation keyframes by interacting with the `TimelineBuilder`.\n *\n * [TimelineBuilder]\n * This class is responsible for tracking the styles and building a series of keyframe objects for a\n * timeline between a start and end time. The builder starts off with an initial timeline and each\n * time the AST comes across a `group()`, `keyframes()` or a combination of the two within a\n * `sequence()` then it will generate a sub timeline for each step as well as a new one after\n * they are complete.\n *\n * As the AST is traversed, the timing state on each of the timelines will be incremented. If a sub\n * timeline was created (based on one of the cases above) then the parent timeline will attempt to\n * merge the styles used within the sub timelines into itself (only with group() this will happen).\n * This happens with a merge operation (much like how the merge works in mergeSort) and it will only\n * copy the most recently used styles from the sub timelines into the parent timeline. This ensures\n * that if the styles are used later on in another phase of the animation then they will be the most\n * up-to-date values.\n *\n * [How Missing Styles Are Updated]\n * Each timeline has a `backFill` property which is responsible for filling in new styles into\n * already processed keyframes if a new style shows up later within the animation sequence.\n *\n * ```\n * sequence([\n * style({ width: 0 }),\n * animate(1000, style({ width: 100 })),\n * animate(1000, style({ width: 200 })),\n * animate(1000, style({ width: 300 }))\n * animate(1000, style({ width: 400, height: 400 })) // notice how `height` doesn't exist anywhere\n * else\n * ])\n * ```\n *\n * What is happening here is that the `height` value is added later in the sequence, but is missing\n * from all previous animation steps. Therefore when a keyframe is created it would also be missing\n * from all previous keyframes up until where it is first used. For the timeline keyframe generation\n * to properly fill in the style it will place the previous value (the value from the parent\n * timeline) or a default value of `*` into the backFill map. The `copyStyles` method in util.ts\n * handles propagating that backfill map to the styles object.\n *\n * When a sub-timeline is created it will have its own backFill property. This is done so that\n * styles present within the sub-timeline do not accidentally seep into the previous/future timeline\n * keyframes\n *\n * [Validation]\n * The code in this file is not responsible for validation. That functionality happens with within\n * the `AnimationValidatorVisitor` code.\n */\nexport function buildAnimationTimelines(\n driver: AnimationDriver, rootElement: any, ast: Ast,\n enterClassName: string, leaveClassName: string, startingStyles: ɵStyleDataMap = new Map(),\n finalStyles: ɵStyleDataMap = new Map(), options: AnimationOptions,\n subInstructions?: ElementInstructionMap, errors: Error[] = []): AnimationTimelineInstruction[] {\n return new AnimationTimelineBuilderVisitor().buildKeyframes(\n driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles,\n options, subInstructions, errors);\n}\n\nexport class AnimationTimelineBuilderVisitor implements AstVisitor {\n buildKeyframes(\n driver: AnimationDriver, rootElement: any, ast: Ast,\n enterClassName: string, leaveClassName: string, startingStyles: ɵStyleDataMap,\n finalStyles: ɵStyleDataMap, options: AnimationOptions,\n subInstructions?: ElementInstructionMap,\n errors: Error[] = []): AnimationTimelineInstruction[] {\n subInstructions = subInstructions || new ElementInstructionMap();\n const context = new AnimationTimelineContext(\n driver, rootElement, subInstructions, enterClassName, leaveClassName, errors, []);\n context.options = options;\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n context.currentTimeline.delayNextStep(delay);\n context.currentTimeline.setStyles([startingStyles], null, context.errors, options);\n\n visitDslNode(this, ast, context);\n\n // this checks to see if an actual animation happened\n const timelines = context.timelines.filter(timeline => timeline.containsAnimation());\n\n // note: we just want to apply the final styles for the rootElement, so we do not\n // just apply the styles to the last timeline but the last timeline which\n // element is the root one (basically `*`-styles are replaced with the actual\n // state style values only for the root element)\n if (timelines.length && finalStyles.size) {\n let lastRootTimeline: TimelineBuilder|undefined;\n for (let i = timelines.length - 1; i >= 0; i--) {\n const timeline = timelines[i];\n if (timeline.element === rootElement) {\n lastRootTimeline = timeline;\n break;\n }\n }\n if (lastRootTimeline && !lastRootTimeline.allowOnlyTimelineStyles()) {\n lastRootTimeline.setStyles([finalStyles], null, context.errors, options);\n }\n }\n return timelines.length ?\n timelines.map(timeline => timeline.buildKeyframes()) :\n [createTimelineInstruction(rootElement, [], [], [], 0, delay, '', false)];\n }\n\n visitTrigger(ast: TriggerAst, context: AnimationTimelineContext): any {\n // these values are not visited in this AST\n }\n\n visitState(ast: StateAst, context: AnimationTimelineContext): any {\n // these values are not visited in this AST\n }\n\n visitTransition(ast: TransitionAst, context: AnimationTimelineContext): any {\n // these values are not visited in this AST\n }\n\n visitAnimateChild(ast: AnimateChildAst, context: AnimationTimelineContext): any {\n const elementInstructions = context.subInstructions.get(context.element);\n if (elementInstructions) {\n const innerContext = context.createSubContext(ast.options);\n const startTime = context.currentTimeline.currentTime;\n const endTime = this._visitSubInstructions(\n elementInstructions, innerContext, innerContext.options as AnimateChildOptions);\n if (startTime != endTime) {\n // we do this on the upper context because we created a sub context for\n // the sub child animations\n context.transformIntoNewTimeline(endTime);\n }\n }\n context.previousNode = ast;\n }\n\n visitAnimateRef(ast: AnimateRefAst, context: AnimationTimelineContext): any {\n const innerContext = context.createSubContext(ast.options);\n innerContext.transformIntoNewTimeline();\n this._applyAnimationRefDelays([ast.options, ast.animation.options], context, innerContext);\n this.visitReference(ast.animation, innerContext);\n context.transformIntoNewTimeline(innerContext.currentTimeline.currentTime);\n context.previousNode = ast;\n }\n\n private _applyAnimationRefDelays(\n animationsRefsOptions: (AnimationOptions|null)[], context: AnimationTimelineContext,\n innerContext: AnimationTimelineContext) {\n for (const animationRefOptions of animationsRefsOptions) {\n const animationDelay = animationRefOptions?.delay;\n if (animationDelay) {\n const animationDelayValue = typeof animationDelay === 'number' ?\n animationDelay :\n resolveTimingValue(interpolateParams(\n animationDelay, animationRefOptions?.params ?? {}, context.errors));\n innerContext.delayNextStep(animationDelayValue);\n }\n }\n }\n\n private _visitSubInstructions(\n instructions: AnimationTimelineInstruction[], context: AnimationTimelineContext,\n options: AnimateChildOptions): number {\n const startTime = context.currentTimeline.currentTime;\n let furthestTime = startTime;\n\n // this is a special-case for when a user wants to skip a sub\n // animation from being fired entirely.\n const duration = options.duration != null ? resolveTimingValue(options.duration) : null;\n const delay = options.delay != null ? resolveTimingValue(options.delay) : null;\n if (duration !== 0) {\n instructions.forEach(instruction => {\n const instructionTimings =\n context.appendInstructionToTimeline(instruction, duration, delay);\n furthestTime =\n Math.max(furthestTime, instructionTimings.duration + instructionTimings.delay);\n });\n }\n\n return furthestTime;\n }\n\n visitReference(ast: ReferenceAst, context: AnimationTimelineContext) {\n context.updateOptions(ast.options, true);\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n }\n\n visitSequence(ast: SequenceAst, context: AnimationTimelineContext) {\n const subContextCount = context.subContextCount;\n let ctx = context;\n const options = ast.options;\n\n if (options && (options.params || options.delay)) {\n ctx = context.createSubContext(options);\n ctx.transformIntoNewTimeline();\n\n if (options.delay != null) {\n if (ctx.previousNode.type == AnimationMetadataType.Style) {\n ctx.currentTimeline.snapshotCurrentStyles();\n ctx.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n\n const delay = resolveTimingValue(options.delay);\n ctx.delayNextStep(delay);\n }\n }\n\n if (ast.steps.length) {\n ast.steps.forEach(s => visitDslNode(this, s, ctx));\n\n // this is here just in case the inner steps only contain or end with a style() call\n ctx.currentTimeline.applyStylesToKeyframe();\n\n // this means that some animation function within the sequence\n // ended up creating a sub timeline (which means the current\n // timeline cannot overlap with the contents of the sequence)\n if (ctx.subContextCount > subContextCount) {\n ctx.transformIntoNewTimeline();\n }\n }\n\n context.previousNode = ast;\n }\n\n visitGroup(ast: GroupAst, context: AnimationTimelineContext) {\n const innerTimelines: TimelineBuilder[] = [];\n let furthestTime = context.currentTimeline.currentTime;\n const delay = ast.options && ast.options.delay ? resolveTimingValue(ast.options.delay) : 0;\n\n ast.steps.forEach(s => {\n const innerContext = context.createSubContext(ast.options);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n\n visitDslNode(this, s, innerContext);\n furthestTime = Math.max(furthestTime, innerContext.currentTimeline.currentTime);\n innerTimelines.push(innerContext.currentTimeline);\n });\n\n // this operation is run after the AST loop because otherwise\n // if the parent timeline's collected styles were updated then\n // it would pass in invalid data into the new-to-be forked items\n innerTimelines.forEach(\n timeline => context.currentTimeline.mergeTimelineCollectedStyles(timeline));\n context.transformIntoNewTimeline(furthestTime);\n context.previousNode = ast;\n }\n\n private _visitTiming(ast: TimingAst, context: AnimationTimelineContext): AnimateTimings {\n if ((ast as DynamicTimingAst).dynamic) {\n const strValue = (ast as DynamicTimingAst).strValue;\n const timingValue =\n context.params ? interpolateParams(strValue, context.params, context.errors) : strValue;\n return resolveTiming(timingValue, context.errors);\n } else {\n return {duration: ast.duration, delay: ast.delay, easing: ast.easing};\n }\n }\n\n visitAnimate(ast: AnimateAst, context: AnimationTimelineContext) {\n const timings = context.currentAnimateTimings = this._visitTiming(ast.timings, context);\n const timeline = context.currentTimeline;\n if (timings.delay) {\n context.incrementTime(timings.delay);\n timeline.snapshotCurrentStyles();\n }\n\n const style = ast.style;\n if (style.type == AnimationMetadataType.Keyframes) {\n this.visitKeyframes(style, context);\n } else {\n context.incrementTime(timings.duration);\n this.visitStyle(style as StyleAst, context);\n timeline.applyStylesToKeyframe();\n }\n\n context.currentAnimateTimings = null;\n context.previousNode = ast;\n }\n\n visitStyle(ast: StyleAst, context: AnimationTimelineContext) {\n const timeline = context.currentTimeline;\n const timings = context.currentAnimateTimings!;\n\n // this is a special case for when a style() call\n // directly follows an animate() call (but not inside of an animate() call)\n if (!timings && timeline.hasCurrentStyleProperties()) {\n timeline.forwardFrame();\n }\n\n const easing = (timings && timings.easing) || ast.easing;\n if (ast.isEmptyStep) {\n timeline.applyEmptyStep(easing);\n } else {\n timeline.setStyles(ast.styles, easing, context.errors, context.options);\n }\n\n context.previousNode = ast;\n }\n\n visitKeyframes(ast: KeyframesAst, context: AnimationTimelineContext) {\n const currentAnimateTimings = context.currentAnimateTimings!;\n const startTime = (context.currentTimeline!).duration;\n const duration = currentAnimateTimings.duration;\n const innerContext = context.createSubContext();\n const innerTimeline = innerContext.currentTimeline;\n innerTimeline.easing = currentAnimateTimings.easing;\n\n ast.styles.forEach(step => {\n const offset: number = step.offset || 0;\n innerTimeline.forwardTime(offset * duration);\n innerTimeline.setStyles(step.styles, step.easing, context.errors, context.options);\n innerTimeline.applyStylesToKeyframe();\n });\n\n // this will ensure that the parent timeline gets all the styles from\n // the child even if the new timeline below is not used\n context.currentTimeline.mergeTimelineCollectedStyles(innerTimeline);\n\n // we do this because the window between this timeline and the sub timeline\n // should ensure that the styles within are exactly the same as they were before\n context.transformIntoNewTimeline(startTime + duration);\n context.previousNode = ast;\n }\n\n visitQuery(ast: QueryAst, context: AnimationTimelineContext) {\n // in the event that the first step before this is a style step we need\n // to ensure the styles are applied before the children are animated\n const startTime = context.currentTimeline.currentTime;\n const options = (ast.options || {}) as AnimationQueryOptions;\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n\n if (delay &&\n (context.previousNode.type === AnimationMetadataType.Style ||\n (startTime == 0 && context.currentTimeline.hasCurrentStyleProperties()))) {\n context.currentTimeline.snapshotCurrentStyles();\n context.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n\n let furthestTime = startTime;\n const elms = context.invokeQuery(\n ast.selector, ast.originalSelector, ast.limit, ast.includeSelf,\n options.optional ? true : false, context.errors);\n\n context.currentQueryTotal = elms.length;\n let sameElementTimeline: TimelineBuilder|null = null;\n elms.forEach((element, i) => {\n context.currentQueryIndex = i;\n const innerContext = context.createSubContext(ast.options, element);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n\n if (element === context.element) {\n sameElementTimeline = innerContext.currentTimeline;\n }\n\n visitDslNode(this, ast.animation, innerContext);\n\n // this is here just incase the inner steps only contain or end\n // with a style() call (which is here to signal that this is a preparatory\n // call to style an element before it is animated again)\n innerContext.currentTimeline.applyStylesToKeyframe();\n\n const endTime = innerContext.currentTimeline.currentTime;\n furthestTime = Math.max(furthestTime, endTime);\n });\n\n context.currentQueryIndex = 0;\n context.currentQueryTotal = 0;\n context.transformIntoNewTimeline(furthestTime);\n\n if (sameElementTimeline) {\n context.currentTimeline.mergeTimelineCollectedStyles(sameElementTimeline);\n context.currentTimeline.snapshotCurrentStyles();\n }\n\n context.previousNode = ast;\n }\n\n visitStagger(ast: StaggerAst, context: AnimationTimelineContext) {\n const parentContext = context.parentContext!;\n const tl = context.currentTimeline;\n const timings = ast.timings;\n const duration = Math.abs(timings.duration);\n const maxTime = duration * (context.currentQueryTotal - 1);\n let delay = duration * context.currentQueryIndex;\n\n let staggerTransformer = timings.duration < 0 ? 'reverse' : timings.easing;\n switch (staggerTransformer) {\n case 'reverse':\n delay = maxTime - delay;\n break;\n case 'full':\n delay = parentContext.currentStaggerTime;\n break;\n }\n\n const timeline = context.currentTimeline;\n if (delay) {\n timeline.delayNextStep(delay);\n }\n\n const startingTime = timeline.currentTime;\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n\n // time = duration + delay\n // the reason why this computation is so complex is because\n // the inner timeline may either have a delay value or a stretched\n // keyframe depending on if a subtimeline is not used or is used.\n parentContext.currentStaggerTime =\n (tl.currentTime - startingTime) + (tl.startTime - parentContext.currentTimeline.startTime);\n }\n}\n\nexport declare type StyleAtTime = {\n time: number; value: string | number;\n};\n\nconst DEFAULT_NOOP_PREVIOUS_NODE = >{};\nexport class AnimationTimelineContext {\n public parentContext: AnimationTimelineContext|null = null;\n public currentTimeline: TimelineBuilder;\n public currentAnimateTimings: AnimateTimings|null = null;\n public previousNode: Ast = DEFAULT_NOOP_PREVIOUS_NODE;\n public subContextCount = 0;\n public options: AnimationOptions = {};\n public currentQueryIndex: number = 0;\n public currentQueryTotal: number = 0;\n public currentStaggerTime: number = 0;\n\n constructor(\n private _driver: AnimationDriver, public element: any,\n public subInstructions: ElementInstructionMap, private _enterClassName: string,\n private _leaveClassName: string, public errors: Error[], public timelines: TimelineBuilder[],\n initialTimeline?: TimelineBuilder) {\n this.currentTimeline = initialTimeline || new TimelineBuilder(this._driver, element, 0);\n timelines.push(this.currentTimeline);\n }\n\n get params() {\n return this.options.params;\n }\n\n updateOptions(options: AnimationOptions|null, skipIfExists?: boolean) {\n if (!options) return;\n\n const newOptions = options as any;\n let optionsToUpdate = this.options;\n\n // NOTE: this will get patched up when other animation methods support duration overrides\n if (newOptions.duration != null) {\n (optionsToUpdate as any).duration = resolveTimingValue(newOptions.duration);\n }\n\n if (newOptions.delay != null) {\n optionsToUpdate.delay = resolveTimingValue(newOptions.delay);\n }\n\n const newParams = newOptions.params;\n if (newParams) {\n let paramsToUpdate: {[name: string]: any} = optionsToUpdate.params!;\n if (!paramsToUpdate) {\n paramsToUpdate = this.options.params = {};\n }\n\n Object.keys(newParams).forEach(name => {\n if (!skipIfExists || !paramsToUpdate.hasOwnProperty(name)) {\n paramsToUpdate[name] = interpolateParams(newParams[name], paramsToUpdate, this.errors);\n }\n });\n }\n }\n\n private _copyOptions() {\n const options: AnimationOptions = {};\n if (this.options) {\n const oldParams = this.options.params;\n if (oldParams) {\n const params: {[name: string]: any} = options['params'] = {};\n Object.keys(oldParams).forEach(name => {\n params[name] = oldParams[name];\n });\n }\n }\n return options;\n }\n\n createSubContext(options: AnimationOptions|null = null, element?: any, newTime?: number):\n AnimationTimelineContext {\n const target = element || this.element;\n const context = new AnimationTimelineContext(\n this._driver, target, this.subInstructions, this._enterClassName, this._leaveClassName,\n this.errors, this.timelines, this.currentTimeline.fork(target, newTime || 0));\n context.previousNode = this.previousNode;\n context.currentAnimateTimings = this.currentAnimateTimings;\n\n context.options = this._copyOptions();\n context.updateOptions(options);\n\n context.currentQueryIndex = this.currentQueryIndex;\n context.currentQueryTotal = this.currentQueryTotal;\n context.parentContext = this;\n this.subContextCount++;\n return context;\n }\n\n transformIntoNewTimeline(newTime?: number) {\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.currentTimeline = this.currentTimeline.fork(this.element, newTime);\n this.timelines.push(this.currentTimeline);\n return this.currentTimeline;\n }\n\n appendInstructionToTimeline(\n instruction: AnimationTimelineInstruction, duration: number|null,\n delay: number|null): AnimateTimings {\n const updatedTimings: AnimateTimings = {\n duration: duration != null ? duration : instruction.duration,\n delay: this.currentTimeline.currentTime + (delay != null ? delay : 0) + instruction.delay,\n easing: ''\n };\n const builder = new SubTimelineBuilder(\n this._driver, instruction.element, instruction.keyframes, instruction.preStyleProps,\n instruction.postStyleProps, updatedTimings, instruction.stretchStartingKeyframe);\n this.timelines.push(builder);\n return updatedTimings;\n }\n\n incrementTime(time: number) {\n this.currentTimeline.forwardTime(this.currentTimeline.duration + time);\n }\n\n delayNextStep(delay: number) {\n // negative delays are not yet supported\n if (delay > 0) {\n this.currentTimeline.delayNextStep(delay);\n }\n }\n\n invokeQuery(\n selector: string, originalSelector: string, limit: number, includeSelf: boolean,\n optional: boolean, errors: Error[]): any[] {\n let results: any[] = [];\n if (includeSelf) {\n results.push(this.element);\n }\n if (selector.length > 0) { // only if :self is used then the selector can be empty\n selector = selector.replace(ENTER_TOKEN_REGEX, '.' + this._enterClassName);\n selector = selector.replace(LEAVE_TOKEN_REGEX, '.' + this._leaveClassName);\n const multi = limit != 1;\n let elements = this._driver.query(this.element, selector, multi);\n if (limit !== 0) {\n elements = limit < 0 ? elements.slice(elements.length + limit, elements.length) :\n elements.slice(0, limit);\n }\n results.push(...elements);\n }\n\n if (!optional && results.length == 0) {\n errors.push(invalidQuery(originalSelector));\n }\n return results;\n }\n}\n\nexport class TimelineBuilder {\n public duration: number = 0;\n public easing: string|null = null;\n private _previousKeyframe: ɵStyleDataMap = new Map();\n private _currentKeyframe: ɵStyleDataMap = new Map();\n private _keyframes = new Map();\n private _styleSummary = new Map();\n private _localTimelineStyles: ɵStyleDataMap = new Map();\n private _globalTimelineStyles: ɵStyleDataMap;\n private _pendingStyles: ɵStyleDataMap = new Map();\n private _backFill: ɵStyleDataMap = new Map();\n private _currentEmptyStepKeyframe: ɵStyleDataMap|null = null;\n\n constructor(\n private _driver: AnimationDriver, public element: any, public startTime: number,\n private _elementTimelineStylesLookup?: Map) {\n if (!this._elementTimelineStylesLookup) {\n this._elementTimelineStylesLookup = new Map();\n }\n\n this._globalTimelineStyles = this._elementTimelineStylesLookup.get(element)!;\n if (!this._globalTimelineStyles) {\n this._globalTimelineStyles = this._localTimelineStyles;\n this._elementTimelineStylesLookup.set(element, this._localTimelineStyles);\n }\n this._loadKeyframe();\n }\n\n containsAnimation(): boolean {\n switch (this._keyframes.size) {\n case 0:\n return false;\n case 1:\n return this.hasCurrentStyleProperties();\n default:\n return true;\n }\n }\n\n hasCurrentStyleProperties(): boolean {\n return this._currentKeyframe.size > 0;\n }\n\n get currentTime() {\n return this.startTime + this.duration;\n }\n\n delayNextStep(delay: number) {\n // in the event that a style() step is placed right before a stagger()\n // and that style() step is the very first style() value in the animation\n // then we need to make a copy of the keyframe [0, copy, 1] so that the delay\n // properly applies the style() values to work with the stagger...\n const hasPreStyleStep = this._keyframes.size === 1 && this._pendingStyles.size;\n\n if (this.duration || hasPreStyleStep) {\n this.forwardTime(this.currentTime + delay);\n if (hasPreStyleStep) {\n this.snapshotCurrentStyles();\n }\n } else {\n this.startTime += delay;\n }\n }\n\n fork(element: any, currentTime?: number): TimelineBuilder {\n this.applyStylesToKeyframe();\n return new TimelineBuilder(\n this._driver, element, currentTime || this.currentTime, this._elementTimelineStylesLookup);\n }\n\n private _loadKeyframe() {\n if (this._currentKeyframe) {\n this._previousKeyframe = this._currentKeyframe;\n }\n this._currentKeyframe = this._keyframes.get(this.duration)!;\n if (!this._currentKeyframe) {\n this._currentKeyframe = new Map();\n this._keyframes.set(this.duration, this._currentKeyframe);\n }\n }\n\n forwardFrame() {\n this.duration += ONE_FRAME_IN_MILLISECONDS;\n this._loadKeyframe();\n }\n\n forwardTime(time: number) {\n this.applyStylesToKeyframe();\n this.duration = time;\n this._loadKeyframe();\n }\n\n private _updateStyle(prop: string, value: string|number) {\n this._localTimelineStyles.set(prop, value);\n this._globalTimelineStyles.set(prop, value);\n this._styleSummary.set(prop, {time: this.currentTime, value});\n }\n\n allowOnlyTimelineStyles() {\n return this._currentEmptyStepKeyframe !== this._currentKeyframe;\n }\n\n applyEmptyStep(easing: string|null) {\n if (easing) {\n this._previousKeyframe.set('easing', easing);\n }\n\n // special case for animate(duration):\n // all missing styles are filled with a `*` value then\n // if any destination styles are filled in later on the same\n // keyframe then they will override the overridden styles\n // We use `_globalTimelineStyles` here because there may be\n // styles in previous keyframes that are not present in this timeline\n for (let [prop, value] of this._globalTimelineStyles) {\n this._backFill.set(prop, value || AUTO_STYLE);\n this._currentKeyframe.set(prop, AUTO_STYLE);\n }\n this._currentEmptyStepKeyframe = this._currentKeyframe;\n }\n\n setStyles(\n input: Array<(ɵStyleDataMap | string)>, easing: string|null, errors: Error[],\n options?: AnimationOptions) {\n if (easing) {\n this._previousKeyframe.set('easing', easing);\n }\n const params = (options && options.params) || {};\n const styles = flattenStyles(input, this._globalTimelineStyles);\n for (let [prop, value] of styles) {\n const val = interpolateParams(value, params, errors);\n this._pendingStyles.set(prop, val);\n if (!this._localTimelineStyles.has(prop)) {\n this._backFill.set(prop, this._globalTimelineStyles.get(prop) ?? AUTO_STYLE);\n }\n this._updateStyle(prop, val);\n }\n }\n\n applyStylesToKeyframe() {\n if (this._pendingStyles.size == 0) return;\n\n this._pendingStyles.forEach((val, prop) => {\n this._currentKeyframe.set(prop, val);\n });\n this._pendingStyles.clear();\n\n this._localTimelineStyles.forEach((val, prop) => {\n if (!this._currentKeyframe.has(prop)) {\n this._currentKeyframe.set(prop, val);\n }\n });\n }\n\n snapshotCurrentStyles() {\n for (let [prop, val] of this._localTimelineStyles) {\n this._pendingStyles.set(prop, val);\n this._updateStyle(prop, val);\n }\n }\n\n getFinalKeyframe() {\n return this._keyframes.get(this.duration);\n }\n\n get properties() {\n const properties: string[] = [];\n for (let prop in this._currentKeyframe) {\n properties.push(prop);\n }\n return properties;\n }\n\n mergeTimelineCollectedStyles(timeline: TimelineBuilder) {\n timeline._styleSummary.forEach((details1, prop) => {\n const details0 = this._styleSummary.get(prop);\n if (!details0 || details1.time > details0.time) {\n this._updateStyle(prop, details1.value);\n }\n });\n }\n\n buildKeyframes(): AnimationTimelineInstruction {\n this.applyStylesToKeyframe();\n const preStyleProps = new Set();\n const postStyleProps = new Set();\n const isEmpty = this._keyframes.size === 1 && this.duration === 0;\n\n let finalKeyframes: Array<ɵStyleDataMap> = [];\n this._keyframes.forEach((keyframe, time) => {\n const finalKeyframe = copyStyles(keyframe, new Map(), this._backFill);\n finalKeyframe.forEach((value, prop) => {\n if (value === PRE_STYLE) {\n preStyleProps.add(prop);\n } else if (value === AUTO_STYLE) {\n postStyleProps.add(prop);\n }\n });\n if (!isEmpty) {\n finalKeyframe.set('offset', time / this.duration);\n }\n finalKeyframes.push(finalKeyframe);\n });\n\n const preProps: string[] = preStyleProps.size ? iteratorToArray(preStyleProps.values()) : [];\n const postProps: string[] = postStyleProps.size ? iteratorToArray(postStyleProps.values()) : [];\n\n // special case for a 0-second animation (which is designed just to place styles onscreen)\n if (isEmpty) {\n const kf0 = finalKeyframes[0];\n const kf1 = new Map(kf0);\n kf0.set('offset', 0);\n kf1.set('offset', 1);\n finalKeyframes = [kf0, kf1];\n }\n\n return createTimelineInstruction(\n this.element, finalKeyframes, preProps, postProps, this.duration, this.startTime,\n this.easing, false);\n }\n}\n\nclass SubTimelineBuilder extends TimelineBuilder {\n public timings: AnimateTimings;\n\n constructor(\n driver: AnimationDriver, element: any, public keyframes: Array<ɵStyleDataMap>,\n public preStyleProps: string[], public postStyleProps: string[], timings: AnimateTimings,\n private _stretchStartingKeyframe: boolean = false) {\n super(driver, element, timings.delay);\n this.timings = {duration: timings.duration, delay: timings.delay, easing: timings.easing};\n }\n\n override containsAnimation(): boolean {\n return this.keyframes.length > 1;\n }\n\n override buildKeyframes(): AnimationTimelineInstruction {\n let keyframes = this.keyframes;\n let {delay, duration, easing} = this.timings;\n if (this._stretchStartingKeyframe && delay) {\n const newKeyframes: Array<ɵStyleDataMap> = [];\n const totalTime = duration + delay;\n const startingGap = delay / totalTime;\n\n // the original starting keyframe now starts once the delay is done\n const newFirstKeyframe = copyStyles(keyframes[0]);\n newFirstKeyframe.set('offset', 0);\n newKeyframes.push(newFirstKeyframe);\n\n const oldFirstKeyframe = copyStyles(keyframes[0]);\n oldFirstKeyframe.set('offset', roundOffset(startingGap));\n newKeyframes.push(oldFirstKeyframe);\n\n /*\n When the keyframe is stretched then it means that the delay before the animation\n starts is gone. Instead the first keyframe is placed at the start of the animation\n and it is then copied to where it starts when the original delay is over. This basically\n means nothing animates during that delay, but the styles are still rendered. For this\n to work the original offset values that exist in the original keyframes must be \"warped\"\n so that they can take the new keyframe + delay into account.\n\n delay=1000, duration=1000, keyframes = 0 .5 1\n\n turns into\n\n delay=0, duration=2000, keyframes = 0 .33 .66 1\n */\n\n // offsets between 1 ... n -1 are all warped by the keyframe stretch\n const limit = keyframes.length - 1;\n for (let i = 1; i <= limit; i++) {\n let kf = copyStyles(keyframes[i]);\n const oldOffset = kf.get('offset') as number;\n const timeAtKeyframe = delay + oldOffset * duration;\n kf.set('offset', roundOffset(timeAtKeyframe / totalTime));\n newKeyframes.push(kf);\n }\n\n // the new starting keyframe should be added at the start\n duration = totalTime;\n delay = 0;\n easing = '';\n\n keyframes = newKeyframes;\n }\n\n return createTimelineInstruction(\n this.element, keyframes, this.preStyleProps, this.postStyleProps, duration, delay, easing,\n true);\n }\n}\n\nfunction roundOffset(offset: number, decimalPoints = 3): number {\n const mult = Math.pow(10, decimalPoints - 1);\n return Math.round(offset * mult) / mult;\n}\n\nfunction flattenStyles(input: Array<(ɵStyleDataMap | string)>, allStyles: ɵStyleDataMap) {\n const styles: ɵStyleDataMap = new Map();\n let allProperties: string[]|IterableIterator;\n input.forEach(token => {\n if (token === '*') {\n allProperties = allProperties || allStyles.keys();\n for (let prop of allProperties) {\n styles.set(prop, AUTO_STYLE);\n }\n } else {\n copyStyles(token as ɵStyleDataMap, styles);\n }\n });\n return styles;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @publicApi\n */\nexport abstract class AnimationStyleNormalizer {\n abstract normalizePropertyName(propertyName: string, errors: Error[]): string;\n abstract normalizeStyleValue(\n userProvidedProperty: string, normalizedProperty: string, value: string|number,\n errors: Error[]): string;\n}\n\n/**\n * @publicApi\n */\nexport class NoopAnimationStyleNormalizer {\n normalizePropertyName(propertyName: string, errors: Error[]): string {\n return propertyName;\n }\n\n normalizeStyleValue(\n userProvidedProperty: string, normalizedProperty: string, value: string|number,\n errors: Error[]): string {\n return value;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {invalidCssUnitValue} from '../../error_helpers';\nimport {dashCaseToCamelCase} from '../../util';\n\nimport {AnimationStyleNormalizer} from './animation_style_normalizer';\n\nconst DIMENSIONAL_PROP_SET = new Set([\n 'width',\n 'height',\n 'minWidth',\n 'minHeight',\n 'maxWidth',\n 'maxHeight',\n 'left',\n 'top',\n 'bottom',\n 'right',\n 'fontSize',\n 'outlineWidth',\n 'outlineOffset',\n 'paddingTop',\n 'paddingLeft',\n 'paddingBottom',\n 'paddingRight',\n 'marginTop',\n 'marginLeft',\n 'marginBottom',\n 'marginRight',\n 'borderRadius',\n 'borderWidth',\n 'borderTopWidth',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'textIndent',\n 'perspective'\n]);\n\nexport class WebAnimationsStyleNormalizer extends AnimationStyleNormalizer {\n override normalizePropertyName(propertyName: string, errors: Error[]): string {\n return dashCaseToCamelCase(propertyName);\n }\n\n override normalizeStyleValue(\n userProvidedProperty: string, normalizedProperty: string, value: string|number,\n errors: Error[]): string {\n let unit: string = '';\n const strVal = value.toString().trim();\n\n if (DIMENSIONAL_PROP_SET.has(normalizedProperty) && value !== 0 && value !== '0') {\n if (typeof value === 'number') {\n unit = 'px';\n } else {\n const valAndSuffixMatch = value.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n errors.push(invalidCssUnitValue(userProvidedProperty, value));\n }\n }\n }\n return strVal + unit;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ɵStyleDataMap} from '@angular/animations';\n\nimport {AnimationEngineInstruction, AnimationTransitionInstructionType} from '../render/animation_engine_instruction';\n\nimport {AnimationTimelineInstruction} from './animation_timeline_instruction';\n\nexport interface AnimationTransitionInstruction extends AnimationEngineInstruction {\n element: any;\n triggerName: string;\n isRemovalTransition: boolean;\n fromState: string;\n fromStyles: ɵStyleDataMap;\n toState: string;\n toStyles: ɵStyleDataMap;\n timelines: AnimationTimelineInstruction[];\n queriedElements: any[];\n preStyleProps: Map>;\n postStyleProps: Map>;\n totalTime: number;\n errors?: Error[];\n}\n\nexport function createTransitionInstruction(\n element: any, triggerName: string, fromState: string, toState: string,\n isRemovalTransition: boolean, fromStyles: ɵStyleDataMap, toStyles: ɵStyleDataMap,\n timelines: AnimationTimelineInstruction[], queriedElements: any[],\n preStyleProps: Map>, postStyleProps: Map>, totalTime: number,\n errors?: Error[]): AnimationTransitionInstruction {\n return {\n type: AnimationTransitionInstructionType.TransitionAnimation,\n element,\n triggerName,\n isRemovalTransition,\n fromState,\n fromStyles,\n toState,\n toStyles,\n timelines,\n queriedElements,\n preStyleProps,\n postStyleProps,\n totalTime,\n errors\n };\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {AnimationOptions, ɵStyleDataMap} from '@angular/animations';\n\nimport {AnimationDriver} from '../render/animation_driver';\nimport {getOrSetDefaultValue} from '../render/shared';\nimport {copyObj, interpolateParams, iteratorToArray} from '../util';\n\nimport {StyleAst, TransitionAst} from './animation_ast';\nimport {buildAnimationTimelines} from './animation_timeline_builder';\nimport {AnimationTimelineInstruction} from './animation_timeline_instruction';\nimport {TransitionMatcherFn} from './animation_transition_expr';\nimport {AnimationTransitionInstruction, createTransitionInstruction} from './animation_transition_instruction';\nimport {ElementInstructionMap} from './element_instruction_map';\nimport {AnimationStyleNormalizer} from './style_normalization/animation_style_normalizer';\n\nconst EMPTY_OBJECT = {};\n\nexport class AnimationTransitionFactory {\n constructor(\n private _triggerName: string, public ast: TransitionAst,\n private _stateStyles: Map) {}\n\n match(currentState: any, nextState: any, element: any, params: {[key: string]: any}): boolean {\n return oneOrMoreTransitionsMatch(this.ast.matchers, currentState, nextState, element, params);\n }\n\n buildStyles(stateName: string|boolean|undefined, params: {[key: string]: any}, errors: Error[]):\n ɵStyleDataMap {\n let styler = this._stateStyles.get('*');\n if (stateName !== undefined) {\n styler = this._stateStyles.get(stateName?.toString()) || styler;\n }\n return styler ? styler.buildStyles(params, errors) : new Map();\n }\n\n build(\n driver: AnimationDriver, element: any, currentState: any, nextState: any,\n enterClassName: string, leaveClassName: string, currentOptions?: AnimationOptions,\n nextOptions?: AnimationOptions, subInstructions?: ElementInstructionMap,\n skipAstBuild?: boolean): AnimationTransitionInstruction {\n const errors: Error[] = [];\n\n const transitionAnimationParams = this.ast.options && this.ast.options.params || EMPTY_OBJECT;\n const currentAnimationParams = currentOptions && currentOptions.params || EMPTY_OBJECT;\n const currentStateStyles = this.buildStyles(currentState, currentAnimationParams, errors);\n const nextAnimationParams = nextOptions && nextOptions.params || EMPTY_OBJECT;\n const nextStateStyles = this.buildStyles(nextState, nextAnimationParams, errors);\n\n const queriedElements = new Set();\n const preStyleMap = new Map>();\n const postStyleMap = new Map>();\n const isRemoval = nextState === 'void';\n\n const animationOptions: AnimationOptions = {\n params: applyParamDefaults(nextAnimationParams, transitionAnimationParams),\n delay: this.ast.options?.delay,\n };\n\n const timelines = skipAstBuild ?\n [] :\n buildAnimationTimelines(\n driver, element, this.ast.animation, enterClassName, leaveClassName, currentStateStyles,\n nextStateStyles, animationOptions, subInstructions, errors);\n\n let totalTime = 0;\n timelines.forEach(tl => {\n totalTime = Math.max(tl.duration + tl.delay, totalTime);\n });\n\n if (errors.length) {\n return createTransitionInstruction(\n element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles,\n nextStateStyles, [], [], preStyleMap, postStyleMap, totalTime, errors);\n }\n\n timelines.forEach(tl => {\n const elm = tl.element;\n const preProps = getOrSetDefaultValue(preStyleMap, elm, new Set());\n tl.preStyleProps.forEach(prop => preProps.add(prop));\n\n const postProps = getOrSetDefaultValue(postStyleMap, elm, new Set());\n tl.postStyleProps.forEach(prop => postProps.add(prop));\n\n if (elm !== element) {\n queriedElements.add(elm);\n }\n });\n\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n checkNonAnimatableInTimelines(timelines, this._triggerName, driver);\n }\n\n const queriedElementsList = iteratorToArray(queriedElements.values());\n return createTransitionInstruction(\n element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles,\n nextStateStyles, timelines, queriedElementsList, preStyleMap, postStyleMap, totalTime);\n }\n}\n\n/**\n * Checks inside a set of timelines if they try to animate a css property which is not considered\n * animatable, in that case it prints a warning on the console.\n * Besides that the function doesn't have any other effect.\n *\n * Note: this check is done here after the timelines are built instead of doing on a lower level so\n * that we can make sure that the warning appears only once per instruction (we can aggregate here\n * all the issues instead of finding them separately).\n *\n * @param timelines The built timelines for the current instruction.\n * @param triggerName The name of the trigger for the current instruction.\n * @param driver Animation driver used to perform the check.\n *\n */\nfunction checkNonAnimatableInTimelines(\n timelines: AnimationTimelineInstruction[], triggerName: string, driver: AnimationDriver): void {\n if (!driver.validateAnimatableStyleProperty) {\n return;\n }\n\n const allowedNonAnimatableProps = new Set([\n // 'easing' is a utility/synthetic prop we use to represent\n // easing functions, it represents a property of the animation\n // which is not animatable but different values can be used\n // in different steps\n 'easing'\n ]);\n\n const invalidNonAnimatableProps = new Set();\n\n timelines.forEach(({keyframes}) => {\n const nonAnimatablePropsInitialValues = new Map();\n keyframes.forEach(keyframe => {\n const entriesToCheck =\n Array.from(keyframe.entries()).filter(([prop]) => !allowedNonAnimatableProps.has(prop));\n for (const [prop, value] of entriesToCheck) {\n if (!driver.validateAnimatableStyleProperty!(prop)) {\n if (nonAnimatablePropsInitialValues.has(prop) && !invalidNonAnimatableProps.has(prop)) {\n const propInitialValue = nonAnimatablePropsInitialValues.get(prop);\n if (propInitialValue !== value) {\n invalidNonAnimatableProps.add(prop);\n }\n } else {\n nonAnimatablePropsInitialValues.set(prop, value);\n }\n }\n }\n });\n });\n\n if (invalidNonAnimatableProps.size > 0) {\n console.warn(\n `Warning: The animation trigger \"${triggerName}\" is attempting to animate the following` +\n ' not animatable properties: ' + Array.from(invalidNonAnimatableProps).join(', ') + '\\n' +\n '(to check the list of all animatable properties visit https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties)');\n }\n}\n\nfunction oneOrMoreTransitionsMatch(\n matchFns: TransitionMatcherFn[], currentState: any, nextState: any, element: any,\n params: {[key: string]: any}): boolean {\n return matchFns.some(fn => fn(currentState, nextState, element, params));\n}\n\nfunction applyParamDefaults(userParams: Record, defaults: Record) {\n const result: Record = copyObj(defaults);\n\n for (const key in userParams) {\n if (userParams.hasOwnProperty(key) && userParams[key] != null) {\n result[key] = userParams[key];\n }\n }\n\n return result;\n}\n\nexport class AnimationStateStyles {\n constructor(\n private styles: StyleAst, private defaultParams: {[key: string]: any},\n private normalizer: AnimationStyleNormalizer) {}\n\n buildStyles(params: {[key: string]: any}, errors: Error[]): ɵStyleDataMap {\n const finalStyles: ɵStyleDataMap = new Map();\n const combinedParams = copyObj(this.defaultParams);\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (value !== null) {\n combinedParams[key] = value;\n }\n });\n this.styles.styles.forEach(value => {\n if (typeof value !== 'string') {\n value.forEach((val, prop) => {\n if (val) {\n val = interpolateParams(val, combinedParams, errors);\n }\n const normalizedProp = this.normalizer.normalizePropertyName(prop, errors);\n val = this.normalizer.normalizeStyleValue(prop, normalizedProp, val, errors);\n finalStyles.set(prop, val);\n });\n }\n });\n return finalStyles;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {AnimationMetadataType, ɵStyleDataMap} from '@angular/animations';\n\nimport {SequenceAst, TransitionAst, TriggerAst} from './animation_ast';\nimport {AnimationStateStyles, AnimationTransitionFactory} from './animation_transition_factory';\nimport {AnimationStyleNormalizer} from './style_normalization/animation_style_normalizer';\n\n\n\nexport function buildTrigger(\n name: string, ast: TriggerAst, normalizer: AnimationStyleNormalizer): AnimationTrigger {\n return new AnimationTrigger(name, ast, normalizer);\n}\n\nexport class AnimationTrigger {\n public transitionFactories: AnimationTransitionFactory[] = [];\n public fallbackTransition: AnimationTransitionFactory;\n public states = new Map();\n\n constructor(\n public name: string, public ast: TriggerAst, private _normalizer: AnimationStyleNormalizer) {\n ast.states.forEach(ast => {\n const defaultParams = (ast.options && ast.options.params) || {};\n this.states.set(ast.name, new AnimationStateStyles(ast.style, defaultParams, _normalizer));\n });\n\n balanceProperties(this.states, 'true', '1');\n balanceProperties(this.states, 'false', '0');\n\n ast.transitions.forEach(ast => {\n this.transitionFactories.push(new AnimationTransitionFactory(name, ast, this.states));\n });\n this.fallbackTransition = createFallbackTransition(name, this.states, this._normalizer);\n }\n\n get containsQueries() {\n return this.ast.queryCount > 0;\n }\n\n matchTransition(currentState: any, nextState: any, element: any, params: {[key: string]: any}):\n AnimationTransitionFactory|null {\n const entry =\n this.transitionFactories.find(f => f.match(currentState, nextState, element, params));\n return entry || null;\n }\n\n matchStyles(currentState: any, params: {[key: string]: any}, errors: Error[]): ɵStyleDataMap {\n return this.fallbackTransition.buildStyles(currentState, params, errors);\n }\n}\n\nfunction createFallbackTransition(\n triggerName: string, states: Map,\n normalizer: AnimationStyleNormalizer): AnimationTransitionFactory {\n const matchers = [(fromState: any, toState: any) => true];\n const animation: SequenceAst = {type: AnimationMetadataType.Sequence, steps: [], options: null};\n const transition: TransitionAst = {\n type: AnimationMetadataType.Transition,\n animation,\n matchers,\n options: null,\n queryCount: 0,\n depCount: 0\n };\n return new AnimationTransitionFactory(triggerName, transition, states);\n}\n\nfunction balanceProperties(\n stateMap: Map, key1: string, key2: string) {\n if (stateMap.has(key1)) {\n if (!stateMap.has(key2)) {\n stateMap.set(key2, stateMap.get(key1)!);\n }\n } else if (stateMap.has(key2)) {\n stateMap.set(key1, stateMap.get(key2)!);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {AnimationMetadata, AnimationMetadataType, AnimationOptions, AnimationPlayer, AUTO_STYLE, ɵStyleDataMap} from '@angular/animations';\n\nimport {Ast} from '../dsl/animation_ast';\nimport {buildAnimationAst} from '../dsl/animation_ast_builder';\nimport {buildAnimationTimelines} from '../dsl/animation_timeline_builder';\nimport {AnimationTimelineInstruction} from '../dsl/animation_timeline_instruction';\nimport {ElementInstructionMap} from '../dsl/element_instruction_map';\nimport {AnimationStyleNormalizer} from '../dsl/style_normalization/animation_style_normalizer';\nimport {createAnimationFailed, missingOrDestroyedAnimation, missingPlayer, registerFailed} from '../error_helpers';\nimport {ENTER_CLASSNAME, LEAVE_CLASSNAME} from '../util';\nimport {warnRegister} from '../warning_helpers';\n\nimport {AnimationDriver} from './animation_driver';\nimport {getOrSetDefaultValue, listenOnPlayer, makeAnimationEvent, normalizeKeyframes, optimizeGroupPlayer} from './shared';\n\nconst EMPTY_INSTRUCTION_MAP = new ElementInstructionMap();\n\nexport class TimelineAnimationEngine {\n private _animations = new Map>();\n private _playersById = new Map();\n public players: AnimationPlayer[] = [];\n\n constructor(\n public bodyNode: any, private _driver: AnimationDriver,\n private _normalizer: AnimationStyleNormalizer) {}\n\n register(id: string, metadata: AnimationMetadata|AnimationMetadata[]) {\n const errors: Error[] = [];\n const warnings: string[] = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw registerFailed(errors);\n } else {\n if (warnings.length) {\n warnRegister(warnings);\n }\n this._animations.set(id, ast);\n }\n }\n\n private _buildPlayer(\n i: AnimationTimelineInstruction, preStyles: ɵStyleDataMap,\n postStyles?: ɵStyleDataMap): AnimationPlayer {\n const element = i.element;\n const keyframes = normalizeKeyframes(this._normalizer, i.keyframes, preStyles, postStyles);\n return this._driver.animate(element, keyframes, i.duration, i.delay, i.easing, [], true);\n }\n\n create(id: string, element: any, options: AnimationOptions = {}): AnimationPlayer {\n const errors: Error[] = [];\n const ast = this._animations.get(id);\n let instructions: AnimationTimelineInstruction[];\n\n const autoStylesMap = new Map();\n\n if (ast) {\n instructions = buildAnimationTimelines(\n this._driver, element, ast, ENTER_CLASSNAME, LEAVE_CLASSNAME, new Map(), new Map(),\n options, EMPTY_INSTRUCTION_MAP, errors);\n instructions.forEach(inst => {\n const styles = getOrSetDefaultValue(\n autoStylesMap, inst.element, new Map());\n inst.postStyleProps.forEach(prop => styles.set(prop, null));\n });\n } else {\n errors.push(missingOrDestroyedAnimation());\n instructions = [];\n }\n\n if (errors.length) {\n throw createAnimationFailed(errors);\n }\n\n autoStylesMap.forEach((styles, element) => {\n styles.forEach((_, prop) => {\n styles.set(prop, this._driver.computeStyle(element, prop, AUTO_STYLE));\n });\n });\n\n const players = instructions.map(i => {\n const styles = autoStylesMap.get(i.element);\n return this._buildPlayer(i, new Map(), styles);\n });\n const player = optimizeGroupPlayer(players);\n this._playersById.set(id, player);\n player.onDestroy(() => this.destroy(id));\n\n this.players.push(player);\n return player;\n }\n\n destroy(id: string) {\n const player = this._getPlayer(id);\n player.destroy();\n this._playersById.delete(id);\n const index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n }\n\n private _getPlayer(id: string): AnimationPlayer {\n const player = this._playersById.get(id);\n if (!player) {\n throw missingPlayer(id);\n }\n return player;\n }\n\n listen(id: string, element: string, eventName: string, callback: (event: any) => any):\n () => void {\n // triggerName, fromState, toState are all ignored for timeline animations\n const baseEvent = makeAnimationEvent(element, '', '', '');\n listenOnPlayer(this._getPlayer(id), eventName, baseEvent, callback);\n return () => {};\n }\n\n command(id: string, element: any, command: string, args: any[]): void {\n if (command == 'register') {\n this.register(id, args[0] as AnimationMetadata | AnimationMetadata[]);\n return;\n }\n\n if (command == 'create') {\n const options = (args[0] || {}) as AnimationOptions;\n this.create(id, element, options);\n return;\n }\n\n const player = this._getPlayer(id);\n switch (command) {\n case 'play':\n player.play();\n break;\n case 'pause':\n player.pause();\n break;\n case 'reset':\n player.reset();\n break;\n case 'restart':\n player.restart();\n break;\n case 'finish':\n player.finish();\n break;\n case 'init':\n player.init();\n break;\n case 'setPosition':\n player.setPosition(parseFloat(args[0] as string));\n break;\n case 'destroy':\n this.destroy(id);\n break;\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {AnimationOptions, AnimationPlayer, AUTO_STYLE, NoopAnimationPlayer, ɵAnimationGroupPlayer as AnimationGroupPlayer, ɵPRE_STYLE as PRE_STYLE, ɵStyleDataMap} from '@angular/animations';\n\nimport {AnimationTimelineInstruction} from '../dsl/animation_timeline_instruction';\nimport {AnimationTransitionFactory} from '../dsl/animation_transition_factory';\nimport {AnimationTransitionInstruction} from '../dsl/animation_transition_instruction';\nimport {AnimationTrigger} from '../dsl/animation_trigger';\nimport {ElementInstructionMap} from '../dsl/element_instruction_map';\nimport {AnimationStyleNormalizer} from '../dsl/style_normalization/animation_style_normalizer';\nimport {missingEvent, missingTrigger, transitionFailed, triggerTransitionsFailed, unregisteredTrigger, unsupportedTriggerEvent} from '../error_helpers';\nimport {copyObj, ENTER_CLASSNAME, eraseStyles, LEAVE_CLASSNAME, NG_ANIMATING_CLASSNAME, NG_ANIMATING_SELECTOR, NG_TRIGGER_CLASSNAME, NG_TRIGGER_SELECTOR, setStyles} from '../util';\n\nimport {AnimationDriver} from './animation_driver';\nimport {getOrSetDefaultValue, listenOnPlayer, makeAnimationEvent, normalizeKeyframes, optimizeGroupPlayer} from './shared';\n\nconst QUEUED_CLASSNAME = 'ng-animate-queued';\nconst QUEUED_SELECTOR = '.ng-animate-queued';\nconst DISABLED_CLASSNAME = 'ng-animate-disabled';\nconst DISABLED_SELECTOR = '.ng-animate-disabled';\nconst STAR_CLASSNAME = 'ng-star-inserted';\nconst STAR_SELECTOR = '.ng-star-inserted';\n\nconst EMPTY_PLAYER_ARRAY: TransitionAnimationPlayer[] = [];\nconst NULL_REMOVAL_STATE: ElementAnimationState = {\n namespaceId: '',\n setForRemoval: false,\n setForMove: false,\n hasAnimation: false,\n removedBeforeQueried: false\n};\nconst NULL_REMOVED_QUERIED_STATE: ElementAnimationState = {\n namespaceId: '',\n setForMove: false,\n setForRemoval: false,\n hasAnimation: false,\n removedBeforeQueried: true\n};\n\ninterface TriggerListener {\n name: string;\n phase: string;\n callback: (event: any) => any;\n}\n\nexport interface QueueInstruction {\n element: any;\n triggerName: string;\n fromState: StateValue;\n toState: StateValue;\n transition: AnimationTransitionFactory;\n player: TransitionAnimationPlayer;\n isFallbackTransition: boolean;\n}\n\nexport const REMOVAL_FLAG = '__ng_removed';\n\nexport interface ElementAnimationState {\n setForRemoval: boolean;\n setForMove: boolean;\n hasAnimation: boolean;\n namespaceId: string;\n removedBeforeQueried: boolean;\n previousTriggersValues?: Map;\n}\n\nexport class StateValue {\n public value: string;\n public options: AnimationOptions;\n\n get params(): {[key: string]: any} {\n return this.options.params as {[key: string]: any};\n }\n\n constructor(input: any, public namespaceId: string = '') {\n const isObj = input && input.hasOwnProperty('value');\n const value = isObj ? input['value'] : input;\n this.value = normalizeTriggerValue(value);\n if (isObj) {\n const options = copyObj(input as any);\n delete options['value'];\n this.options = options as AnimationOptions;\n } else {\n this.options = {};\n }\n if (!this.options.params) {\n this.options.params = {};\n }\n }\n\n absorbOptions(options: AnimationOptions) {\n const newParams = options.params;\n if (newParams) {\n const oldParams = this.options.params!;\n Object.keys(newParams).forEach(prop => {\n if (oldParams[prop] == null) {\n oldParams[prop] = newParams[prop];\n }\n });\n }\n }\n}\n\nexport const VOID_VALUE = 'void';\nexport const DEFAULT_STATE_VALUE = new StateValue(VOID_VALUE);\n\nexport class AnimationTransitionNamespace {\n public players: TransitionAnimationPlayer[] = [];\n\n private _triggers = new Map();\n private _queue: QueueInstruction[] = [];\n\n private _elementListeners = new Map();\n\n private _hostClassName: string;\n\n constructor(\n public id: string, public hostElement: any, private _engine: TransitionAnimationEngine) {\n this._hostClassName = 'ng-tns-' + id;\n addClass(hostElement, this._hostClassName);\n }\n\n listen(element: any, name: string, phase: string, callback: (event: any) => boolean): () => any {\n if (!this._triggers.has(name)) {\n throw missingTrigger(phase, name);\n }\n\n if (phase == null || phase.length == 0) {\n throw missingEvent(name);\n }\n\n if (!isTriggerEventValid(phase)) {\n throw unsupportedTriggerEvent(phase, name);\n }\n\n const listeners = getOrSetDefaultValue(this._elementListeners, element, []);\n const data = {name, phase, callback};\n listeners.push(data);\n\n const triggersWithStates =\n getOrSetDefaultValue(this._engine.statesByElement, element, new Map());\n if (!triggersWithStates.has(name)) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + name);\n triggersWithStates.set(name, DEFAULT_STATE_VALUE);\n }\n\n return () => {\n // the event listener is removed AFTER the flush has occurred such\n // that leave animations callbacks can fire (otherwise if the node\n // is removed in between then the listeners would be deregistered)\n this._engine.afterFlush(() => {\n const index = listeners.indexOf(data);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n\n if (!this._triggers.has(name)) {\n triggersWithStates.delete(name);\n }\n });\n };\n }\n\n register(name: string, ast: AnimationTrigger): boolean {\n if (this._triggers.has(name)) {\n // throw\n return false;\n } else {\n this._triggers.set(name, ast);\n return true;\n }\n }\n\n private _getTrigger(name: string) {\n const trigger = this._triggers.get(name);\n if (!trigger) {\n throw unregisteredTrigger(name);\n }\n return trigger;\n }\n\n trigger(element: any, triggerName: string, value: any, defaultToFallback: boolean = true):\n TransitionAnimationPlayer|undefined {\n const trigger = this._getTrigger(triggerName);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n\n let triggersWithStates = this._engine.statesByElement.get(element);\n if (!triggersWithStates) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + triggerName);\n this._engine.statesByElement.set(element, triggersWithStates = new Map());\n }\n\n let fromState = triggersWithStates.get(triggerName);\n const toState = new StateValue(value, this.id);\n const isObj = value && value.hasOwnProperty('value');\n if (!isObj && fromState) {\n toState.absorbOptions(fromState.options);\n }\n\n triggersWithStates.set(triggerName, toState);\n\n if (!fromState) {\n fromState = DEFAULT_STATE_VALUE;\n }\n\n const isRemoval = toState.value === VOID_VALUE;\n\n // normally this isn't reached by here, however, if an object expression\n // is passed in then it may be a new object each time. Comparing the value\n // is important since that will stay the same despite there being a new object.\n // The removal arc here is special cased because the same element is triggered\n // twice in the event that it contains animations on the outer/inner portions\n // of the host container\n if (!isRemoval && fromState.value === toState.value) {\n // this means that despite the value not changing, some inner params\n // have changed which means that the animation final styles need to be applied\n if (!objEquals(fromState.params, toState.params)) {\n const errors: Error[] = [];\n const fromStyles = trigger.matchStyles(fromState.value, fromState.params, errors);\n const toStyles = trigger.matchStyles(toState.value, toState.params, errors);\n if (errors.length) {\n this._engine.reportError(errors);\n } else {\n this._engine.afterFlush(() => {\n eraseStyles(element, fromStyles);\n setStyles(element, toStyles);\n });\n }\n }\n return;\n }\n\n const playersOnElement: TransitionAnimationPlayer[] =\n getOrSetDefaultValue(this._engine.playersByElement, element, []);\n playersOnElement.forEach(player => {\n // only remove the player if it is queued on the EXACT same trigger/namespace\n // we only also deal with queued players here because if the animation has\n // started then we want to keep the player alive until the flush happens\n // (which is where the previousPlayers are passed into the new player)\n if (player.namespaceId == this.id && player.triggerName == triggerName && player.queued) {\n player.destroy();\n }\n });\n\n let transition =\n trigger.matchTransition(fromState.value, toState.value, element, toState.params);\n let isFallbackTransition = false;\n if (!transition) {\n if (!defaultToFallback) return;\n transition = trigger.fallbackTransition;\n isFallbackTransition = true;\n }\n\n this._engine.totalQueuedPlayers++;\n this._queue.push(\n {element, triggerName, transition, fromState, toState, player, isFallbackTransition});\n\n if (!isFallbackTransition) {\n addClass(element, QUEUED_CLASSNAME);\n player.onStart(() => {\n removeClass(element, QUEUED_CLASSNAME);\n });\n }\n\n player.onDone(() => {\n let index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n\n const players = this._engine.playersByElement.get(element);\n if (players) {\n let index = players.indexOf(player);\n if (index >= 0) {\n players.splice(index, 1);\n }\n }\n });\n\n this.players.push(player);\n playersOnElement.push(player);\n\n return player;\n }\n\n deregister(name: string) {\n this._triggers.delete(name);\n\n this._engine.statesByElement.forEach(stateMap => stateMap.delete(name));\n\n this._elementListeners.forEach((listeners, element) => {\n this._elementListeners.set(element, listeners.filter(entry => {\n return entry.name != name;\n }));\n });\n }\n\n clearElementCache(element: any) {\n this._engine.statesByElement.delete(element);\n this._elementListeners.delete(element);\n const elementPlayers = this._engine.playersByElement.get(element);\n if (elementPlayers) {\n elementPlayers.forEach(player => player.destroy());\n this._engine.playersByElement.delete(element);\n }\n }\n\n private _signalRemovalForInnerTriggers(rootElement: any, context: any) {\n const elements = this._engine.driver.query(rootElement, NG_TRIGGER_SELECTOR, true);\n\n // emulate a leave animation for all inner nodes within this node.\n // If there are no animations found for any of the nodes then clear the cache\n // for the element.\n elements.forEach(elm => {\n // this means that an inner remove() operation has already kicked off\n // the animation on this element...\n if (elm[REMOVAL_FLAG]) return;\n\n const namespaces = this._engine.fetchNamespacesByElement(elm);\n if (namespaces.size) {\n namespaces.forEach(ns => ns.triggerLeaveAnimation(elm, context, false, true));\n } else {\n this.clearElementCache(elm);\n }\n });\n\n // If the child elements were removed along with the parent, their animations might not\n // have completed. Clear all the elements from the cache so we don't end up with a memory leak.\n this._engine.afterFlushAnimationsDone(\n () => elements.forEach(elm => this.clearElementCache(elm)));\n }\n\n triggerLeaveAnimation(\n element: any, context: any, destroyAfterComplete?: boolean,\n defaultToFallback?: boolean): boolean {\n const triggerStates = this._engine.statesByElement.get(element);\n const previousTriggersValues = new Map();\n if (triggerStates) {\n const players: TransitionAnimationPlayer[] = [];\n triggerStates.forEach((state, triggerName) => {\n previousTriggersValues.set(triggerName, state.value);\n // this check is here in the event that an element is removed\n // twice (both on the host level and the component level)\n if (this._triggers.has(triggerName)) {\n const player = this.trigger(element, triggerName, VOID_VALUE, defaultToFallback);\n if (player) {\n players.push(player);\n }\n }\n });\n\n if (players.length) {\n this._engine.markElementAsRemoved(this.id, element, true, context, previousTriggersValues);\n if (destroyAfterComplete) {\n optimizeGroupPlayer(players).onDone(() => this._engine.processLeaveNode(element));\n }\n return true;\n }\n }\n return false;\n }\n\n prepareLeaveAnimationListeners(element: any) {\n const listeners = this._elementListeners.get(element);\n const elementStates = this._engine.statesByElement.get(element);\n\n // if this statement fails then it means that the element was picked up\n // by an earlier flush (or there are no listeners at all to track the leave).\n if (listeners && elementStates) {\n const visitedTriggers = new Set();\n listeners.forEach(listener => {\n const triggerName = listener.name;\n if (visitedTriggers.has(triggerName)) return;\n visitedTriggers.add(triggerName);\n\n const trigger = this._triggers.get(triggerName)!;\n const transition = trigger.fallbackTransition;\n const fromState = elementStates.get(triggerName) || DEFAULT_STATE_VALUE;\n const toState = new StateValue(VOID_VALUE);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n\n this._engine.totalQueuedPlayers++;\n this._queue.push({\n element,\n triggerName,\n transition,\n fromState,\n toState,\n player,\n isFallbackTransition: true\n });\n });\n }\n }\n\n removeNode(element: any, context: any): void {\n const engine = this._engine;\n if (element.childElementCount) {\n this._signalRemovalForInnerTriggers(element, context);\n }\n\n // this means that a * => VOID animation was detected and kicked off\n if (this.triggerLeaveAnimation(element, context, true)) return;\n\n // find the player that is animating and make sure that the\n // removal is delayed until that player has completed\n let containsPotentialParentTransition = false;\n if (engine.totalAnimations) {\n const currentPlayers =\n engine.players.length ? engine.playersByQueriedElement.get(element) : [];\n\n // when this `if statement` does not continue forward it means that\n // a previous animation query has selected the current element and\n // is animating it. In this situation want to continue forwards and\n // allow the element to be queued up for animation later.\n if (currentPlayers && currentPlayers.length) {\n containsPotentialParentTransition = true;\n } else {\n let parent = element;\n while (parent = parent.parentNode) {\n const triggers = engine.statesByElement.get(parent);\n if (triggers) {\n containsPotentialParentTransition = true;\n break;\n }\n }\n }\n }\n\n // at this stage we know that the element will either get removed\n // during flush or will be picked up by a parent query. Either way\n // we need to fire the listeners for this element when it DOES get\n // removed (once the query parent animation is done or after flush)\n this.prepareLeaveAnimationListeners(element);\n\n // whether or not a parent has an animation we need to delay the deferral of the leave\n // operation until we have more information (which we do after flush() has been called)\n if (containsPotentialParentTransition) {\n engine.markElementAsRemoved(this.id, element, false, context);\n } else {\n const removalFlag = element[REMOVAL_FLAG];\n if (!removalFlag || removalFlag === NULL_REMOVAL_STATE) {\n // we do this after the flush has occurred such\n // that the callbacks can be fired\n engine.afterFlush(() => this.clearElementCache(element));\n engine.destroyInnerAnimations(element);\n engine._onRemovalComplete(element, context);\n }\n }\n }\n\n insertNode(element: any, parent: any): void {\n addClass(element, this._hostClassName);\n }\n\n drainQueuedTransitions(microtaskId: number): QueueInstruction[] {\n const instructions: QueueInstruction[] = [];\n this._queue.forEach(entry => {\n const player = entry.player;\n if (player.destroyed) return;\n\n const element = entry.element;\n const listeners = this._elementListeners.get(element);\n if (listeners) {\n listeners.forEach((listener: TriggerListener) => {\n if (listener.name == entry.triggerName) {\n const baseEvent = makeAnimationEvent(\n element, entry.triggerName, entry.fromState.value, entry.toState.value);\n (baseEvent as any)['_data'] = microtaskId;\n listenOnPlayer(entry.player, listener.phase, baseEvent, listener.callback);\n }\n });\n }\n\n if (player.markedForDestroy) {\n this._engine.afterFlush(() => {\n // now we can destroy the element properly since the event listeners have\n // been bound to the player\n player.destroy();\n });\n } else {\n instructions.push(entry);\n }\n });\n\n this._queue = [];\n\n return instructions.sort((a, b) => {\n // if depCount == 0 them move to front\n // otherwise if a contains b then move back\n const d0 = a.transition.ast.depCount;\n const d1 = b.transition.ast.depCount;\n if (d0 == 0 || d1 == 0) {\n return d0 - d1;\n }\n return this._engine.driver.containsElement(a.element, b.element) ? 1 : -1;\n });\n }\n\n destroy(context: any) {\n this.players.forEach(p => p.destroy());\n this._signalRemovalForInnerTriggers(this.hostElement, context);\n }\n}\n\nexport interface QueuedTransition {\n element: any;\n instruction: AnimationTransitionInstruction;\n player: TransitionAnimationPlayer;\n}\n\nexport class TransitionAnimationEngine {\n public players: TransitionAnimationPlayer[] = [];\n public newHostElements = new Map();\n public playersByElement = new Map();\n public playersByQueriedElement = new Map();\n public statesByElement = new Map>();\n public disabledNodes = new Set();\n\n public totalAnimations = 0;\n public totalQueuedPlayers = 0;\n\n private _namespaceLookup: {[id: string]: AnimationTransitionNamespace} = {};\n private _namespaceList: AnimationTransitionNamespace[] = [];\n private _flushFns: (() => any)[] = [];\n private _whenQuietFns: (() => any)[] = [];\n\n public namespacesByHostElement = new Map();\n public collectedEnterElements: any[] = [];\n public collectedLeaveElements: any[] = [];\n\n // this method is designed to be overridden by the code that uses this engine\n public onRemovalComplete = (element: any, context: any) => {};\n\n /** @internal */\n _onRemovalComplete(element: any, context: any) {\n this.onRemovalComplete(element, context);\n }\n\n constructor(\n public bodyNode: any, public driver: AnimationDriver,\n private _normalizer: AnimationStyleNormalizer) {}\n\n get queuedPlayers(): TransitionAnimationPlayer[] {\n const players: TransitionAnimationPlayer[] = [];\n this._namespaceList.forEach(ns => {\n ns.players.forEach(player => {\n if (player.queued) {\n players.push(player);\n }\n });\n });\n return players;\n }\n\n createNamespace(namespaceId: string, hostElement: any) {\n const ns = new AnimationTransitionNamespace(namespaceId, hostElement, this);\n if (this.bodyNode && this.driver.containsElement(this.bodyNode, hostElement)) {\n this._balanceNamespaceList(ns, hostElement);\n } else {\n // defer this later until flush during when the host element has\n // been inserted so that we know exactly where to place it in\n // the namespace list\n this.newHostElements.set(hostElement, ns);\n\n // given that this host element is a part of the animation code, it\n // may or may not be inserted by a parent node that is of an\n // animation renderer type. If this happens then we can still have\n // access to this item when we query for :enter nodes. If the parent\n // is a renderer then the set data-structure will normalize the entry\n this.collectEnterElement(hostElement);\n }\n return this._namespaceLookup[namespaceId] = ns;\n }\n\n private _balanceNamespaceList(ns: AnimationTransitionNamespace, hostElement: any) {\n const namespaceList = this._namespaceList;\n const namespacesByHostElement = this.namespacesByHostElement;\n const limit = namespaceList.length - 1;\n if (limit >= 0) {\n let found = false;\n // Find the closest ancestor with an existing namespace so we can then insert `ns` after it,\n // establishing a top-down ordering of namespaces in `this._namespaceList`.\n let ancestor = this.driver.getParentElement(hostElement);\n while (ancestor) {\n const ancestorNs = namespacesByHostElement.get(ancestor);\n if (ancestorNs) {\n // An animation namespace has been registered for this ancestor, so we insert `ns`\n // right after it to establish top-down ordering of animation namespaces.\n const index = namespaceList.indexOf(ancestorNs);\n namespaceList.splice(index + 1, 0, ns);\n found = true;\n break;\n }\n ancestor = this.driver.getParentElement(ancestor);\n }\n if (!found) {\n // No namespace exists that is an ancestor of `ns`, so `ns` is inserted at the front to\n // ensure that any existing descendants are ordered after `ns`, retaining the desired\n // top-down ordering.\n namespaceList.unshift(ns);\n }\n } else {\n namespaceList.push(ns);\n }\n\n namespacesByHostElement.set(hostElement, ns);\n return ns;\n }\n\n register(namespaceId: string, hostElement: any) {\n let ns = this._namespaceLookup[namespaceId];\n if (!ns) {\n ns = this.createNamespace(namespaceId, hostElement);\n }\n return ns;\n }\n\n registerTrigger(namespaceId: string, name: string, trigger: AnimationTrigger) {\n let ns = this._namespaceLookup[namespaceId];\n if (ns && ns.register(name, trigger)) {\n this.totalAnimations++;\n }\n }\n\n destroy(namespaceId: string, context: any) {\n if (!namespaceId) return;\n this.afterFlush(() => {});\n\n this.afterFlushAnimationsDone(() => {\n const ns = this._fetchNamespace(namespaceId);\n this.namespacesByHostElement.delete(ns.hostElement);\n const index = this._namespaceList.indexOf(ns);\n if (index >= 0) {\n this._namespaceList.splice(index, 1);\n }\n ns.destroy(context);\n delete this._namespaceLookup[namespaceId];\n });\n }\n\n private _fetchNamespace(id: string) {\n return this._namespaceLookup[id];\n }\n\n fetchNamespacesByElement(element: any): Set {\n // normally there should only be one namespace per element, however\n // if @triggers are placed on both the component element and then\n // its host element (within the component code) then there will be\n // two namespaces returned. We use a set here to simply deduplicate\n // the namespaces in case (for the reason described above) there are multiple triggers\n const namespaces = new Set();\n const elementStates = this.statesByElement.get(element);\n if (elementStates) {\n for (let stateValue of elementStates.values()) {\n if (stateValue.namespaceId) {\n const ns = this._fetchNamespace(stateValue.namespaceId);\n if (ns) {\n namespaces.add(ns);\n }\n }\n }\n }\n return namespaces;\n }\n\n trigger(namespaceId: string, element: any, name: string, value: any): boolean {\n if (isElementNode(element)) {\n const ns = this._fetchNamespace(namespaceId);\n if (ns) {\n ns.trigger(element, name, value);\n return true;\n }\n }\n return false;\n }\n\n insertNode(namespaceId: string, element: any, parent: any, insertBefore: boolean): void {\n if (!isElementNode(element)) return;\n\n // special case for when an element is removed and reinserted (move operation)\n // when this occurs we do not want to use the element for deletion later\n const details = element[REMOVAL_FLAG] as ElementAnimationState;\n if (details && details.setForRemoval) {\n details.setForRemoval = false;\n details.setForMove = true;\n const index = this.collectedLeaveElements.indexOf(element);\n if (index >= 0) {\n this.collectedLeaveElements.splice(index, 1);\n }\n }\n\n // in the event that the namespaceId is blank then the caller\n // code does not contain any animation code in it, but it is\n // just being called so that the node is marked as being inserted\n if (namespaceId) {\n const ns = this._fetchNamespace(namespaceId);\n // This if-statement is a workaround for router issue #21947.\n // The router sometimes hits a race condition where while a route\n // is being instantiated a new navigation arrives, triggering leave\n // animation of DOM that has not been fully initialized, until this\n // is resolved, we need to handle the scenario when DOM is not in a\n // consistent state during the animation.\n if (ns) {\n ns.insertNode(element, parent);\n }\n }\n\n // only *directives and host elements are inserted before\n if (insertBefore) {\n this.collectEnterElement(element);\n }\n }\n\n collectEnterElement(element: any) {\n this.collectedEnterElements.push(element);\n }\n\n markElementAsDisabled(element: any, value: boolean) {\n if (value) {\n if (!this.disabledNodes.has(element)) {\n this.disabledNodes.add(element);\n addClass(element, DISABLED_CLASSNAME);\n }\n } else if (this.disabledNodes.has(element)) {\n this.disabledNodes.delete(element);\n removeClass(element, DISABLED_CLASSNAME);\n }\n }\n\n removeNode(namespaceId: string, element: any, context: any): void {\n if (isElementNode(element)) {\n const ns = namespaceId ? this._fetchNamespace(namespaceId) : null;\n if (ns) {\n ns.removeNode(element, context);\n } else {\n this.markElementAsRemoved(namespaceId, element, false, context);\n }\n\n const hostNS = this.namespacesByHostElement.get(element);\n if (hostNS && hostNS.id !== namespaceId) {\n hostNS.removeNode(element, context);\n }\n } else {\n this._onRemovalComplete(element, context);\n }\n }\n\n markElementAsRemoved(\n namespaceId: string, element: any, hasAnimation?: boolean, context?: any,\n previousTriggersValues?: Map) {\n this.collectedLeaveElements.push(element);\n element[REMOVAL_FLAG] = {\n namespaceId,\n setForRemoval: context,\n hasAnimation,\n removedBeforeQueried: false,\n previousTriggersValues\n };\n }\n\n listen(\n namespaceId: string, element: any, name: string, phase: string,\n callback: (event: any) => boolean): () => any {\n if (isElementNode(element)) {\n return this._fetchNamespace(namespaceId).listen(element, name, phase, callback);\n }\n return () => {};\n }\n\n private _buildInstruction(\n entry: QueueInstruction, subTimelines: ElementInstructionMap, enterClassName: string,\n leaveClassName: string, skipBuildAst?: boolean) {\n return entry.transition.build(\n this.driver, entry.element, entry.fromState.value, entry.toState.value, enterClassName,\n leaveClassName, entry.fromState.options, entry.toState.options, subTimelines, skipBuildAst);\n }\n\n destroyInnerAnimations(containerElement: any) {\n let elements = this.driver.query(containerElement, NG_TRIGGER_SELECTOR, true);\n elements.forEach(element => this.destroyActiveAnimationsForElement(element));\n\n if (this.playersByQueriedElement.size == 0) return;\n\n elements = this.driver.query(containerElement, NG_ANIMATING_SELECTOR, true);\n elements.forEach(element => this.finishActiveQueriedAnimationOnElement(element));\n }\n\n destroyActiveAnimationsForElement(element: any) {\n const players = this.playersByElement.get(element);\n if (players) {\n players.forEach(player => {\n // special case for when an element is set for destruction, but hasn't started.\n // in this situation we want to delay the destruction until the flush occurs\n // so that any event listeners attached to the player are triggered.\n if (player.queued) {\n player.markedForDestroy = true;\n } else {\n player.destroy();\n }\n });\n }\n }\n\n finishActiveQueriedAnimationOnElement(element: any) {\n const players = this.playersByQueriedElement.get(element);\n if (players) {\n players.forEach(player => player.finish());\n }\n }\n\n whenRenderingDone(): Promise {\n return new Promise(resolve => {\n if (this.players.length) {\n return optimizeGroupPlayer(this.players).onDone(() => resolve());\n } else {\n resolve();\n }\n });\n }\n\n processLeaveNode(element: any) {\n const details = element[REMOVAL_FLAG] as ElementAnimationState;\n if (details && details.setForRemoval) {\n // this will prevent it from removing it twice\n element[REMOVAL_FLAG] = NULL_REMOVAL_STATE;\n if (details.namespaceId) {\n this.destroyInnerAnimations(element);\n const ns = this._fetchNamespace(details.namespaceId);\n if (ns) {\n ns.clearElementCache(element);\n }\n }\n this._onRemovalComplete(element, details.setForRemoval);\n }\n\n if (element.classList?.contains(DISABLED_CLASSNAME)) {\n this.markElementAsDisabled(element, false);\n }\n\n this.driver.query(element, DISABLED_SELECTOR, true).forEach(node => {\n this.markElementAsDisabled(node, false);\n });\n }\n\n flush(microtaskId: number = -1) {\n let players: AnimationPlayer[] = [];\n if (this.newHostElements.size) {\n this.newHostElements.forEach((ns, element) => this._balanceNamespaceList(ns, element));\n this.newHostElements.clear();\n }\n\n if (this.totalAnimations && this.collectedEnterElements.length) {\n for (let i = 0; i < this.collectedEnterElements.length; i++) {\n const elm = this.collectedEnterElements[i];\n addClass(elm, STAR_CLASSNAME);\n }\n }\n\n if (this._namespaceList.length &&\n (this.totalQueuedPlayers || this.collectedLeaveElements.length)) {\n const cleanupFns: Function[] = [];\n try {\n players = this._flushAnimations(cleanupFns, microtaskId);\n } finally {\n for (let i = 0; i < cleanupFns.length; i++) {\n cleanupFns[i]();\n }\n }\n } else {\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n this.processLeaveNode(element);\n }\n }\n\n this.totalQueuedPlayers = 0;\n this.collectedEnterElements.length = 0;\n this.collectedLeaveElements.length = 0;\n this._flushFns.forEach(fn => fn());\n this._flushFns = [];\n\n if (this._whenQuietFns.length) {\n // we move these over to a variable so that\n // if any new callbacks are registered in another\n // flush they do not populate the existing set\n const quietFns = this._whenQuietFns;\n this._whenQuietFns = [];\n\n if (players.length) {\n optimizeGroupPlayer(players).onDone(() => {\n quietFns.forEach(fn => fn());\n });\n } else {\n quietFns.forEach(fn => fn());\n }\n }\n }\n\n reportError(errors: Error[]) {\n throw triggerTransitionsFailed(errors);\n }\n\n private _flushAnimations(cleanupFns: Function[], microtaskId: number):\n TransitionAnimationPlayer[] {\n const subTimelines = new ElementInstructionMap();\n const skippedPlayers: TransitionAnimationPlayer[] = [];\n const skippedPlayersMap = new Map();\n const queuedInstructions: QueuedTransition[] = [];\n const queriedElements = new Map();\n const allPreStyleElements = new Map>();\n const allPostStyleElements = new Map>();\n\n const disabledElementsSet = new Set();\n this.disabledNodes.forEach(node => {\n disabledElementsSet.add(node);\n const nodesThatAreDisabled = this.driver.query(node, QUEUED_SELECTOR, true);\n for (let i = 0; i < nodesThatAreDisabled.length; i++) {\n disabledElementsSet.add(nodesThatAreDisabled[i]);\n }\n });\n\n const bodyNode = this.bodyNode;\n const allTriggerElements = Array.from(this.statesByElement.keys());\n const enterNodeMap = buildRootMap(allTriggerElements, this.collectedEnterElements);\n\n // this must occur before the instructions are built below such that\n // the :enter queries match the elements (since the timeline queries\n // are fired during instruction building).\n const enterNodeMapIds = new Map();\n let i = 0;\n enterNodeMap.forEach((nodes, root) => {\n const className = ENTER_CLASSNAME + i++;\n enterNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n\n const allLeaveNodes: any[] = [];\n const mergedLeaveNodes = new Set();\n const leaveNodesWithoutAnimations = new Set();\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n const details = element[REMOVAL_FLAG] as ElementAnimationState;\n if (details && details.setForRemoval) {\n allLeaveNodes.push(element);\n mergedLeaveNodes.add(element);\n if (details.hasAnimation) {\n this.driver.query(element, STAR_SELECTOR, true).forEach(elm => mergedLeaveNodes.add(elm));\n } else {\n leaveNodesWithoutAnimations.add(element);\n }\n }\n }\n\n const leaveNodeMapIds = new Map();\n const leaveNodeMap = buildRootMap(allTriggerElements, Array.from(mergedLeaveNodes));\n leaveNodeMap.forEach((nodes, root) => {\n const className = LEAVE_CLASSNAME + i++;\n leaveNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n\n cleanupFns.push(() => {\n enterNodeMap.forEach((nodes, root) => {\n const className = enterNodeMapIds.get(root)!;\n nodes.forEach(node => removeClass(node, className));\n });\n\n leaveNodeMap.forEach((nodes, root) => {\n const className = leaveNodeMapIds.get(root)!;\n nodes.forEach(node => removeClass(node, className));\n });\n\n allLeaveNodes.forEach(element => {\n this.processLeaveNode(element);\n });\n });\n\n const allPlayers: TransitionAnimationPlayer[] = [];\n const erroneousTransitions: AnimationTransitionInstruction[] = [];\n for (let i = this._namespaceList.length - 1; i >= 0; i--) {\n const ns = this._namespaceList[i];\n ns.drainQueuedTransitions(microtaskId).forEach(entry => {\n const player = entry.player;\n const element = entry.element;\n allPlayers.push(player);\n\n if (this.collectedEnterElements.length) {\n const details = element[REMOVAL_FLAG] as ElementAnimationState;\n // animations for move operations (elements being removed and reinserted,\n // e.g. when the order of an *ngFor list changes) are currently not supported\n if (details && details.setForMove) {\n if (details.previousTriggersValues &&\n details.previousTriggersValues.has(entry.triggerName)) {\n const previousValue = details.previousTriggersValues.get(entry.triggerName) as string;\n\n // we need to restore the previous trigger value since the element has\n // only been moved and hasn't actually left the DOM\n const triggersWithStates = this.statesByElement.get(entry.element);\n if (triggersWithStates && triggersWithStates.has(entry.triggerName)) {\n const state = triggersWithStates.get(entry.triggerName)!;\n state.value = previousValue;\n triggersWithStates.set(entry.triggerName, state);\n }\n }\n\n player.destroy();\n return;\n }\n }\n\n const nodeIsOrphaned = !bodyNode || !this.driver.containsElement(bodyNode, element);\n const leaveClassName = leaveNodeMapIds.get(element)!;\n const enterClassName = enterNodeMapIds.get(element)!;\n const instruction = this._buildInstruction(\n entry, subTimelines, enterClassName, leaveClassName, nodeIsOrphaned)!;\n if (instruction.errors && instruction.errors.length) {\n erroneousTransitions.push(instruction);\n return;\n }\n\n // even though the element may not be in the DOM, it may still\n // be added at a later point (due to the mechanics of content\n // projection and/or dynamic component insertion) therefore it's\n // important to still style the element.\n if (nodeIsOrphaned) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n\n // if an unmatched transition is queued and ready to go\n // then it SHOULD NOT render an animation and cancel the\n // previously running animations.\n if (entry.isFallbackTransition) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n\n // this means that if a parent animation uses this animation as a sub-trigger\n // then it will instruct the timeline builder not to add a player delay, but\n // instead stretch the first keyframe gap until the animation starts. This is\n // important in order to prevent extra initialization styles from being\n // required by the user for the animation.\n const timelines: AnimationTimelineInstruction[] = [];\n instruction.timelines.forEach(tl => {\n tl.stretchStartingKeyframe = true;\n if (!this.disabledNodes.has(tl.element)) {\n timelines.push(tl);\n }\n });\n instruction.timelines = timelines;\n\n subTimelines.append(element, instruction.timelines);\n\n const tuple = {instruction, player, element};\n\n queuedInstructions.push(tuple);\n\n instruction.queriedElements.forEach(\n element => getOrSetDefaultValue(queriedElements, element, []).push(player));\n\n instruction.preStyleProps.forEach((stringMap, element) => {\n if (stringMap.size) {\n let setVal: Set = allPreStyleElements.get(element)!;\n if (!setVal) {\n allPreStyleElements.set(element, setVal = new Set());\n }\n stringMap.forEach((_, prop) => setVal.add(prop));\n }\n });\n\n instruction.postStyleProps.forEach((stringMap, element) => {\n let setVal: Set = allPostStyleElements.get(element)!;\n if (!setVal) {\n allPostStyleElements.set(element, setVal = new Set());\n }\n stringMap.forEach((_, prop) => setVal.add(prop));\n });\n });\n }\n\n if (erroneousTransitions.length) {\n const errors: Error[] = [];\n erroneousTransitions.forEach(instruction => {\n errors.push(transitionFailed(instruction.triggerName, instruction.errors!));\n });\n\n allPlayers.forEach(player => player.destroy());\n this.reportError(errors);\n }\n\n const allPreviousPlayersMap = new Map();\n // this map tells us which element in the DOM tree is contained by\n // which animation. Further down this map will get populated once\n // the players are built and in doing so we can use it to efficiently\n // figure out if a sub player is skipped due to a parent player having priority.\n const animationElementMap = new Map();\n queuedInstructions.forEach(entry => {\n const element = entry.element;\n if (subTimelines.has(element)) {\n animationElementMap.set(element, element);\n this._beforeAnimationBuild(\n entry.player.namespaceId, entry.instruction, allPreviousPlayersMap);\n }\n });\n\n skippedPlayers.forEach(player => {\n const element = player.element;\n const previousPlayers =\n this._getPreviousPlayers(element, false, player.namespaceId, player.triggerName, null);\n previousPlayers.forEach(prevPlayer => {\n getOrSetDefaultValue(allPreviousPlayersMap, element, []).push(prevPlayer);\n prevPlayer.destroy();\n });\n });\n\n // this is a special case for nodes that will be removed either by\n // having their own leave animations or by being queried in a container\n // that will be removed once a parent animation is complete. The idea\n // here is that * styles must be identical to ! styles because of\n // backwards compatibility (* is also filled in by default in many places).\n // Otherwise * styles will return an empty value or \"auto\" since the element\n // passed to getComputedStyle will not be visible (since * === destination)\n const replaceNodes = allLeaveNodes.filter(node => {\n return replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements);\n });\n\n // POST STAGE: fill the * styles\n const postStylesMap = new Map();\n const allLeaveQueriedNodes = cloakAndComputeStyles(\n postStylesMap, this.driver, leaveNodesWithoutAnimations, allPostStyleElements, AUTO_STYLE);\n\n allLeaveQueriedNodes.forEach(node => {\n if (replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements)) {\n replaceNodes.push(node);\n }\n });\n\n // PRE STAGE: fill the ! styles\n const preStylesMap = new Map();\n enterNodeMap.forEach((nodes, root) => {\n cloakAndComputeStyles(\n preStylesMap, this.driver, new Set(nodes), allPreStyleElements, PRE_STYLE);\n });\n\n replaceNodes.forEach(node => {\n const post = postStylesMap.get(node);\n const pre = preStylesMap.get(node);\n postStylesMap.set(node, new Map([...(post?.entries() ?? []), ...(pre?.entries() ?? [])]));\n });\n\n const rootPlayers: TransitionAnimationPlayer[] = [];\n const subPlayers: TransitionAnimationPlayer[] = [];\n const NO_PARENT_ANIMATION_ELEMENT_DETECTED = {};\n queuedInstructions.forEach(entry => {\n const {element, player, instruction} = entry;\n // this means that it was never consumed by a parent animation which\n // means that it is independent and therefore should be set for animation\n if (subTimelines.has(element)) {\n if (disabledElementsSet.has(element)) {\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n player.disabled = true;\n player.overrideTotalTime(instruction.totalTime);\n skippedPlayers.push(player);\n return;\n }\n\n // this will flow up the DOM and query the map to figure out\n // if a parent animation has priority over it. In the situation\n // that a parent is detected then it will cancel the loop. If\n // nothing is detected, or it takes a few hops to find a parent,\n // then it will fill in the missing nodes and signal them as having\n // a detected parent (or a NO_PARENT value via a special constant).\n let parentWithAnimation: any = NO_PARENT_ANIMATION_ELEMENT_DETECTED;\n if (animationElementMap.size > 1) {\n let elm = element;\n const parentsToAdd: any[] = [];\n while (elm = elm.parentNode) {\n const detectedParent = animationElementMap.get(elm);\n if (detectedParent) {\n parentWithAnimation = detectedParent;\n break;\n }\n parentsToAdd.push(elm);\n }\n parentsToAdd.forEach(parent => animationElementMap.set(parent, parentWithAnimation));\n }\n\n const innerPlayer = this._buildAnimation(\n player.namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap,\n postStylesMap);\n\n player.setRealPlayer(innerPlayer);\n\n if (parentWithAnimation === NO_PARENT_ANIMATION_ELEMENT_DETECTED) {\n rootPlayers.push(player);\n } else {\n const parentPlayers = this.playersByElement.get(parentWithAnimation);\n if (parentPlayers && parentPlayers.length) {\n player.parentPlayer = optimizeGroupPlayer(parentPlayers);\n }\n skippedPlayers.push(player);\n }\n } else {\n eraseStyles(element, instruction.fromStyles);\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n // there still might be a ancestor player animating this\n // element therefore we will still add it as a sub player\n // even if its animation may be disabled\n subPlayers.push(player);\n if (disabledElementsSet.has(element)) {\n skippedPlayers.push(player);\n }\n }\n });\n\n // find all of the sub players' corresponding inner animation players\n subPlayers.forEach(player => {\n // even if no players are found for a sub animation it\n // will still complete itself after the next tick since it's Noop\n const playersForElement = skippedPlayersMap.get(player.element);\n if (playersForElement && playersForElement.length) {\n const innerPlayer = optimizeGroupPlayer(playersForElement);\n player.setRealPlayer(innerPlayer);\n }\n });\n\n // the reason why we don't actually play the animation is\n // because all that a skipped player is designed to do is to\n // fire the start/done transition callback events\n skippedPlayers.forEach(player => {\n if (player.parentPlayer) {\n player.syncPlayerEvents(player.parentPlayer);\n } else {\n player.destroy();\n }\n });\n\n // run through all of the queued removals and see if they\n // were picked up by a query. If not then perform the removal\n // operation right away unless a parent animation is ongoing.\n for (let i = 0; i < allLeaveNodes.length; i++) {\n const element = allLeaveNodes[i];\n const details = element[REMOVAL_FLAG] as ElementAnimationState;\n removeClass(element, LEAVE_CLASSNAME);\n\n // this means the element has a removal animation that is being\n // taken care of and therefore the inner elements will hang around\n // until that animation is over (or the parent queried animation)\n if (details && details.hasAnimation) continue;\n\n let players: TransitionAnimationPlayer[] = [];\n\n // if this element is queried or if it contains queried children\n // then we want for the element not to be removed from the page\n // until the queried animations have finished\n if (queriedElements.size) {\n let queriedPlayerResults = queriedElements.get(element);\n if (queriedPlayerResults && queriedPlayerResults.length) {\n players.push(...queriedPlayerResults);\n }\n\n let queriedInnerElements = this.driver.query(element, NG_ANIMATING_SELECTOR, true);\n for (let j = 0; j < queriedInnerElements.length; j++) {\n let queriedPlayers = queriedElements.get(queriedInnerElements[j]);\n if (queriedPlayers && queriedPlayers.length) {\n players.push(...queriedPlayers);\n }\n }\n }\n\n const activePlayers = players.filter(p => !p.destroyed);\n if (activePlayers.length) {\n removeNodesAfterAnimationDone(this, element, activePlayers);\n } else {\n this.processLeaveNode(element);\n }\n }\n\n // this is required so the cleanup method doesn't remove them\n allLeaveNodes.length = 0;\n\n rootPlayers.forEach(player => {\n this.players.push(player);\n player.onDone(() => {\n player.destroy();\n\n const index = this.players.indexOf(player);\n this.players.splice(index, 1);\n });\n player.play();\n });\n\n return rootPlayers;\n }\n\n afterFlush(callback: () => any) {\n this._flushFns.push(callback);\n }\n\n afterFlushAnimationsDone(callback: () => any) {\n this._whenQuietFns.push(callback);\n }\n\n private _getPreviousPlayers(\n element: string, isQueriedElement: boolean, namespaceId?: string, triggerName?: string,\n toStateValue?: any): TransitionAnimationPlayer[] {\n let players: TransitionAnimationPlayer[] = [];\n if (isQueriedElement) {\n const queriedElementPlayers = this.playersByQueriedElement.get(element);\n if (queriedElementPlayers) {\n players = queriedElementPlayers;\n }\n } else {\n const elementPlayers = this.playersByElement.get(element);\n if (elementPlayers) {\n const isRemovalAnimation = !toStateValue || toStateValue == VOID_VALUE;\n elementPlayers.forEach(player => {\n if (player.queued) return;\n if (!isRemovalAnimation && player.triggerName != triggerName) return;\n players.push(player);\n });\n }\n }\n if (namespaceId || triggerName) {\n players = players.filter(player => {\n if (namespaceId && namespaceId != player.namespaceId) return false;\n if (triggerName && triggerName != player.triggerName) return false;\n return true;\n });\n }\n return players;\n }\n\n private _beforeAnimationBuild(\n namespaceId: string, instruction: AnimationTransitionInstruction,\n allPreviousPlayersMap: Map) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n\n // when a removal animation occurs, ALL previous players are collected\n // and destroyed (even if they are outside of the current namespace)\n const targetNameSpaceId: string|undefined =\n instruction.isRemovalTransition ? undefined : namespaceId;\n const targetTriggerName: string|undefined =\n instruction.isRemovalTransition ? undefined : triggerName;\n\n for (const timelineInstruction of instruction.timelines) {\n const element = timelineInstruction.element;\n const isQueriedElement = element !== rootElement;\n const players = getOrSetDefaultValue(allPreviousPlayersMap, element, []);\n const previousPlayers = this._getPreviousPlayers(\n element, isQueriedElement, targetNameSpaceId, targetTriggerName, instruction.toState);\n previousPlayers.forEach(player => {\n const realPlayer = (player as TransitionAnimationPlayer).getRealPlayer() as any;\n if (realPlayer.beforeDestroy) {\n realPlayer.beforeDestroy();\n }\n player.destroy();\n players.push(player);\n });\n }\n\n // this needs to be done so that the PRE/POST styles can be\n // computed properly without interfering with the previous animation\n eraseStyles(rootElement, instruction.fromStyles);\n }\n\n private _buildAnimation(\n namespaceId: string, instruction: AnimationTransitionInstruction,\n allPreviousPlayersMap: Map,\n skippedPlayersMap: Map, preStylesMap: Map,\n postStylesMap: Map): AnimationPlayer {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n\n // we first run this so that the previous animation player\n // data can be passed into the successive animation players\n const allQueriedPlayers: TransitionAnimationPlayer[] = [];\n const allConsumedElements = new Set();\n const allSubElements = new Set();\n const allNewPlayers = instruction.timelines.map(timelineInstruction => {\n const element = timelineInstruction.element;\n allConsumedElements.add(element);\n\n // FIXME (matsko): make sure to-be-removed animations are removed properly\n const details = element[REMOVAL_FLAG];\n if (details && details.removedBeforeQueried)\n return new NoopAnimationPlayer(timelineInstruction.duration, timelineInstruction.delay);\n const isQueriedElement = element !== rootElement;\n const previousPlayers =\n flattenGroupPlayers((allPreviousPlayersMap.get(element) || EMPTY_PLAYER_ARRAY)\n .map(p => p.getRealPlayer()))\n .filter(p => {\n // the `element` is not apart of the AnimationPlayer definition, but\n // Mock/WebAnimations\n // use the element within their implementation. This will be added in Angular5 to\n // AnimationPlayer\n const pp = p as any;\n return pp.element ? pp.element === element : false;\n });\n\n const preStyles = preStylesMap.get(element);\n const postStyles = postStylesMap.get(element);\n\n const keyframes = normalizeKeyframes(\n this._normalizer, timelineInstruction.keyframes, preStyles, postStyles);\n const player = this._buildPlayer(timelineInstruction, keyframes, previousPlayers);\n\n // this means that this particular player belongs to a sub trigger. It is\n // important that we match this player up with the corresponding (@trigger.listener)\n if (timelineInstruction.subTimeline && skippedPlayersMap) {\n allSubElements.add(element);\n }\n\n if (isQueriedElement) {\n const wrappedPlayer = new TransitionAnimationPlayer(namespaceId, triggerName, element);\n wrappedPlayer.setRealPlayer(player);\n allQueriedPlayers.push(wrappedPlayer);\n }\n\n return player;\n });\n\n allQueriedPlayers.forEach(player => {\n getOrSetDefaultValue(this.playersByQueriedElement, player.element, []).push(player);\n player.onDone(() => deleteOrUnsetInMap(this.playersByQueriedElement, player.element, player));\n });\n\n allConsumedElements.forEach(element => addClass(element, NG_ANIMATING_CLASSNAME));\n const player = optimizeGroupPlayer(allNewPlayers);\n player.onDestroy(() => {\n allConsumedElements.forEach(element => removeClass(element, NG_ANIMATING_CLASSNAME));\n setStyles(rootElement, instruction.toStyles);\n });\n\n // this basically makes all of the callbacks for sub element animations\n // be dependent on the upper players for when they finish\n allSubElements.forEach(element => {\n getOrSetDefaultValue(skippedPlayersMap, element, []).push(player);\n });\n\n return player;\n }\n\n private _buildPlayer(\n instruction: AnimationTimelineInstruction, keyframes: Array<ɵStyleDataMap>,\n previousPlayers: AnimationPlayer[]): AnimationPlayer {\n if (keyframes.length > 0) {\n return this.driver.animate(\n instruction.element, keyframes, instruction.duration, instruction.delay,\n instruction.easing, previousPlayers);\n }\n\n // special case for when an empty transition|definition is provided\n // ... there is no point in rendering an empty animation\n return new NoopAnimationPlayer(instruction.duration, instruction.delay);\n }\n}\n\nexport class TransitionAnimationPlayer implements AnimationPlayer {\n private _player: AnimationPlayer = new NoopAnimationPlayer();\n private _containsRealPlayer = false;\n\n private _queuedCallbacks = new Map any)[]>();\n public readonly destroyed = false;\n public parentPlayer: AnimationPlayer|null = null;\n\n public markedForDestroy: boolean = false;\n public disabled = false;\n\n readonly queued: boolean = true;\n public readonly totalTime: number = 0;\n\n constructor(public namespaceId: string, public triggerName: string, public element: any) {}\n\n setRealPlayer(player: AnimationPlayer) {\n if (this._containsRealPlayer) return;\n\n this._player = player;\n this._queuedCallbacks.forEach((callbacks, phase) => {\n callbacks.forEach(callback => listenOnPlayer(player, phase, undefined, callback));\n });\n\n this._queuedCallbacks.clear();\n this._containsRealPlayer = true;\n this.overrideTotalTime(player.totalTime);\n (this as {queued: boolean}).queued = false;\n }\n\n getRealPlayer() {\n return this._player;\n }\n\n overrideTotalTime(totalTime: number) {\n (this as any).totalTime = totalTime;\n }\n\n syncPlayerEvents(player: AnimationPlayer) {\n const p = this._player as any;\n if (p.triggerCallback) {\n player.onStart(() => p.triggerCallback!('start'));\n }\n player.onDone(() => this.finish());\n player.onDestroy(() => this.destroy());\n }\n\n private _queueEvent(name: string, callback: (event: any) => any): void {\n getOrSetDefaultValue(this._queuedCallbacks, name, []).push(callback);\n }\n\n onDone(fn: () => void): void {\n if (this.queued) {\n this._queueEvent('done', fn);\n }\n this._player.onDone(fn);\n }\n\n onStart(fn: () => void): void {\n if (this.queued) {\n this._queueEvent('start', fn);\n }\n this._player.onStart(fn);\n }\n\n onDestroy(fn: () => void): void {\n if (this.queued) {\n this._queueEvent('destroy', fn);\n }\n this._player.onDestroy(fn);\n }\n\n init(): void {\n this._player.init();\n }\n\n hasStarted(): boolean {\n return this.queued ? false : this._player.hasStarted();\n }\n\n play(): void {\n !this.queued && this._player.play();\n }\n\n pause(): void {\n !this.queued && this._player.pause();\n }\n\n restart(): void {\n !this.queued && this._player.restart();\n }\n\n finish(): void {\n this._player.finish();\n }\n\n destroy(): void {\n (this as {destroyed: boolean}).destroyed = true;\n this._player.destroy();\n }\n\n reset(): void {\n !this.queued && this._player.reset();\n }\n\n setPosition(p: number): void {\n if (!this.queued) {\n this._player.setPosition(p);\n }\n }\n\n getPosition(): number {\n return this.queued ? 0 : this._player.getPosition();\n }\n\n /** @internal */\n triggerCallback(phaseName: string): void {\n const p = this._player as any;\n if (p.triggerCallback) {\n p.triggerCallback(phaseName);\n }\n }\n}\n\nfunction deleteOrUnsetInMap(map: Map, key: T, value: V) {\n let currentValues = map.get(key);\n if (currentValues) {\n if (currentValues.length) {\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n map.delete(key);\n }\n }\n return currentValues;\n}\n\nfunction normalizeTriggerValue(value: any): any {\n // we use `!= null` here because it's the most simple\n // way to test against a \"falsy\" value without mixing\n // in empty strings or a zero value. DO NOT OPTIMIZE.\n return value != null ? value : null;\n}\n\nfunction isElementNode(node: any) {\n return node && node['nodeType'] === 1;\n}\n\nfunction isTriggerEventValid(eventName: string): boolean {\n return eventName == 'start' || eventName == 'done';\n}\n\nfunction cloakElement(element: any, value?: string) {\n const oldValue = element.style.display;\n element.style.display = value != null ? value : 'none';\n return oldValue;\n}\n\nfunction cloakAndComputeStyles(\n valuesMap: Map, driver: AnimationDriver, elements: Set,\n elementPropsMap: Map>, defaultStyle: string): any[] {\n const cloakVals: string[] = [];\n elements.forEach(element => cloakVals.push(cloakElement(element)));\n\n const failedElements: any[] = [];\n\n elementPropsMap.forEach((props: Set, element: any) => {\n const styles: ɵStyleDataMap = new Map();\n props.forEach(prop => {\n const value = driver.computeStyle(element, prop, defaultStyle);\n styles.set(prop, value);\n\n // there is no easy way to detect this because a sub element could be removed\n // by a parent animation element being detached.\n if (!value || value.length == 0) {\n element[REMOVAL_FLAG] = NULL_REMOVED_QUERIED_STATE;\n failedElements.push(element);\n }\n });\n valuesMap.set(element, styles);\n });\n\n // we use a index variable here since Set.forEach(a, i) does not return\n // an index value for the closure (but instead just the value)\n let i = 0;\n elements.forEach(element => cloakElement(element, cloakVals[i++]));\n\n return failedElements;\n}\n\n/*\nSince the Angular renderer code will return a collection of inserted\nnodes in all areas of a DOM tree, it's up to this algorithm to figure\nout which nodes are roots for each animation @trigger.\n\nBy placing each inserted node into a Set and traversing upwards, it\nis possible to find the @trigger elements and well any direct *star\ninsertion nodes, if a @trigger root is found then the enter element\nis placed into the Map[@trigger] spot.\n */\nfunction buildRootMap(roots: any[], nodes: any[]): Map {\n const rootMap = new Map();\n roots.forEach(root => rootMap.set(root, []));\n\n if (nodes.length == 0) return rootMap;\n\n const NULL_NODE = 1;\n const nodeSet = new Set(nodes);\n const localRootMap = new Map();\n\n function getRoot(node: any): any {\n if (!node) return NULL_NODE;\n\n let root = localRootMap.get(node);\n if (root) return root;\n\n const parent = node.parentNode;\n if (rootMap.has(parent)) { // ngIf inside @trigger\n root = parent;\n } else if (nodeSet.has(parent)) { // ngIf inside ngIf\n root = NULL_NODE;\n } else { // recurse upwards\n root = getRoot(parent);\n }\n\n localRootMap.set(node, root);\n return root;\n }\n\n nodes.forEach(node => {\n const root = getRoot(node);\n if (root !== NULL_NODE) {\n rootMap.get(root)!.push(node);\n }\n });\n\n return rootMap;\n}\n\nfunction addClass(element: any, className: string) {\n element.classList?.add(className);\n}\n\nfunction removeClass(element: any, className: string) {\n element.classList?.remove(className);\n}\n\nfunction removeNodesAfterAnimationDone(\n engine: TransitionAnimationEngine, element: any, players: AnimationPlayer[]) {\n optimizeGroupPlayer(players).onDone(() => engine.processLeaveNode(element));\n}\n\nfunction flattenGroupPlayers(players: AnimationPlayer[]): AnimationPlayer[] {\n const finalPlayers: AnimationPlayer[] = [];\n _flattenGroupPlayersRecur(players, finalPlayers);\n return finalPlayers;\n}\n\nfunction _flattenGroupPlayersRecur(players: AnimationPlayer[], finalPlayers: AnimationPlayer[]) {\n for (let i = 0; i < players.length; i++) {\n const player = players[i];\n if (player instanceof AnimationGroupPlayer) {\n _flattenGroupPlayersRecur(player.players, finalPlayers);\n } else {\n finalPlayers.push(player);\n }\n }\n}\n\nfunction objEquals(a: {[key: string]: any}, b: {[key: string]: any}): boolean {\n const k1 = Object.keys(a);\n const k2 = Object.keys(b);\n if (k1.length != k2.length) return false;\n for (let i = 0; i < k1.length; i++) {\n const prop = k1[i];\n if (!b.hasOwnProperty(prop) || a[prop] !== b[prop]) return false;\n }\n return true;\n}\n\nfunction replacePostStylesAsPre(\n element: any, allPreStyleElements: Map>,\n allPostStyleElements: Map>): boolean {\n const postEntry = allPostStyleElements.get(element);\n if (!postEntry) return false;\n\n let preEntry = allPreStyleElements.get(element);\n if (preEntry) {\n postEntry.forEach(data => preEntry!.add(data));\n } else {\n allPreStyleElements.set(element, postEntry);\n }\n\n allPostStyleElements.delete(element);\n return true;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {AnimationMetadata, AnimationPlayer, AnimationTriggerMetadata} from '@angular/animations';\n\nimport {TriggerAst} from '../dsl/animation_ast';\nimport {buildAnimationAst} from '../dsl/animation_ast_builder';\nimport {AnimationTrigger, buildTrigger} from '../dsl/animation_trigger';\nimport {AnimationStyleNormalizer} from '../dsl/style_normalization/animation_style_normalizer';\nimport {triggerBuildFailed} from '../error_helpers';\nimport {warnTriggerBuild} from '../warning_helpers';\n\nimport {AnimationDriver} from './animation_driver';\nimport {parseTimelineCommand} from './shared';\nimport {TimelineAnimationEngine} from './timeline_animation_engine';\nimport {TransitionAnimationEngine} from './transition_animation_engine';\n\nexport class AnimationEngine {\n private _transitionEngine: TransitionAnimationEngine;\n private _timelineEngine: TimelineAnimationEngine;\n\n private _triggerCache: {[key: string]: AnimationTrigger} = {};\n\n // this method is designed to be overridden by the code that uses this engine\n public onRemovalComplete = (element: any, context: any) => {};\n\n constructor(\n private bodyNode: any, private _driver: AnimationDriver,\n private _normalizer: AnimationStyleNormalizer) {\n this._transitionEngine = new TransitionAnimationEngine(bodyNode, _driver, _normalizer);\n this._timelineEngine = new TimelineAnimationEngine(bodyNode, _driver, _normalizer);\n\n this._transitionEngine.onRemovalComplete = (element: any, context: any) =>\n this.onRemovalComplete(element, context);\n }\n\n registerTrigger(\n componentId: string, namespaceId: string, hostElement: any, name: string,\n metadata: AnimationTriggerMetadata): void {\n const cacheKey = componentId + '-' + name;\n let trigger = this._triggerCache[cacheKey];\n if (!trigger) {\n const errors: Error[] = [];\n const warnings: string[] = [];\n const ast = buildAnimationAst(\n this._driver, metadata as AnimationMetadata, errors, warnings) as TriggerAst;\n if (errors.length) {\n throw triggerBuildFailed(name, errors);\n }\n if (warnings.length) {\n warnTriggerBuild(name, warnings);\n }\n trigger = buildTrigger(name, ast, this._normalizer);\n this._triggerCache[cacheKey] = trigger;\n }\n this._transitionEngine.registerTrigger(namespaceId, name, trigger);\n }\n\n register(namespaceId: string, hostElement: any) {\n this._transitionEngine.register(namespaceId, hostElement);\n }\n\n destroy(namespaceId: string, context: any) {\n this._transitionEngine.destroy(namespaceId, context);\n }\n\n onInsert(namespaceId: string, element: any, parent: any, insertBefore: boolean): void {\n this._transitionEngine.insertNode(namespaceId, element, parent, insertBefore);\n }\n\n onRemove(namespaceId: string, element: any, context: any): void {\n this._transitionEngine.removeNode(namespaceId, element, context);\n }\n\n disableAnimations(element: any, disable: boolean) {\n this._transitionEngine.markElementAsDisabled(element, disable);\n }\n\n process(namespaceId: string, element: any, property: string, value: any) {\n if (property.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(property);\n const args = value as any[];\n this._timelineEngine.command(id, element, action, args);\n } else {\n this._transitionEngine.trigger(namespaceId, element, property, value);\n }\n }\n\n listen(\n namespaceId: string, element: any, eventName: string, eventPhase: string,\n callback: (event: any) => any): () => any {\n // @@listen\n if (eventName.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(eventName);\n return this._timelineEngine.listen(id, element, action, callback);\n }\n return this._transitionEngine.listen(namespaceId, element, eventName, eventPhase, callback);\n }\n\n flush(microtaskId: number = -1): void {\n this._transitionEngine.flush(microtaskId);\n }\n\n get players(): AnimationPlayer[] {\n return [\n ...this._transitionEngine.players,\n ...this._timelineEngine.players,\n ];\n }\n\n whenRenderingDone(): Promise {\n return this._transitionEngine.whenRenderingDone();\n }\n\n afterFlushAnimationsDone(cb: VoidFunction): void {\n this._transitionEngine.afterFlushAnimationsDone(cb);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {ɵStyleDataMap} from '@angular/animations';\n\nimport {eraseStyles, setStyles} from '../util';\n\n/**\n * Returns an instance of `SpecialCasedStyles` if and when any special (non animateable) styles are\n * detected.\n *\n * In CSS there exist properties that cannot be animated within a keyframe animation\n * (whether it be via CSS keyframes or web-animations) and the animation implementation\n * will ignore them. This function is designed to detect those special cased styles and\n * return a container that will be executed at the start and end of the animation.\n *\n * @returns an instance of `SpecialCasedStyles` if any special styles are detected otherwise `null`\n */\nexport function packageNonAnimatableStyles(\n element: any, styles: ɵStyleDataMap|Array<ɵStyleDataMap>): SpecialCasedStyles|null {\n let startStyles: ɵStyleDataMap|null = null;\n let endStyles: ɵStyleDataMap|null = null;\n if (Array.isArray(styles) && styles.length) {\n startStyles = filterNonAnimatableStyles(styles[0]);\n if (styles.length > 1) {\n endStyles = filterNonAnimatableStyles(styles[styles.length - 1]);\n }\n } else if (styles instanceof Map) {\n startStyles = filterNonAnimatableStyles(styles);\n }\n\n return (startStyles || endStyles) ? new SpecialCasedStyles(element, startStyles, endStyles) :\n null;\n}\n\n/**\n * Designed to be executed during a keyframe-based animation to apply any special-cased styles.\n *\n * When started (when the `start()` method is run) then the provided `startStyles`\n * will be applied. When finished (when the `finish()` method is called) the\n * `endStyles` will be applied as well any any starting styles. Finally when\n * `destroy()` is called then all styles will be removed.\n */\nexport class SpecialCasedStyles {\n static initialStylesByElement = (/* @__PURE__ */ new WeakMap());\n\n private _state = SpecialCasedStylesState.Pending;\n private _initialStyles!: ɵStyleDataMap;\n\n constructor(\n private _element: any, private _startStyles: ɵStyleDataMap|null,\n private _endStyles: ɵStyleDataMap|null) {\n let initialStyles = SpecialCasedStyles.initialStylesByElement.get(_element);\n if (!initialStyles) {\n SpecialCasedStyles.initialStylesByElement.set(_element, initialStyles = new Map());\n }\n this._initialStyles = initialStyles;\n }\n\n start() {\n if (this._state < SpecialCasedStylesState.Started) {\n if (this._startStyles) {\n setStyles(this._element, this._startStyles, this._initialStyles);\n }\n this._state = SpecialCasedStylesState.Started;\n }\n }\n\n finish() {\n this.start();\n if (this._state < SpecialCasedStylesState.Finished) {\n setStyles(this._element, this._initialStyles);\n if (this._endStyles) {\n setStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n this._state = SpecialCasedStylesState.Started;\n }\n }\n\n destroy() {\n this.finish();\n if (this._state < SpecialCasedStylesState.Destroyed) {\n SpecialCasedStyles.initialStylesByElement.delete(this._element);\n if (this._startStyles) {\n eraseStyles(this._element, this._startStyles);\n this._endStyles = null;\n }\n if (this._endStyles) {\n eraseStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n setStyles(this._element, this._initialStyles);\n this._state = SpecialCasedStylesState.Destroyed;\n }\n }\n}\n\n/**\n * An enum of states reflective of what the status of `SpecialCasedStyles` is.\n *\n * Depending on how `SpecialCasedStyles` is interacted with, the start and end\n * styles may not be applied in the same way. This enum ensures that if and when\n * the ending styles are applied then the starting styles are applied. It is\n * also used to reflect what the current status of the special cased styles are\n * which helps prevent the starting/ending styles not be applied twice. It is\n * also used to cleanup the styles once `SpecialCasedStyles` is destroyed.\n */\nconst enum SpecialCasedStylesState {\n Pending = 0,\n Started = 1,\n Finished = 2,\n Destroyed = 3,\n}\n\nfunction filterNonAnimatableStyles(styles: ɵStyleDataMap): ɵStyleDataMap|null {\n let result: ɵStyleDataMap|null = null;\n styles.forEach((val, prop) => {\n if (isNonAnimatableStyle(prop)) {\n result = result || new Map();\n result.set(prop, val);\n }\n });\n return result;\n}\n\nfunction isNonAnimatableStyle(prop: string) {\n return prop === 'display' || prop === 'position';\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {AnimationPlayer, ɵStyleDataMap} from '@angular/animations';\n\nimport {computeStyle} from '../../util';\nimport {SpecialCasedStyles} from '../special_cased_styles';\n\nexport class WebAnimationsPlayer implements AnimationPlayer {\n private _onDoneFns: Function[] = [];\n private _onStartFns: Function[] = [];\n private _onDestroyFns: Function[] = [];\n private _duration: number;\n private _delay: number;\n private _initialized = false;\n private _finished = false;\n private _started = false;\n private _destroyed = false;\n private _finalKeyframe?: ɵStyleDataMap;\n\n // the following original fns are persistent copies of the _onStartFns and _onDoneFns\n // and are used to reset the fns to their original values upon reset()\n // (since the _onStartFns and _onDoneFns get deleted after they are called)\n private _originalOnDoneFns: Function[] = [];\n private _originalOnStartFns: Function[] = [];\n\n // using non-null assertion because it's re(set) by init();\n public readonly domPlayer!: Animation;\n public time = 0;\n\n public parentPlayer: AnimationPlayer|null = null;\n public currentSnapshot: ɵStyleDataMap = new Map();\n\n constructor(\n public element: any, public keyframes: Array<ɵStyleDataMap>,\n public options: {[key: string]: string|number},\n private _specialStyles?: SpecialCasedStyles|null) {\n this._duration = options['duration'];\n this._delay = options['delay'] || 0;\n this.time = this._duration + this._delay;\n }\n\n private _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n\n init(): void {\n this._buildPlayer();\n this._preparePlayerBeforeStart();\n }\n\n private _buildPlayer(): void {\n if (this._initialized) return;\n this._initialized = true;\n\n const keyframes = this.keyframes;\n // @ts-expect-error overwriting a readonly property\n this.domPlayer = this._triggerWebAnimation(this.element, keyframes, this.options);\n this._finalKeyframe = keyframes.length ? keyframes[keyframes.length - 1] : new Map();\n const onFinish = () => this._onFinish();\n this.domPlayer.addEventListener('finish', onFinish);\n this.onDestroy(() => {\n // We must remove the `finish` event listener once an animation has completed all its\n // iterations. This action is necessary to prevent a memory leak since the listener captures\n // `this`, creating a closure that prevents `this` from being garbage collected.\n this.domPlayer.removeEventListener('finish', onFinish);\n });\n }\n\n private _preparePlayerBeforeStart() {\n // this is required so that the player doesn't start to animate right away\n if (this._delay) {\n this._resetDomPlayerState();\n } else {\n this.domPlayer.pause();\n }\n }\n\n private _convertKeyframesToObject(keyframes: Array<ɵStyleDataMap>): any[] {\n const kfs: any[] = [];\n keyframes.forEach(frame => {\n kfs.push(Object.fromEntries(frame));\n });\n return kfs;\n }\n\n /** @internal */\n _triggerWebAnimation(element: HTMLElement, keyframes: Array<ɵStyleDataMap>, options: any):\n Animation {\n return element.animate(this._convertKeyframesToObject(keyframes), options);\n }\n\n onStart(fn: () => void): void {\n this._originalOnStartFns.push(fn);\n this._onStartFns.push(fn);\n }\n\n onDone(fn: () => void): void {\n this._originalOnDoneFns.push(fn);\n this._onDoneFns.push(fn);\n }\n\n onDestroy(fn: () => void): void {\n this._onDestroyFns.push(fn);\n }\n\n play(): void {\n this._buildPlayer();\n if (!this.hasStarted()) {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n this._started = true;\n if (this._specialStyles) {\n this._specialStyles.start();\n }\n }\n this.domPlayer.play();\n }\n\n pause(): void {\n this.init();\n this.domPlayer.pause();\n }\n\n finish(): void {\n this.init();\n if (this._specialStyles) {\n this._specialStyles.finish();\n }\n this._onFinish();\n this.domPlayer.finish();\n }\n\n reset(): void {\n this._resetDomPlayerState();\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n this._onStartFns = this._originalOnStartFns;\n this._onDoneFns = this._originalOnDoneFns;\n }\n\n private _resetDomPlayerState() {\n if (this.domPlayer) {\n this.domPlayer.cancel();\n }\n }\n\n restart(): void {\n this.reset();\n this.play();\n }\n\n hasStarted(): boolean {\n return this._started;\n }\n\n destroy(): void {\n if (!this._destroyed) {\n this._destroyed = true;\n this._resetDomPlayerState();\n this._onFinish();\n if (this._specialStyles) {\n this._specialStyles.destroy();\n }\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n\n setPosition(p: number): void {\n if (this.domPlayer === undefined) {\n this.init();\n }\n this.domPlayer.currentTime = p * this.time;\n }\n\n getPosition(): number {\n // tsc is complaining with TS2362 without the conversion to number\n return +(this.domPlayer.currentTime ?? 0) / this.time;\n }\n\n get totalTime(): number {\n return this._delay + this._duration;\n }\n\n beforeDestroy() {\n const styles: ɵStyleDataMap = new Map();\n if (this.hasStarted()) {\n // note: this code is invoked only when the `play` function was called prior to this\n // (thus `hasStarted` returns true), this implies that the code that initializes\n // `_finalKeyframe` has also been executed and the non-null assertion can be safely used here\n const finalKeyframe = this._finalKeyframe!;\n finalKeyframe.forEach((val, prop) => {\n if (prop !== 'offset') {\n styles.set(prop, this._finished ? val : computeStyle(this.element, prop));\n }\n });\n }\n\n this.currentSnapshot = styles;\n }\n\n /** @internal */\n triggerCallback(phaseName: string): void {\n const methods = phaseName === 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {AnimationPlayer, ɵStyleDataMap} from '@angular/animations';\n\nimport {allowPreviousPlayerStylesMerge, balancePreviousStylesIntoKeyframes, camelCaseToDashCase, copyStyles, normalizeKeyframes} from '../../util';\nimport {AnimationDriver} from '../animation_driver';\nimport {containsElement, getParentElement, invokeQuery, validateStyleProperty, validateWebAnimatableStyleProperty} from '../shared';\nimport {packageNonAnimatableStyles} from '../special_cased_styles';\n\nimport {WebAnimationsPlayer} from './web_animations_player';\n\nexport class WebAnimationsDriver implements AnimationDriver {\n validateStyleProperty(prop: string): boolean {\n // Perform actual validation in dev mode only, in prod mode this check is a noop.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n return validateStyleProperty(prop);\n }\n return true;\n }\n\n validateAnimatableStyleProperty(prop: string): boolean {\n // Perform actual validation in dev mode only, in prod mode this check is a noop.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const cssProp = camelCaseToDashCase(prop);\n return validateWebAnimatableStyleProperty(cssProp);\n }\n return true;\n }\n\n matchesElement(_element: any, _selector: string): boolean {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n\n containsElement(elm1: any, elm2: any): boolean {\n return containsElement(elm1, elm2);\n }\n\n getParentElement(element: unknown): unknown {\n return getParentElement(element);\n }\n\n query(element: any, selector: string, multi: boolean): any[] {\n return invokeQuery(element, selector, multi);\n }\n\n computeStyle(element: any, prop: string, defaultValue?: string): string {\n return (window.getComputedStyle(element) as any)[prop] as string;\n }\n\n animate(\n element: any, keyframes: Array>, duration: number, delay: number,\n easing: string, previousPlayers: AnimationPlayer[] = []): AnimationPlayer {\n const fill = delay == 0 ? 'both' : 'forwards';\n const playerOptions: {[key: string]: string|number} = {duration, delay, fill};\n // we check for this to avoid having a null|undefined value be present\n // for the easing (which results in an error for certain browsers #9752)\n if (easing) {\n playerOptions['easing'] = easing;\n }\n\n const previousStyles: ɵStyleDataMap = new Map();\n const previousWebAnimationPlayers = previousPlayers.filter(\n player => player instanceof WebAnimationsPlayer);\n if (allowPreviousPlayerStylesMerge(duration, delay)) {\n previousWebAnimationPlayers.forEach(player => {\n player.currentSnapshot.forEach((val, prop) => previousStyles.set(prop, val));\n });\n }\n\n let _keyframes = normalizeKeyframes(keyframes).map(styles => copyStyles(styles));\n _keyframes = balancePreviousStylesIntoKeyframes(element, _keyframes, previousStyles);\n const specialStyles = packageNonAnimatableStyles(element, _keyframes);\n return new WebAnimationsPlayer(element, _keyframes, playerOptions, specialStyles);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {AnimationBuilder, AnimationFactory, AnimationMetadata, AnimationOptions, AnimationPlayer, sequence} from '@angular/animations';\nimport {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable, RendererFactory2, RendererType2, ViewEncapsulation} from '@angular/core';\n\nimport {AnimationRenderer} from './animation_renderer';\n\n@Injectable()\nexport class BrowserAnimationBuilder extends AnimationBuilder {\n private _nextAnimationId = 0;\n private _renderer: AnimationRenderer;\n\n constructor(rootRenderer: RendererFactory2, @Inject(DOCUMENT) doc: any) {\n super();\n const typeData =\n {id: '0', encapsulation: ViewEncapsulation.None, styles: [], data: {animation: []}} as\n RendererType2;\n this._renderer = rootRenderer.createRenderer(doc.body, typeData) as AnimationRenderer;\n }\n\n override build(animation: AnimationMetadata|AnimationMetadata[]): AnimationFactory {\n const id = this._nextAnimationId.toString();\n this._nextAnimationId++;\n const entry = Array.isArray(animation) ? sequence(animation) : animation;\n issueAnimationCommand(this._renderer, null, id, 'register', [entry]);\n return new BrowserAnimationFactory(id, this._renderer);\n }\n}\n\nexport class BrowserAnimationFactory extends AnimationFactory {\n constructor(private _id: string, private _renderer: AnimationRenderer) {\n super();\n }\n\n override create(element: any, options?: AnimationOptions): AnimationPlayer {\n return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);\n }\n}\n\nexport class RendererAnimationPlayer implements AnimationPlayer {\n public parentPlayer: AnimationPlayer|null = null;\n private _started = false;\n\n constructor(\n public id: string, public element: any, options: AnimationOptions,\n private _renderer: AnimationRenderer) {\n this._command('create', options);\n }\n\n private _listen(eventName: string, callback: (event: any) => any): () => void {\n return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);\n }\n\n private _command(command: string, ...args: any[]) {\n return issueAnimationCommand(this._renderer, this.element, this.id, command, args);\n }\n\n onDone(fn: () => void): void {\n this._listen('done', fn);\n }\n\n onStart(fn: () => void): void {\n this._listen('start', fn);\n }\n\n onDestroy(fn: () => void): void {\n this._listen('destroy', fn);\n }\n\n init(): void {\n this._command('init');\n }\n\n hasStarted(): boolean {\n return this._started;\n }\n\n play(): void {\n this._command('play');\n this._started = true;\n }\n\n pause(): void {\n this._command('pause');\n }\n\n restart(): void {\n this._command('restart');\n }\n\n finish(): void {\n this._command('finish');\n }\n\n destroy(): void {\n this._command('destroy');\n }\n\n reset(): void {\n this._command('reset');\n this._started = false;\n }\n\n setPosition(p: number): void {\n this._command('setPosition', p);\n }\n\n getPosition(): number {\n return this._renderer.engine.players[+this.id]?.getPosition() ?? 0;\n }\n\n public totalTime = 0;\n}\n\nfunction issueAnimationCommand(\n renderer: AnimationRenderer, element: any, id: string, command: string, args: any[]): any {\n return renderer.setProperty(element, `@@${id}:${command}`, args);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {AnimationTriggerMetadata} from '@angular/animations';\nimport {ɵAnimationEngine as AnimationEngine} from '@angular/animations/browser';\nimport {Injectable, NgZone, Renderer2, RendererFactory2, RendererStyleFlags2, RendererType2} from '@angular/core';\n\nconst ANIMATION_PREFIX = '@';\nconst DISABLE_ANIMATIONS_FLAG = '@.disabled';\n\n// Define a recursive type to allow for nested arrays of `AnimationTriggerMetadata`. Note that an\n// interface declaration is used as TypeScript prior to 3.7 does not support recursive type\n// references, see https://github.com/microsoft/TypeScript/pull/33050 for details.\ntype NestedAnimationTriggerMetadata = AnimationTriggerMetadata|RecursiveAnimationTriggerMetadata;\ninterface RecursiveAnimationTriggerMetadata extends Array {}\n\n@Injectable()\nexport class AnimationRendererFactory implements RendererFactory2 {\n private _currentId: number = 0;\n private _microtaskId: number = 1;\n private _animationCallbacksBuffer: [(e: any) => any, any][] = [];\n private _rendererCache = new Map();\n private _cdRecurDepth = 0;\n\n constructor(\n private delegate: RendererFactory2, private engine: AnimationEngine, private _zone: NgZone) {\n engine.onRemovalComplete = (element: any, delegate: Renderer2) => {\n // Note: if a component element has a leave animation, and a host leave animation,\n // the view engine will call `removeChild` for the parent\n // component renderer as well as for the child component renderer.\n // Therefore, we need to check if we already removed the element.\n const parentNode = delegate?.parentNode(element);\n if (parentNode) {\n delegate.removeChild(parentNode, element);\n }\n };\n }\n\n createRenderer(hostElement: any, type: RendererType2): Renderer2 {\n const EMPTY_NAMESPACE_ID = '';\n\n // cache the delegates to find out which cached delegate can\n // be used by which cached renderer\n const delegate = this.delegate.createRenderer(hostElement, type);\n if (!hostElement || !type || !type.data || !type.data['animation']) {\n let renderer: BaseAnimationRenderer|undefined = this._rendererCache.get(delegate);\n if (!renderer) {\n // Ensure that the renderer is removed from the cache on destroy\n // since it may contain references to detached DOM nodes.\n const onRendererDestroy = () => this._rendererCache.delete(delegate);\n renderer =\n new BaseAnimationRenderer(EMPTY_NAMESPACE_ID, delegate, this.engine, onRendererDestroy);\n // only cache this result when the base renderer is used\n this._rendererCache.set(delegate, renderer);\n }\n return renderer;\n }\n\n const componentId = type.id;\n const namespaceId = type.id + '-' + this._currentId;\n this._currentId++;\n\n this.engine.register(namespaceId, hostElement);\n\n const registerTrigger = (trigger: NestedAnimationTriggerMetadata) => {\n if (Array.isArray(trigger)) {\n trigger.forEach(registerTrigger);\n } else {\n this.engine.registerTrigger(componentId, namespaceId, hostElement, trigger.name, trigger);\n }\n };\n const animationTriggers = type.data['animation'] as NestedAnimationTriggerMetadata[];\n animationTriggers.forEach(registerTrigger);\n\n return new AnimationRenderer(this, namespaceId, delegate, this.engine);\n }\n\n begin() {\n this._cdRecurDepth++;\n if (this.delegate.begin) {\n this.delegate.begin();\n }\n }\n\n private _scheduleCountTask() {\n queueMicrotask(() => {\n this._microtaskId++;\n });\n }\n\n /** @internal */\n scheduleListenerCallback(count: number, fn: (e: any) => any, data: any) {\n if (count >= 0 && count < this._microtaskId) {\n this._zone.run(() => fn(data));\n return;\n }\n\n if (this._animationCallbacksBuffer.length == 0) {\n queueMicrotask(() => {\n this._zone.run(() => {\n this._animationCallbacksBuffer.forEach(tuple => {\n const [fn, data] = tuple;\n fn(data);\n });\n this._animationCallbacksBuffer = [];\n });\n });\n }\n\n this._animationCallbacksBuffer.push([fn, data]);\n }\n\n end() {\n this._cdRecurDepth--;\n\n // this is to prevent animations from running twice when an inner\n // component does CD when a parent component instead has inserted it\n if (this._cdRecurDepth == 0) {\n this._zone.runOutsideAngular(() => {\n this._scheduleCountTask();\n this.engine.flush(this._microtaskId);\n });\n }\n if (this.delegate.end) {\n this.delegate.end();\n }\n }\n\n whenRenderingDone(): Promise {\n return this.engine.whenRenderingDone();\n }\n}\n\nexport class BaseAnimationRenderer implements Renderer2 {\n constructor(\n protected namespaceId: string, public delegate: Renderer2, public engine: AnimationEngine,\n private _onDestroy?: () => void) {}\n\n get data() {\n return this.delegate.data;\n }\n\n destroyNode(node: any): void {\n this.delegate.destroyNode?.(node);\n }\n\n destroy(): void {\n this.engine.destroy(this.namespaceId, this.delegate);\n this.engine.afterFlushAnimationsDone(() => {\n // Call the renderer destroy method after the animations has finished as otherwise\n // styles will be removed too early which will cause an unstyled animation.\n queueMicrotask(() => {\n this.delegate.destroy();\n });\n });\n\n this._onDestroy?.();\n }\n\n createElement(name: string, namespace?: string|null|undefined) {\n return this.delegate.createElement(name, namespace);\n }\n\n createComment(value: string) {\n return this.delegate.createComment(value);\n }\n\n createText(value: string) {\n return this.delegate.createText(value);\n }\n\n appendChild(parent: any, newChild: any): void {\n this.delegate.appendChild(parent, newChild);\n this.engine.onInsert(this.namespaceId, newChild, parent, false);\n }\n\n insertBefore(parent: any, newChild: any, refChild: any, isMove: boolean = true): void {\n this.delegate.insertBefore(parent, newChild, refChild);\n // If `isMove` true than we should animate this insert.\n this.engine.onInsert(this.namespaceId, newChild, parent, isMove);\n }\n\n removeChild(parent: any, oldChild: any, isHostElement: boolean): void {\n this.engine.onRemove(this.namespaceId, oldChild, this.delegate);\n }\n\n selectRootElement(selectorOrNode: any, preserveContent?: boolean) {\n return this.delegate.selectRootElement(selectorOrNode, preserveContent);\n }\n\n parentNode(node: any) {\n return this.delegate.parentNode(node);\n }\n\n nextSibling(node: any) {\n return this.delegate.nextSibling(node);\n }\n\n setAttribute(el: any, name: string, value: string, namespace?: string|null|undefined): void {\n this.delegate.setAttribute(el, name, value, namespace);\n }\n\n removeAttribute(el: any, name: string, namespace?: string|null|undefined): void {\n this.delegate.removeAttribute(el, name, namespace);\n }\n\n addClass(el: any, name: string): void {\n this.delegate.addClass(el, name);\n }\n\n removeClass(el: any, name: string): void {\n this.delegate.removeClass(el, name);\n }\n\n setStyle(el: any, style: string, value: any, flags?: RendererStyleFlags2|undefined): void {\n this.delegate.setStyle(el, style, value, flags);\n }\n\n removeStyle(el: any, style: string, flags?: RendererStyleFlags2|undefined): void {\n this.delegate.removeStyle(el, style, flags);\n }\n\n setProperty(el: any, name: string, value: any): void {\n if (name.charAt(0) == ANIMATION_PREFIX && name == DISABLE_ANIMATIONS_FLAG) {\n this.disableAnimations(el, !!value);\n } else {\n this.delegate.setProperty(el, name, value);\n }\n }\n\n setValue(node: any, value: string): void {\n this.delegate.setValue(node, value);\n }\n\n listen(target: any, eventName: string, callback: (event: any) => boolean | void): () => void {\n return this.delegate.listen(target, eventName, callback);\n }\n\n protected disableAnimations(element: any, value: boolean) {\n this.engine.disableAnimations(element, value);\n }\n}\n\nexport class AnimationRenderer extends BaseAnimationRenderer implements Renderer2 {\n constructor(\n public factory: AnimationRendererFactory, namespaceId: string, delegate: Renderer2,\n engine: AnimationEngine, onDestroy?: () => void) {\n super(namespaceId, delegate, engine, onDestroy);\n this.namespaceId = namespaceId;\n }\n\n override setProperty(el: any, name: string, value: any): void {\n if (name.charAt(0) == ANIMATION_PREFIX) {\n if (name.charAt(1) == '.' && name == DISABLE_ANIMATIONS_FLAG) {\n value = value === undefined ? true : !!value;\n this.disableAnimations(el, value as boolean);\n } else {\n this.engine.process(this.namespaceId, el, name.slice(1), value);\n }\n } else {\n this.delegate.setProperty(el, name, value);\n }\n }\n\n override listen(\n target: 'window'|'document'|'body'|any, eventName: string,\n callback: (event: any) => any): () => void {\n if (eventName.charAt(0) == ANIMATION_PREFIX) {\n const element = resolveElementFromTarget(target);\n let name = eventName.slice(1);\n let phase = '';\n // @listener.phase is for trigger animation callbacks\n // @@listener is for animation builder callbacks\n if (name.charAt(0) != ANIMATION_PREFIX) {\n [name, phase] = parseTriggerCallbackName(name);\n }\n return this.engine.listen(this.namespaceId, element, name, phase, event => {\n const countId = (event as any)['_data'] || -1;\n this.factory.scheduleListenerCallback(countId, callback, event);\n });\n }\n return this.delegate.listen(target, eventName, callback);\n }\n}\n\nfunction resolveElementFromTarget(target: 'window'|'document'|'body'|any): any {\n switch (target) {\n case 'body':\n return document.body;\n case 'document':\n return document;\n case 'window':\n return window;\n default:\n return target;\n }\n}\n\nfunction parseTriggerCallbackName(triggerName: string) {\n const dotIndex = triggerName.indexOf('.');\n const trigger = triggerName.substring(0, dotIndex);\n const phase = triggerName.slice(dotIndex + 1);\n return [trigger, phase];\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AnimationBuilder} from '@angular/animations';\nimport {AnimationDriver, ɵAnimationEngine as AnimationEngine, ɵAnimationStyleNormalizer as AnimationStyleNormalizer, ɵNoopAnimationDriver as NoopAnimationDriver, ɵWebAnimationsDriver as WebAnimationsDriver, ɵWebAnimationsStyleNormalizer as WebAnimationsStyleNormalizer} from '@angular/animations/browser';\nimport {DOCUMENT} from '@angular/common';\nimport {ANIMATION_MODULE_TYPE, ApplicationRef, Inject, Injectable, NgZone, OnDestroy, Provider, RendererFactory2} from '@angular/core';\nimport {ɵDomRendererFactory2 as DomRendererFactory2} from '@angular/platform-browser';\n\nimport {BrowserAnimationBuilder} from './animation_builder';\nimport {AnimationRendererFactory} from './animation_renderer';\n\n@Injectable()\nexport class InjectableAnimationEngine extends AnimationEngine implements OnDestroy {\n // The `ApplicationRef` is injected here explicitly to force the dependency ordering.\n // Since the `ApplicationRef` should be created earlier before the `AnimationEngine`, they\n // both have `ngOnDestroy` hooks and `flush()` must be called after all views are destroyed.\n constructor(\n @Inject(DOCUMENT) doc: any, driver: AnimationDriver, normalizer: AnimationStyleNormalizer,\n appRef: ApplicationRef) {\n super(doc.body, driver, normalizer);\n }\n\n ngOnDestroy(): void {\n this.flush();\n }\n}\n\nexport function instantiateDefaultStyleNormalizer() {\n return new WebAnimationsStyleNormalizer();\n}\n\nexport function instantiateRendererFactory(\n renderer: DomRendererFactory2, engine: AnimationEngine, zone: NgZone) {\n return new AnimationRendererFactory(renderer, engine, zone);\n}\n\nconst SHARED_ANIMATION_PROVIDERS: Provider[] = [\n {provide: AnimationBuilder, useClass: BrowserAnimationBuilder},\n {provide: AnimationStyleNormalizer, useFactory: instantiateDefaultStyleNormalizer},\n {provide: AnimationEngine, useClass: InjectableAnimationEngine}, {\n provide: RendererFactory2,\n useFactory: instantiateRendererFactory,\n deps: [DomRendererFactory2, AnimationEngine, NgZone]\n }\n];\n\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserModule.\n */\nexport const BROWSER_ANIMATIONS_PROVIDERS: Provider[] = [\n {provide: AnimationDriver, useFactory: () => new WebAnimationsDriver()},\n {provide: ANIMATION_MODULE_TYPE, useValue: 'BrowserAnimations'}, ...SHARED_ANIMATION_PROVIDERS\n];\n\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserTestingModule.\n */\nexport const BROWSER_NOOP_ANIMATIONS_PROVIDERS: Provider[] = [\n {provide: AnimationDriver, useClass: NoopAnimationDriver},\n {provide: ANIMATION_MODULE_TYPE, useValue: 'NoopAnimations'}, ...SHARED_ANIMATION_PROVIDERS\n];\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {ModuleWithProviders, NgModule, Provider} from '@angular/core';\nimport {BrowserModule} from '@angular/platform-browser';\n\nimport {BROWSER_ANIMATIONS_PROVIDERS, BROWSER_NOOP_ANIMATIONS_PROVIDERS} from './providers';\n\n/**\n * Object used to configure the behavior of {@link BrowserAnimationsModule}\n * @publicApi\n */\nexport interface BrowserAnimationsModuleConfig {\n /**\n * Whether animations should be disabled. Passing this is identical to providing the\n * `NoopAnimationsModule`, but it can be controlled based on a runtime value.\n */\n disableAnimations?: boolean;\n}\n\n/**\n * Exports `BrowserModule` with additional [dependency-injection providers](guide/glossary#provider)\n * for use with animations. See [Animations](guide/animations).\n * @publicApi\n */\n@NgModule({\n exports: [BrowserModule],\n providers: BROWSER_ANIMATIONS_PROVIDERS,\n})\nexport class BrowserAnimationsModule {\n /**\n * Configures the module based on the specified object.\n *\n * @param config Object used to configure the behavior of the `BrowserAnimationsModule`.\n * @see {@link BrowserAnimationsModuleConfig}\n *\n * @usageNotes\n * When registering the `BrowserAnimationsModule`, you can use the `withConfig`\n * function as follows:\n * ```\n * @NgModule({\n * imports: [BrowserAnimationsModule.withConfig(config)]\n * })\n * class MyNgModule {}\n * ```\n */\n static withConfig(config: BrowserAnimationsModuleConfig):\n ModuleWithProviders {\n return {\n ngModule: BrowserAnimationsModule,\n providers: config.disableAnimations ? BROWSER_NOOP_ANIMATIONS_PROVIDERS :\n BROWSER_ANIMATIONS_PROVIDERS\n };\n }\n}\n\n/**\n * Returns the set of [dependency-injection providers](guide/glossary#provider)\n * to enable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * @usageNotes\n *\n * The function is useful when you want to enable animations in an application\n * bootstrapped using the `bootstrapApplication` function. In this scenario there\n * is no need to import the `BrowserAnimationsModule` NgModule at all, just add\n * providers returned by this function to the `providers` list as show below.\n *\n * ```typescript\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideAnimations()\n * ]\n * });\n * ```\n *\n * @publicApi\n */\nexport function provideAnimations(): Provider[] {\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideAnimations` call results in app code.\n return [...BROWSER_ANIMATIONS_PROVIDERS];\n}\n\n/**\n * A null player that must be imported to allow disabling of animations.\n * @publicApi\n */\n@NgModule({\n exports: [BrowserModule],\n providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS,\n})\nexport class NoopAnimationsModule {\n}\n\n/**\n * Returns the set of [dependency-injection providers](guide/glossary#provider)\n * to disable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * @usageNotes\n *\n * The function is useful when you want to bootstrap an application using\n * the `bootstrapApplication` function, but you need to disable animations\n * (for example, when running tests).\n *\n * ```typescript\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideNoopAnimations()\n * ]\n * });\n * ```\n *\n * @publicApi\n */\nexport function provideNoopAnimations(): Provider[] {\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideNoopAnimations` call results in app code.\n return [...BROWSER_NOOP_ANIMATIONS_PROVIDERS];\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { WebRegService } from \"@app/core/services/api-request.service\";\nimport { ITermAddVM, ITermVM, TermAddVM, TermVM } from \"@app/core/services/WebRegApiClient\";\nimport { map, Observable } from \"rxjs\";\n\n\n@Injectable()\nexport class TermsService {\n\n constructor(private apiService: WebRegService, private http: HttpClient) {\n }\n\n getActive(): Observable {\n return this.apiService.apiTermsActive()\n .pipe(map(resp => {\n console.log('terms: ', resp);\n return resp.map(r => r.toJSON() as ITermVM)\n }));\n }\n\n getAll(): Observable {\n // let a = this.http\n // .get(\"/Terms/All\")\n // .pipe(map(data => console.log(data)));\n\n // return this.http\n // .get(\"/Terms/All\");\n\n return this.apiService.apiTermsAll()\n .pipe(map(resp => resp.map(r => r.toJSON() as ITermVM)));\n }\n\n loadSelectedTerm(termCode: number | null): Observable {\n return this.apiService.apiTermsTermCode(termCode || 0)\n .pipe(map((r => r.toJSON() as ITermVM)));\n }\n\n getByTermCode(termCode: number | null): Observable {\n return this.apiService.apiTermsTermCode(termCode || 0)\n .pipe(map((r => r.toJSON() as ITermVM)));\n }\n\n add(term: ITermAddVM): Observable {\n let termToCreate = new TermAddVM();\n termToCreate.season = term.season;\n termToCreate.year = term.year;\n termToCreate.copiedFromTermCode = term.copiedFromTermCode;\n termToCreate.dateActive = term.dateActive;\n termToCreate.dateArchived = term.dateArchived;\n\n return this.apiService.apiTermsNew(termToCreate)\n .pipe(map(r => r as ITermVM));\n }\n\n delete(termCode: number): Observable {\n return this.apiService.apiTermsDelete(termCode)\n .pipe(map(resp => resp as string));\n }\n\n update(term: ITermVM): Observable {\n let termToUpdate = new TermVM();\n termToUpdate.termCode = term.termCode;\n termToUpdate.dateActive = term.dateActive;\n termToUpdate.season = term.season;\n termToUpdate.year = term.year;\n\n return this.apiService.apiTermsEdit(termToUpdate);\n }\n}\n","import {\n NavigationCancel,\n NavigationEnd,\n NavigationError,\n NavigationStart,\n RoutesRecognized,\n} from '@angular/router';\n\nimport { BaseRouterStoreState } from './serializers/base';\nimport { SerializedRouterStateSnapshot } from './serializers/full_serializer';\nimport { createAction, props } from '@ngrx/store';\n\n/**\n * An action dispatched when a router navigation request is fired.\n */\nexport const ROUTER_REQUEST = '@ngrx/router-store/request';\n\n/**\n * Payload of ROUTER_REQUEST\n */\nexport type RouterRequestPayload<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n routerState: T;\n event: NavigationStart;\n};\n\n/**\n * An action dispatched when a router navigation request is fired.\n */\nexport type RouterRequestAction<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n type: typeof ROUTER_REQUEST;\n payload: RouterRequestPayload;\n};\n\nexport const routerRequestAction = createAction(\n ROUTER_REQUEST,\n props<{ payload: RouterRequestPayload }>()\n);\n/**\n * An action dispatched when the router navigates.\n */\nexport const ROUTER_NAVIGATION = '@ngrx/router-store/navigation';\n\n/**\n * Payload of ROUTER_NAVIGATION.\n */\nexport type RouterNavigationPayload<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n routerState: T;\n event: RoutesRecognized;\n};\n\n/**\n * An action dispatched when the router navigates.\n */\nexport type RouterNavigationAction<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n type: typeof ROUTER_NAVIGATION;\n payload: RouterNavigationPayload;\n};\n\nexport const routerNavigationAction = createAction(\n ROUTER_NAVIGATION,\n props<{ payload: RouterNavigationPayload }>()\n);\n\n/**\n * An action dispatched when the router cancels navigation.\n */\nexport const ROUTER_CANCEL = '@ngrx/router-store/cancel';\n\n/**\n * Payload of ROUTER_CANCEL.\n */\nexport type RouterCancelPayload<\n T,\n V extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n routerState: V;\n storeState: T;\n event: NavigationCancel;\n};\n\n/**\n * An action dispatched when the router cancels navigation.\n */\nexport type RouterCancelAction<\n T,\n V extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n type: typeof ROUTER_CANCEL;\n payload: RouterCancelPayload;\n};\n\nexport const routerCancelAction = createAction(\n ROUTER_CANCEL,\n props<{ payload: RouterCancelPayload }>()\n);\n\n/**\n * An action dispatched when the router errors.\n */\nexport const ROUTER_ERROR = '@ngrx/router-store/error';\n\n/**\n * Payload of ROUTER_ERROR.\n */\nexport type RouterErrorPayload<\n T,\n V extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n routerState: V;\n storeState: T;\n event: NavigationError;\n};\n\n/**\n * An action dispatched when the router errors.\n */\nexport type RouterErrorAction<\n T,\n V extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n type: typeof ROUTER_ERROR;\n payload: RouterErrorPayload;\n};\n\nexport const routerErrorAction = createAction(\n ROUTER_ERROR,\n props<{ payload: RouterErrorPayload }>()\n);\n\n/**\n * An action dispatched after navigation has ended and new route is active.\n */\nexport const ROUTER_NAVIGATED = '@ngrx/router-store/navigated';\n\n/**\n * Payload of ROUTER_NAVIGATED.\n */\nexport type RouterNavigatedPayload<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n routerState: T;\n event: NavigationEnd;\n};\n\n/**\n * An action dispatched after navigation has ended and new route is active.\n */\nexport type RouterNavigatedAction<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n type: typeof ROUTER_NAVIGATED;\n payload: RouterNavigatedPayload;\n};\n\nexport const routerNavigatedAction = createAction(\n ROUTER_NAVIGATED,\n props<{ payload: RouterNavigatedPayload }>()\n);\n\n/**\n * A union type of router actions.\n */\nexport type RouterAction<\n T,\n V extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> =\n | RouterRequestAction\n | RouterNavigationAction\n | RouterCancelAction\n | RouterErrorAction\n | RouterNavigatedAction;\n","import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { BaseRouterStoreState, RouterStateSerializer } from './base';\n\nexport interface MinimalActivatedRouteSnapshot {\n routeConfig: ActivatedRouteSnapshot['routeConfig'];\n url: ActivatedRouteSnapshot['url'];\n params: ActivatedRouteSnapshot['params'];\n queryParams: ActivatedRouteSnapshot['queryParams'];\n fragment: ActivatedRouteSnapshot['fragment'];\n data: ActivatedRouteSnapshot['data'];\n outlet: ActivatedRouteSnapshot['outlet'];\n title: ActivatedRouteSnapshot['title'];\n firstChild?: MinimalActivatedRouteSnapshot;\n children: MinimalActivatedRouteSnapshot[];\n}\n\nexport interface MinimalRouterStateSnapshot extends BaseRouterStoreState {\n root: MinimalActivatedRouteSnapshot;\n url: string;\n}\n\nexport class MinimalRouterStateSerializer\n implements RouterStateSerializer\n{\n serialize(routerState: RouterStateSnapshot): MinimalRouterStateSnapshot {\n return {\n root: this.serializeRoute(routerState.root),\n url: routerState.url,\n };\n }\n\n private serializeRoute(\n route: ActivatedRouteSnapshot\n ): MinimalActivatedRouteSnapshot {\n const children = route.children.map((c) => this.serializeRoute(c));\n return {\n params: route.params,\n data: route.data,\n url: route.url,\n outlet: route.outlet,\n title: route.title,\n routeConfig: route.routeConfig\n ? {\n path: route.routeConfig.path,\n pathMatch: route.routeConfig.pathMatch,\n redirectTo: route.routeConfig.redirectTo,\n outlet: route.routeConfig.outlet,\n title:\n typeof route.routeConfig.title === 'string'\n ? route.routeConfig.title\n : undefined,\n }\n : null,\n queryParams: route.queryParams,\n fragment: route.fragment,\n firstChild: children[0],\n children,\n };\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Selector } from '@ngrx/store';\nimport { RouterReducerState } from './reducer';\nimport {\n BaseRouterStoreState,\n RouterStateSerializer,\n} from './serializers/base';\nimport { SerializedRouterStateSnapshot } from './serializers/full_serializer';\nimport { MinimalRouterStateSerializer } from './serializers/minimal_serializer';\n\nexport type StateKeyOrSelector<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = string | Selector>;\n\nexport enum NavigationActionTiming {\n PreActivation = 1,\n PostActivation = 2,\n}\nexport const DEFAULT_ROUTER_FEATURENAME = 'router';\n\nexport const _ROUTER_CONFIG = new InjectionToken(\n '@ngrx/router-store Internal Configuration'\n);\nexport const ROUTER_CONFIG = new InjectionToken(\n '@ngrx/router-store Configuration'\n);\n\n/**\n * Minimal = Serializes the router event with MinimalRouterStateSerializer\n * Full = Serializes the router event with FullRouterStateSerializer\n */\nexport const enum RouterState {\n Full,\n Minimal,\n}\n\nexport function _createRouterConfig(\n config: StoreRouterConfig\n): StoreRouterConfig {\n return {\n stateKey: DEFAULT_ROUTER_FEATURENAME,\n serializer: MinimalRouterStateSerializer,\n navigationActionTiming: NavigationActionTiming.PreActivation,\n ...config,\n };\n}\n\nexport interface StoreRouterConfig<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> {\n stateKey?: StateKeyOrSelector;\n serializer?: new (...args: any[]) => RouterStateSerializer;\n /**\n * By default, ROUTER_NAVIGATION is dispatched before guards and resolvers run.\n * Therefore, the action could run too soon, for example\n * there may be a navigation cancel due to a guard saying the navigation is not allowed.\n * To run ROUTER_NAVIGATION after guards and resolvers,\n * set this property to NavigationActionTiming.PostActivation.\n */\n navigationActionTiming?: NavigationActionTiming;\n /**\n * Decides which router serializer should be used, if there is none provided, and the metadata on the dispatched @ngrx/router-store action payload.\n * Set to `Minimal` to use the `MinimalRouterStateSerializer` and to set a minimal router event with the navigation id and url as payload.\n * Set to `Full` to use the `FullRouterStateSerializer` and to set the angular router events as payload.\n */\n routerState?: RouterState;\n}\n","import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { BaseRouterStoreState, RouterStateSerializer } from './base';\n\nexport interface SerializedRouterStateSnapshot extends BaseRouterStoreState {\n root: ActivatedRouteSnapshot;\n url: string;\n}\n\nexport class FullRouterStateSerializer\n implements RouterStateSerializer\n{\n serialize(routerState: RouterStateSnapshot): SerializedRouterStateSnapshot {\n return {\n root: this.serializeRoute(routerState.root),\n url: routerState.url,\n };\n }\n\n private serializeRoute(\n route: ActivatedRouteSnapshot\n ): ActivatedRouteSnapshot {\n const children = route.children.map((c) => this.serializeRoute(c));\n return {\n params: route.params,\n paramMap: route.paramMap,\n data: route.data,\n url: route.url,\n outlet: route.outlet,\n title: route.title,\n routeConfig: route.routeConfig\n ? {\n component: route.routeConfig.component,\n path: route.routeConfig.path,\n pathMatch: route.routeConfig.pathMatch,\n redirectTo: route.routeConfig.redirectTo,\n outlet: route.routeConfig.outlet,\n title: route.routeConfig.title,\n }\n : null,\n queryParams: route.queryParams,\n queryParamMap: route.queryParamMap,\n fragment: route.fragment,\n component: (route.routeConfig\n ? route.routeConfig.component\n : undefined) as any,\n root: undefined as any,\n parent: undefined as any,\n firstChild: children[0],\n pathFromRoot: undefined as any,\n children,\n };\n }\n}\n","import { RouterStateSnapshot } from '@angular/router';\n\n/**\n * Simple router state.\n * All custom router states / state serializers should have at least\n * the properties of this interface.\n */\nexport interface BaseRouterStoreState {\n url: string;\n}\n\nexport abstract class RouterStateSerializer<\n T extends BaseRouterStoreState = BaseRouterStoreState\n> {\n abstract serialize(routerState: RouterStateSnapshot): T;\n}\n","import { ErrorHandler, Inject, Injectable, isDevMode } from '@angular/core';\nimport {\n Event,\n NavigationCancel,\n NavigationEnd,\n NavigationError,\n NavigationStart,\n Router,\n RouterEvent,\n RoutesRecognized,\n} from '@angular/router';\nimport {\n ACTIVE_RUNTIME_CHECKS,\n isNgrxMockEnvironment,\n RuntimeChecks,\n select,\n Store,\n} from '@ngrx/store';\nimport { withLatestFrom } from 'rxjs/operators';\nimport {\n ROUTER_CANCEL,\n ROUTER_ERROR,\n ROUTER_NAVIGATED,\n ROUTER_NAVIGATION,\n ROUTER_REQUEST,\n} from './actions';\nimport {\n NavigationActionTiming,\n ROUTER_CONFIG,\n RouterState,\n StateKeyOrSelector,\n StoreRouterConfig,\n} from './router_store_config';\nimport {\n FullRouterStateSerializer,\n SerializedRouterStateSnapshot,\n} from './serializers/full_serializer';\nimport { RouterReducerState } from './reducer';\nimport { RouterStateSerializer } from './serializers/base';\n\nenum RouterTrigger {\n NONE = 1,\n ROUTER = 2,\n STORE = 3,\n}\n\ninterface StoreRouterActionPayload {\n event: RouterEvent;\n routerState?: SerializedRouterStateSnapshot;\n storeState?: any;\n}\n\n/**\n * Shared router initialization logic used alongside both the StoreRouterConnectingModule and the provideRouterStore\n * function\n */\n@Injectable()\nexport class StoreRouterConnectingService {\n private lastEvent: Event | null = null;\n private routerState: SerializedRouterStateSnapshot | null = null;\n private storeState: any;\n private trigger = RouterTrigger.NONE;\n private readonly stateKey: StateKeyOrSelector;\n\n constructor(\n private store: Store,\n private router: Router,\n private serializer: RouterStateSerializer,\n private errorHandler: ErrorHandler,\n @Inject(ROUTER_CONFIG) private readonly config: StoreRouterConfig,\n @Inject(ACTIVE_RUNTIME_CHECKS)\n private readonly activeRuntimeChecks: RuntimeChecks\n ) {\n this.stateKey = this.config.stateKey as StateKeyOrSelector;\n\n if (\n !isNgrxMockEnvironment() &&\n isDevMode() &&\n (activeRuntimeChecks?.strictActionSerializability ||\n activeRuntimeChecks?.strictStateSerializability) &&\n this.serializer instanceof FullRouterStateSerializer\n ) {\n console.warn(\n '@ngrx/router-store: The serializability runtime checks cannot be enabled ' +\n 'with the FullRouterStateSerializer. The FullRouterStateSerializer ' +\n 'has an unserializable router state and actions that are not serializable. ' +\n 'To use the serializability runtime checks either use ' +\n 'the MinimalRouterStateSerializer or implement a custom router state serializer.'\n );\n }\n\n this.setUpStoreStateListener();\n this.setUpRouterEventsListener();\n }\n\n private setUpStoreStateListener(): void {\n this.store\n .pipe(select(this.stateKey as any), withLatestFrom(this.store))\n .subscribe(([routerStoreState, storeState]) => {\n this.navigateIfNeeded(routerStoreState, storeState);\n });\n }\n\n private navigateIfNeeded(\n routerStoreState: RouterReducerState,\n storeState: any\n ): void {\n if (!routerStoreState || !routerStoreState.state) {\n return;\n }\n if (this.trigger === RouterTrigger.ROUTER) {\n return;\n }\n if (this.lastEvent instanceof NavigationStart) {\n return;\n }\n\n const url = routerStoreState.state.url;\n if (!isSameUrl(this.router.url, url)) {\n this.storeState = storeState;\n this.trigger = RouterTrigger.STORE;\n this.router.navigateByUrl(url).catch((error) => {\n this.errorHandler.handleError(error);\n });\n }\n }\n\n private setUpRouterEventsListener(): void {\n const dispatchNavLate =\n this.config.navigationActionTiming ===\n NavigationActionTiming.PostActivation;\n let routesRecognized: RoutesRecognized;\n\n this.router.events\n .pipe(withLatestFrom(this.store))\n .subscribe(([event, storeState]) => {\n this.lastEvent = event;\n\n if (event instanceof NavigationStart) {\n this.routerState = this.serializer.serialize(\n this.router.routerState.snapshot\n );\n if (this.trigger !== RouterTrigger.STORE) {\n this.storeState = storeState;\n this.dispatchRouterRequest(event);\n }\n } else if (event instanceof RoutesRecognized) {\n routesRecognized = event;\n\n if (!dispatchNavLate && this.trigger !== RouterTrigger.STORE) {\n this.dispatchRouterNavigation(event);\n }\n } else if (event instanceof NavigationCancel) {\n this.dispatchRouterCancel(event);\n this.reset();\n } else if (event instanceof NavigationError) {\n this.dispatchRouterError(event);\n this.reset();\n } else if (event instanceof NavigationEnd) {\n if (this.trigger !== RouterTrigger.STORE) {\n if (dispatchNavLate) {\n this.dispatchRouterNavigation(routesRecognized);\n }\n this.dispatchRouterNavigated(event);\n }\n this.reset();\n }\n });\n }\n\n private dispatchRouterRequest(event: NavigationStart): void {\n this.dispatchRouterAction(ROUTER_REQUEST, { event });\n }\n\n private dispatchRouterNavigation(\n lastRoutesRecognized: RoutesRecognized\n ): void {\n const nextRouterState = this.serializer.serialize(\n lastRoutesRecognized.state\n );\n this.dispatchRouterAction(ROUTER_NAVIGATION, {\n routerState: nextRouterState,\n event: new RoutesRecognized(\n lastRoutesRecognized.id,\n lastRoutesRecognized.url,\n lastRoutesRecognized.urlAfterRedirects,\n nextRouterState\n ),\n });\n }\n\n private dispatchRouterCancel(event: NavigationCancel): void {\n this.dispatchRouterAction(ROUTER_CANCEL, {\n storeState: this.storeState,\n event,\n });\n }\n\n private dispatchRouterError(event: NavigationError): void {\n this.dispatchRouterAction(ROUTER_ERROR, {\n storeState: this.storeState,\n event: new NavigationError(event.id, event.url, `${event}`),\n });\n }\n\n private dispatchRouterNavigated(event: NavigationEnd): void {\n const routerState = this.serializer.serialize(\n this.router.routerState.snapshot\n );\n this.dispatchRouterAction(ROUTER_NAVIGATED, { event, routerState });\n }\n\n private dispatchRouterAction(\n type: string,\n payload: StoreRouterActionPayload\n ): void {\n this.trigger = RouterTrigger.ROUTER;\n try {\n this.store.dispatch({\n type,\n payload: {\n routerState: this.routerState,\n ...payload,\n event:\n this.config.routerState === RouterState.Full\n ? payload.event\n : {\n id: payload.event.id,\n url: payload.event.url,\n // safe, as it will just be `undefined` for non-NavigationEnd router events\n urlAfterRedirects: (payload.event as NavigationEnd)\n .urlAfterRedirects,\n },\n },\n });\n } finally {\n this.trigger = RouterTrigger.NONE;\n }\n }\n\n private reset() {\n this.trigger = RouterTrigger.NONE;\n this.storeState = null;\n this.routerState = null;\n }\n}\n\n/**\n * Check if the URLs are matching. Accounts for the possibility of trailing \"/\" in url.\n */\nfunction isSameUrl(first: string, second: string): boolean {\n return stripTrailingSlash(first) === stripTrailingSlash(second);\n}\n\nfunction stripTrailingSlash(text: string): string {\n if (text?.length > 0 && text[text.length - 1] === '/') {\n return text.substring(0, text.length - 1);\n }\n return text;\n}\n","import {\n ENVIRONMENT_INITIALIZER,\n EnvironmentProviders,\n inject,\n makeEnvironmentProviders,\n} from '@angular/core';\nimport {\n _createRouterConfig,\n _ROUTER_CONFIG,\n ROUTER_CONFIG,\n RouterState,\n StoreRouterConfig,\n} from './router_store_config';\nimport {\n FullRouterStateSerializer,\n SerializedRouterStateSnapshot,\n} from './serializers/full_serializer';\nimport { MinimalRouterStateSerializer } from './serializers/minimal_serializer';\nimport {\n BaseRouterStoreState,\n RouterStateSerializer,\n} from './serializers/base';\nimport { StoreRouterConnectingService } from './store_router_connecting.service';\n\n/**\n * Connects the Angular Router to the Store.\n *\n * @usageNotes\n *\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideStore({ router: routerReducer }),\n * provideRouterStore(),\n * ],\n * });\n * ```\n */\nexport function provideRouterStore<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n>(config: StoreRouterConfig = {}): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: _ROUTER_CONFIG, useValue: config },\n {\n provide: ROUTER_CONFIG,\n useFactory: _createRouterConfig,\n deps: [_ROUTER_CONFIG],\n },\n {\n provide: RouterStateSerializer,\n useClass: config.serializer\n ? config.serializer\n : config.routerState === RouterState.Full\n ? FullRouterStateSerializer\n : MinimalRouterStateSerializer,\n },\n {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory() {\n return () => inject(StoreRouterConnectingService);\n },\n },\n StoreRouterConnectingService,\n ]);\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { BaseRouterStoreState } from './serializers/base';\nimport { SerializedRouterStateSnapshot } from './serializers/full_serializer';\nimport { StoreRouterConfig } from './router_store_config';\nimport { provideRouterStore } from './provide_router_store';\n\n/**\n * Connects RouterModule with StoreModule.\n *\n * During the navigation, before any guards or resolvers run, the router will dispatch\n * a ROUTER_NAVIGATION action, which has the following signature:\n *\n * ```\n * export type RouterNavigationPayload = {\n * routerState: SerializedRouterStateSnapshot,\n * event: RoutesRecognized\n * }\n * ```\n *\n * Either a reducer or an effect can be invoked in response to this action.\n * If the invoked reducer throws, the navigation will be canceled.\n *\n * If navigation gets canceled because of a guard, a ROUTER_CANCEL action will be\n * dispatched. If navigation results in an error, a ROUTER_ERROR action will be dispatched.\n *\n * Both ROUTER_CANCEL and ROUTER_ERROR contain the store state before the navigation\n * which can be used to restore the consistency of the store.\n *\n * Usage:\n *\n * ```typescript\n * @NgModule({\n * declarations: [AppCmp, SimpleCmp],\n * imports: [\n * BrowserModule,\n * StoreModule.forRoot(mapOfReducers),\n * RouterModule.forRoot([\n * { path: '', component: SimpleCmp },\n * { path: 'next', component: SimpleCmp }\n * ]),\n * StoreRouterConnectingModule.forRoot()\n * ],\n * bootstrap: [AppCmp]\n * })\n * export class AppModule {\n * }\n * ```\n */\n@NgModule({})\nexport class StoreRouterConnectingModule {\n static forRoot<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n >(\n config: StoreRouterConfig = {}\n ): ModuleWithProviders {\n return {\n ngModule: StoreRouterConnectingModule,\n providers: [provideRouterStore(config)],\n };\n }\n}\n","import { coursePrefixesReducer } from '@app/store/coursePrefixes/coursePrefixes.reducer';\nimport { programsReducer } from \"@app/store/programs/programs.reducer\";\nimport { schoolsReducer } from \"@app/store/schools/schools.reducer\";\nimport { peConfigurableSessionsReducer } from '@app/store/pe-configurable-sessions/pe-configurable-sessions.reducer';\nimport { configurationsReducer } from '@modules/admin/semesters/configuration/store/configurations.reducer';\nimport { appTitleReducer } from \"@modules/main/homepage/store/app-title/app-title.reducer\";\nimport { termsReducer } from \"@modules/main/homepage/store/terms/terms.reducer\";\nimport { routerReducer } from \"@ngrx/router-store\";\nimport { ActionReducer, ActionReducerMap, MetaReducer } from \"@ngrx/store\";\nimport { programDetailsReducer } from \"@app/store/program-details/program-details.reducer\";\nimport { sessionsReducer } from \"@app/store/sessions/sessions.reducer\";\nimport { programCourseListReducer } from \"@app/store/program-course-list/program-course-list.reducer\";\n\nexport interface AppState {\n}\n\nexport const reducers: ActionReducerMap = {\n router: routerReducer,\n terms: termsReducer,\n appTitle: appTitleReducer,\n schools: schoolsReducer,\n programs: programsReducer,\n configurations: configurationsReducer,\n peConfigurableSessions: peConfigurableSessionsReducer,\n coursePrefixes: coursePrefixesReducer,\n programDetails: programDetailsReducer,\n sessions: sessionsReducer,\n programCourseList: programCourseListReducer\n};\n\nexport function logger(reducer: ActionReducer)\n : ActionReducer {\n return (state, action) => {\n console.log('state before: ', state);\n console.log(\"action\", action);\n\n return reducer(state, action);\n };\n}\n\nexport const metaReducers: MetaReducer[] = [];\n","import { Action } from '@ngrx/store';\nimport {\n ROUTER_CANCEL,\n ROUTER_ERROR,\n ROUTER_NAVIGATION,\n RouterAction,\n} from './actions';\nimport { BaseRouterStoreState } from './serializers/base';\nimport { SerializedRouterStateSnapshot } from './serializers/full_serializer';\n\nexport type RouterReducerState<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n state: T;\n navigationId: number;\n};\n\nexport function routerReducer<\n RouterState extends BaseRouterStoreState = SerializedRouterStateSnapshot,\n Result = RouterReducerState\n>(state: Result | undefined, action: Action): Result {\n // Allow compilation with strictFunctionTypes - ref: #1344\n const routerAction = action as RouterAction;\n switch (routerAction.type) {\n case ROUTER_NAVIGATION:\n case ROUTER_ERROR:\n case ROUTER_CANCEL:\n return {\n state: routerAction.payload.routerState,\n navigationId: routerAction.payload.event.id,\n } as unknown as Result;\n default:\n return state as Result;\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { ProgramsService } from \"@app/core/services/programs.service\";\nimport { ProgramActions } from \"@app/store/programs/programs-action-types\";\nimport { Actions, createEffect, ofType } from \"@ngrx/effects\";\nimport { catchError, concatMap, map, mergeMap, of } from \"rxjs\";\n\n@Injectable()\nexport class ProgramsEffects {\n\n constructor(private actions$: Actions,\n private programsService: ProgramsService) {\n }\n\n //#region READ/LOAD\n loadAll$ = createEffect(\n () => this.actions$\n .pipe(\n ofType(ProgramActions.loadAll),\n concatMap(action => this.programsService.getAll()),\n map(programs => {\n return ProgramActions.programsInserted({ programs });\n },\n )\n )\n );\n\n loadProgramsForTermCode$ = createEffect(\n () => this.actions$\n .pipe(\n ofType(ProgramActions.loadProgramsByTermCode),\n map(action => action),\n mergeMap(action => this.programsService.getByTermCode(action.termCode).pipe(\n map(programs => {\n return ProgramActions.programsInsertedForTerm({ programs, termCode: action.termCode });\n },\n ),\n catchError(error => {\n return of(ProgramActions.loadProgramsByTermCodeFailure({\n error: error\n }))\n })\n )\n )));\n //#endregion\n\n //#region CREATE\n\n //#endregion\n\n //#region DELETE\n\n //#endregion\n\n //#region UPDATE\n\n //#endregion\n}\n","import { Injectable } from \"@angular/core\";\nimport { SchoolsService } from \"@app/core/services/schools.service\";\nimport { SchoolActions } from \"@app/store/schools/schools-action-types\";\nimport { Actions, concatLatestFrom, createEffect, ofType } from \"@ngrx/effects\";\nimport { catchError, filter, map, mergeMap, of } from \"rxjs\";\nimport { TermActions } from \"@modules/main/homepage/store/terms/terms-action-types\";\nimport { Store } from \"@ngrx/store\";\nimport { AppState } from \"@app/store/app.reducer\";\nimport { selectSchoolEntityIdsByTermCode } from \"@app/store/schools/schools.selectors\";\n\n@Injectable()\nexport class SchoolsEffects {\n\n constructor(private actions$: Actions,\n private schoolsService: SchoolsService,\n private store: Store) {\n }\n\n //#region READ/LOAD\n loadSchoolsByTermCode$ = createEffect(\n () => this.actions$\n .pipe(\n ofType(SchoolActions.loadSchoolsByTermCode),\n map(action => action),\n mergeMap(action => this.schoolsService.getByTermCode(action.termCode).pipe(\n map(schools => {\n return SchoolActions.loadSchoolsByTermCodeSuccess({ schools, termCode: action.termCode });\n },\n ),\n catchError(error => {\n return of(SchoolActions.loadSchoolsByTermCodeFailure({\n error: error\n }))\n }),\n )))\n );\n //#endregion\n\n //#region CREATE\n\n //#endregion\n\n //#region DELETE\n\n removeSchoolsByTermCode$ = createEffect(() => this.actions$.pipe(\n ofType(TermActions.deleteSuccess),\n map(action => action.term.termCode),\n concatLatestFrom(termCode => this.store.select(selectSchoolEntityIdsByTermCode({ termCode: termCode }))),\n filter(([termCode, schools]) => schools != undefined && !!schools.length),\n map(([termCode, schools]) => {\n return SchoolActions.removeSchoolsByTermCode({\n schools: schools,\n termCode: termCode\n })\n })));\n\n //#endregion\n\n //#region UPDATE\n\n //#endregion\n}\n","import { Injectable } from \"@angular/core\";\nimport { MatDialog } from \"@angular/material/dialog\";\nimport { MatSnackBar, MatSnackBarConfig } from \"@angular/material/snack-bar\";\nimport { AlertService } from \"@app/core/services/alert.service\";\nimport { TermsService } from \"@app/core/services/terms.service\";\nimport { ToastNotificationService } from \"@app/core/services/toast-notification.service\";\nimport { ApiResponseErrorModel } from \"@models/api-response-error.model\";\nimport { TermActions } from \"@modules/main/homepage/store/terms/terms-action-types\";\nimport { Actions, createEffect, ofType } from \"@ngrx/effects\";\nimport { catchError, concatMap, map, mergeMap, of } from \"rxjs\";\nimport { ConfigurationActions } from \"@modules/admin/semesters/configuration/store/configurations-action-types\";\n\n@Injectable()\nexport class TermsEffects {\n\n constructor(private actions$: Actions,\n private termsService: TermsService,\n private toastNotificationService: ToastNotificationService,\n private alertService: AlertService,\n private matDialog: MatDialog,\n private snackBar: MatSnackBar) {\n }\n\n //#region READ/LOAD\n loadActiveTerms$ = createEffect(\n () => this.actions$\n .pipe(\n ofType(TermActions.loadActive),\n concatMap(action => this.termsService.getActive()),\n map(terms => {\n return TermActions.activeTermsInserted({ terms });\n },\n ),\n catchError(error => {\n return of(TermActions.loadActiveFailure({\n error: error\n }))\n })\n )\n );\n\n loadAllTerms$ = createEffect(\n () => this.actions$\n .pipe(\n ofType(TermActions.loadAll),\n concatMap(action => this.termsService.getAll()),\n map(terms => {\n return TermActions.allTermsInserted({ terms });\n },\n ),\n catchError(error => {\n return of(TermActions.loadAllFailure({\n error: error\n }))\n })\n )\n );\n\n loadSelectedTerm$ = createEffect(\n () => this.actions$\n .pipe(\n ofType(TermActions.loadSelectedTerm),\n concatMap(action => this.termsService.loadSelectedTerm(action.termCode)),\n map(selectedTerm => {\n return TermActions.updateSelectedTerm({ selectedTerm });\n },\n )\n )\n );\n\n refreshTermByTermCode$ = createEffect(\n () => this.actions$\n .pipe(\n ofType(TermActions.refreshTermByTermCode),\n concatMap(action => this.termsService.getByTermCode(action.termCode)),\n map(term => {\n return TermActions.refreshSuccess({ term });\n },\n )\n )\n );\n\n\n //#endregion\n\n //#region CREATE\n createTerm$ = createEffect(() => this.actions$.pipe(\n ofType(TermActions.createTerm),\n map(action => action),\n mergeMap(action => this.termsService.add(action.newTerm)\n .pipe(map(res => TermActions.createSuccess({ term: res, dialogId: action.dialogId })),\n catchError(error => of(TermActions.createFailure({\n term: action.newTerm,\n error: JSON.parse(error.response) as ApiResponseErrorModel\n })))\n )\n )\n ));\n\n handleErrorCreating$ = createEffect(() => this.actions$.pipe(\n ofType(TermActions.createFailure),\n map(action => {\n const term = action.term;\n const message = `There was an error creating ${term.season} ${term.year}. Please try again shortly.`;\n this.alertService.error(message);\n\n // todo do we need this anymore? talk with Design\n const snackBarConfig = new MatSnackBarConfig();\n\n snackBarConfig.verticalPosition = 'top';\n snackBarConfig.horizontalPosition = 'center';\n snackBarConfig.panelClass = \"create-semester-snackbar-container\";\n //Todo: Make the snackbar a component for more styling options.\n this.snackBar.open(action.error.detail!, \"OK\", snackBarConfig);\n\n console.log('Error Creating Term: ', action.error.detail);\n }),\n ), { dispatch: false });\n\n handleSuccessCreating$ = createEffect(() => this.actions$.pipe(\n ofType(TermActions.createSuccess),\n map(action => {\n const term = action.term;\n\n const title = `Configuration for ${term.seasonName} ${term.year} has been saved`\n const message = `Course scheduling remains to be done in SIS.`;\n this.alertService.success(message, title);\n\n const dialog = this.matDialog.getDialogById(action.dialogId);\n dialog?.close(action.term);\n }),\n ), { dispatch: false });\n //#endregion\n\n //#region DELETE\n deleteTerm$ = createEffect(() => this.actions$.pipe(\n ofType(TermActions.deleteTerm),\n map(action => action.term),\n mergeMap(term => this.termsService.delete(term.termCode)\n .pipe(map(res => TermActions.deleteSuccess({ term })),\n catchError(error => {\n return of(TermActions.deleteFailure({\n term: term,\n error: JSON.parse(error.response) as ApiResponseErrorModel\n }))\n })\n )\n )\n ));\n\n handleErrorDeleting$ = createEffect(() => this.actions$.pipe(\n ofType(TermActions.deleteFailure),\n map(action => {\n const term = action.term;\n const message = `There was an error deleting ${term.seasonName} ${term.year}. Please try again shortly.`;\n this.alertService.error(message);\n console.log('Error Deleting Term: ', action.error.detail);\n }),\n ), { dispatch: false });\n\n handleSuccessDeleting$ = createEffect(() => this.actions$.pipe(\n ofType(TermActions.deleteSuccess),\n map(action => {\n const term = action.term;\n const message = `${term.seasonName} ${term.year} has been deleted.`;\n this.toastNotificationService.informational(message);\n\n return ConfigurationActions.removeConfigurationByTermCode({\n termCode: action.term.termCode\n })\n }\n )));\n //#endregion\n\n //#region UPDATE\n updateTerm$ = createEffect(() => this.actions$.pipe(\n ofType(TermActions.updateTerm),\n map(action => action),\n mergeMap(action => this.termsService.update(action.term)\n .pipe(map(res => TermActions.updateSuccess({ term: action.term, dialogId: action.dialogId })),\n catchError(error => {\n return of(TermActions.updateFailure({\n term: action.term,\n error: JSON.parse(error.response) as ApiResponseErrorModel\n }))\n })\n )\n )\n ));\n\n handleErrorUpdating$ = createEffect(() => this.actions$.pipe(\n ofType(TermActions.updateFailure),\n map(action => {\n const term = action.term;\n const message = `There was an error updating ${term.seasonName} ${term.year}. Please try again shortly.`;\n this.alertService.error(message);\n console.log('Error Updating Term: ', action.error.detail);\n }),\n ), { dispatch: false });\n\n handleSuccessUpdating$ = createEffect(() => this.actions$.pipe(\n ofType(TermActions.updateSuccess),\n map(action => {\n const term = action.term;\n const message = `${term.seasonName} ${term.year} has been updated.`;\n this.toastNotificationService.informational(message);\n\n const dialog = this.matDialog.getDialogById(action.dialogId);\n dialog?.close(action.term);\n }),\n ), { dispatch: false });\n //#endregion\n}\n","import { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, ObservableInputTuple } from '../types';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { Subscriber } from '../Subscriber';\n\nexport function race(inputs: [...ObservableInputTuple]): Observable;\nexport function race(...inputs: [...ObservableInputTuple]): Observable;\n\n/**\n * Returns an observable that mirrors the first source observable to emit an item.\n *\n * ![](race.png)\n *\n * `race` returns an observable, that when subscribed to, subscribes to all source observables immediately.\n * As soon as one of the source observables emits a value, the result unsubscribes from the other sources.\n * The resulting observable will forward all notifications, including error and completion, from the \"winning\"\n * source observable.\n *\n * If one of the used source observable throws an errors before a first notification\n * the race operator will also throw an error, no matter if another source observable\n * could potentially win the race.\n *\n * `race` can be useful for selecting the response from the fastest network connection for\n * HTTP or WebSockets. `race` can also be useful for switching observable context based on user\n * input.\n *\n * ## Example\n *\n * Subscribes to the observable that was the first to start emitting.\n *\n * ```ts\n * import { interval, map, race } from 'rxjs';\n *\n * const obs1 = interval(7000).pipe(map(() => 'slow one'));\n * const obs2 = interval(3000).pipe(map(() => 'fast one'));\n * const obs3 = interval(5000).pipe(map(() => 'medium one'));\n *\n * race(obs1, obs2, obs3)\n * .subscribe(winner => console.log(winner));\n *\n * // Outputs\n * // a series of 'fast one'\n * ```\n *\n * @param {...Observables} ...observables sources used to race for which Observable emits first.\n * @return {Observable} an Observable that mirrors the output of the first Observable to emit an item.\n */\nexport function race(...sources: (ObservableInput | ObservableInput[])[]): Observable {\n sources = argsOrArgArray(sources);\n // If only one source was passed, just return it. Otherwise return the race.\n return sources.length === 1 ? innerFrom(sources[0] as ObservableInput) : new Observable(raceInit(sources as ObservableInput[]));\n}\n\n/**\n * An observable initializer function for both the static version and the\n * operator version of race.\n * @param sources The sources to race\n */\nexport function raceInit(sources: ObservableInput[]) {\n return (subscriber: Subscriber) => {\n let subscriptions: Subscription[] = [];\n\n // Subscribe to all of the sources. Note that we are checking `subscriptions` here\n // Is is an array of all actively \"racing\" subscriptions, and it is `null` after the\n // race has been won. So, if we have racer that synchronously \"wins\", this loop will\n // stop before it subscribes to any more.\n for (let i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) {\n subscriptions.push(\n innerFrom(sources[i] as ObservableInput).subscribe(\n createOperatorSubscriber(subscriber, (value) => {\n if (subscriptions) {\n // We're still racing, but we won! So unsubscribe\n // all other subscriptions that we have, except this one.\n for (let s = 0; s < subscriptions.length; s++) {\n s !== i && subscriptions[s].unsubscribe();\n }\n subscriptions = null!;\n }\n subscriber.next(value);\n })\n )\n );\n }\n };\n}\n","import { Injectable } from '@angular/core';\n\nimport { EntityOp } from './entity-op';\nimport {\n EntityAction,\n EntityActionOptions,\n EntityActionPayload,\n} from './entity-action';\n@Injectable()\nexport class EntityActionFactory {\n /**\n * Create an EntityAction to perform an operation (op) for a particular entity type\n * (entityName) with optional data and other optional flags\n * @param entityName Name of the entity type\n * @param entityOp Operation to perform (EntityOp)\n * @param [data] data for the operation\n * @param [options] additional options\n */\n create

(\n entityName: string,\n entityOp: EntityOp,\n data?: P,\n options?: EntityActionOptions\n ): EntityAction

;\n\n /**\n * Create an EntityAction to perform an operation (op) for a particular entity type\n * (entityName) with optional data and other optional flags\n * @param payload Defines the EntityAction and its options\n */\n create

(payload: EntityActionPayload

): EntityAction

;\n\n // polymorphic create for the two signatures\n create

(\n nameOrPayload: EntityActionPayload

| string,\n entityOp?: EntityOp,\n data?: P,\n options?: EntityActionOptions\n ): EntityAction

{\n const payload: EntityActionPayload

=\n typeof nameOrPayload === 'string'\n ? ({\n ...(options || {}),\n entityName: nameOrPayload,\n entityOp,\n data,\n } as EntityActionPayload

)\n : nameOrPayload;\n return this.createCore(payload);\n }\n\n /**\n * Create an EntityAction to perform an operation (op) for a particular entity type\n * (entityName) with optional data and other optional flags\n * @param payload Defines the EntityAction and its options\n */\n protected createCore

(payload: EntityActionPayload

) {\n const { entityName, entityOp, tag } = payload;\n if (!entityName) {\n throw new Error('Missing entity name for new action');\n }\n if (entityOp == null) {\n throw new Error('Missing EntityOp for new action');\n }\n const type = this.formatActionType(entityOp, tag || entityName);\n return { type, payload };\n }\n\n /**\n * Create an EntityAction from another EntityAction, replacing properties with those from newPayload;\n * @param from Source action that is the base for the new action\n * @param newProperties New EntityAction properties that replace the source action properties\n */\n createFromAction

(\n from: EntityAction,\n newProperties: Partial>\n ): EntityAction

{\n return this.create({ ...from.payload, ...newProperties });\n }\n\n formatActionType(op: string, tag: string) {\n return `[${tag}] ${op}`;\n // return `${op} [${tag}]`.toUpperCase(); // example of an alternative\n }\n}\n","import { IdSelector, Update } from '@ngrx/entity';\n\nimport { EntityAction } from './entity-action';\nimport { UpdateResponseData } from '../actions/update-response-data';\n\n/**\n * Guard methods that ensure EntityAction payload is as expected.\n * Each method returns that payload if it passes the guard or\n * throws an error.\n */\nexport class EntityActionGuard {\n constructor(private entityName: string, private selectId: IdSelector) {}\n\n /** Throw if the action payload is not an entity with a valid key */\n mustBeEntity(action: EntityAction): T {\n const data = this.extractData(action);\n if (!data) {\n return this.throwError(action, `should have a single entity.`);\n }\n const id = this.selectId(data);\n if (this.isNotKeyType(id)) {\n this.throwError(action, `has a missing or invalid entity key (id)`);\n }\n return data as T;\n }\n\n /** Throw if the action payload is not an array of entities with valid keys */\n mustBeEntities(action: EntityAction): T[] {\n const data = this.extractData(action);\n if (!Array.isArray(data)) {\n return this.throwError(action, `should be an array of entities`);\n }\n data.forEach((entity, i) => {\n const id = this.selectId(entity);\n if (this.isNotKeyType(id)) {\n const msg = `, item ${i + 1}, does not have a valid entity key (id)`;\n this.throwError(action, msg);\n }\n });\n return data;\n }\n\n /** Throw if the action payload is not a single, valid key */\n mustBeKey(action: EntityAction): string | number | never {\n const data = this.extractData(action);\n if (data === undefined) {\n throw new Error(`should be a single entity key`);\n }\n if (this.isNotKeyType(data)) {\n throw new Error(`is not a valid key (id)`);\n }\n return data;\n }\n\n /** Throw if the action payload is not an array of valid keys */\n mustBeKeys(action: EntityAction<(string | number)[]>): (string | number)[] {\n const data = this.extractData(action);\n if (!Array.isArray(data)) {\n return this.throwError(action, `should be an array of entity keys (id)`);\n }\n data.forEach((id, i) => {\n if (this.isNotKeyType(id)) {\n const msg = `${this.entityName} ', item ${\n i + 1\n }, is not a valid entity key (id)`;\n this.throwError(action, msg);\n }\n });\n return data;\n }\n\n /** Throw if the action payload is not an update with a valid key (id) */\n mustBeUpdate(action: EntityAction>): Update {\n const data = this.extractData(action);\n if (!data) {\n return this.throwError(action, `should be a single entity update`);\n }\n const { id, changes } = data;\n const id2 = this.selectId(changes as T);\n if (this.isNotKeyType(id) || this.isNotKeyType(id2)) {\n this.throwError(action, `has a missing or invalid entity key (id)`);\n }\n return data;\n }\n\n /** Throw if the action payload is not an array of updates with valid keys (ids) */\n mustBeUpdates(action: EntityAction[]>): Update[] {\n const data = this.extractData(action);\n if (!Array.isArray(data)) {\n return this.throwError(action, `should be an array of entity updates`);\n }\n data.forEach((item, i) => {\n const { id, changes } = item;\n const id2 = this.selectId(changes as T);\n if (this.isNotKeyType(id) || this.isNotKeyType(id2)) {\n this.throwError(\n action,\n `, item ${i + 1}, has a missing or invalid entity key (id)`\n );\n }\n });\n return data;\n }\n\n /** Throw if the action payload is not an update response with a valid key (id) */\n mustBeUpdateResponse(\n action: EntityAction>\n ): UpdateResponseData {\n const data = this.extractData(action);\n if (!data) {\n return this.throwError(action, `should be a single entity update`);\n }\n const { id, changes } = data;\n const id2 = this.selectId(changes as T);\n if (this.isNotKeyType(id) || this.isNotKeyType(id2)) {\n this.throwError(action, `has a missing or invalid entity key (id)`);\n }\n return data;\n }\n\n /** Throw if the action payload is not an array of update responses with valid keys (ids) */\n mustBeUpdateResponses(\n action: EntityAction[]>\n ): UpdateResponseData[] {\n const data = this.extractData(action);\n if (!Array.isArray(data)) {\n return this.throwError(action, `should be an array of entity updates`);\n }\n data.forEach((item, i) => {\n const { id, changes } = item;\n const id2 = this.selectId(changes as T);\n if (this.isNotKeyType(id) || this.isNotKeyType(id2)) {\n this.throwError(\n action,\n `, item ${i + 1}, has a missing or invalid entity key (id)`\n );\n }\n });\n return data;\n }\n\n private extractData(action: EntityAction) {\n return action.payload && action.payload.data;\n }\n\n /** Return true if this key (id) is invalid */\n private isNotKeyType(id: any) {\n return typeof id !== 'string' && typeof id !== 'number';\n }\n\n private throwError(action: EntityAction, msg: string): never {\n throw new Error(\n `${this.entityName} EntityAction guard for \"${action.type}\": payload ${msg}`\n );\n }\n}\n","import { IdSelector, Update } from '@ngrx/entity';\n\n/**\n * Default function that returns the entity's primary key (pkey).\n * Assumes that the entity has an `id` pkey property.\n * Returns `undefined` if no entity or `id`.\n * Every selectId fn must return `undefined` when it cannot produce a full pkey.\n */\nexport function defaultSelectId(entity: any) {\n return entity == null ? undefined : entity.id;\n}\n\n/**\n * Flatten first arg if it is an array\n * Allows fn with ...rest signature to be called with an array instead of spread\n * Example:\n * ```\n * // See entity-action-operators.ts\n * const persistOps = [EntityOp.QUERY_ALL, EntityOp.ADD, ...];\n * actions.pipe(ofEntityOp(...persistOps)) // works\n * actions.pipe(ofEntityOp(persistOps)) // also works\n * ```\n * */\nexport function flattenArgs(args?: any[]): T[] {\n if (args == null) {\n return [];\n }\n if (Array.isArray(args[0])) {\n const [head, ...tail] = args;\n args = [...head, ...tail];\n }\n return args;\n}\n\n/**\n * Return a function that converts an entity (or partial entity) into the `Update`\n * whose `id` is the primary key and\n * `changes` is the entity (or partial entity of changes).\n */\nexport function toUpdateFactory(selectId?: IdSelector) {\n selectId = selectId || (defaultSelectId as IdSelector);\n /**\n * Convert an entity (or partial entity) into the `Update`\n * whose `id` is the primary key and\n * `changes` is the entity (or partial entity of changes).\n * @param selectId function that returns the entity's primary key (id)\n */\n return function toUpdate(entity: Partial): Update {\n const id: any = selectId!(entity as T);\n if (id == null) {\n throw new Error('Primary key may not be null/undefined.');\n }\n return entity && { id, changes: entity };\n };\n}\n","import { OperatorFunction } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { EntityAction } from './entity-action';\nimport { EntityOp } from './entity-op';\nimport { flattenArgs } from '../utils/utilities';\n\n/**\n * Select actions concerning one of the allowed Entity operations\n * @param allowedEntityOps Entity operations (e.g, EntityOp.QUERY_ALL) whose actions should be selected\n * Example:\n * ```\n * this.actions.pipe(ofEntityOp(EntityOp.QUERY_ALL, EntityOp.QUERY_MANY), ...)\n * this.actions.pipe(ofEntityOp(...queryOps), ...)\n * this.actions.pipe(ofEntityOp(queryOps), ...)\n * this.actions.pipe(ofEntityOp(), ...) // any action with a defined `entityOp` property\n * ```\n */\nexport function ofEntityOp(\n allowedOps: string[] | EntityOp[]\n): OperatorFunction;\nexport function ofEntityOp(\n ...allowedOps: (string | EntityOp)[]\n): OperatorFunction;\nexport function ofEntityOp(\n ...allowedEntityOps: any[]\n): OperatorFunction {\n const ops: string[] = flattenArgs(allowedEntityOps);\n switch (ops.length) {\n case 0:\n return filter(\n (action: EntityAction): action is T =>\n action.payload && action.payload.entityOp != null\n );\n case 1:\n const op = ops[0];\n return filter(\n (action: EntityAction): action is T =>\n action.payload && op === action.payload.entityOp\n );\n default:\n return filter((action: EntityAction): action is T => {\n const entityOp = action.payload && action.payload.entityOp;\n return entityOp && ops.some((o) => o === entityOp);\n });\n }\n}\n\n/**\n * Select actions concerning one of the allowed Entity types\n * @param allowedEntityNames Entity-type names (e.g, 'Hero') whose actions should be selected\n * Example:\n * ```\n * this.actions.pipe(ofEntityType(), ...) // ayn EntityAction with a defined entity type property\n * this.actions.pipe(ofEntityType('Hero'), ...) // EntityActions for the Hero entity\n * this.actions.pipe(ofEntityType('Hero', 'Villain', 'Sidekick'), ...)\n * this.actions.pipe(ofEntityType(...theChosen), ...)\n * this.actions.pipe(ofEntityType(theChosen), ...)\n * ```\n */\nexport function ofEntityType(\n allowedEntityNames?: string[]\n): OperatorFunction;\nexport function ofEntityType(\n ...allowedEntityNames: string[]\n): OperatorFunction;\nexport function ofEntityType(\n ...allowedEntityNames: any[]\n): OperatorFunction {\n const names: string[] = flattenArgs(allowedEntityNames);\n switch (names.length) {\n case 0:\n return filter(\n (action: EntityAction): action is T =>\n action.payload && action.payload.entityName != null\n );\n case 1:\n const name = names[0];\n return filter(\n (action: EntityAction): action is T =>\n action.payload && name === action.payload.entityName\n );\n default:\n return filter((action: EntityAction): action is T => {\n const entityName = action.payload && action.payload.entityName;\n return !!entityName && names.some((n) => n === entityName);\n });\n }\n}\n","import { Update } from '@ngrx/entity';\n\nexport enum ChangeSetOperation {\n Add = 'Add',\n Delete = 'Delete',\n Update = 'Update',\n Upsert = 'Upsert',\n}\nexport interface ChangeSetAdd {\n op: ChangeSetOperation.Add;\n entityName: string;\n entities: T[];\n}\n\nexport interface ChangeSetDelete {\n op: ChangeSetOperation.Delete;\n entityName: string;\n entities: string[] | number[];\n}\n\nexport interface ChangeSetUpdate {\n op: ChangeSetOperation.Update;\n entityName: string;\n entities: Update[];\n}\n\nexport interface ChangeSetUpsert {\n op: ChangeSetOperation.Upsert;\n entityName: string;\n entities: T[];\n}\n\n/**\n * A entities of a single entity type, which are changed in the same way by a ChangeSetOperation\n */\nexport type ChangeSetItem =\n | ChangeSetAdd\n | ChangeSetDelete\n | ChangeSetUpdate\n | ChangeSetUpsert;\n\n/*\n * A set of entity Changes, typically to be saved.\n */\nexport interface ChangeSet {\n /** An array of ChangeSetItems to be processed in the array order */\n changes: ChangeSetItem[];\n\n /**\n * An arbitrary, serializable object that should travel with the ChangeSet.\n * Meaningful to the ChangeSet producer and consumer. Ignored by @ngrx/data.\n */\n extras?: T;\n\n /** An arbitrary string, identifying the ChangeSet and perhaps its purpose */\n tag?: string;\n}\n\n/**\n * Factory to create a ChangeSetItem for a ChangeSetOperation\n */\nexport class ChangeSetItemFactory {\n /** Create the ChangeSetAdd for new entities of the given entity type */\n add(entityName: string, entities: T | T[]): ChangeSetAdd {\n entities = Array.isArray(entities) ? entities : entities ? [entities] : [];\n return { entityName, op: ChangeSetOperation.Add, entities };\n }\n\n /** Create the ChangeSetDelete for primary keys of the given entity type */\n delete(\n entityName: string,\n keys: number | number[] | string | string[]\n ): ChangeSetDelete {\n const ids = Array.isArray(keys)\n ? keys\n : keys\n ? ([keys] as string[] | number[])\n : [];\n return { entityName, op: ChangeSetOperation.Delete, entities: ids };\n }\n\n /** Create the ChangeSetUpdate for Updates of entities of the given entity type */\n update(\n entityName: string,\n updates: Update | Update[]\n ): ChangeSetUpdate {\n updates = Array.isArray(updates) ? updates : updates ? [updates] : [];\n return { entityName, op: ChangeSetOperation.Update, entities: updates };\n }\n\n /** Create the ChangeSetUpsert for new or existing entities of the given entity type */\n upsert(entityName: string, entities: T | T[]): ChangeSetUpsert {\n entities = Array.isArray(entities) ? entities : entities ? [entities] : [];\n return { entityName, op: ChangeSetOperation.Upsert, entities };\n }\n}\n\n/**\n * Instance of a factory to create a ChangeSetItem for a ChangeSetOperation\n */\nexport const changeSetItemFactory = new ChangeSetItemFactory();\n\n/**\n * Return ChangeSet after filtering out null and empty ChangeSetItems.\n * @param changeSet ChangeSet with changes to filter\n */\nexport function excludeEmptyChangeSetItems(changeSet: ChangeSet): ChangeSet {\n changeSet = changeSet && changeSet.changes ? changeSet : { changes: [] };\n const changes = changeSet.changes.filter(\n (c) => c != null && c.entities && c.entities.length > 0\n );\n return { ...changeSet, changes };\n}\n","/** How to merge an entity, after query or save, when the corresponding entity in the collection has unsaved changes. */\nexport enum MergeStrategy {\n /**\n * Update the collection entities and ignore all change tracking for this operation.\n * Each entity's `changeState` is untouched.\n */\n IgnoreChanges,\n /**\n * Updates current values for unchanged entities.\n * For each changed entity it preserves the current value and overwrites the `originalValue` with the merge entity.\n * This is the query-success default.\n */\n PreserveChanges,\n /**\n * Replace the current collection entities.\n * For each merged entity it discards the `changeState` and sets the `changeType` to \"unchanged\".\n * This is the save-success default.\n */\n OverwriteChanges,\n}\n","/*\n * Actions dedicated to the EntityCache as a whole\n */\nimport { Action } from '@ngrx/store';\n\nimport { ChangeSet, ChangeSetOperation } from './entity-cache-change-set';\nexport { ChangeSet, ChangeSetOperation } from './entity-cache-change-set';\n\nimport { DataServiceError } from '../dataservices/data-service-error';\nimport { EntityActionOptions } from '../actions/entity-action';\nimport { EntityCache } from '../reducers/entity-cache';\nimport { MergeStrategy } from '../actions/merge-strategy';\n\nexport enum EntityCacheAction {\n CLEAR_COLLECTIONS = '@ngrx/data/entity-cache/clear-collections',\n LOAD_COLLECTIONS = '@ngrx/data/entity-cache/load-collections',\n MERGE_QUERY_SET = '@ngrx/data/entity-cache/merge-query-set',\n SET_ENTITY_CACHE = '@ngrx/data/entity-cache/set-cache',\n\n SAVE_ENTITIES = '@ngrx/data/entity-cache/save-entities',\n SAVE_ENTITIES_CANCEL = '@ngrx/data/entity-cache/save-entities-cancel',\n SAVE_ENTITIES_CANCELED = '@ngrx/data/entity-cache/save-entities-canceled',\n SAVE_ENTITIES_ERROR = '@ngrx/data/entity-cache/save-entities-error',\n SAVE_ENTITIES_SUCCESS = '@ngrx/data/entity-cache/save-entities-success',\n}\n\n/**\n * Hash of entities keyed by EntityCollection name,\n * typically the result of a query that returned results from a multi-collection query\n * that will be merged into an EntityCache via the `MergeQuerySet` action.\n */\nexport interface EntityCacheQuerySet {\n [entityName: string]: any[];\n}\n\n/**\n * Clear the collections identified in the collectionSet.\n * @param [collections] Array of names of the collections to clear.\n * If empty array, does nothing. If no array, clear all collections.\n * @param [tag] Optional tag to identify the operation from the app perspective.\n */\nexport class ClearCollections implements Action {\n readonly payload: { collections?: string[]; tag?: string };\n readonly type = EntityCacheAction.CLEAR_COLLECTIONS;\n\n constructor(collections?: string[], tag?: string) {\n this.payload = { collections, tag };\n }\n}\n\n/**\n * Create entity cache action that loads multiple entity collections at the same time.\n * before any selectors$ observables emit.\n * @param querySet The collections to load, typically the result of a query.\n * @param [tag] Optional tag to identify the operation from the app perspective.\n * in the form of a map of entity collections.\n */\nexport class LoadCollections implements Action {\n readonly payload: { collections: EntityCacheQuerySet; tag?: string };\n readonly type = EntityCacheAction.LOAD_COLLECTIONS;\n\n constructor(collections: EntityCacheQuerySet, tag?: string) {\n this.payload = { collections, tag };\n }\n}\n\n/**\n * Create entity cache action that merges entities from a query result\n * that returned entities from multiple collections.\n * Corresponding entity cache reducer should add and update all collections\n * at the same time, before any selectors$ observables emit.\n * @param querySet The result of the query in the form of a map of entity collections.\n * These are the entity data to merge into the respective collections.\n * @param mergeStrategy How to merge a queried entity when it is already in the collection.\n * The default is MergeStrategy.PreserveChanges\n * @param [tag] Optional tag to identify the operation from the app perspective.\n */\nexport class MergeQuerySet implements Action {\n readonly payload: {\n querySet: EntityCacheQuerySet;\n mergeStrategy?: MergeStrategy;\n tag?: string;\n };\n\n readonly type = EntityCacheAction.MERGE_QUERY_SET;\n\n constructor(\n querySet: EntityCacheQuerySet,\n mergeStrategy?: MergeStrategy,\n tag?: string\n ) {\n this.payload = {\n querySet,\n mergeStrategy:\n mergeStrategy === null ? MergeStrategy.PreserveChanges : mergeStrategy,\n tag,\n };\n }\n}\n\n/**\n * Create entity cache action for replacing the entire entity cache.\n * Dangerous because brute force but useful as when re-hydrating an EntityCache\n * from local browser storage when the application launches.\n * @param cache New state of the entity cache\n * @param [tag] Optional tag to identify the operation from the app perspective.\n */\nexport class SetEntityCache implements Action {\n readonly payload: { cache: EntityCache; tag?: string };\n readonly type = EntityCacheAction.SET_ENTITY_CACHE;\n\n constructor(public readonly cache: EntityCache, tag?: string) {\n this.payload = { cache, tag };\n }\n}\n\n// #region SaveEntities\nexport class SaveEntities implements Action {\n readonly payload: {\n readonly changeSet: ChangeSet;\n readonly url: string;\n readonly correlationId?: any;\n readonly isOptimistic?: boolean;\n readonly mergeStrategy?: MergeStrategy;\n readonly tag?: string;\n error?: Error;\n skip?: boolean; // not used\n };\n readonly type = EntityCacheAction.SAVE_ENTITIES;\n\n constructor(\n changeSet: ChangeSet,\n url: string,\n options?: EntityActionOptions\n ) {\n options = options || {};\n if (changeSet) {\n changeSet.tag = changeSet.tag || options.tag;\n }\n this.payload = { changeSet, url, ...options, tag: changeSet.tag };\n }\n}\n\nexport class SaveEntitiesCancel implements Action {\n readonly payload: {\n readonly correlationId: any;\n readonly reason?: string;\n readonly entityNames?: string[];\n readonly tag?: string;\n };\n readonly type = EntityCacheAction.SAVE_ENTITIES_CANCEL;\n\n constructor(\n correlationId: any,\n reason?: string,\n entityNames?: string[],\n tag?: string\n ) {\n this.payload = { correlationId, reason, entityNames, tag };\n }\n}\n\nexport class SaveEntitiesCanceled implements Action {\n readonly payload: {\n readonly correlationId: any;\n readonly reason?: string;\n readonly tag?: string;\n };\n readonly type = EntityCacheAction.SAVE_ENTITIES_CANCELED;\n\n constructor(correlationId: any, reason?: string, tag?: string) {\n this.payload = { correlationId, reason, tag };\n }\n}\n\nexport class SaveEntitiesError {\n readonly payload: {\n readonly error: DataServiceError;\n readonly originalAction: SaveEntities;\n readonly correlationId: any;\n };\n readonly type = EntityCacheAction.SAVE_ENTITIES_ERROR;\n constructor(error: DataServiceError, originalAction: SaveEntities) {\n const correlationId = originalAction.payload.correlationId;\n this.payload = { error, originalAction, correlationId };\n }\n}\n\nexport class SaveEntitiesSuccess implements Action {\n readonly payload: {\n readonly changeSet: ChangeSet;\n readonly url: string;\n readonly correlationId?: any;\n readonly isOptimistic?: boolean;\n readonly mergeStrategy?: MergeStrategy;\n readonly tag?: string;\n error?: Error;\n skip?: boolean; // not used\n };\n readonly type = EntityCacheAction.SAVE_ENTITIES_SUCCESS;\n\n constructor(\n changeSet: ChangeSet,\n url: string,\n options?: EntityActionOptions\n ) {\n options = options || {};\n if (changeSet) {\n changeSet.tag = changeSet.tag || options.tag;\n }\n this.payload = { changeSet, url, ...options, tag: changeSet.tag };\n }\n}\n// #endregion SaveEntities\n","// Ensure that these suffix values and the EntityOp suffixes match\n// Cannot do that programmatically.\n\n/** General purpose entity action operations, good for any entity type */\nexport enum EntityOp {\n // Persistance operations\n CANCEL_PERSIST = '@ngrx/data/cancel-persist',\n CANCELED_PERSIST = '@ngrx/data/canceled-persist',\n\n QUERY_ALL = '@ngrx/data/query-all',\n QUERY_ALL_SUCCESS = '@ngrx/data/query-all/success',\n QUERY_ALL_ERROR = '@ngrx/data/query-all/error',\n\n QUERY_LOAD = '@ngrx/data/query-load',\n QUERY_LOAD_SUCCESS = '@ngrx/data/query-load/success',\n QUERY_LOAD_ERROR = '@ngrx/data/query-load/error',\n\n QUERY_MANY = '@ngrx/data/query-many',\n QUERY_MANY_SUCCESS = '@ngrx/data/query-many/success',\n QUERY_MANY_ERROR = '@ngrx/data/query-many/error',\n\n QUERY_BY_KEY = '@ngrx/data/query-by-key',\n QUERY_BY_KEY_SUCCESS = '@ngrx/data/query-by-key/success',\n QUERY_BY_KEY_ERROR = '@ngrx/data/query-by-key/error',\n\n SAVE_ADD_MANY = '@ngrx/data/save/add-many',\n SAVE_ADD_MANY_ERROR = '@ngrx/data/save/add-many/error',\n SAVE_ADD_MANY_SUCCESS = '@ngrx/data/save/add-many/success',\n\n SAVE_ADD_ONE = '@ngrx/data/save/add-one',\n SAVE_ADD_ONE_ERROR = '@ngrx/data/save/add-one/error',\n SAVE_ADD_ONE_SUCCESS = '@ngrx/data/save/add-one/success',\n\n SAVE_DELETE_MANY = '@ngrx/data/save/delete-many',\n SAVE_DELETE_MANY_SUCCESS = '@ngrx/data/save/delete-many/success',\n SAVE_DELETE_MANY_ERROR = '@ngrx/data/save/delete-many/error',\n\n SAVE_DELETE_ONE = '@ngrx/data/save/delete-one',\n SAVE_DELETE_ONE_SUCCESS = '@ngrx/data/save/delete-one/success',\n SAVE_DELETE_ONE_ERROR = '@ngrx/data/save/delete-one/error',\n\n SAVE_UPDATE_MANY = '@ngrx/data/save/update-many',\n SAVE_UPDATE_MANY_SUCCESS = '@ngrx/data/save/update-many/success',\n SAVE_UPDATE_MANY_ERROR = '@ngrx/data/save/update-many/error',\n\n SAVE_UPDATE_ONE = '@ngrx/data/save/update-one',\n SAVE_UPDATE_ONE_SUCCESS = '@ngrx/data/save/update-one/success',\n SAVE_UPDATE_ONE_ERROR = '@ngrx/data/save/update-one/error',\n\n // Use only if the server supports upsert;\n SAVE_UPSERT_MANY = '@ngrx/data/save/upsert-many',\n SAVE_UPSERT_MANY_SUCCESS = '@ngrx/data/save/upsert-many/success',\n SAVE_UPSERT_MANY_ERROR = '@ngrx/data/save/upsert-many/error',\n\n // Use only if the server supports upsert;\n SAVE_UPSERT_ONE = '@ngrx/data/save/upsert-one',\n SAVE_UPSERT_ONE_SUCCESS = '@ngrx/data/save/upsert-one/success',\n SAVE_UPSERT_ONE_ERROR = '@ngrx/data/save/upsert-one/error',\n\n // Cache operations\n ADD_ALL = '@ngrx/data/add-all',\n ADD_MANY = '@ngrx/data/add-many',\n ADD_ONE = '@ngrx/data/add-one',\n REMOVE_ALL = '@ngrx/data/remove-all',\n REMOVE_MANY = '@ngrx/data/remove-many',\n REMOVE_ONE = '@ngrx/data/remove-one',\n UPDATE_MANY = '@ngrx/data/update-many',\n UPDATE_ONE = '@ngrx/data/update-one',\n UPSERT_MANY = '@ngrx/data/upsert-many',\n UPSERT_ONE = '@ngrx/data/upsert-one',\n\n COMMIT_ALL = '@ngrx/data/commit-all',\n COMMIT_MANY = '@ngrx/data/commit-many',\n COMMIT_ONE = '@ngrx/data/commit-one',\n UNDO_ALL = '@ngrx/data/undo-all',\n UNDO_MANY = '@ngrx/data/undo-many',\n UNDO_ONE = '@ngrx/data/undo-one',\n\n SET_CHANGE_STATE = '@ngrx/data/set-change-state',\n SET_COLLECTION = '@ngrx/data/set-collection',\n SET_FILTER = '@ngrx/data/set-filter',\n SET_LOADED = '@ngrx/data/set-loaded',\n SET_LOADING = '@ngrx/data/set-loading',\n}\n\n/** \"Success\" suffix appended to EntityOps that are successful.*/\nexport const OP_SUCCESS = '/success';\n\n/** \"Error\" suffix appended to EntityOps that have failed.*/\nexport const OP_ERROR = '/error';\n\n/** Make the error EntityOp corresponding to the given EntityOp */\nexport function makeErrorOp(op: EntityOp): EntityOp {\n return (op + OP_ERROR);\n}\n\n/** Make the success EntityOp corresponding to the given EntityOp */\nexport function makeSuccessOp(op: EntityOp): EntityOp {\n return (op + OP_SUCCESS);\n}\n","import { EntityAction } from '../actions/entity-action';\nimport { RequestData } from './interfaces';\n\n/**\n * Error from a DataService\n * The source error either comes from a failed HTTP response or was thrown within the service.\n * @param error the HttpErrorResponse or the error thrown by the service\n * @param requestData the HTTP request information such as the method and the url.\n */\nexport class DataServiceError extends Error {\n constructor(public error: any, public requestData: RequestData | null) {\n super(\n typeof error === 'string' ? error : extractMessage(error) ?? undefined\n );\n this.name = this.constructor.name;\n }\n}\n\n// Many ways the error can be shaped. These are the ways we recognize.\nfunction extractMessage(sourceError: any): string | null {\n const { error, body, message } = sourceError;\n let errMessage: string | null = null;\n if (error) {\n // prefer HttpErrorResponse.error to its message property\n errMessage = typeof error === 'string' ? error : error.message;\n } else if (message) {\n errMessage = message;\n } else if (body) {\n // try the body if no error or message property\n errMessage = typeof body === 'string' ? body : body.error;\n }\n\n return typeof errMessage === 'string'\n ? errMessage\n : errMessage\n ? JSON.stringify(errMessage)\n : null;\n}\n\n/** Payload for an EntityAction data service error such as QUERY_ALL_ERROR */\nexport interface EntityActionDataServiceError {\n error: DataServiceError;\n originalAction: EntityAction;\n}\n","import { EntityHttpResourceUrls } from './http-url-generator';\n\n/**\n * Optional configuration settings for an entity collection data service\n * such as the `DefaultDataService`.\n */\nexport abstract class DefaultDataServiceConfig {\n /**\n * root path of the web api. may also include protocol, domain, and port\n * for remote api, e.g.: `'https://api-domain.com:8000/api/v1'` (default: 'api')\n */\n root?: string;\n /**\n * Known entity HttpResourceUrls.\n * HttpUrlGenerator will create these URLs for entity types not listed here.\n */\n entityHttpResourceUrls?: EntityHttpResourceUrls;\n /** Is a DELETE 404 really OK? (default: true) */\n delete404OK?: boolean;\n /** Simulate GET latency in a demo (default: 0) */\n getDelay?: number;\n /** Simulate save method (PUT/POST/DELETE) latency in a demo (default: 0) */\n saveDelay?: number;\n /** request timeout in MS (default: 0)*/\n timeout?: number; //\n /** to keep leading & trailing slashes or not; false by default */\n trailingSlashEndpoints?: boolean;\n}\n","import { InjectionToken } from '@angular/core';\n\nexport abstract class Logger {\n abstract error(message?: any, ...optionalParams: any[]): void;\n abstract log(message?: any, ...optionalParams: any[]): void;\n abstract warn(message?: any, ...optionalParams: any[]): void;\n}\n\n/**\n * Mapping of entity type name to its plural\n */\nexport interface EntityPluralNames {\n [entityName: string]: string;\n}\n\nexport const PLURAL_NAMES_TOKEN = new InjectionToken(\n '@ngrx/data Plural Names'\n);\n\nexport abstract class Pluralizer {\n abstract pluralize(name: string): string;\n}\n","import { Injectable } from '@angular/core';\nimport { Pluralizer } from '../utils/interfaces';\n\n/**\n * Known resource URLS for specific entity types.\n * Each entity's resource URLS are endpoints that\n * target single entity and multi-entity HTTP operations.\n * Used by the `DefaultHttpUrlGenerator`.\n */\nexport abstract class EntityHttpResourceUrls {\n [entityName: string]: HttpResourceUrls;\n}\n\n/**\n * Resource URLS for HTTP operations that target single entity\n * and multi-entity endpoints.\n */\nexport interface HttpResourceUrls {\n /**\n * The URL path for a single entity endpoint, e.g, `some-api-root/hero/`\n * such as you'd use to add a hero.\n * Example: `httpClient.post('some-api-root/hero/', addedHero)`.\n * Note trailing slash (/).\n */\n entityResourceUrl: string;\n /**\n * The URL path for a multiple-entity endpoint, e.g, `some-api-root/heroes/`\n * such as you'd use when getting all heroes.\n * Example: `httpClient.get('some-api-root/heroes/')`\n * Note trailing slash (/).\n */\n collectionResourceUrl: string;\n}\n\n/**\n * Generate the base part of an HTTP URL for\n * single entity or entity collection resource\n */\nexport abstract class HttpUrlGenerator {\n /**\n * Return the base URL for a single entity resource,\n * e.g., the base URL to get a single hero by its id\n */\n abstract entityResource(\n entityName: string,\n root: string,\n trailingSlashEndpoints: boolean\n ): string;\n\n /**\n * Return the base URL for a collection resource,\n * e.g., the base URL to get all heroes\n */\n abstract collectionResource(entityName: string, root: string): string;\n\n /**\n * Register known single-entity and collection resource URLs for HTTP calls\n * @param entityHttpResourceUrls {EntityHttpResourceUrls} resource urls for specific entity type names\n */\n abstract registerHttpResourceUrls(\n entityHttpResourceUrls?: EntityHttpResourceUrls\n ): void;\n}\n\n@Injectable()\nexport class DefaultHttpUrlGenerator implements HttpUrlGenerator {\n /**\n * Known single-entity and collection resource URLs for HTTP calls.\n * Generator methods returns these resource URLs for a given entity type name.\n * If the resources for an entity type name are not know, it generates\n * and caches a resource name for future use\n */\n protected knownHttpResourceUrls: EntityHttpResourceUrls = {};\n\n constructor(private pluralizer: Pluralizer) {}\n\n /**\n * Get or generate the entity and collection resource URLs for the given entity type name\n * @param entityName {string} Name of the entity type, e.g, 'Hero'\n * @param root {string} Root path to the resource, e.g., 'some-api`\n */\n protected getResourceUrls(\n entityName: string,\n root: string,\n trailingSlashEndpoints = false\n ): HttpResourceUrls {\n let resourceUrls = this.knownHttpResourceUrls[entityName];\n if (!resourceUrls) {\n const nRoot = trailingSlashEndpoints ? root : normalizeRoot(root);\n resourceUrls = {\n entityResourceUrl: `${nRoot}/${entityName}/`.toLowerCase(),\n collectionResourceUrl: `${nRoot}/${this.pluralizer.pluralize(\n entityName\n )}/`.toLowerCase(),\n };\n this.registerHttpResourceUrls({ [entityName]: resourceUrls });\n }\n return resourceUrls;\n }\n\n /**\n * Create the path to a single entity resource\n * @param entityName {string} Name of the entity type, e.g, 'Hero'\n * @param root {string} Root path to the resource, e.g., 'some-api`\n * @returns complete path to resource, e.g, 'some-api/hero'\n */\n entityResource(\n entityName: string,\n root: string,\n trailingSlashEndpoints: boolean\n ): string {\n return this.getResourceUrls(entityName, root, trailingSlashEndpoints)\n .entityResourceUrl;\n }\n\n /**\n * Create the path to a multiple entity (collection) resource\n * @param entityName {string} Name of the entity type, e.g, 'Hero'\n * @param root {string} Root path to the resource, e.g., 'some-api`\n * @returns complete path to resource, e.g, 'some-api/heroes'\n */\n collectionResource(entityName: string, root: string): string {\n return this.getResourceUrls(entityName, root).collectionResourceUrl;\n }\n\n /**\n * Register known single-entity and collection resource URLs for HTTP calls\n * @param entityHttpResourceUrls {EntityHttpResourceUrls} resource urls for specific entity type names\n * Well-formed resource urls end in a '/';\n * Note: this method does not ensure that resource urls are well-formed.\n */\n registerHttpResourceUrls(\n entityHttpResourceUrls: EntityHttpResourceUrls\n ): void {\n this.knownHttpResourceUrls = {\n ...this.knownHttpResourceUrls,\n ...(entityHttpResourceUrls || {}),\n };\n }\n}\n\n/** Remove leading & trailing spaces or slashes */\nexport function normalizeRoot(root: string) {\n return root.replace(/^[/\\s]+|[/\\s]+$/g, '');\n}\n","import { Injectable, isDevMode, Optional } from '@angular/core';\nimport {\n HttpClient,\n HttpErrorResponse,\n HttpHeaders,\n HttpParams,\n} from '@angular/common/http';\n\nimport { Observable, of, throwError } from 'rxjs';\nimport { catchError, delay, map, timeout } from 'rxjs/operators';\n\nimport { Update } from '@ngrx/entity';\n\nimport { DataServiceError } from './data-service-error';\nimport { DefaultDataServiceConfig } from './default-data-service-config';\nimport {\n EntityCollectionDataService,\n HttpMethods,\n HttpOptions,\n QueryParams,\n RequestData,\n} from './interfaces';\nimport { HttpUrlGenerator } from './http-url-generator';\n\n/**\n * A basic, generic entity data service\n * suitable for persistence of most entities.\n * Assumes a common REST-y web API\n */\nexport class DefaultDataService implements EntityCollectionDataService {\n protected _name: string;\n protected delete404OK: boolean;\n protected entityName: string;\n protected entityUrl: string;\n protected entitiesUrl: string;\n protected getDelay = 0;\n protected saveDelay = 0;\n protected timeout = 0;\n protected trailingSlashEndpoints = false;\n\n get name() {\n return this._name;\n }\n\n constructor(\n entityName: string,\n protected http: HttpClient,\n protected httpUrlGenerator: HttpUrlGenerator,\n config?: DefaultDataServiceConfig\n ) {\n this._name = `${entityName} DefaultDataService`;\n this.entityName = entityName;\n const {\n root = 'api',\n delete404OK = true,\n getDelay = 0,\n saveDelay = 0,\n timeout: to = 0,\n trailingSlashEndpoints = false,\n } = config || {};\n this.delete404OK = delete404OK;\n this.entityUrl = httpUrlGenerator.entityResource(\n entityName,\n root,\n trailingSlashEndpoints\n );\n this.entitiesUrl = httpUrlGenerator.collectionResource(entityName, root);\n this.getDelay = getDelay;\n this.saveDelay = saveDelay;\n this.timeout = to;\n }\n\n add(entity: T, options?: HttpOptions): Observable {\n const entityOrError =\n entity || new Error(`No \"${this.entityName}\" entity to add`);\n return this.execute('POST', this.entityUrl, entityOrError, null, options);\n }\n\n delete(\n key: number | string,\n options?: HttpOptions\n ): Observable {\n let err: Error | undefined;\n if (key == null) {\n err = new Error(`No \"${this.entityName}\" key to delete`);\n }\n\n return this.execute(\n 'DELETE',\n this.entityUrl + key,\n err,\n null,\n options\n ).pipe(\n // forward the id of deleted entity as the result of the HTTP DELETE\n map((result) => key as number | string)\n );\n }\n\n getAll(options?: HttpOptions): Observable {\n return this.execute('GET', this.entitiesUrl, null, options);\n }\n\n getById(key: number | string, options?: HttpOptions): Observable {\n let err: Error | undefined;\n if (key == null) {\n err = new Error(`No \"${this.entityName}\" key to get`);\n }\n return this.execute('GET', this.entityUrl + key, err, null, options);\n }\n\n getWithQuery(\n queryParams: QueryParams | string | undefined,\n options?: HttpOptions\n ): Observable {\n const qParams =\n typeof queryParams === 'string'\n ? { fromString: queryParams }\n : { fromObject: queryParams };\n const params = new HttpParams(qParams);\n\n return this.execute(\n 'GET',\n this.entitiesUrl,\n undefined,\n { params },\n options\n );\n }\n\n update(update: Update, options?: HttpOptions): Observable {\n const id = update && update.id;\n const updateOrError =\n id == null\n ? new Error(`No \"${this.entityName}\" update data or id`)\n : update.changes;\n return this.execute(\n 'PUT',\n this.entityUrl + id,\n updateOrError,\n null,\n options\n );\n }\n\n // Important! Only call if the backend service supports upserts as a POST to the target URL\n upsert(entity: T, options?: HttpOptions): Observable {\n const entityOrError =\n entity || new Error(`No \"${this.entityName}\" entity to upsert`);\n return this.execute('POST', this.entityUrl, entityOrError, null, options);\n }\n\n protected execute(\n method: HttpMethods,\n url: string,\n data?: any, // data, error, or undefined/null\n options?: any, // options or undefined/null\n httpOptions?: HttpOptions // these override any options passed via options\n ): Observable {\n let entityActionHttpClientOptions: any = undefined;\n if (httpOptions) {\n entityActionHttpClientOptions = {\n headers: httpOptions?.httpHeaders\n ? new HttpHeaders(httpOptions?.httpHeaders)\n : undefined,\n params: httpOptions?.httpParams\n ? new HttpParams(httpOptions?.httpParams)\n : undefined,\n };\n }\n\n // Now we may have:\n // options: containing headers, params, or any other allowed http options already in angular's api\n // entityActionHttpClientOptions: headers and params in angular's api\n\n // We therefore need to merge these so that the action ones override the\n // existing keys where applicable.\n\n // If any options have been specified, pass them to http client. Note\n // the new http options, if specified, will override any options passed\n // from the deprecated options parameter\n let mergedOptions: any = undefined;\n if (options || entityActionHttpClientOptions) {\n if (isDevMode() && options && entityActionHttpClientOptions) {\n console.warn(\n '@ngrx/data: options.httpParams will be merged with queryParams when both are are provided to getWithQuery(). In the event of a conflict HttpOptions.httpParams will override queryParams`. The queryParams parameter of getWithQuery() will be removed in next major release.'\n );\n }\n\n mergedOptions = {\n ...options,\n headers: entityActionHttpClientOptions?.headers ?? options?.headers,\n params: entityActionHttpClientOptions?.params ?? options?.params,\n };\n }\n\n const req: RequestData = {\n method,\n url,\n data,\n options: mergedOptions,\n };\n\n if (data instanceof Error) {\n return this.handleError(req)(data);\n }\n\n let result$: Observable;\n\n switch (method) {\n case 'DELETE': {\n result$ = this.http.delete(url, mergedOptions);\n if (this.saveDelay) {\n result$ = result$.pipe(delay(this.saveDelay));\n }\n break;\n }\n case 'GET': {\n result$ = this.http.get(url, mergedOptions);\n if (this.getDelay) {\n result$ = result$.pipe(delay(this.getDelay));\n }\n break;\n }\n case 'POST': {\n result$ = this.http.post(url, data, mergedOptions);\n if (this.saveDelay) {\n result$ = result$.pipe(delay(this.saveDelay));\n }\n break;\n }\n // N.B.: It must return an Update\n case 'PUT': {\n result$ = this.http.put(url, data, mergedOptions);\n if (this.saveDelay) {\n result$ = result$.pipe(delay(this.saveDelay));\n }\n break;\n }\n default: {\n const error = new Error('Unimplemented HTTP method, ' + method);\n result$ = throwError(error);\n }\n }\n if (this.timeout) {\n result$ = result$.pipe(timeout(this.timeout + this.saveDelay));\n }\n return result$.pipe(catchError(this.handleError(req)));\n }\n\n private handleError(reqData: RequestData) {\n return (err: any) => {\n const ok = this.handleDelete404(err, reqData);\n if (ok) {\n return ok;\n }\n const error = new DataServiceError(err, reqData);\n return throwError(error);\n };\n }\n\n private handleDelete404(error: HttpErrorResponse, reqData: RequestData) {\n if (\n error.status === 404 &&\n reqData.method === 'DELETE' &&\n this.delete404OK\n ) {\n return of({});\n }\n return undefined;\n }\n}\n\n/**\n * Create a basic, generic entity data service\n * suitable for persistence of most entities.\n * Assumes a common REST-y web API\n */\n@Injectable()\nexport class DefaultDataServiceFactory {\n constructor(\n protected http: HttpClient,\n protected httpUrlGenerator: HttpUrlGenerator,\n @Optional() protected config?: DefaultDataServiceConfig\n ) {\n config = config || {};\n httpUrlGenerator.registerHttpResourceUrls(config.entityHttpResourceUrls);\n }\n\n /**\n * Create a default {EntityCollectionDataService} for the given entity type\n * @param entityName {string} Name of the entity type for this data service\n */\n create(entityName: string): EntityCollectionDataService {\n return new DefaultDataService(\n entityName,\n this.http,\n this.httpUrlGenerator,\n this.config\n );\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { IdSelector, Comparer } from '@ngrx/entity';\n\nimport { EntityDispatcherDefaultOptions } from '../dispatchers/entity-dispatcher-default-options';\nimport { EntityFilterFn } from './entity-filters';\n\nexport const ENTITY_METADATA_TOKEN = new InjectionToken(\n '@ngrx/data Entity Metadata'\n);\n\n/** Metadata that describe an entity type and its collection to @ngrx/data */\nexport interface EntityMetadata {\n entityName: string;\n entityDispatcherOptions?: Partial;\n filterFn?: EntityFilterFn;\n noChangeTracking?: boolean;\n selectId?: IdSelector;\n sortComparer?: false | Comparer;\n additionalCollectionState?: S;\n}\n\n/** Map entity-type name to its EntityMetadata */\nexport interface EntityMetadataMap {\n [entityName: string]: Partial>;\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\n\nimport { createEntityDefinition, EntityDefinition } from './entity-definition';\nimport {\n EntityMetadata,\n EntityMetadataMap,\n ENTITY_METADATA_TOKEN,\n} from './entity-metadata';\n\nexport interface EntityDefinitions {\n [entityName: string]: EntityDefinition;\n}\n\n/** Registry of EntityDefinitions for all cached entity types */\n@Injectable()\nexport class EntityDefinitionService {\n /** {EntityDefinition} for all cached entity types */\n private readonly definitions: EntityDefinitions = {};\n\n constructor(\n @Optional()\n @Inject(ENTITY_METADATA_TOKEN)\n entityMetadataMaps: EntityMetadataMap[]\n ) {\n if (entityMetadataMaps) {\n entityMetadataMaps.forEach((map) => this.registerMetadataMap(map));\n }\n }\n\n /**\n * Get (or create) a data service for entity type\n * @param entityName - the name of the type\n *\n * Examples:\n * getDefinition('Hero'); // definition for Heroes, untyped\n * getDefinition(`Hero`); // definition for Heroes, typed with Hero interface\n */\n getDefinition(\n entityName: string,\n shouldThrow = true\n ): EntityDefinition {\n entityName = entityName.trim();\n const definition = this.definitions[entityName];\n if (!definition && shouldThrow) {\n throw new Error(`No EntityDefinition for entity type \"${entityName}\".`);\n }\n return definition;\n }\n\n //////// Registration methods //////////\n\n /**\n * Create and register the {EntityDefinition} for the {EntityMetadata} of an entity type\n * @param name - the name of the entity type\n * @param definition - {EntityMetadata} for a collection for that entity type\n *\n * Examples:\n * registerMetadata(myHeroEntityDefinition);\n */\n registerMetadata(metadata: EntityMetadata) {\n if (metadata) {\n const definition = createEntityDefinition(metadata);\n this.registerDefinition(definition);\n }\n }\n\n /**\n * Register an EntityMetadataMap.\n * @param metadataMap - a map of entityType names to entity metadata\n *\n * Examples:\n * registerMetadataMap({\n * 'Hero': myHeroMetadata,\n * Villain: myVillainMetadata\n * });\n */\n registerMetadataMap(metadataMap: EntityMetadataMap = {}) {\n // The entity type name should be the same as the map key\n Object.keys(metadataMap || {}).forEach((entityName) =>\n this.registerMetadata({ entityName, ...metadataMap[entityName] })\n );\n }\n\n /**\n * Register an {EntityDefinition} for an entity type\n * @param definition - EntityDefinition of a collection for that entity type\n *\n * Examples:\n * registerDefinition('Hero', myHeroEntityDefinition);\n */\n registerDefinition(definition: EntityDefinition) {\n this.definitions[definition.entityName] = definition;\n }\n\n /**\n * Register a batch of EntityDefinitions.\n * @param definitions - map of entityType name and associated EntityDefinitions to merge.\n *\n * Examples:\n * registerDefinitions({\n * 'Hero': myHeroEntityDefinition,\n * Villain: myVillainEntityDefinition\n * });\n */\n registerDefinitions(definitions: EntityDefinitions) {\n Object.assign(this.definitions, definitions);\n }\n}\n","import { EntityAdapter, createEntityAdapter } from '@ngrx/entity';\nimport { Comparer, IdSelector } from '@ngrx/entity';\n\nimport { EntityDispatcherDefaultOptions } from '../dispatchers/entity-dispatcher-default-options';\nimport { defaultSelectId } from '../utils/utilities';\nimport { EntityCollection } from '../reducers/entity-collection';\nimport { EntityMetadata } from './entity-metadata';\n\nexport interface EntityDefinition {\n entityName: string;\n entityAdapter: EntityAdapter;\n entityDispatcherOptions?: Partial;\n initialState: EntityCollection;\n metadata: EntityMetadata;\n noChangeTracking: boolean;\n selectId: IdSelector;\n sortComparer: false | Comparer;\n}\n\nexport function createEntityDefinition(\n metadata: EntityMetadata\n): EntityDefinition {\n let entityName = metadata.entityName;\n if (!entityName) {\n throw new Error('Missing required entityName');\n }\n metadata.entityName = entityName = entityName.trim();\n const selectId = metadata.selectId || defaultSelectId;\n const sortComparer = (metadata.sortComparer = metadata.sortComparer || false);\n\n const entityAdapter = createEntityAdapter({ selectId, sortComparer });\n\n const entityDispatcherOptions: Partial =\n metadata.entityDispatcherOptions || {};\n\n const initialState: EntityCollection = entityAdapter.getInitialState({\n entityName,\n filter: '',\n loaded: false,\n loading: false,\n changeState: {},\n ...(metadata.additionalCollectionState || {}),\n });\n\n const noChangeTracking = metadata.noChangeTracking === true; // false by default\n\n return {\n entityName,\n entityAdapter,\n entityDispatcherOptions,\n initialState,\n metadata,\n noChangeTracking,\n selectId,\n sortComparer,\n };\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, delay, map, timeout } from 'rxjs/operators';\n\nimport { IdSelector } from '@ngrx/entity';\n\nimport {\n ChangeSetOperation,\n ChangeSet,\n ChangeSetItem,\n ChangeSetUpdate,\n excludeEmptyChangeSetItems,\n} from '../actions/entity-cache-change-set';\nimport { DataServiceError } from './data-service-error';\nimport { DefaultDataServiceConfig } from './default-data-service-config';\nimport { EntityDefinitionService } from '../entity-metadata/entity-definition.service';\nimport { RequestData } from './interfaces';\n\nconst updateOp = ChangeSetOperation.Update;\n\n/**\n * Default data service for making remote service calls targeting the entire EntityCache.\n * See EntityDataService for services that target a single EntityCollection\n */\n@Injectable()\nexport class EntityCacheDataService {\n protected idSelectors: { [entityName: string]: IdSelector } = {};\n protected saveDelay = 0;\n protected timeout = 0;\n\n constructor(\n protected entityDefinitionService: EntityDefinitionService,\n protected http: HttpClient,\n @Optional() config?: DefaultDataServiceConfig\n ) {\n const { saveDelay = 0, timeout: to = 0 } = config || {};\n this.saveDelay = saveDelay;\n this.timeout = to;\n }\n\n /**\n * Save changes to multiple entities across one or more entity collections.\n * Server endpoint must understand the essential SaveEntities protocol,\n * in particular the ChangeSet interface (except for Update).\n * This implementation extracts the entity changes from a ChangeSet Update[] and sends those.\n * It then reconstructs Update[] in the returned observable result.\n * @param changeSet An array of SaveEntityItems.\n * Each SaveEntityItem describe a change operation for one or more entities of a single collection,\n * known by its 'entityName'.\n * @param url The server endpoint that receives this request.\n */\n saveEntities(changeSet: ChangeSet, url: string): Observable {\n changeSet = this.filterChangeSet(changeSet);\n // Assume server doesn't understand @ngrx/entity Update structure;\n // Extract the entity changes from the Update[] and restore on the return from server\n changeSet = this.flattenUpdates(changeSet);\n\n let result$: Observable = this.http\n .post(url, changeSet)\n .pipe(\n map((result) => this.restoreUpdates(result)),\n catchError(this.handleError({ method: 'POST', url, data: changeSet }))\n );\n\n if (this.timeout) {\n result$ = result$.pipe(timeout(this.timeout));\n }\n\n if (this.saveDelay) {\n result$ = result$.pipe(delay(this.saveDelay));\n }\n\n return result$;\n }\n\n // #region helpers\n protected handleError(reqData: RequestData) {\n return (err: any) => {\n const error = new DataServiceError(err, reqData);\n return throwError(error);\n };\n }\n\n /**\n * Filter changeSet to remove unwanted ChangeSetItems.\n * This implementation excludes null and empty ChangeSetItems.\n * @param changeSet ChangeSet with changes to filter\n */\n protected filterChangeSet(changeSet: ChangeSet): ChangeSet {\n return excludeEmptyChangeSetItems(changeSet);\n }\n\n /**\n * Convert the entities in update changes from @ngrx Update structure to just T.\n * Reverse of restoreUpdates().\n */\n protected flattenUpdates(changeSet: ChangeSet): ChangeSet {\n let changes = changeSet.changes;\n if (changes.length === 0) {\n return changeSet;\n }\n let hasMutated = false;\n changes = changes.map((item) => {\n if (item.op === updateOp && item.entities.length > 0) {\n hasMutated = true;\n return {\n ...item,\n entities: (item as ChangeSetUpdate).entities.map((u) => u.changes),\n };\n } else {\n return item;\n }\n }) as ChangeSetItem[];\n return hasMutated ? { ...changeSet, changes } : changeSet;\n }\n\n /**\n * Convert the flattened T entities in update changes back to @ngrx Update structures.\n * Reverse of flattenUpdates().\n */\n protected restoreUpdates(changeSet: ChangeSet): ChangeSet {\n if (changeSet == null) {\n // Nothing? Server probably responded with 204 - No Content because it made no changes to the inserted or updated entities\n return changeSet;\n }\n let changes = changeSet.changes;\n if (changes.length === 0) {\n return changeSet;\n }\n let hasMutated = false;\n changes = changes.map((item) => {\n if (item.op === updateOp) {\n // These are entities, not Updates; convert back to Updates\n hasMutated = true;\n const selectId = this.getIdSelector(item.entityName);\n return {\n ...item,\n entities: item.entities.map((u: any) => ({\n id: selectId(u),\n changes: u,\n })),\n } as ChangeSetUpdate;\n } else {\n return item;\n }\n }) as ChangeSetItem[];\n return hasMutated ? { ...changeSet, changes } : changeSet;\n }\n\n /**\n * Get the id (primary key) selector function for an entity type\n * @param entityName name of the entity type\n */\n protected getIdSelector(entityName: string) {\n let idSelector = this.idSelectors[entityName];\n if (!idSelector) {\n idSelector =\n this.entityDefinitionService.getDefinition(entityName).selectId;\n this.idSelectors[entityName] = idSelector;\n }\n return idSelector;\n }\n // #endregion helpers\n}\n","import { Injectable } from '@angular/core';\n\nimport { EntityCollectionDataService } from './interfaces';\nimport { DefaultDataServiceFactory } from './default-data.service';\n\n/**\n * Registry of EntityCollection data services that make REST-like CRUD calls\n * to entity collection endpoints.\n */\n@Injectable()\nexport class EntityDataService {\n protected services: { [name: string]: EntityCollectionDataService } = {};\n\n // TODO: Optionally inject specialized entity data services\n // for those that aren't derived from BaseDataService.\n constructor(protected defaultDataServiceFactory: DefaultDataServiceFactory) {}\n\n /**\n * Get (or create) a data service for entity type\n * @param entityName - the name of the type\n *\n * Examples:\n * getService('Hero'); // data service for Heroes, untyped\n * getService('Hero'); // data service for Heroes, typed as Hero\n */\n getService(entityName: string): EntityCollectionDataService {\n entityName = entityName.trim();\n let service = this.services[entityName];\n if (!service) {\n service = this.defaultDataServiceFactory.create(entityName);\n this.services[entityName] = service;\n }\n return service;\n }\n\n /**\n * Register an EntityCollectionDataService for an entity type\n * @param entityName - the name of the entity type\n * @param service - data service for that entity type\n *\n * Examples:\n * registerService('Hero', myHeroDataService);\n * registerService('Villain', myVillainDataService);\n */\n registerService(\n entityName: string,\n service: EntityCollectionDataService\n ) {\n this.services[entityName.trim()] = service;\n }\n\n /**\n * Register a batch of data services.\n * @param services - data services to merge into existing services\n *\n * Examples:\n * registerServices({\n * Hero: myHeroDataService,\n * Villain: myVillainDataService\n * });\n */\n registerServices(services: {\n [name: string]: EntityCollectionDataService;\n }) {\n this.services = { ...this.services, ...services };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Action } from '@ngrx/store';\n\nimport {\n DataServiceError,\n EntityActionDataServiceError,\n} from './data-service-error';\nimport { EntityAction } from '../actions/entity-action';\nimport { EntityActionFactory } from '../actions/entity-action-factory';\nimport { makeErrorOp, makeSuccessOp } from '../actions/entity-op';\nimport { Logger } from '../utils/interfaces';\n\n/**\n * Handling of responses from persistence operation\n */\nexport abstract class PersistenceResultHandler {\n /** Handle successful result of persistence operation for an action */\n abstract handleSuccess(originalAction: EntityAction): (data: any) => Action;\n\n /** Handle error result of persistence operation for an action */\n abstract handleError(\n originalAction: EntityAction\n ): (\n error: DataServiceError | Error\n ) => EntityAction;\n}\n\n/**\n * Default handling of responses from persistence operation,\n * specifically an EntityDataService\n */\n@Injectable()\nexport class DefaultPersistenceResultHandler\n implements PersistenceResultHandler\n{\n constructor(\n private logger: Logger,\n private entityActionFactory: EntityActionFactory\n ) {}\n\n /** Handle successful result of persistence operation on an EntityAction */\n handleSuccess(originalAction: EntityAction): (data: any) => Action {\n const successOp = makeSuccessOp(originalAction.payload.entityOp);\n return (data: any) =>\n this.entityActionFactory.createFromAction(originalAction, {\n entityOp: successOp,\n data,\n });\n }\n\n /** Handle error result of persistence operation on an EntityAction */\n handleError(\n originalAction: EntityAction\n ): (\n error: DataServiceError | Error\n ) => EntityAction {\n const errorOp = makeErrorOp(originalAction.payload.entityOp);\n\n return (err: DataServiceError | Error) => {\n const error =\n err instanceof DataServiceError ? err : new DataServiceError(err, null);\n const errorData: EntityActionDataServiceError = { error, originalAction };\n this.logger.error(errorData);\n const action =\n this.entityActionFactory.createFromAction(\n originalAction,\n {\n entityOp: errorOp,\n data: errorData,\n }\n );\n return action;\n };\n }\n}\n","import { Action, Store } from '@ngrx/store';\nimport { IdSelector, Update } from '@ngrx/entity';\n\nimport { EntityAction, EntityActionOptions } from '../actions/entity-action';\nimport { EntityActionGuard } from '../actions/entity-action-guard';\nimport { EntityCommands } from './entity-commands';\nimport { EntityCache } from '../reducers/entity-cache';\nimport { EntityOp } from '../actions/entity-op';\n\n/**\n * Dispatches EntityCollection actions to their reducers and effects.\n * The substance of the interface is in EntityCommands.\n */\nexport interface EntityDispatcher extends EntityCommands {\n /** Name of the entity type */\n readonly entityName: string;\n\n /**\n * Utility class with methods to validate EntityAction payloads.\n */\n readonly guard: EntityActionGuard;\n\n /** Returns the primary key (id) of this entity */\n readonly selectId: IdSelector;\n\n /** Returns the store, scoped to the EntityCache */\n readonly store: Store;\n\n /**\n * Create an {EntityAction} for this entity type.\n * @param op {EntityOp} the entity operation\n * @param [data] the action data\n * @param [options] additional options\n * @returns the EntityAction\n */\n createEntityAction

(\n op: EntityOp,\n data?: P,\n options?: EntityActionOptions\n ): EntityAction

;\n\n /**\n * Create an {EntityAction} for this entity type and\n * dispatch it immediately to the store.\n * @param op {EntityOp} the entity operation\n * @param [data] the action data\n * @param [options] additional options\n * @returns the dispatched EntityAction\n */\n createAndDispatch

(\n op: EntityOp,\n data?: P,\n options?: EntityActionOptions\n ): EntityAction

;\n\n /**\n * Dispatch an Action to the store.\n * @param action the Action\n * @returns the dispatched Action\n */\n dispatch(action: Action): Action;\n\n /**\n * Convert an entity (or partial entity) into the `Update` object\n * `update...` and `upsert...` methods take `Update` args\n */\n toUpdate(entity: Partial): Update;\n}\n\n/**\n * Persistence operation canceled\n */\nexport class PersistanceCanceled {\n constructor(public readonly message?: string) {\n this.message = message || 'Canceled by user';\n }\n}\n","import { Injectable } from '@angular/core';\n\n/**\n * Generates a string id beginning 'CRID',\n * followed by a monotonically increasing integer for use as a correlation id.\n * As they are produced locally by a singleton service,\n * these ids are guaranteed to be unique only\n * for the duration of a single client browser instance.\n * Ngrx entity dispatcher query and save methods call this service to generate default correlation ids.\n * Do NOT use for entity keys.\n */\n@Injectable()\nexport class CorrelationIdGenerator {\n /** Seed for the ids */\n protected seed = 0;\n /** Prefix of the id, 'CRID; */\n protected prefix = 'CRID';\n /** Return the next correlation id */\n next() {\n this.seed += 1;\n return this.prefix + this.seed;\n }\n}\n","import { Injectable } from '@angular/core';\n/**\n * Default options for EntityDispatcher behavior\n * such as whether `add()` is optimistic or pessimistic by default.\n * An optimistic save modifies the collection immediately and before saving to the server.\n * A pessimistic save modifies the collection after the server confirms the save was successful.\n * This class initializes the defaults to the safest values.\n * Provide an alternative to change the defaults for all entity collections.\n */\n@Injectable()\nexport class EntityDispatcherDefaultOptions {\n /** True if added entities are saved optimistically; false if saved pessimistically. */\n optimisticAdd = false;\n /** True if deleted entities are saved optimistically; false if saved pessimistically. */\n optimisticDelete = true;\n /** True if updated entities are saved optimistically; false if saved pessimistically. */\n optimisticUpdate = false;\n /** True if upsert entities are saved optimistically; false if saved pessimistically. */\n optimisticUpsert = false;\n /** True if entities in a cache saveEntities request are saved optimistically; false if saved pessimistically. */\n optimisticSaveEntities = false;\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { Action, ScannedActionsSubject, Store } from '@ngrx/store';\n\nimport { Observable, of, Subscription, throwError } from 'rxjs';\nimport { filter, mergeMap, shareReplay, take } from 'rxjs/operators';\n\nimport { CorrelationIdGenerator } from '../utils/correlation-id-generator';\nimport { EntityActionOptions } from '../actions/entity-action';\nimport { EntityCache } from '../reducers/entity-cache';\nimport { EntityDispatcherDefaultOptions } from './entity-dispatcher-default-options';\n\nimport { MergeStrategy } from '../actions/merge-strategy';\nimport { PersistanceCanceled } from './entity-dispatcher';\n\nimport { ChangeSet, ChangeSetItem } from '../actions/entity-cache-change-set';\nimport {\n ClearCollections,\n EntityCacheAction,\n EntityCacheQuerySet,\n LoadCollections,\n MergeQuerySet,\n SetEntityCache,\n SaveEntities,\n SaveEntitiesCancel,\n SaveEntitiesError,\n SaveEntitiesSuccess,\n} from '../actions/entity-cache-action';\n\n/**\n * Dispatches Entity Cache actions to the EntityCache reducer\n */\n@Injectable()\nexport class EntityCacheDispatcher {\n /**\n * Actions scanned by the store after it processed them with reducers.\n * A replay observable of the most recent action reduced by the store.\n */\n reducedActions$: Observable;\n private raSubscription: Subscription;\n\n constructor(\n /** Generates correlation ids for query and save methods */\n private correlationIdGenerator: CorrelationIdGenerator,\n /**\n * Dispatcher options configure dispatcher behavior such as\n * whether add is optimistic or pessimistic by default.\n */\n private defaultDispatcherOptions: EntityDispatcherDefaultOptions,\n /** Actions scanned by the store after it processed them with reducers. */\n @Inject(ScannedActionsSubject) scannedActions$: Observable,\n /** The store, scoped to the EntityCache */\n private store: Store\n ) {\n // Replay because sometimes in tests will fake data service with synchronous observable\n // which makes subscriber miss the dispatched actions.\n // Of course that's a testing mistake. But easy to forget, leading to painful debugging.\n this.reducedActions$ = scannedActions$.pipe(shareReplay(1));\n // Start listening so late subscriber won't miss the most recent action.\n this.raSubscription = this.reducedActions$.subscribe();\n }\n\n /**\n * Dispatch an Action to the store.\n * @param action the Action\n * @returns the dispatched Action\n */\n dispatch(action: Action): Action {\n this.store.dispatch(action);\n return action;\n }\n\n /**\n * Dispatch action to cancel the saveEntities request with matching correlation id.\n * @param correlationId The correlation id for the corresponding action\n * @param [reason] explains why canceled and by whom.\n * @param [entityNames] array of entity names so can turn off loading flag for their collections.\n * @param [tag] tag to identify the operation from the app perspective.\n */\n cancelSaveEntities(\n correlationId: any,\n reason?: string,\n entityNames?: string[],\n tag?: string\n ): void {\n if (!correlationId) {\n throw new Error('Missing correlationId');\n }\n const action = new SaveEntitiesCancel(\n correlationId,\n reason,\n entityNames,\n tag\n );\n this.dispatch(action);\n }\n\n /** Clear the named entity collections in cache\n * @param [collections] Array of names of the collections to clear.\n * If empty array, does nothing. If null/undefined/no array, clear all collections.\n * @param [tag] tag to identify the operation from the app perspective.\n */\n clearCollections(collections?: string[], tag?: string) {\n this.dispatch(new ClearCollections(collections, tag));\n }\n\n /**\n * Load multiple entity collections at the same time.\n * before any selectors$ observables emit.\n * @param collections The collections to load, typically the result of a query.\n * @param [tag] tag to identify the operation from the app perspective.\n * in the form of a map of entity collections.\n */\n loadCollections(collections: EntityCacheQuerySet, tag?: string) {\n this.dispatch(new LoadCollections(collections, tag));\n }\n\n /**\n * Merges entities from a query result\n * that returned entities from multiple collections.\n * Corresponding entity cache reducer should add and update all collections\n * at the same time, before any selectors$ observables emit.\n * @param querySet The result of the query in the form of a map of entity collections.\n * These are the entity data to merge into the respective collections.\n * @param mergeStrategy How to merge a queried entity when it is already in the collection.\n * The default is MergeStrategy.PreserveChanges\n * @param [tag] tag to identify the operation from the app perspective.\n */\n mergeQuerySet(\n querySet: EntityCacheQuerySet,\n mergeStrategy?: MergeStrategy,\n tag?: string\n ) {\n this.dispatch(new MergeQuerySet(querySet, mergeStrategy, tag));\n }\n\n /**\n * Create entity cache action for replacing the entire entity cache.\n * Dangerous because brute force but useful as when re-hydrating an EntityCache\n * from local browser storage when the application launches.\n * @param cache New state of the entity cache\n * @param [tag] tag to identify the operation from the app perspective.\n */\n setEntityCache(cache: EntityCache, tag?: string) {\n this.dispatch(new SetEntityCache(cache, tag));\n }\n\n /**\n * Dispatch action to save multiple entity changes to remote storage.\n * Relies on an Ngrx Effect such as EntityEffects.saveEntities$.\n * Important: only call if your server supports the SaveEntities protocol\n * through your EntityDataService.saveEntities method.\n * @param changes Either the entities to save, as an array of {ChangeSetItem}, or\n * a ChangeSet that holds such changes.\n * @param url The server url which receives the save request\n * @param [options] options such as tag, correlationId, isOptimistic, and mergeStrategy.\n * These values are defaulted if not supplied.\n * @returns A terminating Observable with data returned from the server\n * after server reports successful save OR the save error.\n * TODO: should return the matching entities from cache rather than the raw server data.\n */\n saveEntities(\n changes: ChangeSetItem[] | ChangeSet,\n url: string,\n options?: EntityActionOptions\n ): Observable {\n const changeSet = Array.isArray(changes) ? { changes } : changes;\n options = options || {};\n const correlationId =\n options.correlationId == null\n ? this.correlationIdGenerator.next()\n : options.correlationId;\n const isOptimistic =\n options.isOptimistic == null\n ? this.defaultDispatcherOptions.optimisticSaveEntities || false\n : options.isOptimistic === true;\n const tag = options.tag || 'Save Entities';\n options = { ...options, correlationId, isOptimistic, tag };\n const action = new SaveEntities(changeSet, url, options);\n this.dispatch(action);\n return this.getSaveEntitiesResponseData$(options.correlationId).pipe(\n shareReplay(1)\n );\n }\n\n /**\n * Return Observable of data from the server-success SaveEntities action with\n * the given Correlation Id, after that action was processed by the ngrx store.\n * or else put the server error on the Observable error channel.\n * @param crid The correlationId for both the save and response actions.\n */\n private getSaveEntitiesResponseData$(crid: any): Observable {\n /**\n * reducedActions$ must be replay observable of the most recent action reduced by the store.\n * because the response action might have been dispatched to the store\n * before caller had a chance to subscribe.\n */\n return this.reducedActions$.pipe(\n filter(\n (act: Action) =>\n act.type === EntityCacheAction.SAVE_ENTITIES_SUCCESS ||\n act.type === EntityCacheAction.SAVE_ENTITIES_ERROR ||\n act.type === EntityCacheAction.SAVE_ENTITIES_CANCEL\n ),\n filter((act: Action) => crid === (act as any).payload.correlationId),\n take(1),\n mergeMap((act) => {\n return act.type === EntityCacheAction.SAVE_ENTITIES_CANCEL\n ? throwError(\n new PersistanceCanceled(\n (act as SaveEntitiesCancel).payload.reason\n )\n )\n : act.type === EntityCacheAction.SAVE_ENTITIES_SUCCESS\n ? of((act as SaveEntitiesSuccess).payload.changeSet)\n : throwError((act as SaveEntitiesError).payload);\n })\n );\n }\n}\n","import { Action, createSelector, Store } from '@ngrx/store';\nimport { IdSelector, Update } from '@ngrx/entity';\n\nimport { Observable, of, throwError } from 'rxjs';\nimport {\n filter,\n map,\n mergeMap,\n shareReplay,\n withLatestFrom,\n take,\n} from 'rxjs/operators';\n\nimport { CorrelationIdGenerator } from '../utils/correlation-id-generator';\nimport { defaultSelectId, toUpdateFactory } from '../utils/utilities';\nimport { EntityAction, EntityActionOptions } from '../actions/entity-action';\nimport { EntityActionFactory } from '../actions/entity-action-factory';\nimport { EntityActionGuard } from '../actions/entity-action-guard';\nimport { EntityCache } from '../reducers/entity-cache';\nimport { EntityCacheSelector } from '../selectors/entity-cache-selector';\nimport { EntityCollection } from '../reducers/entity-collection';\nimport { EntityCommands } from './entity-commands';\nimport { EntityDispatcher, PersistanceCanceled } from './entity-dispatcher';\nimport { EntityDispatcherDefaultOptions } from './entity-dispatcher-default-options';\nimport { EntityOp, OP_ERROR, OP_SUCCESS } from '../actions/entity-op';\nimport { MergeStrategy } from '../actions/merge-strategy';\nimport { QueryParams } from '../dataservices/interfaces';\nimport { UpdateResponseData } from '../actions/update-response-data';\n\n/**\n * Dispatches EntityCollection actions to their reducers and effects (default implementation).\n * All save commands rely on an Ngrx Effect such as `EntityEffects.persist$`.\n */\nexport class EntityDispatcherBase implements EntityDispatcher {\n /** Utility class with methods to validate EntityAction payloads.*/\n guard: EntityActionGuard;\n\n private entityCollection$: Observable>;\n\n /**\n * Convert an entity (or partial entity) into the `Update` object\n * `update...` and `upsert...` methods take `Update` args\n */\n toUpdate: (entity: Partial) => Update;\n\n constructor(\n /** Name of the entity type for which entities are dispatched */\n public entityName: string,\n /** Creates an {EntityAction} */\n public entityActionFactory: EntityActionFactory,\n /** The store, scoped to the EntityCache */\n public store: Store,\n /** Returns the primary key (id) of this entity */\n public selectId: IdSelector = defaultSelectId,\n /**\n * Dispatcher options configure dispatcher behavior such as\n * whether add is optimistic or pessimistic by default.\n */\n private defaultDispatcherOptions: EntityDispatcherDefaultOptions,\n /** Actions scanned by the store after it processed them with reducers. */\n private reducedActions$: Observable,\n /** Store selector for the EntityCache */\n entityCacheSelector: EntityCacheSelector,\n /** Generates correlation ids for query and save methods */\n private correlationIdGenerator: CorrelationIdGenerator\n ) {\n this.guard = new EntityActionGuard(entityName, selectId);\n this.toUpdate = toUpdateFactory(selectId);\n\n const collectionSelector = createSelector(\n entityCacheSelector,\n (cache) => cache[entityName] as EntityCollection\n );\n this.entityCollection$ = store.select(collectionSelector);\n }\n\n /**\n * Create an {EntityAction} for this entity type.\n * @param entityOp {EntityOp} the entity operation\n * @param [data] the action data\n * @param [options] additional options\n * @returns the EntityAction\n */\n createEntityAction

(\n entityOp: EntityOp,\n data?: P,\n options?: EntityActionOptions\n ): EntityAction

{\n return this.entityActionFactory.create({\n entityName: this.entityName,\n entityOp,\n data,\n ...options,\n });\n }\n\n /**\n * Create an {EntityAction} for this entity type and\n * dispatch it immediately to the store.\n * @param op {EntityOp} the entity operation\n * @param [data] the action data\n * @param [options] additional options\n * @returns the dispatched EntityAction\n */\n createAndDispatch

(\n op: EntityOp,\n data?: P,\n options?: EntityActionOptions\n ): EntityAction

{\n const action = this.createEntityAction(op, data, options);\n this.dispatch(action);\n return action;\n }\n\n /**\n * Dispatch an Action to the store.\n * @param action the Action\n * @returns the dispatched Action\n */\n dispatch(action: Action): Action {\n this.store.dispatch(action);\n return action;\n }\n\n // #region Query and save operations\n\n /**\n * Dispatch action to save a new entity to remote storage.\n * @param entity entity to add, which may omit its key if pessimistic and the server creates the key;\n * must have a key if optimistic save.\n * @returns A terminating Observable of the entity\n * after server reports successful save or the save error.\n */\n add(entity: T, options?: EntityActionOptions): Observable {\n options = this.setSaveEntityActionOptions(\n options,\n this.defaultDispatcherOptions.optimisticAdd\n );\n const action = this.createEntityAction(\n EntityOp.SAVE_ADD_ONE,\n entity,\n options\n );\n if (options.isOptimistic) {\n this.guard.mustBeEntity(action);\n }\n this.dispatch(action);\n return this.getResponseData$(options.correlationId).pipe(\n // Use the returned entity data's id to get the entity from the collection\n // as it might be different from the entity returned from the server.\n withLatestFrom(this.entityCollection$),\n map(([e, collection]) => collection.entities[this.selectId(e)]!),\n shareReplay(1)\n );\n }\n\n /**\n * Dispatch action to cancel the persistence operation (query or save).\n * Will cause save observable to error with a PersistenceCancel error.\n * Caller is responsible for undoing changes in cache from pending optimistic save\n * @param correlationId The correlation id for the corresponding EntityAction\n * @param [reason] explains why canceled and by whom.\n */\n cancel(\n correlationId: any,\n reason?: string,\n options?: EntityActionOptions\n ): void {\n if (!correlationId) {\n throw new Error('Missing correlationId');\n }\n this.createAndDispatch(EntityOp.CANCEL_PERSIST, reason, { correlationId });\n }\n\n /**\n * Dispatch action to delete entity from remote storage by key.\n * @param key The primary key of the entity to remove\n * @returns A terminating Observable of the deleted key\n * after server reports successful save or the save error.\n */\n delete(entity: T, options?: EntityActionOptions): Observable;\n\n /**\n * Dispatch action to delete entity from remote storage by key.\n * @param key The entity to delete\n * @returns A terminating Observable of the deleted key\n * after server reports successful save or the save error.\n */\n delete(\n key: number | string,\n options?: EntityActionOptions\n ): Observable;\n delete(\n arg: number | string | T,\n options?: EntityActionOptions\n ): Observable {\n options = this.setSaveEntityActionOptions(\n options,\n this.defaultDispatcherOptions.optimisticDelete\n );\n const key = this.getKey(arg);\n const action = this.createEntityAction(\n EntityOp.SAVE_DELETE_ONE,\n key,\n options\n );\n this.guard.mustBeKey(action);\n this.dispatch(action);\n return this.getResponseData$(options.correlationId).pipe(\n map(() => key),\n shareReplay(1)\n );\n }\n\n /**\n * Dispatch action to query remote storage for all entities and\n * merge the queried entities into the cached collection.\n * @returns A terminating Observable of the queried entities that are in the collection\n * after server reports success query or the query error.\n * @see load()\n */\n getAll(options?: EntityActionOptions): Observable {\n options = this.setQueryEntityActionOptions(options);\n const action = this.createEntityAction(EntityOp.QUERY_ALL, null, options);\n this.dispatch(action);\n return this.getResponseData$(options.correlationId).pipe(\n // Use the returned entity ids to get the entities from the collection\n // as they might be different from the entities returned from the server\n // because of unsaved changes (deletes or updates).\n withLatestFrom(this.entityCollection$),\n map(([entities, collection]) =>\n entities.reduce((acc, e) => {\n const entity = collection.entities[this.selectId(e)];\n if (entity) {\n acc.push(entity); // only return an entity found in the collection\n }\n return acc;\n }, [] as T[])\n ),\n shareReplay(1)\n );\n }\n\n /**\n * Dispatch action to query remote storage for the entity with this primary key.\n * If the server returns an entity,\n * merge it into the cached collection.\n * @returns A terminating Observable of the collection\n * after server reports successful query or the query error.\n */\n getByKey(key: any, options?: EntityActionOptions): Observable {\n options = this.setQueryEntityActionOptions(options);\n const action = this.createEntityAction(EntityOp.QUERY_BY_KEY, key, options);\n this.dispatch(action);\n return this.getResponseData$(options.correlationId).pipe(\n // Use the returned entity data's id to get the entity from the collection\n // as it might be different from the entity returned from the server.\n withLatestFrom(this.entityCollection$),\n map(\n ([entity, collection]) => collection.entities[this.selectId(entity)]!\n ),\n shareReplay(1)\n );\n }\n\n /**\n * Dispatch action to query remote storage for the entities that satisfy a query expressed\n * with either a query parameter map or an HTTP URL query string,\n * and merge the results into the cached collection.\n * @param queryParams the query in a form understood by the server\n * @returns A terminating Observable of the queried entities\n * after server reports successful query or the query error.\n */\n getWithQuery(\n queryParams: QueryParams | string,\n options?: EntityActionOptions\n ): Observable {\n options = this.setQueryEntityActionOptions(options);\n const action = this.createEntityAction(\n EntityOp.QUERY_MANY,\n queryParams,\n options\n );\n this.dispatch(action);\n return this.getResponseData$(options.correlationId).pipe(\n // Use the returned entity ids to get the entities from the collection\n // as they might be different from the entities returned from the server\n // because of unsaved changes (deletes or updates).\n withLatestFrom(this.entityCollection$),\n map(([entities, collection]) =>\n entities.reduce((acc, e) => {\n const entity = collection.entities[this.selectId(e)];\n if (entity) {\n acc.push(entity); // only return an entity found in the collection\n }\n return acc;\n }, [] as T[])\n ),\n shareReplay(1)\n );\n }\n\n /**\n * Dispatch action to query remote storage for all entities and\n * completely replace the cached collection with the queried entities.\n * @returns A terminating Observable of the entities in the collection\n * after server reports successful query or the query error.\n * @see getAll\n */\n load(options?: EntityActionOptions): Observable {\n options = this.setQueryEntityActionOptions(options);\n const action = this.createEntityAction(EntityOp.QUERY_LOAD, null, options);\n this.dispatch(action);\n return this.getResponseData$(options.correlationId).pipe(\n shareReplay(1)\n );\n }\n\n /**\n * Dispatch action to query remote storage for the entities that satisfy a query expressed\n * with either a query parameter map or an HTTP URL query string,\n * and completely replace the cached collection with the queried entities.\n * @param queryParams the query in a form understood by the server\n * @param [options] options that influence load behavior\n * @returns A terminating Observable of the queried entities\n * after server reports successful query or the query error.\n */\n loadWithQuery(queryParams: QueryParams | string,\n options?: EntityActionOptions\n ): Observable {\n options = this.setQueryEntityActionOptions(options);\n const action = this.createEntityAction(EntityOp.QUERY_MANY, queryParams, options);\n this.dispatch(action);\n return this.getResponseData$(options.correlationId).pipe(\n shareReplay(1)\n );\n }\n\n /**\n * Dispatch action to save the updated entity (or partial entity) in remote storage.\n * The update entity may be partial (but must have its key)\n * in which case it patches the existing entity.\n * @param entity update entity, which might be a partial of T but must at least have its key.\n * @returns A terminating Observable of the updated entity\n * after server reports successful save or the save error.\n */\n update(entity: Partial, options?: EntityActionOptions): Observable {\n // update entity might be a partial of T but must at least have its key.\n // pass the Update structure as the payload\n const update = this.toUpdate(entity);\n options = this.setSaveEntityActionOptions(\n options,\n this.defaultDispatcherOptions.optimisticUpdate\n );\n const action = this.createEntityAction(\n EntityOp.SAVE_UPDATE_ONE,\n update,\n options\n );\n if (options.isOptimistic) {\n this.guard.mustBeUpdate(action);\n }\n this.dispatch(action);\n return this.getResponseData$>(\n options.correlationId\n ).pipe(\n // Use the update entity data id to get the entity from the collection\n // as might be different from the entity returned from the server\n // because the id changed or there are unsaved changes.\n map((updateData) => updateData.changes),\n withLatestFrom(this.entityCollection$),\n map(([e, collection]) => collection.entities[this.selectId(e as T)]!),\n shareReplay(1)\n );\n }\n\n /**\n * Dispatch action to save a new or existing entity to remote storage.\n * Only dispatch this action if your server supports upsert.\n * @param entity entity to add, which may omit its key if pessimistic and the server creates the key;\n * must have a key if optimistic save.\n * @returns A terminating Observable of the entity\n * after server reports successful save or the save error.\n */\n upsert(entity: T, options?: EntityActionOptions): Observable {\n options = this.setSaveEntityActionOptions(\n options,\n this.defaultDispatcherOptions.optimisticUpsert\n );\n const action = this.createEntityAction(\n EntityOp.SAVE_UPSERT_ONE,\n entity,\n options\n );\n if (options.isOptimistic) {\n this.guard.mustBeEntity(action);\n }\n this.dispatch(action);\n return this.getResponseData$(options.correlationId).pipe(\n // Use the returned entity data's id to get the entity from the collection\n // as it might be different from the entity returned from the server.\n withLatestFrom(this.entityCollection$),\n map(([e, collection]) => collection.entities[this.selectId(e)]!),\n shareReplay(1)\n );\n }\n // #endregion Query and save operations\n\n // #region Cache-only operations that do not update remote storage\n\n // Unguarded for performance.\n // EntityCollectionReducer runs a guard (which throws)\n // Developer should understand cache-only methods well enough\n // to call them with the proper entities.\n // May reconsider and add guards in future.\n\n /**\n * Replace all entities in the cached collection.\n * Does not save to remote storage.\n */\n addAllToCache(entities: T[], options?: EntityActionOptions): void {\n this.createAndDispatch(EntityOp.ADD_ALL, entities, options);\n }\n\n /**\n * Add a new entity directly to the cache.\n * Does not save to remote storage.\n * Ignored if an entity with the same primary key is already in cache.\n */\n addOneToCache(entity: T, options?: EntityActionOptions): void {\n this.createAndDispatch(EntityOp.ADD_ONE, entity, options);\n }\n\n /**\n * Add multiple new entities directly to the cache.\n * Does not save to remote storage.\n * Entities with primary keys already in cache are ignored.\n */\n addManyToCache(entities: T[], options?: EntityActionOptions): void {\n this.createAndDispatch(EntityOp.ADD_MANY, entities, options);\n }\n\n /** Clear the cached entity collection */\n clearCache(options?: EntityActionOptions): void {\n this.createAndDispatch(EntityOp.REMOVE_ALL, undefined, options);\n }\n\n /**\n * Remove an entity directly from the cache.\n * Does not delete that entity from remote storage.\n * @param entity The entity to remove\n */\n removeOneFromCache(entity: T, options?: EntityActionOptions): void;\n\n /**\n * Remove an entity directly from the cache.\n * Does not delete that entity from remote storage.\n * @param key The primary key of the entity to remove\n */\n removeOneFromCache(key: number | string, options?: EntityActionOptions): void;\n removeOneFromCache(\n arg: (number | string) | T,\n options?: EntityActionOptions\n ): void {\n this.createAndDispatch(EntityOp.REMOVE_ONE, this.getKey(arg), options);\n }\n\n /**\n * Remove multiple entities directly from the cache.\n * Does not delete these entities from remote storage.\n * @param entity The entities to remove\n */\n removeManyFromCache(entities: T[], options?: EntityActionOptions): void;\n\n /**\n * Remove multiple entities directly from the cache.\n * Does not delete these entities from remote storage.\n * @param keys The primary keys of the entities to remove\n */\n removeManyFromCache(\n keys: (number | string)[],\n options?: EntityActionOptions\n ): void;\n removeManyFromCache(\n args: (number | string)[] | T[],\n options?: EntityActionOptions\n ): void {\n if (!args || args.length === 0) {\n return;\n }\n const keys =\n typeof args[0] === 'object'\n ? // if array[0] is a key, assume they're all keys\n (args).map((arg) => this.getKey(arg))\n : args;\n this.createAndDispatch(EntityOp.REMOVE_MANY, keys, options);\n }\n\n /**\n * Update a cached entity directly.\n * Does not update that entity in remote storage.\n * Ignored if an entity with matching primary key is not in cache.\n * The update entity may be partial (but must have its key)\n * in which case it patches the existing entity.\n */\n updateOneInCache(entity: Partial, options?: EntityActionOptions): void {\n // update entity might be a partial of T but must at least have its key.\n // pass the Update structure as the payload\n const update: Update = this.toUpdate(entity);\n this.createAndDispatch(EntityOp.UPDATE_ONE, update, options);\n }\n\n /**\n * Update multiple cached entities directly.\n * Does not update these entities in remote storage.\n * Entities whose primary keys are not in cache are ignored.\n * Update entities may be partial but must at least have their keys.\n * such partial entities patch their cached counterparts.\n */\n updateManyInCache(\n entities: Partial[],\n options?: EntityActionOptions\n ): void {\n if (!entities || entities.length === 0) {\n return;\n }\n const updates: Update[] = entities.map((entity) =>\n this.toUpdate(entity)\n );\n this.createAndDispatch(EntityOp.UPDATE_MANY, updates, options);\n }\n\n /**\n * Add or update a new entity directly to the cache.\n * Does not save to remote storage.\n * Upsert entity might be a partial of T but must at least have its key.\n * Pass the Update structure as the payload\n */\n upsertOneInCache(entity: Partial, options?: EntityActionOptions): void {\n this.createAndDispatch(EntityOp.UPSERT_ONE, entity, options);\n }\n\n /**\n * Add or update multiple cached entities directly.\n * Does not save to remote storage.\n */\n upsertManyInCache(\n entities: Partial[],\n options?: EntityActionOptions\n ): void {\n if (!entities || entities.length === 0) {\n return;\n }\n this.createAndDispatch(EntityOp.UPSERT_MANY, entities, options);\n }\n\n /**\n * Set the pattern that the collection's filter applies\n * when using the `filteredEntities` selector.\n */\n setFilter(pattern: any): void {\n this.createAndDispatch(EntityOp.SET_FILTER, pattern);\n }\n\n /** Set the loaded flag */\n setLoaded(isLoaded: boolean): void {\n this.createAndDispatch(EntityOp.SET_LOADED, !!isLoaded);\n }\n\n /** Set the loading flag */\n setLoading(isLoading: boolean): void {\n this.createAndDispatch(EntityOp.SET_LOADING, !!isLoading);\n }\n // #endregion Cache-only operations that do not update remote storage\n\n // #region private helpers\n\n /** Get key from entity (unless arg is already a key) */\n private getKey(arg: number | string | T) {\n return typeof arg === 'object'\n ? this.selectId(arg)\n : (arg as number | string);\n }\n\n /**\n * Return Observable of data from the server-success EntityAction with\n * the given Correlation Id, after that action was processed by the ngrx store.\n * or else put the server error on the Observable error channel.\n * @param crid The correlationId for both the save and response actions.\n */\n private getResponseData$(crid: any): Observable {\n /**\n * reducedActions$ must be replay observable of the most recent action reduced by the store.\n * because the response action might have been dispatched to the store\n * before caller had a chance to subscribe.\n */\n return this.reducedActions$.pipe(\n filter((act: any) => !!act.payload),\n filter((act: EntityAction) => {\n const { correlationId, entityName, entityOp } = act.payload;\n return (\n entityName === this.entityName &&\n correlationId === crid &&\n (entityOp.endsWith(OP_SUCCESS) ||\n entityOp.endsWith(OP_ERROR) ||\n entityOp === EntityOp.CANCEL_PERSIST)\n );\n }),\n take(1),\n mergeMap((act) => {\n const { entityOp } = act.payload;\n return entityOp === EntityOp.CANCEL_PERSIST\n ? throwError(new PersistanceCanceled(act.payload.data))\n : entityOp.endsWith(OP_SUCCESS)\n ? of(act.payload.data as D)\n : throwError(act.payload.data.error);\n })\n );\n }\n\n private setQueryEntityActionOptions(\n options?: EntityActionOptions\n ): EntityActionOptions {\n options = options || {};\n const correlationId =\n options.correlationId == null\n ? this.correlationIdGenerator.next()\n : options.correlationId;\n return { ...options, correlationId };\n }\n\n private setSaveEntityActionOptions(\n options?: EntityActionOptions,\n defaultOptimism?: boolean\n ): EntityActionOptions {\n options = options || {};\n const correlationId =\n options.correlationId == null\n ? this.correlationIdGenerator.next()\n : options.correlationId;\n const isOptimistic =\n options.isOptimistic == null\n ? defaultOptimism || false\n : options.isOptimistic === true;\n return { ...options, correlationId, isOptimistic };\n }\n // #endregion private helpers\n}\n","import { InjectionToken } from '@angular/core';\nimport { MetaReducer } from '@ngrx/store';\nimport { EntityCache } from './entity-cache';\n\nexport const ENTITY_CACHE_NAME = 'entityCache';\nexport const ENTITY_CACHE_NAME_TOKEN = new InjectionToken(\n '@ngrx/data Entity Cache Name'\n);\n\nexport const ENTITY_CACHE_META_REDUCERS = new InjectionToken<\n MetaReducer[]\n>('@ngrx/data Entity Cache Meta Reducers');\nexport const ENTITY_COLLECTION_META_REDUCERS = new InjectionToken<\n MetaReducer[]\n>('@ngrx/data Entity Collection Meta Reducers');\n\nexport const INITIAL_ENTITY_CACHE_STATE = new InjectionToken<\n EntityCache | (() => EntityCache)\n>('@ngrx/data Initial Entity Cache State');\n","import { InjectionToken, Optional, FactoryProvider } from '@angular/core';\nimport { createFeatureSelector, MemoizedSelector } from '@ngrx/store';\nimport { EntityCache } from '../reducers/entity-cache';\nimport {\n ENTITY_CACHE_NAME,\n ENTITY_CACHE_NAME_TOKEN,\n} from '../reducers/constants';\n\nexport const ENTITY_CACHE_SELECTOR_TOKEN = new InjectionToken<\n MemoizedSelector\n>('@ngrx/data Entity Cache Selector');\n\nexport const entityCacheSelectorProvider: FactoryProvider = {\n provide: ENTITY_CACHE_SELECTOR_TOKEN,\n useFactory: createEntityCacheSelector,\n deps: [[new Optional(), ENTITY_CACHE_NAME_TOKEN]],\n};\n\nexport type EntityCacheSelector = MemoizedSelector;\n\nexport function createEntityCacheSelector(\n entityCacheName?: string\n): MemoizedSelector {\n entityCacheName = entityCacheName || ENTITY_CACHE_NAME;\n return createFeatureSelector(entityCacheName);\n}\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { Action, Store, ScannedActionsSubject } from '@ngrx/store';\nimport { IdSelector } from '@ngrx/entity';\nimport { Observable, Subscription } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\n\nimport { CorrelationIdGenerator } from '../utils/correlation-id-generator';\nimport { EntityDispatcherDefaultOptions } from './entity-dispatcher-default-options';\nimport { defaultSelectId } from '../utils/utilities';\nimport { EntityActionFactory } from '../actions/entity-action-factory';\nimport { EntityCache } from '../reducers/entity-cache';\nimport {\n EntityCacheSelector,\n ENTITY_CACHE_SELECTOR_TOKEN,\n} from '../selectors/entity-cache-selector';\nimport { EntityDispatcher } from './entity-dispatcher';\nimport { EntityDispatcherBase } from './entity-dispatcher-base';\n\n/** Creates EntityDispatchers for entity collections */\n@Injectable()\nexport class EntityDispatcherFactory implements OnDestroy {\n /**\n * Actions scanned by the store after it processed them with reducers.\n * A replay observable of the most recent action reduced by the store.\n */\n reducedActions$: Observable;\n private raSubscription: Subscription;\n\n constructor(\n private entityActionFactory: EntityActionFactory,\n private store: Store,\n private entityDispatcherDefaultOptions: EntityDispatcherDefaultOptions,\n @Inject(ScannedActionsSubject) scannedActions$: Observable,\n @Inject(ENTITY_CACHE_SELECTOR_TOKEN)\n private entityCacheSelector: EntityCacheSelector,\n private correlationIdGenerator: CorrelationIdGenerator\n ) {\n // Replay because sometimes in tests will fake data service with synchronous observable\n // which makes subscriber miss the dispatched actions.\n // Of course that's a testing mistake. But easy to forget, leading to painful debugging.\n this.reducedActions$ = scannedActions$.pipe(shareReplay(1));\n // Start listening so late subscriber won't miss the most recent action.\n this.raSubscription = this.reducedActions$.subscribe();\n }\n\n /**\n * Create an `EntityDispatcher` for an entity type `T` and store.\n */\n create(\n /** Name of the entity type */\n entityName: string,\n /**\n * Function that returns the primary key for an entity `T`.\n * Usually acquired from `EntityDefinition` metadata.\n * @param {IdSelector} selectId\n */\n selectId: IdSelector = defaultSelectId,\n /** Defaults for options that influence dispatcher behavior such as whether\n * `add()` is optimistic or pessimistic;\n * @param {Partial} defaultOptions\n */\n defaultOptions: Partial = {}\n ): EntityDispatcher {\n // merge w/ defaultOptions with injected defaults\n const options: EntityDispatcherDefaultOptions = {\n ...this.entityDispatcherDefaultOptions,\n ...defaultOptions,\n };\n return new EntityDispatcherBase(\n entityName,\n this.entityActionFactory,\n this.store,\n selectId,\n options,\n this.reducedActions$,\n this.entityCacheSelector,\n this.correlationIdGenerator\n );\n }\n\n ngOnDestroy() {\n this.raSubscription.unsubscribe();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { SchedulerLike } from 'rxjs';\n\n// See https://github.com/ReactiveX/rxjs/blob/master/doc/marble-testing.md\n/** Token to inject a special RxJS Scheduler during marble tests. */\nexport const ENTITY_EFFECTS_SCHEDULER = new InjectionToken(\n '@ngrx/data Entity Effects Scheduler'\n);\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { Action } from '@ngrx/store';\nimport { Actions, ofType, createEffect } from '@ngrx/effects';\n\nimport {\n asyncScheduler,\n Observable,\n of,\n merge,\n race,\n SchedulerLike,\n} from 'rxjs';\nimport {\n concatMap,\n catchError,\n delay,\n filter,\n map,\n mergeMap,\n} from 'rxjs/operators';\n\nimport { DataServiceError } from '../dataservices/data-service-error';\nimport {\n ChangeSet,\n excludeEmptyChangeSetItems,\n} from '../actions/entity-cache-change-set';\nimport { EntityActionFactory } from '../actions/entity-action-factory';\nimport { EntityOp } from '../actions/entity-op';\n\nimport {\n EntityCacheAction,\n SaveEntities,\n SaveEntitiesCancel,\n SaveEntitiesCanceled,\n SaveEntitiesError,\n SaveEntitiesSuccess,\n} from '../actions/entity-cache-action';\nimport { EntityCacheDataService } from '../dataservices/entity-cache-data.service';\nimport { ENTITY_EFFECTS_SCHEDULER } from './entity-effects-scheduler';\nimport { Logger } from '../utils/interfaces';\n\n@Injectable()\nexport class EntityCacheEffects {\n // See https://github.com/ReactiveX/rxjs/blob/master/doc/marble-testing.md\n /** Delay for error and skip observables. Must be multiple of 10 for marble testing. */\n private responseDelay = 10;\n\n constructor(\n private actions: Actions,\n private dataService: EntityCacheDataService,\n private entityActionFactory: EntityActionFactory,\n private logger: Logger,\n /**\n * Injecting an optional Scheduler that will be undefined\n * in normal application usage, but its injected here so that you can mock out\n * during testing using the RxJS TestScheduler for simulating passages of time.\n */\n @Optional()\n @Inject(ENTITY_EFFECTS_SCHEDULER)\n private scheduler: SchedulerLike\n ) {}\n\n /**\n * Observable of SAVE_ENTITIES_CANCEL actions with non-null correlation ids\n */\n saveEntitiesCancel$: Observable = createEffect(\n () =>\n this.actions.pipe(\n ofType(EntityCacheAction.SAVE_ENTITIES_CANCEL),\n filter((a: SaveEntitiesCancel) => a.payload.correlationId != null)\n ),\n { dispatch: false }\n );\n\n // Concurrent persistence requests considered unsafe.\n // `mergeMap` allows for concurrent requests which may return in any order\n saveEntities$: Observable = createEffect(() =>\n this.actions.pipe(\n ofType(EntityCacheAction.SAVE_ENTITIES),\n mergeMap((action: SaveEntities) => this.saveEntities(action))\n )\n );\n\n /**\n * Perform the requested SaveEntities actions and return a scalar Observable\n * that the effect should dispatch to the store after the server responds.\n * @param action The SaveEntities action\n */\n saveEntities(action: SaveEntities): Observable {\n const error = action.payload.error;\n if (error) {\n return this.handleSaveEntitiesError$(action)(error);\n }\n try {\n const changeSet = excludeEmptyChangeSetItems(action.payload.changeSet);\n const { correlationId, mergeStrategy, tag, url } = action.payload;\n const options = { correlationId, mergeStrategy, tag };\n\n if (changeSet.changes.length === 0) {\n // nothing to save\n return of(new SaveEntitiesSuccess(changeSet, url, options));\n }\n\n // Cancellation: returns Observable for a saveEntities action\n // whose correlationId matches the cancellation correlationId\n const c = this.saveEntitiesCancel$.pipe(\n filter((a) => correlationId === a.payload.correlationId),\n map(\n (a) =>\n new SaveEntitiesCanceled(\n correlationId,\n a.payload.reason,\n a.payload.tag\n )\n )\n );\n\n // Data: SaveEntities result as a SaveEntitiesSuccess action\n const d = this.dataService.saveEntities(changeSet, url).pipe(\n concatMap((result) =>\n this.handleSaveEntitiesSuccess$(\n action,\n this.entityActionFactory\n )(result)\n ),\n catchError(this.handleSaveEntitiesError$(action))\n );\n\n // Emit which ever gets there first; the other observable is terminated.\n return race(c, d);\n } catch (err: any) {\n return this.handleSaveEntitiesError$(action)(err);\n }\n }\n\n /** return handler of error result of saveEntities, returning a scalar observable of error action */\n private handleSaveEntitiesError$(\n action: SaveEntities\n ): (err: DataServiceError | Error) => Observable {\n // Although error may return immediately,\n // ensure observable takes some time,\n // as app likely assumes asynchronous response.\n return (err: DataServiceError | Error) => {\n const error =\n err instanceof DataServiceError ? err : new DataServiceError(err, null);\n return of(new SaveEntitiesError(error, action)).pipe(\n delay(this.responseDelay, this.scheduler || asyncScheduler)\n );\n };\n }\n\n /** return handler of the ChangeSet result of successful saveEntities() */\n private handleSaveEntitiesSuccess$(\n action: SaveEntities,\n entityActionFactory: EntityActionFactory\n ): (changeSet: ChangeSet) => Observable {\n const { url, correlationId, mergeStrategy, tag } = action.payload;\n const options = { correlationId, mergeStrategy, tag };\n\n return (changeSet) => {\n // DataService returned a ChangeSet with possible updates to the saved entities\n if (changeSet) {\n return of(new SaveEntitiesSuccess(changeSet, url, options));\n }\n\n // No ChangeSet = Server probably responded '204 - No Content' because\n // it made no changes to the inserted/updated entities.\n // Respond with success action best on the ChangeSet in the request.\n changeSet = action.payload.changeSet;\n\n // If pessimistic save, return success action with the original ChangeSet\n if (!action.payload.isOptimistic) {\n return of(new SaveEntitiesSuccess(changeSet, url, options));\n }\n\n // If optimistic save, avoid cache grinding by just turning off the loading flags\n // for all collections in the original ChangeSet\n const entityNames = changeSet.changes.reduce(\n (acc, item) =>\n acc.indexOf(item.entityName) === -1\n ? acc.concat(item.entityName)\n : acc,\n [] as string[]\n );\n return merge(\n entityNames.map((name) =>\n entityActionFactory.create(name, EntityOp.SET_LOADING, false)\n )\n );\n };\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { Action } from '@ngrx/store';\nimport { Actions, createEffect } from '@ngrx/effects';\nimport { Update } from '@ngrx/entity';\n\nimport { asyncScheduler, Observable, of, race, SchedulerLike } from 'rxjs';\nimport { catchError, delay, filter, map, mergeMap } from 'rxjs/operators';\n\nimport { EntityAction } from '../actions/entity-action';\nimport { EntityActionFactory } from '../actions/entity-action-factory';\nimport { ENTITY_EFFECTS_SCHEDULER } from './entity-effects-scheduler';\nimport { EntityOp, makeSuccessOp } from '../actions/entity-op';\nimport { ofEntityOp } from '../actions/entity-action-operators';\nimport { UpdateResponseData } from '../actions/update-response-data';\n\nimport { EntityDataService } from '../dataservices/entity-data.service';\nimport { PersistenceResultHandler } from '../dataservices/persistence-result-handler.service';\n\nexport const persistOps: EntityOp[] = [\n EntityOp.QUERY_ALL,\n EntityOp.QUERY_LOAD,\n EntityOp.QUERY_BY_KEY,\n EntityOp.QUERY_MANY,\n EntityOp.SAVE_ADD_ONE,\n EntityOp.SAVE_DELETE_ONE,\n EntityOp.SAVE_UPDATE_ONE,\n EntityOp.SAVE_UPSERT_ONE,\n];\n\n@Injectable()\nexport class EntityEffects {\n // See https://github.com/ReactiveX/rxjs/blob/master/doc/marble-testing.md\n /** Delay for error and skip observables. Must be multiple of 10 for marble testing. */\n private responseDelay = 10;\n\n /**\n * Observable of non-null cancellation correlation ids from CANCEL_PERSIST actions\n */\n cancel$: Observable = createEffect(\n () =>\n this.actions.pipe(\n ofEntityOp(EntityOp.CANCEL_PERSIST),\n map((action: EntityAction) => action.payload.correlationId),\n filter((id) => id != null)\n ),\n { dispatch: false }\n );\n\n // `mergeMap` allows for concurrent requests which may return in any order\n persist$: Observable = createEffect(() =>\n this.actions.pipe(\n ofEntityOp(persistOps),\n mergeMap((action) => this.persist(action))\n )\n );\n\n constructor(\n private actions: Actions,\n private dataService: EntityDataService,\n private entityActionFactory: EntityActionFactory,\n private resultHandler: PersistenceResultHandler,\n /**\n * Injecting an optional Scheduler that will be undefined\n * in normal application usage, but its injected here so that you can mock out\n * during testing using the RxJS TestScheduler for simulating passages of time.\n */\n @Optional()\n @Inject(ENTITY_EFFECTS_SCHEDULER)\n private scheduler: SchedulerLike\n ) {}\n\n /**\n * Perform the requested persistence operation and return a scalar Observable\n * that the effect should dispatch to the store after the server responds.\n * @param action A persistence operation EntityAction\n */\n persist(action: EntityAction): Observable {\n if (action.payload.skip) {\n // Should not persist. Pretend it succeeded.\n return this.handleSkipSuccess$(action);\n }\n if (action.payload.error) {\n return this.handleError$(action)(action.payload.error);\n }\n try {\n // Cancellation: returns Observable of CANCELED_PERSIST for a persistence EntityAction\n // whose correlationId matches cancellation correlationId\n const c = this.cancel$.pipe(\n filter((id) => action.payload.correlationId === id),\n map((id) =>\n this.entityActionFactory.createFromAction(action, {\n entityOp: EntityOp.CANCELED_PERSIST,\n })\n )\n );\n\n // Data: entity collection DataService result as a successful persistence EntityAction\n const d = this.callDataService(action).pipe(\n map(this.resultHandler.handleSuccess(action)),\n catchError(this.handleError$(action))\n );\n\n // Emit which ever gets there first; the other observable is terminated.\n return race(c, d);\n } catch (err: any) {\n return this.handleError$(action)(err);\n }\n }\n\n private callDataService(action: EntityAction) {\n const { entityName, entityOp, data, httpOptions } = action.payload;\n const service = this.dataService.getService(entityName);\n switch (entityOp) {\n case EntityOp.QUERY_ALL:\n case EntityOp.QUERY_LOAD:\n return service.getAll(httpOptions);\n\n case EntityOp.QUERY_BY_KEY:\n return service.getById(data, httpOptions);\n\n case EntityOp.QUERY_MANY:\n return service.getWithQuery(data, httpOptions);\n\n case EntityOp.SAVE_ADD_ONE:\n return service.add(data, httpOptions);\n\n case EntityOp.SAVE_DELETE_ONE:\n return service.delete(data, httpOptions);\n\n case EntityOp.SAVE_UPDATE_ONE:\n const { id, changes } = data as Update; // data must be Update\n return service.update(data, httpOptions).pipe(\n map((updatedEntity: any) => {\n // Return an Update with updated entity data.\n // If server returned entity data, merge with the changes that were sent\n // and set the 'changed' flag to true.\n // If server did not return entity data,\n // assume it made no additional changes of its own, return the original changes,\n // and set the `changed` flag to `false`.\n const hasData =\n updatedEntity && Object.keys(updatedEntity).length > 0;\n const responseData: UpdateResponseData = hasData\n ? { id, changes: { ...changes, ...updatedEntity }, changed: true }\n : { id, changes, changed: false };\n return responseData;\n })\n );\n\n case EntityOp.SAVE_UPSERT_ONE:\n return service.upsert(data, httpOptions).pipe(\n map((upsertedEntity: any) => {\n const hasData =\n upsertedEntity && Object.keys(upsertedEntity).length > 0;\n return hasData ? upsertedEntity : data; // ensure a returned entity value.\n })\n );\n default:\n throw new Error(`Persistence action \"${entityOp}\" is not implemented.`);\n }\n }\n\n /**\n * Handle error result of persistence operation on an EntityAction,\n * returning a scalar observable of error action\n */\n private handleError$(\n action: EntityAction\n ): (error: Error) => Observable {\n // Although error may return immediately,\n // ensure observable takes some time,\n // as app likely assumes asynchronous response.\n return (error: Error) =>\n of(this.resultHandler.handleError(action)(error)).pipe(\n delay(this.responseDelay, this.scheduler || asyncScheduler)\n );\n }\n\n /**\n * Because EntityAction.payload.skip is true, skip the persistence step and\n * return a scalar success action that looks like the operation succeeded.\n */\n private handleSkipSuccess$(\n originalAction: EntityAction\n ): Observable {\n const successOp = makeSuccessOp(originalAction.payload.entityOp);\n const successAction = this.entityActionFactory.createFromAction(\n originalAction,\n {\n entityOp: successOp,\n }\n );\n // Although returns immediately,\n // ensure observable takes one tick (by using a promise),\n // as app likely assumes asynchronous response.\n return of(successAction).pipe(\n delay(this.responseDelay, this.scheduler || asyncScheduler)\n );\n }\n}\n","import { Action, Store } from '@ngrx/store';\nimport { Dictionary, IdSelector, Update } from '@ngrx/entity';\n\nimport { Observable } from 'rxjs';\n\nimport { EntityAction, EntityActionOptions } from '../actions/entity-action';\nimport { EntityActionGuard } from '../actions/entity-action-guard';\nimport {\n EntityCollection,\n ChangeStateMap,\n} from '../reducers/entity-collection';\nimport { EntityDispatcher } from '../dispatchers/entity-dispatcher';\nimport { EntityCollectionService } from './entity-collection-service';\nimport { EntityCollectionServiceElementsFactory } from './entity-collection-service-elements-factory';\nimport { EntityOp } from '../actions/entity-op';\nimport { EntitySelectors } from '../selectors/entity-selectors';\nimport { EntitySelectors$ } from '../selectors/entity-selectors$';\nimport { QueryParams } from '../dataservices/interfaces';\n\n/**\n * Base class for a concrete EntityCollectionService.\n * Can be instantiated. Cannot be injected. Use EntityCollectionServiceFactory to create.\n * @param EntityCollectionServiceElements The ingredients for this service\n * as a source of supporting services for creating an EntityCollectionService instance.\n */\nexport class EntityCollectionServiceBase<\n T,\n S$ extends EntitySelectors$ = EntitySelectors$\n> implements EntityCollectionService\n{\n /** Dispatcher of EntityCommands (EntityActions) */\n readonly dispatcher: EntityDispatcher;\n\n /** All selectors of entity collection properties */\n readonly selectors: EntitySelectors;\n\n /** All selectors$ (observables of entity collection properties) */\n readonly selectors$: S$;\n\n constructor(\n /** Name of the entity type of this collection service */\n public readonly entityName: string,\n /** Creates the core elements of the EntityCollectionService for this entity type */\n serviceElementsFactory: EntityCollectionServiceElementsFactory\n ) {\n entityName = entityName.trim();\n const { dispatcher, selectors, selectors$ } = serviceElementsFactory.create<\n T,\n S$\n >(entityName);\n\n this.entityName = entityName;\n this.dispatcher = dispatcher;\n this.guard = dispatcher.guard;\n this.selectId = dispatcher.selectId;\n this.toUpdate = dispatcher.toUpdate;\n\n this.selectors = selectors;\n this.selectors$ = selectors$;\n this.collection$ = selectors$.collection$;\n this.count$ = selectors$.count$;\n this.entities$ = selectors$.entities$;\n this.entityActions$ = selectors$.entityActions$;\n this.entityMap$ = selectors$.entityMap$;\n this.errors$ = selectors$.errors$;\n this.filter$ = selectors$.filter$;\n this.filteredEntities$ = selectors$.filteredEntities$;\n this.keys$ = selectors$.keys$;\n this.loaded$ = selectors$.loaded$;\n this.loading$ = selectors$.loading$;\n this.changeState$ = selectors$.changeState$;\n }\n\n /**\n * Create an {EntityAction} for this entity type.\n * @param op {EntityOp} the entity operation\n * @param [data] the action data\n * @param [options] additional options\n * @returns the EntityAction\n */\n createEntityAction

(\n op: EntityOp,\n data?: P,\n options?: EntityActionOptions\n ): EntityAction

{\n return this.dispatcher.createEntityAction(op, data, options);\n }\n\n /**\n * Create an {EntityAction} for this entity type and\n * dispatch it immediately to the store.\n * @param op {EntityOp} the entity operation\n * @param [data] the action data\n * @param [options] additional options\n * @returns the dispatched EntityAction\n */\n createAndDispatch

(\n op: EntityOp,\n data?: P,\n options?: EntityActionOptions\n ): EntityAction

{\n return this.dispatcher.createAndDispatch(op, data, options);\n }\n\n /**\n * Dispatch an action of any type to the ngrx store.\n * @param action the Action\n * @returns the dispatched Action\n */\n dispatch(action: Action): Action {\n return this.dispatcher.dispatch(action);\n }\n\n /** The NgRx Store for the {EntityCache} */\n get store() {\n return this.dispatcher.store;\n }\n\n /**\n * Utility class with methods to validate EntityAction payloads.\n */\n guard: EntityActionGuard;\n\n /** Returns the primary key (id) of this entity */\n selectId: IdSelector;\n\n /**\n * Convert an entity (or partial entity) into the `Update` object\n * `update...` and `upsert...` methods take `Update` args\n */\n toUpdate: (entity: Partial) => Update;\n\n // region Dispatch commands\n\n /**\n * Dispatch action to save a new entity to remote storage.\n * @param entity entity to add, which may omit its key if pessimistic and the server creates the key;\n * must have a key if optimistic save.\n * @param [options] options that influence save and merge behavior\n * @returns Observable of the entity\n * after server reports successful save or the save error.\n */\n add(\n entity: Partial,\n options: EntityActionOptions & { isOptimistic: false }\n ): Observable;\n add(entity: T, options?: EntityActionOptions): Observable;\n add(entity: T, options?: EntityActionOptions): Observable {\n return this.dispatcher.add(entity, options);\n }\n\n /**\n * Dispatch action to cancel the persistence operation (query or save) with the given correlationId.\n * @param correlationId The correlation id for the corresponding EntityAction\n * @param [reason] explains why canceled and by whom.\n * @param [options] options such as the tag and mergeStrategy\n */\n cancel(\n correlationId: any,\n reason?: string,\n options?: EntityActionOptions\n ): void {\n this.dispatcher.cancel(correlationId, reason, options);\n }\n\n /**\n * Dispatch action to delete entity from remote storage by key.\n * @param key The entity to delete\n * @param [options] options that influence save and merge behavior\n * @returns Observable of the deleted key\n * after server reports successful save or the save error.\n */\n delete(entity: T, options?: EntityActionOptions): Observable;\n\n /**\n * Dispatch action to delete entity from remote storage by key.\n * @param key The primary key of the entity to remove\n * @param [options] options that influence save and merge behavior\n * @returns Observable of the deleted key\n * after server reports successful save or the save error.\n */\n delete(\n key: number | string,\n options?: EntityActionOptions\n ): Observable;\n delete(\n arg: number | string | T,\n options?: EntityActionOptions\n ): Observable {\n return this.dispatcher.delete(arg as any, options);\n }\n\n /**\n * Dispatch action to query remote storage for all entities and\n * merge the queried entities into the cached collection.\n * @param [options] options that influence merge behavior\n * @returns Observable of the collection\n * after server reports successful query or the query error.\n * @see load()\n */\n getAll(options?: EntityActionOptions): Observable {\n return this.dispatcher.getAll(options);\n }\n\n /**\n * Dispatch action to query remote storage for the entity with this primary key.\n * If the server returns an entity,\n * merge it into the cached collection.\n * @param key The primary key of the entity to get.\n * @param [options] options that influence merge behavior\n * @returns Observable of the queried entity that is in the collection\n * after server reports success or the query error.\n */\n getByKey(key: any, options?: EntityActionOptions): Observable {\n return this.dispatcher.getByKey(key, options);\n }\n\n /**\n * Dispatch action to query remote storage for the entities that satisfy a query expressed\n * with either a query parameter map or an HTTP URL query string,\n * and merge the results into the cached collection.\n * @param queryParams the query in a form understood by the server\n * @param [options] options that influence merge behavior\n * @returns Observable of the queried entities\n * after server reports successful query or the query error.\n */\n getWithQuery(\n queryParams: QueryParams | string,\n options?: EntityActionOptions\n ): Observable {\n return this.dispatcher.getWithQuery(queryParams, options);\n }\n\n /**\n * Dispatch action to query remote storage for all entities and\n * completely replace the cached collection with the queried entities.\n * @param [options] options that influence load behavior\n * @returns Observable of the collection\n * after server reports successful query or the query error.\n * @see getAll\n */\n load(options?: EntityActionOptions): Observable {\n return this.dispatcher.load(options);\n }\n\n /**\n * Dispatch action to query remote storage for the entities that satisfy a query expressed\n * with either a query parameter map or an HTTP URL query string,\n * and completely replace the cached collection with the queried entities.\n * @param queryParams the query in a form understood by the server\n * @param [options] options that influence load behavior\n * @returns Observable of the queried entities\n * after server reports successful query or the query error.\n */\n loadWithQuery(\n queryParams: QueryParams | string,\n options?: EntityActionOptions\n ): Observable {\n return this.dispatcher.loadWithQuery(queryParams, options);\n }\n\n /**\n * Dispatch action to save the updated entity (or partial entity) in remote storage.\n * The update entity may be partial (but must have its key)\n * in which case it patches the existing entity.\n * @param entity update entity, which might be a partial of T but must at least have its key.\n * @param [options] options that influence save and merge behavior\n * @returns Observable of the updated entity\n * after server reports successful save or the save error.\n */\n update(entity: Partial, options?: EntityActionOptions): Observable {\n return this.dispatcher.update(entity, options);\n }\n\n /**\n * Dispatch action to save a new or existing entity to remote storage.\n * Call only if the server supports upsert.\n * @param entity entity to add or upsert.\n * It may omit its key if an add, and is pessimistic, and the server creates the key;\n * must have a key if optimistic save.\n * @param [options] options that influence save and merge behavior\n * @returns Observable of the entity\n * after server reports successful save or the save error.\n */\n upsert(entity: T, options?: EntityActionOptions): Observable {\n return this.dispatcher.upsert(entity, options);\n }\n\n /*** Cache-only operations that do not update remote storage ***/\n\n /**\n * Replace all entities in the cached collection.\n * Does not save to remote storage.\n * @param entities to add directly to cache.\n * @param [options] options such as mergeStrategy\n */\n addAllToCache(entities: T[], options?: EntityActionOptions): void {\n this.dispatcher.addAllToCache(entities, options);\n }\n\n /**\n * Add a new entity directly to the cache.\n * Does not save to remote storage.\n * Ignored if an entity with the same primary key is already in cache.\n * @param entity to add directly to cache.\n * @param [options] options such as mergeStrategy\n */\n addOneToCache(entity: T, options?: EntityActionOptions): void {\n this.dispatcher.addOneToCache(entity, options);\n }\n\n /**\n * Add multiple new entities directly to the cache.\n * Does not save to remote storage.\n * Entities with primary keys already in cache are ignored.\n * @param entities to add directly to cache.\n * @param [options] options such as mergeStrategy\n */\n addManyToCache(entities: T[], options?: EntityActionOptions): void {\n this.dispatcher.addManyToCache(entities, options);\n }\n\n /** Clear the cached entity collection */\n clearCache(): void {\n this.dispatcher.clearCache();\n }\n\n /**\n * Remove an entity directly from the cache.\n * Does not delete that entity from remote storage.\n * @param entity The entity to remove\n * @param [options] options such as mergeStrategy\n */\n removeOneFromCache(entity: T, options?: EntityActionOptions): void;\n\n /**\n * Remove an entity directly from the cache.\n * Does not delete that entity from remote storage.\n * @param key The primary key of the entity to remove\n * @param [options] options such as mergeStrategy\n */\n removeOneFromCache(key: number | string, options?: EntityActionOptions): void;\n removeOneFromCache(\n arg: (number | string) | T,\n options?: EntityActionOptions\n ): void {\n this.dispatcher.removeOneFromCache(arg as any, options);\n }\n\n /**\n * Remove multiple entities directly from the cache.\n * Does not delete these entities from remote storage.\n * @param entity The entities to remove\n * @param [options] options such as mergeStrategy\n */\n removeManyFromCache(entities: T[], options?: EntityActionOptions): void;\n\n /**\n * Remove multiple entities directly from the cache.\n * Does not delete these entities from remote storage.\n * @param keys The primary keys of the entities to remove\n * @param [options] options such as mergeStrategy\n */\n removeManyFromCache(\n keys: (number | string)[],\n options?: EntityActionOptions\n ): void;\n removeManyFromCache(\n args: (number | string)[] | T[],\n options?: EntityActionOptions\n ): void {\n this.dispatcher.removeManyFromCache(args as any[], options);\n }\n\n /**\n * Update a cached entity directly.\n * Does not update that entity in remote storage.\n * Ignored if an entity with matching primary key is not in cache.\n * The update entity may be partial (but must have its key)\n * in which case it patches the existing entity.\n * @param entity to update directly in cache.\n * @param [options] options such as mergeStrategy\n */\n updateOneInCache(entity: Partial, options?: EntityActionOptions): void {\n // update entity might be a partial of T but must at least have its key.\n // pass the Update structure as the payload\n this.dispatcher.updateOneInCache(entity, options);\n }\n\n /**\n * Update multiple cached entities directly.\n * Does not update these entities in remote storage.\n * Entities whose primary keys are not in cache are ignored.\n * Update entities may be partial but must at least have their keys.\n * such partial entities patch their cached counterparts.\n * @param entities to update directly in cache.\n * @param [options] options such as mergeStrategy\n */\n updateManyInCache(\n entities: Partial[],\n options?: EntityActionOptions\n ): void {\n this.dispatcher.updateManyInCache(entities, options);\n }\n\n /**\n * Insert or update a cached entity directly.\n * Does not save to remote storage.\n * Upsert entity might be a partial of T but must at least have its key.\n * Pass the Update structure as the payload.\n * @param entity to upsert directly in cache.\n * @param [options] options such as mergeStrategy\n */\n upsertOneInCache(entity: Partial, options?: EntityActionOptions): void {\n this.dispatcher.upsertOneInCache(entity, options);\n }\n\n /**\n * Insert or update multiple cached entities directly.\n * Does not save to remote storage.\n * Upsert entities might be partial but must at least have their keys.\n * Pass an array of the Update structure as the payload.\n * @param entities to upsert directly in cache.\n * @param [options] options such as mergeStrategy\n */\n upsertManyInCache(\n entities: Partial[],\n options?: EntityActionOptions\n ): void {\n this.dispatcher.upsertManyInCache(entities, options);\n }\n\n /**\n * Set the pattern that the collection's filter applies\n * when using the `filteredEntities` selector.\n */\n setFilter(pattern: any): void {\n this.dispatcher.setFilter(pattern);\n }\n\n /** Set the loaded flag */\n setLoaded(isLoaded: boolean): void {\n this.dispatcher.setLoaded(!!isLoaded);\n }\n\n /** Set the loading flag */\n setLoading(isLoading: boolean): void {\n this.dispatcher.setLoading(!!isLoading);\n }\n\n // endregion Dispatch commands\n\n // region Selectors$\n /** Observable of the collection as a whole */\n collection$: Observable> | Store>;\n\n /** Observable of count of entities in the cached collection. */\n count$: Observable | Store;\n\n /** Observable of all entities in the cached collection. */\n entities$: Observable | Store;\n\n /** Observable of actions related to this entity type. */\n entityActions$: Observable;\n\n /** Observable of the map of entity keys to entities */\n entityMap$: Observable> | Store>;\n\n /** Observable of error actions related to this entity type. */\n errors$: Observable;\n\n /** Observable of the filter pattern applied by the entity collection's filter function */\n filter$: Observable | Store;\n\n /** Observable of entities in the cached collection that pass the filter function */\n filteredEntities$: Observable | Store;\n\n /** Observable of the keys of the cached collection, in the collection's native sort order */\n keys$: Observable | Store;\n\n /** Observable true when the collection has been loaded */\n loaded$: Observable | Store;\n\n /** Observable true when a multi-entity query command is in progress. */\n loading$: Observable | Store;\n\n /** Original entity values for entities with unsaved changes */\n changeState$: Observable> | Store>;\n\n // endregion Selectors$\n}\n","import { Injectable, Optional } from '@angular/core';\n\nimport { EntityCollection } from './entity-collection';\nimport { EntityDefinitionService } from '../entity-metadata/entity-definition.service';\n\n@Injectable()\nexport class EntityCollectionCreator {\n constructor(\n @Optional() private entityDefinitionService?: EntityDefinitionService\n ) {}\n\n /**\n * Create the default collection for an entity type.\n * @param entityName {string} entity type name\n */\n create = EntityCollection>(\n entityName: string\n ): S {\n const def =\n this.entityDefinitionService &&\n this.entityDefinitionService.getDefinition(\n entityName,\n false /*shouldThrow*/\n );\n\n const initialState = def && def.initialState;\n\n return (initialState || createEmptyEntityCollection(entityName));\n }\n}\n\nexport function createEmptyEntityCollection(\n entityName?: string\n): EntityCollection {\n return {\n entityName,\n ids: [],\n entities: {},\n filter: undefined,\n loaded: false,\n loading: false,\n changeState: {},\n } as EntityCollection;\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\n\n// Prod build requires `MemoizedSelector even though not used.\nimport { MemoizedSelector } from '@ngrx/store';\nimport { createSelector, Selector } from '@ngrx/store';\nimport { Dictionary } from '@ngrx/entity';\n\nimport { EntityCache } from '../reducers/entity-cache';\nimport {\n ENTITY_CACHE_SELECTOR_TOKEN,\n EntityCacheSelector,\n createEntityCacheSelector,\n} from './entity-cache-selector';\nimport { ENTITY_CACHE_NAME } from '../reducers/constants';\nimport {\n EntityCollection,\n ChangeStateMap,\n} from '../reducers/entity-collection';\nimport { EntityCollectionCreator } from '../reducers/entity-collection-creator';\nimport { EntityMetadata } from '../entity-metadata/entity-metadata';\n\n/**\n * The selector functions for entity collection members,\n * Selects from the entity collection to the collection member\n * Contrast with {EntitySelectors}.\n */\nexport interface CollectionSelectors {\n readonly [selector: string]: any;\n\n /** Count of entities in the cached collection. */\n readonly selectCount: Selector, number>;\n\n /** All entities in the cached collection. */\n readonly selectEntities: Selector, T[]>;\n\n /** Map of entity keys to entities */\n readonly selectEntityMap: Selector, Dictionary>;\n\n /** Filter pattern applied by the entity collection's filter function */\n readonly selectFilter: Selector, string>;\n\n /** Entities in the cached collection that pass the filter function */\n readonly selectFilteredEntities: Selector, T[]>;\n\n /** Keys of the cached collection, in the collection's native sort order */\n readonly selectKeys: Selector, string[] | number[]>;\n\n /** True when the collection has been fully loaded. */\n readonly selectLoaded: Selector, boolean>;\n\n /** True when a multi-entity query command is in progress. */\n readonly selectLoading: Selector, boolean>;\n\n /** ChangeState (including original values) of entities with unsaved changes */\n readonly selectChangeState: Selector, ChangeStateMap>;\n}\n\n/**\n * The selector functions for entity collection members,\n * Selects from store root, through EntityCache, to the entity collection member\n * Contrast with {CollectionSelectors}.\n */\nexport interface EntitySelectors {\n /** Name of the entity collection for these selectors */\n readonly entityName: string;\n\n readonly [name: string]: MemoizedSelector, any> | string;\n\n /** The cached EntityCollection itself */\n readonly selectCollection: MemoizedSelector>;\n\n /** Count of entities in the cached collection. */\n readonly selectCount: MemoizedSelector;\n\n /** All entities in the cached collection. */\n readonly selectEntities: MemoizedSelector;\n\n /** The EntityCache */\n readonly selectEntityCache: MemoizedSelector;\n\n /** Map of entity keys to entities */\n readonly selectEntityMap: MemoizedSelector>;\n\n /** Filter pattern applied by the entity collection's filter function */\n readonly selectFilter: MemoizedSelector;\n\n /** Entities in the cached collection that pass the filter function */\n readonly selectFilteredEntities: MemoizedSelector;\n\n /** Keys of the cached collection, in the collection's native sort order */\n readonly selectKeys: MemoizedSelector;\n\n /** True when the collection has been fully loaded. */\n readonly selectLoaded: MemoizedSelector;\n\n /** True when a multi-entity query command is in progress. */\n readonly selectLoading: MemoizedSelector;\n\n /** ChangeState (including original values) of entities with unsaved changes */\n readonly selectChangeState: MemoizedSelector>;\n}\n\n/** Creates EntitySelector functions for entity collections. */\n@Injectable()\nexport class EntitySelectorsFactory {\n private entityCollectionCreator: EntityCollectionCreator;\n private selectEntityCache: EntityCacheSelector;\n\n constructor(\n @Optional() entityCollectionCreator?: EntityCollectionCreator,\n @Optional()\n @Inject(ENTITY_CACHE_SELECTOR_TOKEN)\n selectEntityCache?: EntityCacheSelector\n ) {\n this.entityCollectionCreator =\n entityCollectionCreator || new EntityCollectionCreator();\n this.selectEntityCache =\n selectEntityCache || createEntityCacheSelector(ENTITY_CACHE_NAME);\n }\n\n /**\n * Create the NgRx selector from the store root to the named collection,\n * e.g. from Object to Heroes.\n * @param entityName the name of the collection\n */\n createCollectionSelector<\n T = any,\n C extends EntityCollection = EntityCollection\n >(entityName: string) {\n const getCollection = (cache: EntityCache = {}) =>\n (\n (cache[entityName] ||\n this.entityCollectionCreator.create(entityName))\n );\n return createSelector(this.selectEntityCache, getCollection);\n }\n\n /////// createCollectionSelectors //////////\n\n // Based on @ngrx/entity/state_selectors.ts\n\n /* eslint-disable @typescript-eslint/unified-signatures */\n // createCollectionSelectors(metadata) overload\n /**\n * Creates entity collection selectors from metadata.\n * @param metadata - EntityMetadata for the collection.\n * May be partial but much have `entityName`.\n */\n createCollectionSelectors<\n T,\n S extends CollectionSelectors = CollectionSelectors\n >(metadata: EntityMetadata): S;\n\n /* eslint-disable @typescript-eslint/unified-signatures */\n // createCollectionSelectors(entityName) overload\n /**\n * Creates default entity collection selectors for an entity type.\n * Use the metadata overload for additional collection selectors.\n * @param entityName - name of the entity type\n */\n createCollectionSelectors<\n T,\n S extends CollectionSelectors = CollectionSelectors\n >(entityName: string): S;\n\n // createCollectionSelectors implementation\n createCollectionSelectors<\n T,\n S extends CollectionSelectors = CollectionSelectors\n >(metadataOrName: EntityMetadata | string): S {\n const metadata =\n typeof metadataOrName === 'string'\n ? { entityName: metadataOrName }\n : metadataOrName;\n const selectKeys = (c: EntityCollection) => c.ids;\n const selectEntityMap = (c: EntityCollection) => c.entities;\n\n const selectEntities: Selector, T[]> = createSelector(\n selectKeys,\n selectEntityMap,\n (keys: (number | string)[], entities: Dictionary): T[] =>\n keys.map((key) => entities[key] as T)\n );\n\n const selectCount: Selector, number> = createSelector(\n selectKeys,\n (keys) => keys.length\n );\n\n // EntityCollection selectors that go beyond the ngrx/entity/EntityState selectors\n const selectFilter = (c: EntityCollection) => c.filter;\n\n const filterFn = metadata.filterFn;\n const selectFilteredEntities: Selector, T[]> = filterFn\n ? createSelector(\n selectEntities,\n selectFilter,\n (entities: T[], pattern: any): T[] => filterFn(entities, pattern)\n )\n : selectEntities;\n\n const selectLoaded = (c: EntityCollection) => c.loaded;\n const selectLoading = (c: EntityCollection) => c.loading;\n const selectChangeState = (c: EntityCollection) => c.changeState;\n\n // Create collection selectors for each `additionalCollectionState` property.\n // These all extend from `selectCollection`\n const extra = metadata.additionalCollectionState || {};\n const extraSelectors: {\n [name: string]: Selector, any>;\n } = {};\n Object.keys(extra).forEach((k) => {\n extraSelectors['select' + k[0].toUpperCase() + k.slice(1)] = (\n c: EntityCollection\n ) => (c)[k];\n });\n\n return {\n selectCount,\n selectEntities,\n selectEntityMap,\n selectFilter,\n selectFilteredEntities,\n selectKeys,\n selectLoaded,\n selectLoading,\n selectChangeState,\n ...extraSelectors,\n } as S;\n }\n\n /////// create //////////\n\n // create(metadata) overload\n /**\n * Creates the store-rooted selectors for an entity collection.\n * {EntitySelectors$Factory} turns them into selectors$.\n *\n * @param metadata - EntityMetadata for the collection.\n * May be partial but much have `entityName`.\n *\n * Based on ngrx/entity/state_selectors.ts\n * Differs in that these selectors select from the NgRx store root,\n * through the collection, to the collection members.\n */\n create = EntitySelectors>(\n metadata: EntityMetadata\n ): S;\n\n // create(entityName) overload\n /**\n * Creates the default store-rooted selectors for an entity collection.\n * {EntitySelectors$Factory} turns them into selectors$.\n * Use the metadata overload for additional collection selectors.\n *\n * @param entityName - name of the entity type.\n *\n * Based on ngrx/entity/state_selectors.ts\n * Differs in that these selectors select from the NgRx store root,\n * through the collection, to the collection members.\n */\n create = EntitySelectors>(\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n entityName: string\n ): S;\n\n // createCollectionSelectors implementation\n create = EntitySelectors>(\n metadataOrName: EntityMetadata | string\n ): S {\n const metadata =\n typeof metadataOrName === 'string'\n ? { entityName: metadataOrName }\n : metadataOrName;\n const entityName = metadata.entityName;\n const selectCollection: Selector<\n Object,\n EntityCollection\n > = this.createCollectionSelector(entityName);\n const collectionSelectors = this.createCollectionSelectors(metadata);\n\n const entitySelectors: {\n [name: string]: Selector, any>;\n } = {};\n Object.keys(collectionSelectors).forEach((k) => {\n entitySelectors[k] = createSelector(\n selectCollection,\n collectionSelectors[k]\n );\n });\n\n return {\n entityName,\n selectCollection,\n selectEntityCache: this.selectEntityCache,\n ...entitySelectors,\n } as S;\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Actions } from '@ngrx/effects';\nimport { Dictionary } from '@ngrx/entity';\n\nimport { Observable } from 'rxjs';\nimport { filter, shareReplay } from 'rxjs/operators';\n\nimport { EntityAction } from '../actions/entity-action';\nimport { OP_ERROR } from '../actions/entity-op';\nimport { ofEntityType } from '../actions/entity-action-operators';\nimport {\n ENTITY_CACHE_SELECTOR_TOKEN,\n EntityCacheSelector,\n} from './entity-cache-selector';\nimport { EntitySelectors } from './entity-selectors';\nimport { EntityCache } from '../reducers/entity-cache';\nimport {\n EntityCollection,\n ChangeStateMap,\n} from '../reducers/entity-collection';\n\n/**\n * The selector observable functions for entity collection members.\n */\nexport interface EntitySelectors$ {\n /** Name of the entity collection for these selectors$ */\n readonly entityName: string;\n\n /** Names from custom selectors from additionalCollectionState fits here, 'any' to avoid conflict with entityName */\n readonly [name: string]: Observable | Store | any;\n\n /** Observable of the collection as a whole */\n readonly collection$: Observable | Store;\n\n /** Observable of count of entities in the cached collection. */\n readonly count$: Observable | Store;\n\n /** Observable of all entities in the cached collection. */\n readonly entities$: Observable | Store;\n\n /** Observable of actions related to this entity type. */\n readonly entityActions$: Observable;\n\n /** Observable of the map of entity keys to entities */\n readonly entityMap$: Observable> | Store>;\n\n /** Observable of error actions related to this entity type. */\n readonly errors$: Observable;\n\n /** Observable of the filter pattern applied by the entity collection's filter function */\n readonly filter$: Observable | Store;\n\n /** Observable of entities in the cached collection that pass the filter function */\n readonly filteredEntities$: Observable | Store;\n\n /** Observable of the keys of the cached collection, in the collection's native sort order */\n readonly keys$: Observable | Store;\n\n /** Observable true when the collection has been loaded */\n readonly loaded$: Observable | Store;\n\n /** Observable true when a multi-entity query command is in progress. */\n readonly loading$: Observable | Store;\n\n /** ChangeState (including original values) of entities with unsaved changes */\n readonly changeState$:\n | Observable>\n | Store>;\n}\n\n/** Creates observable EntitySelectors$ for entity collections. */\n@Injectable()\nexport class EntitySelectors$Factory {\n /** Observable of the EntityCache */\n entityCache$: Observable;\n\n /** Observable of error EntityActions (e.g. QUERY_ALL_ERROR) for all entity types */\n entityActionErrors$: Observable;\n\n constructor(\n private store: Store,\n private actions: Actions,\n @Inject(ENTITY_CACHE_SELECTOR_TOKEN)\n private selectEntityCache: EntityCacheSelector\n ) {\n // This service applies to the cache in ngrx/store named `cacheName`\n this.entityCache$ = this.store.select(this.selectEntityCache);\n this.entityActionErrors$ = actions.pipe(\n filter(\n (ea: EntityAction) =>\n ea.payload &&\n ea.payload.entityOp &&\n ea.payload.entityOp.endsWith(OP_ERROR)\n ),\n shareReplay(1)\n );\n }\n\n /**\n * Creates an entity collection's selectors$ observables for this factory's store.\n * `selectors$` are observable selectors of the cached entity collection.\n * @param entityName - is also the name of the collection.\n * @param selectors - selector functions for this collection.\n **/\n create = EntitySelectors$>(\n entityName: string,\n selectors: EntitySelectors\n ): S$ {\n const selectors$: { [prop: string]: any } = {\n entityName,\n };\n\n Object.keys(selectors).forEach((name) => {\n if (name.startsWith('select')) {\n // strip 'select' prefix from the selector fn name and append `$`\n // Ex: 'selectEntities' => 'entities$'\n const name$ = name[6].toLowerCase() + name.substring(7) + '$';\n selectors$[name$] = this.store.select((selectors)[name]);\n }\n });\n selectors$['entityActions$'] = this.actions.pipe(ofEntityType(entityName));\n selectors$['errors$'] = this.entityActionErrors$.pipe(\n ofEntityType(entityName)\n );\n return selectors$ as S$;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EntityDispatcher } from '../dispatchers/entity-dispatcher';\nimport { EntityDispatcherFactory } from '../dispatchers/entity-dispatcher-factory';\nimport { EntityDefinitionService } from '../entity-metadata/entity-definition.service';\nimport {\n EntitySelectors,\n EntitySelectorsFactory,\n} from '../selectors/entity-selectors';\nimport {\n EntitySelectors$,\n EntitySelectors$Factory,\n} from '../selectors/entity-selectors$';\n\n/** Core ingredients of an EntityCollectionService */\nexport interface EntityCollectionServiceElements<\n T,\n S$ extends EntitySelectors$ = EntitySelectors$\n> {\n readonly dispatcher: EntityDispatcher;\n readonly entityName: string;\n readonly selectors: EntitySelectors;\n readonly selectors$: S$;\n}\n\n/** Creates the core elements of the EntityCollectionService for an entity type. */\n@Injectable()\nexport class EntityCollectionServiceElementsFactory {\n constructor(\n private entityDispatcherFactory: EntityDispatcherFactory,\n private entityDefinitionService: EntityDefinitionService,\n private entitySelectorsFactory: EntitySelectorsFactory,\n private entitySelectors$Factory: EntitySelectors$Factory\n ) {}\n\n /**\n * Get the ingredients for making an EntityCollectionService for this entity type\n * @param entityName - name of the entity type\n */\n create = EntitySelectors$>(\n entityName: string\n ): EntityCollectionServiceElements {\n entityName = entityName.trim();\n const definition =\n this.entityDefinitionService.getDefinition(entityName);\n const dispatcher = this.entityDispatcherFactory.create(\n entityName,\n definition.selectId,\n definition.entityDispatcherOptions\n );\n const selectors = this.entitySelectorsFactory.create(\n definition.metadata\n );\n const selectors$ = this.entitySelectors$Factory.create(\n entityName,\n selectors\n );\n return {\n dispatcher,\n entityName,\n selectors,\n selectors$,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EntityCollectionService } from './entity-collection-service';\nimport { EntityCollectionServiceBase } from './entity-collection-service-base';\nimport { EntityCollectionServiceElementsFactory } from './entity-collection-service-elements-factory';\nimport { EntitySelectors$ } from '../selectors/entity-selectors$';\n\n/**\n * Creates EntityCollectionService instances for\n * a cached collection of T entities in the ngrx store.\n */\n@Injectable()\nexport class EntityCollectionServiceFactory {\n constructor(\n /** Creates the core elements of the EntityCollectionService for an entity type. */\n public entityCollectionServiceElementsFactory: EntityCollectionServiceElementsFactory\n ) {}\n\n /**\n * Create an EntityCollectionService for an entity type\n * @param entityName - name of the entity type\n */\n create = EntitySelectors$>(\n entityName: string\n ): EntityCollectionService {\n return new EntityCollectionServiceBase(\n entityName,\n this.entityCollectionServiceElementsFactory\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Action, Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\nimport { EntityAction } from '../actions/entity-action';\nimport { EntityCache } from '../reducers/entity-cache';\nimport { EntityDispatcherFactory } from '../dispatchers/entity-dispatcher-factory';\nimport { EntitySelectors$Factory } from '../selectors/entity-selectors$';\nimport { EntityCollectionServiceFactory } from './entity-collection-service-factory';\n\n/** Core ingredients of an EntityServices class */\n@Injectable()\nexport class EntityServicesElements {\n constructor(\n /**\n * Creates EntityCollectionService instances for\n * a cached collection of T entities in the ngrx store.\n */\n public readonly entityCollectionServiceFactory: EntityCollectionServiceFactory,\n /** Creates EntityDispatchers for entity collections */\n entityDispatcherFactory: EntityDispatcherFactory,\n /** Creates observable EntitySelectors$ for entity collections. */\n entitySelectors$Factory: EntitySelectors$Factory,\n /** The ngrx store, scoped to the EntityCache */\n public readonly store: Store\n ) {\n this.entityActionErrors$ = entitySelectors$Factory.entityActionErrors$;\n this.entityCache$ = entitySelectors$Factory.entityCache$;\n this.reducedActions$ = entityDispatcherFactory.reducedActions$;\n }\n\n /** Observable of error EntityActions (e.g. QUERY_ALL_ERROR) for all entity types */\n readonly entityActionErrors$: Observable;\n\n /** Observable of the entire entity cache */\n readonly entityCache$: Observable | Store;\n\n /**\n * Actions scanned by the store after it processed them with reducers.\n * A replay observable of the most recent action reduced by the store.\n */\n readonly reducedActions$: Observable;\n}\n","import { Injectable } from '@angular/core';\nimport { Action, Store } from '@ngrx/store';\n\nimport { Observable } from 'rxjs';\n\nimport { EntityAction } from '../actions/entity-action';\nimport { EntityCache } from '../reducers/entity-cache';\nimport { EntityCollectionService } from './entity-collection-service';\nimport { EntityCollectionServiceFactory } from './entity-collection-service-factory';\nimport { EntityCollectionServiceMap, EntityServices } from './entity-services';\nimport { EntitySelectors$ } from '../selectors/entity-selectors$';\nimport { EntityServicesElements } from './entity-services-elements';\n\n/**\n * Base/default class of a central registry of EntityCollectionServices for all entity types.\n * Create your own subclass to add app-specific members for an improved developer experience.\n *\n * @usageNotes\n * ```ts\n * export class EntityServices extends EntityServicesBase {\n * constructor(entityServicesElements: EntityServicesElements) {\n * super(entityServicesElements);\n * }\n * // Extend with well-known, app entity collection services\n * // Convenience property to return a typed custom entity collection service\n * get companyService() {\n * return this.getEntityCollectionService('Company') as CompanyService;\n * }\n * // Convenience dispatch methods\n * clearCompany(companyId: string) {\n * this.dispatch(new ClearCompanyAction(companyId));\n * }\n * }\n * ```\n */\n@Injectable()\nexport class EntityServicesBase implements EntityServices {\n // Dear @ngrx/data developer: think hard before changing the constructor.\n // Doing so will break apps that derive from this base class,\n // and many apps will derive from this class.\n //\n // Do not give this constructor an implementation.\n // Doing so makes it hard to mock classes that derive from this class.\n // Use getter properties instead. For example, see entityCache$\n constructor(private entityServicesElements: EntityServicesElements) {}\n\n // #region EntityServicesElement-based properties\n\n /** Observable of error EntityActions (e.g. QUERY_ALL_ERROR) for all entity types */\n get entityActionErrors$(): Observable {\n return this.entityServicesElements.entityActionErrors$;\n }\n\n /** Observable of the entire entity cache */\n get entityCache$(): Observable | Store {\n return this.entityServicesElements.entityCache$;\n }\n\n /** Factory to create a default instance of an EntityCollectionService */\n get entityCollectionServiceFactory(): EntityCollectionServiceFactory {\n return this.entityServicesElements.entityCollectionServiceFactory;\n }\n\n /**\n * Actions scanned by the store after it processed them with reducers.\n * A replay observable of the most recent action reduced by the store.\n */\n get reducedActions$(): Observable {\n return this.entityServicesElements.reducedActions$;\n }\n\n /** The ngrx store, scoped to the EntityCache */\n protected get store(): Store {\n return this.entityServicesElements.store;\n }\n\n // #endregion EntityServicesElement-based properties\n\n /** Dispatch any action to the store */\n dispatch(action: Action) {\n this.store.dispatch(action);\n }\n\n /** Registry of EntityCollectionService instances */\n private readonly EntityCollectionServices: EntityCollectionServiceMap = {};\n\n /**\n * Create a new default instance of an EntityCollectionService.\n * Prefer getEntityCollectionService() unless you really want a new default instance.\n * This one will NOT be registered with EntityServices!\n * @param entityName {string} Name of the entity type of the service\n */\n protected createEntityCollectionService<\n T,\n S$ extends EntitySelectors$ = EntitySelectors$\n >(entityName: string): EntityCollectionService {\n return this.entityCollectionServiceFactory.create(entityName);\n }\n\n /** Get (or create) the singleton instance of an EntityCollectionService\n * @param entityName {string} Name of the entity type of the service\n */\n getEntityCollectionService<\n T,\n S$ extends EntitySelectors$ = EntitySelectors$\n >(entityName: string): EntityCollectionService {\n let service = this.EntityCollectionServices[entityName];\n if (!service) {\n service = this.createEntityCollectionService(entityName);\n this.EntityCollectionServices[entityName] = service;\n }\n return service;\n }\n\n /** Register an EntityCollectionService under its entity type name.\n * Will replace a pre-existing service for that type.\n * @param service {EntityCollectionService} The entity service\n * @param serviceName {string} optional service name to use instead of the service's entityName\n */\n registerEntityCollectionService(\n service: EntityCollectionService,\n serviceName?: string\n ) {\n this.EntityCollectionServices[serviceName || service.entityName] = service;\n }\n\n /**\n * Register entity services for several entity types at once.\n * Will replace a pre-existing service for that type.\n * @param entityCollectionServices {EntityCollectionServiceMap | EntityCollectionService[]}\n * EntityCollectionServices to register, either as a map or an array\n */\n registerEntityCollectionServices(\n entityCollectionServices:\n | EntityCollectionServiceMap\n | EntityCollectionService[]\n ): void {\n if (Array.isArray(entityCollectionServices)) {\n entityCollectionServices.forEach((service) =>\n this.registerEntityCollectionService(service)\n );\n } else {\n Object.keys(entityCollectionServices || {}).forEach((serviceName) => {\n this.registerEntityCollectionService(\n entityCollectionServices[serviceName],\n serviceName\n );\n });\n }\n }\n}\n","import { EntityState, Dictionary } from '@ngrx/entity';\n\n/** Types of change in a ChangeState instance */\nexport enum ChangeType {\n /** The entity has not changed from its last known server state. */\n Unchanged = 0,\n /** The entity was added to the collection */\n Added,\n /** The entity is scheduled for delete and was removed from the collection */\n Deleted,\n /** The entity in the collection was updated */\n Updated,\n}\n\n/**\n * Change state for an entity with unsaved changes;\n * an entry in an EntityCollection.changeState map\n */\nexport interface ChangeState {\n changeType: ChangeType;\n originalValue?: T | undefined;\n}\n\n/**\n * Map of entity primary keys to entity ChangeStates.\n * Each entry represents an entity with unsaved changes.\n */\nexport type ChangeStateMap = Dictionary>;\n\n/**\n * Data and information about a collection of entities of a single type.\n * EntityCollections are maintained in the EntityCache within the ngrx store.\n */\nexport interface EntityCollection extends EntityState {\n /** Name of the entity type for this collection */\n entityName: string;\n /** A map of ChangeStates, keyed by id, for entities with unsaved changes */\n changeState: ChangeStateMap;\n /** The user's current collection filter pattern */\n filter?: string;\n /** true if collection was ever filled by QueryAll; forced false if cleared */\n loaded: boolean;\n /** true when a query or save operation is in progress */\n loading: boolean;\n}\n","import { EntityAdapter, IdSelector, Update } from '@ngrx/entity';\n\nimport { ChangeType, EntityCollection } from './entity-collection';\nimport { defaultSelectId } from '../utils/utilities';\nimport { EntityChangeTracker } from './entity-change-tracker';\nimport { MergeStrategy } from '../actions/merge-strategy';\nimport { UpdateResponseData } from '../actions/update-response-data';\n\n/**\n * The default implementation of EntityChangeTracker with\n * methods for tracking, committing, and reverting/undoing unsaved entity changes.\n * Used by EntityCollectionReducerMethods which should call tracker methods BEFORE modifying the collection.\n * See EntityChangeTracker docs.\n */\nexport class EntityChangeTrackerBase implements EntityChangeTracker {\n constructor(\n private adapter: EntityAdapter,\n private selectId: IdSelector\n ) {\n /** Extract the primary key (id); default to `id` */\n this.selectId = selectId || defaultSelectId;\n }\n\n // #region commit methods\n /**\n * Commit all changes as when the collection has been completely reloaded from the server.\n * Harmless when there are no entity changes to commit.\n * @param collection The entity collection\n */\n commitAll(collection: EntityCollection): EntityCollection {\n return Object.keys(collection.changeState).length === 0\n ? collection\n : { ...collection, changeState: {} };\n }\n\n /**\n * Commit changes for the given entities as when they have been refreshed from the server.\n * Harmless when there are no entity changes to commit.\n * @param entityOrIdList The entities to clear tracking or their ids.\n * @param collection The entity collection\n */\n commitMany(\n entityOrIdList: (number | string | T)[],\n collection: EntityCollection\n ): EntityCollection {\n if (entityOrIdList == null || entityOrIdList.length === 0) {\n return collection; // nothing to commit\n }\n let didMutate = false;\n const changeState = entityOrIdList.reduce((chgState, entityOrId) => {\n const id =\n typeof entityOrId === 'object'\n ? this.selectId(entityOrId)\n : (entityOrId as string | number);\n if (chgState[id]) {\n if (!didMutate) {\n chgState = { ...chgState };\n didMutate = true;\n }\n delete chgState[id];\n }\n return chgState;\n }, collection.changeState);\n\n return didMutate ? { ...collection, changeState } : collection;\n }\n\n /**\n * Commit changes for the given entity as when it have been refreshed from the server.\n * Harmless when no entity changes to commit.\n * @param entityOrId The entity to clear tracking or its id.\n * @param collection The entity collection\n */\n commitOne(\n entityOrId: number | string | T,\n collection: EntityCollection\n ): EntityCollection {\n return entityOrId == null\n ? collection\n : this.commitMany([entityOrId], collection);\n }\n\n // #endregion commit methods\n\n // #region merge query\n /**\n * Merge query results into the collection, adjusting the ChangeState per the mergeStrategy.\n * @param entities Entities returned from querying the server.\n * @param collection The entity collection\n * @param [mergeStrategy] How to merge a queried entity when the corresponding entity in the collection has an unsaved change.\n * Defaults to MergeStrategy.PreserveChanges.\n * @returns The merged EntityCollection.\n */\n mergeQueryResults(\n entities: T[],\n collection: EntityCollection,\n mergeStrategy?: MergeStrategy\n ): EntityCollection {\n return this.mergeServerUpserts(\n entities,\n collection,\n MergeStrategy.PreserveChanges,\n mergeStrategy\n );\n }\n // #endregion merge query results\n\n // #region merge save results\n /**\n * Merge result of saving new entities into the collection, adjusting the ChangeState per the mergeStrategy.\n * The default is MergeStrategy.OverwriteChanges.\n * @param entities Entities returned from saving new entities to the server.\n * @param collection The entity collection\n * @param [mergeStrategy] How to merge a saved entity when the corresponding entity in the collection has an unsaved change.\n * Defaults to MergeStrategy.OverwriteChanges.\n * @returns The merged EntityCollection.\n */\n mergeSaveAdds(\n entities: T[],\n collection: EntityCollection,\n mergeStrategy?: MergeStrategy\n ): EntityCollection {\n return this.mergeServerUpserts(\n entities,\n collection,\n MergeStrategy.OverwriteChanges,\n mergeStrategy\n );\n }\n\n /**\n * Merge successful result of deleting entities on the server that have the given primary keys\n * Clears the entity changeState for those keys unless the MergeStrategy is ignoreChanges.\n * @param entities keys primary keys of the entities to remove/delete.\n * @param collection The entity collection\n * @param [mergeStrategy] How to adjust change tracking when the corresponding entity in the collection has an unsaved change.\n * Defaults to MergeStrategy.OverwriteChanges.\n * @returns The merged EntityCollection.\n */\n mergeSaveDeletes(\n keys: (number | string)[],\n collection: EntityCollection,\n mergeStrategy?: MergeStrategy\n ): EntityCollection {\n mergeStrategy =\n mergeStrategy == null ? MergeStrategy.OverwriteChanges : mergeStrategy;\n // same logic for all non-ignore merge strategies: always clear (commit) the changes\n const deleteIds = keys as string[]; // make TypeScript happy\n collection =\n mergeStrategy === MergeStrategy.IgnoreChanges\n ? collection\n : this.commitMany(deleteIds, collection);\n return this.adapter.removeMany(deleteIds, collection);\n }\n\n /**\n * Merge result of saving updated entities into the collection, adjusting the ChangeState per the mergeStrategy.\n * The default is MergeStrategy.OverwriteChanges.\n * @param updateResponseData Entity response data returned from saving updated entities to the server.\n * @param collection The entity collection\n * @param [mergeStrategy] How to merge a saved entity when the corresponding entity in the collection has an unsaved change.\n * Defaults to MergeStrategy.OverwriteChanges.\n * @param [skipUnchanged] True means skip update if server didn't change it. False by default.\n * If the update was optimistic and the server didn't make more changes of its own\n * then the updates are already in the collection and shouldn't make them again.\n * @returns The merged EntityCollection.\n */\n mergeSaveUpdates(\n updateResponseData: UpdateResponseData[],\n collection: EntityCollection,\n mergeStrategy?: MergeStrategy,\n skipUnchanged = false\n ): EntityCollection {\n if (updateResponseData == null || updateResponseData.length === 0) {\n return collection; // nothing to merge.\n }\n\n let didMutate = false;\n let changeState = collection.changeState;\n mergeStrategy =\n mergeStrategy == null ? MergeStrategy.OverwriteChanges : mergeStrategy;\n let updates: Update[];\n\n switch (mergeStrategy) {\n case MergeStrategy.IgnoreChanges:\n updates = filterChanged(updateResponseData);\n return this.adapter.updateMany(updates, collection);\n\n case MergeStrategy.OverwriteChanges:\n changeState = updateResponseData.reduce((chgState, update) => {\n const oldId = update.id;\n const change = chgState[oldId];\n if (change) {\n if (!didMutate) {\n chgState = { ...chgState };\n didMutate = true;\n }\n delete chgState[oldId];\n }\n return chgState;\n }, collection.changeState);\n\n collection = didMutate ? { ...collection, changeState } : collection;\n\n updates = filterChanged(updateResponseData);\n return this.adapter.updateMany(updates, collection);\n\n case MergeStrategy.PreserveChanges: {\n const updateableEntities = [] as UpdateResponseData[];\n changeState = updateResponseData.reduce((chgState, update) => {\n const oldId = update.id;\n const change = chgState[oldId];\n if (change) {\n // Tracking a change so update original value but not the current value\n if (!didMutate) {\n chgState = { ...chgState };\n didMutate = true;\n }\n const newId = this.selectId(update.changes as T);\n const oldChangeState = change;\n // If the server changed the id, register the new \"originalValue\" under the new id\n // and remove the change tracked under the old id.\n if (newId !== oldId) {\n delete chgState[oldId];\n }\n const newOrigValue = {\n ...(oldChangeState!.originalValue as any),\n ...(update.changes as any),\n };\n (chgState as any)[newId] = {\n ...oldChangeState,\n originalValue: newOrigValue,\n };\n } else {\n updateableEntities.push(update);\n }\n return chgState;\n }, collection.changeState);\n collection = didMutate ? { ...collection, changeState } : collection;\n\n updates = filterChanged(updateableEntities);\n return this.adapter.updateMany(updates, collection);\n }\n }\n\n /**\n * Conditionally keep only those updates that have additional server changes.\n * (e.g., for optimistic saves because they updates are already in the current collection)\n * Strip off the `changed` property.\n * @responseData Entity response data from server.\n * May be an UpdateResponseData, a subclass of Update with a 'changed' flag.\n * @returns Update (without the changed flag)\n */\n function filterChanged(responseData: UpdateResponseData[]): Update[] {\n if (skipUnchanged === true) {\n // keep only those updates that the server changed (knowable if is UpdateResponseData)\n responseData = responseData.filter((r) => r.changed === true);\n }\n // Strip unchanged property from responseData, leaving just the pure Update\n // TODO: Remove? probably not necessary as the Update isn't stored and adapter will ignore `changed`.\n return responseData.map((r) => ({ id: r.id as any, changes: r.changes }));\n }\n }\n\n /**\n * Merge result of saving upserted entities into the collection, adjusting the ChangeState per the mergeStrategy.\n * The default is MergeStrategy.OverwriteChanges.\n * @param entities Entities returned from saving upserts to the server.\n * @param collection The entity collection\n * @param [mergeStrategy] How to merge a saved entity when the corresponding entity in the collection has an unsaved change.\n * Defaults to MergeStrategy.OverwriteChanges.\n * @returns The merged EntityCollection.\n */\n mergeSaveUpserts(\n entities: T[],\n collection: EntityCollection,\n mergeStrategy?: MergeStrategy\n ): EntityCollection {\n return this.mergeServerUpserts(\n entities,\n collection,\n MergeStrategy.OverwriteChanges,\n mergeStrategy\n );\n }\n // #endregion merge save results\n\n // #region query & save helpers\n /**\n *\n * @param entities Entities to merge\n * @param collection Collection into which entities are merged\n * @param defaultMergeStrategy How to merge when action's MergeStrategy is unspecified\n * @param [mergeStrategy] The action's MergeStrategy\n */\n private mergeServerUpserts(\n entities: T[],\n collection: EntityCollection,\n defaultMergeStrategy: MergeStrategy,\n mergeStrategy?: MergeStrategy\n ): EntityCollection {\n if (entities == null || entities.length === 0) {\n return collection; // nothing to merge.\n }\n\n let didMutate = false;\n let changeState = collection.changeState;\n mergeStrategy =\n mergeStrategy == null ? defaultMergeStrategy : mergeStrategy;\n\n switch (mergeStrategy) {\n case MergeStrategy.IgnoreChanges:\n return this.adapter.upsertMany(entities, collection);\n\n case MergeStrategy.OverwriteChanges:\n collection = this.adapter.upsertMany(entities, collection);\n\n changeState = entities.reduce((chgState, entity) => {\n const id = this.selectId(entity);\n const change = chgState[id];\n if (change) {\n if (!didMutate) {\n chgState = { ...chgState };\n didMutate = true;\n }\n delete chgState[id];\n }\n return chgState;\n }, collection.changeState);\n\n return didMutate ? { ...collection, changeState } : collection;\n\n case MergeStrategy.PreserveChanges: {\n const upsertEntities = [] as T[];\n changeState = entities.reduce((chgState, entity) => {\n const id = this.selectId(entity);\n const change = chgState[id];\n if (change) {\n if (!didMutate) {\n chgState = {\n ...chgState,\n [id]: {\n ...chgState[id]!,\n originalValue: entity,\n },\n };\n didMutate = true;\n }\n } else {\n upsertEntities.push(entity);\n }\n return chgState;\n }, collection.changeState);\n\n collection = this.adapter.upsertMany(upsertEntities, collection);\n return didMutate ? { ...collection, changeState } : collection;\n }\n }\n }\n // #endregion query & save helpers\n\n // #region track methods\n /**\n * Track multiple entities before adding them to the collection.\n * Does NOT add to the collection (the reducer's job).\n * @param entities The entities to add. They must all have their ids.\n * @param collection The entity collection\n * @param [mergeStrategy] Track by default. Don't track if is MergeStrategy.IgnoreChanges.\n */\n trackAddMany(\n entities: T[],\n collection: EntityCollection,\n mergeStrategy?: MergeStrategy\n ): EntityCollection {\n if (\n mergeStrategy === MergeStrategy.IgnoreChanges ||\n entities == null ||\n entities.length === 0\n ) {\n return collection; // nothing to track\n }\n let didMutate = false;\n const changeState = entities.reduce((chgState, entity) => {\n const id = this.selectId(entity);\n if (id == null || id === '') {\n throw new Error(\n `${collection.entityName} entity add requires a key to be tracked`\n );\n }\n const trackedChange = chgState[id];\n\n if (!trackedChange) {\n if (!didMutate) {\n didMutate = true;\n chgState = { ...chgState };\n }\n chgState[id] = { changeType: ChangeType.Added };\n }\n return chgState;\n }, collection.changeState);\n return didMutate ? { ...collection, changeState } : collection;\n }\n\n /**\n * Track an entity before adding it to the collection.\n * Does NOT add to the collection (the reducer's job).\n * @param entity The entity to add. It must have an id.\n * @param collection The entity collection\n * @param [mergeStrategy] Track by default. Don't track if is MergeStrategy.IgnoreChanges.\n * If not specified, implementation supplies a default strategy.\n */\n trackAddOne(\n entity: T,\n collection: EntityCollection,\n mergeStrategy?: MergeStrategy\n ): EntityCollection {\n return entity == null\n ? collection\n : this.trackAddMany([entity], collection, mergeStrategy);\n }\n\n /**\n * Track multiple entities before removing them with the intention of deleting them on the server.\n * Does NOT remove from the collection (the reducer's job).\n * @param keys The primary keys of the entities to delete.\n * @param collection The entity collection\n * @param [mergeStrategy] Track by default. Don't track if is MergeStrategy.IgnoreChanges.\n */\n trackDeleteMany(\n keys: (number | string)[],\n collection: EntityCollection,\n mergeStrategy?: MergeStrategy\n ): EntityCollection {\n if (\n mergeStrategy === MergeStrategy.IgnoreChanges ||\n keys == null ||\n keys.length === 0\n ) {\n return collection; // nothing to track\n }\n let didMutate = false;\n const entityMap = collection.entities;\n const changeState = keys.reduce((chgState, id) => {\n const originalValue = entityMap[id];\n if (originalValue) {\n const trackedChange = chgState[id];\n if (trackedChange) {\n if (trackedChange.changeType === ChangeType.Added) {\n // Special case: stop tracking an added entity that you delete\n // The caller must also detect this, remove it immediately from the collection\n // and skip attempt to delete on the server.\n cloneChgStateOnce();\n delete chgState[id];\n } else if (trackedChange.changeType === ChangeType.Updated) {\n // Special case: switch change type from Updated to Deleted.\n cloneChgStateOnce();\n chgState[id] = { ...chgState[id], changeType: ChangeType.Deleted };\n }\n } else {\n // Start tracking this entity\n cloneChgStateOnce();\n chgState[id] = { changeType: ChangeType.Deleted, originalValue };\n }\n }\n return chgState;\n\n function cloneChgStateOnce() {\n if (!didMutate) {\n didMutate = true;\n chgState = { ...chgState };\n }\n }\n }, collection.changeState);\n\n return didMutate ? { ...collection, changeState } : collection;\n }\n\n /**\n * Track an entity before it is removed with the intention of deleting it on the server.\n * Does NOT remove from the collection (the reducer's job).\n * @param key The primary key of the entity to delete.\n * @param collection The entity collection\n * @param [mergeStrategy] Track by default. Don't track if is MergeStrategy.IgnoreChanges.\n */\n trackDeleteOne(\n key: number | string,\n collection: EntityCollection,\n mergeStrategy?: MergeStrategy\n ): EntityCollection {\n return key == null\n ? collection\n : this.trackDeleteMany([key], collection, mergeStrategy);\n }\n\n /**\n * Track multiple entities before updating them in the collection.\n * Does NOT update the collection (the reducer's job).\n * @param updates The entities to update.\n * @param collection The entity collection\n * @param [mergeStrategy] Track by default. Don't track if is MergeStrategy.IgnoreChanges.\n */\n trackUpdateMany(\n updates: Update[],\n collection: EntityCollection,\n mergeStrategy?: MergeStrategy\n ): EntityCollection {\n if (\n mergeStrategy === MergeStrategy.IgnoreChanges ||\n updates == null ||\n updates.length === 0\n ) {\n return collection; // nothing to track\n }\n let didMutate = false;\n const entityMap = collection.entities;\n const changeState = updates.reduce((chgState, update) => {\n const { id, changes: entity } = update;\n if (id == null || id === '') {\n throw new Error(\n `${collection.entityName} entity update requires a key to be tracked`\n );\n }\n const originalValue = entityMap[id];\n // Only track if it is in the collection. Silently ignore if it is not.\n // @ngrx/entity adapter would also silently ignore.\n // Todo: should missing update entity really be reported as an error?\n if (originalValue) {\n const trackedChange = chgState[id];\n if (!trackedChange) {\n if (!didMutate) {\n didMutate = true;\n chgState = { ...chgState };\n }\n chgState[id] = { changeType: ChangeType.Updated, originalValue };\n }\n }\n return chgState;\n }, collection.changeState);\n return didMutate ? { ...collection, changeState } : collection;\n }\n\n /**\n * Track an entity before updating it in the collection.\n * Does NOT update the collection (the reducer's job).\n * @param update The entity to update.\n * @param collection The entity collection\n * @param [mergeStrategy] Track by default. Don't track if is MergeStrategy.IgnoreChanges.\n */\n trackUpdateOne(\n update: Update,\n collection: EntityCollection,\n mergeStrategy?: MergeStrategy\n ): EntityCollection {\n return update == null\n ? collection\n : this.trackUpdateMany([update], collection, mergeStrategy);\n }\n\n /**\n * Track multiple entities before upserting (adding and updating) them to the collection.\n * Does NOT update the collection (the reducer's job).\n * @param entities The entities to add or update. They must be complete entities with ids.\n * @param collection The entity collection\n * @param [mergeStrategy] Track by default. Don't track if is MergeStrategy.IgnoreChanges.\n */\n trackUpsertMany(\n entities: T[],\n collection: EntityCollection,\n mergeStrategy?: MergeStrategy\n ): EntityCollection {\n if (\n mergeStrategy === MergeStrategy.IgnoreChanges ||\n entities == null ||\n entities.length === 0\n ) {\n return collection; // nothing to track\n }\n let didMutate = false;\n const entityMap = collection.entities;\n const changeState = entities.reduce((chgState, entity) => {\n const id = this.selectId(entity);\n if (id == null || id === '') {\n throw new Error(\n `${collection.entityName} entity upsert requires a key to be tracked`\n );\n }\n const trackedChange = chgState[id];\n\n if (!trackedChange) {\n if (!didMutate) {\n didMutate = true;\n chgState = { ...chgState };\n }\n\n const originalValue = entityMap[id];\n chgState[id] =\n originalValue == null\n ? { changeType: ChangeType.Added }\n : { changeType: ChangeType.Updated, originalValue };\n }\n return chgState;\n }, collection.changeState);\n return didMutate ? { ...collection, changeState } : collection;\n }\n\n /**\n * Track an entity before upsert (adding and updating) it to the collection.\n * Does NOT update the collection (the reducer's job).\n * @param entities The entity to add or update. It must be a complete entity with its id.\n * @param collection The entity collection\n * @param [mergeStrategy] Track by default. Don't track if is MergeStrategy.IgnoreChanges.\n */\n trackUpsertOne(\n entity: T,\n collection: EntityCollection,\n mergeStrategy?: MergeStrategy\n ): EntityCollection {\n return entity == null\n ? collection\n : this.trackUpsertMany([entity], collection, mergeStrategy);\n }\n // #endregion track methods\n\n // #region undo methods\n /**\n * Revert the unsaved changes for all collection.\n * Harmless when there are no entity changes to undo.\n * @param collection The entity collection\n */\n undoAll(collection: EntityCollection): EntityCollection {\n const ids = Object.keys(collection.changeState);\n\n const { remove, upsert } = ids.reduce(\n (acc, id) => {\n const changeState = acc.chgState[id]!;\n switch (changeState.changeType) {\n case ChangeType.Added:\n acc.remove.push(id);\n break;\n case ChangeType.Deleted:\n const removed = changeState!.originalValue;\n if (removed) {\n acc.upsert.push(removed);\n }\n break;\n case ChangeType.Updated:\n acc.upsert.push(changeState!.originalValue!);\n break;\n }\n return acc;\n },\n // entitiesToUndo\n {\n remove: [] as (number | string)[],\n upsert: [] as T[],\n chgState: collection.changeState,\n }\n );\n\n collection = this.adapter.removeMany(remove as string[], collection);\n collection = this.adapter.upsertMany(upsert, collection);\n\n return { ...collection, changeState: {} };\n }\n\n /**\n * Revert the unsaved changes for the given entities.\n * Harmless when there are no entity changes to undo.\n * @param entityOrIdList The entities to revert or their ids.\n * @param collection The entity collection\n */\n undoMany(\n entityOrIdList: (number | string | T)[],\n collection: EntityCollection\n ): EntityCollection {\n if (entityOrIdList == null || entityOrIdList.length === 0) {\n return collection; // nothing to undo\n }\n let didMutate = false;\n\n const { changeState, remove, upsert } = entityOrIdList.reduce(\n (acc, entityOrId) => {\n let chgState = acc.changeState;\n const id =\n typeof entityOrId === 'object'\n ? this.selectId(entityOrId)\n : (entityOrId as string | number);\n const change = chgState[id]!;\n if (change) {\n if (!didMutate) {\n chgState = { ...chgState };\n didMutate = true;\n }\n delete chgState[id]; // clear tracking of this entity\n acc.changeState = chgState;\n switch (change.changeType) {\n case ChangeType.Added:\n acc.remove.push(id);\n break;\n case ChangeType.Deleted:\n const removed = change!.originalValue;\n if (removed) {\n acc.upsert.push(removed);\n }\n break;\n case ChangeType.Updated:\n acc.upsert.push(change!.originalValue!);\n break;\n }\n }\n return acc;\n },\n // entitiesToUndo\n {\n remove: [] as (number | string)[],\n upsert: [] as T[],\n changeState: collection.changeState,\n }\n );\n\n collection = this.adapter.removeMany(remove as string[], collection);\n collection = this.adapter.upsertMany(upsert, collection);\n return didMutate ? { ...collection, changeState } : collection;\n }\n\n /**\n * Revert the unsaved changes for the given entity.\n * Harmless when there are no entity changes to undo.\n * @param entityOrId The entity to revert or its id.\n * @param collection The entity collection\n */\n undoOne(\n entityOrId: number | string | T,\n collection: EntityCollection\n ): EntityCollection {\n return entityOrId == null\n ? collection\n : this.undoMany([entityOrId], collection);\n }\n // #endregion undo methods\n}\n","import { Injectable } from '@angular/core';\nimport { EntityAdapter, IdSelector, Update } from '@ngrx/entity';\nimport {\n ChangeStateMap,\n ChangeType,\n EntityCollection,\n} from './entity-collection';\nimport { EntityChangeTrackerBase } from './entity-change-tracker-base';\nimport { toUpdateFactory } from '../utils/utilities';\nimport { EntityAction } from '../actions/entity-action';\nimport { EntityActionDataServiceError } from '../dataservices/data-service-error';\nimport { EntityActionGuard } from '../actions/entity-action-guard';\nimport { EntityChangeTracker } from './entity-change-tracker';\nimport { EntityDefinition } from '../entity-metadata/entity-definition';\nimport { EntityDefinitionService } from '../entity-metadata/entity-definition.service';\nimport { EntityOp } from '../actions/entity-op';\nimport { MergeStrategy } from '../actions/merge-strategy';\nimport { UpdateResponseData } from '../actions/update-response-data';\n\n/**\n * Map of {EntityOp} to reducer method for the operation.\n * If an operation is missing, caller should return the collection for that reducer.\n */\nexport interface EntityCollectionReducerMethodMap {\n [method: string]: (\n collection: EntityCollection,\n action: EntityAction\n ) => EntityCollection;\n}\n\n/**\n * Base implementation of reducer methods for an entity collection.\n */\nexport class EntityCollectionReducerMethods {\n protected adapter: EntityAdapter;\n protected guard: EntityActionGuard;\n /** True if this collection tracks unsaved changes */\n protected isChangeTracking: boolean;\n\n /** Extract the primary key (id); default to `id` */\n selectId: IdSelector;\n\n /**\n * Track changes to entities since the last query or save\n * Can revert some or all of those changes\n */\n entityChangeTracker: EntityChangeTracker;\n\n /**\n * Convert an entity (or partial entity) into the `Update` object\n * `id`: the primary key and\n * `changes`: the entity (or partial entity of changes).\n */\n protected toUpdate: (entity: Partial) => Update;\n\n /**\n * Dictionary of the {EntityCollectionReducerMethods} for this entity type,\n * keyed by the {EntityOp}\n */\n readonly methods: EntityCollectionReducerMethodMap = {\n [EntityOp.CANCEL_PERSIST]: this.cancelPersist.bind(this),\n\n [EntityOp.QUERY_ALL]: this.queryAll.bind(this),\n [EntityOp.QUERY_ALL_ERROR]: this.queryAllError.bind(this),\n [EntityOp.QUERY_ALL_SUCCESS]: this.queryAllSuccess.bind(this),\n\n [EntityOp.QUERY_BY_KEY]: this.queryByKey.bind(this),\n [EntityOp.QUERY_BY_KEY_ERROR]: this.queryByKeyError.bind(this),\n [EntityOp.QUERY_BY_KEY_SUCCESS]: this.queryByKeySuccess.bind(this),\n\n [EntityOp.QUERY_LOAD]: this.queryLoad.bind(this),\n [EntityOp.QUERY_LOAD_ERROR]: this.queryLoadError.bind(this),\n [EntityOp.QUERY_LOAD_SUCCESS]: this.queryLoadSuccess.bind(this),\n\n [EntityOp.QUERY_MANY]: this.queryMany.bind(this),\n [EntityOp.QUERY_MANY_ERROR]: this.queryManyError.bind(this),\n [EntityOp.QUERY_MANY_SUCCESS]: this.queryManySuccess.bind(this),\n\n [EntityOp.SAVE_ADD_MANY]: this.saveAddMany.bind(this),\n [EntityOp.SAVE_ADD_MANY_ERROR]: this.saveAddManyError.bind(this),\n [EntityOp.SAVE_ADD_MANY_SUCCESS]: this.saveAddManySuccess.bind(this),\n\n [EntityOp.SAVE_ADD_ONE]: this.saveAddOne.bind(this),\n [EntityOp.SAVE_ADD_ONE_ERROR]: this.saveAddOneError.bind(this),\n [EntityOp.SAVE_ADD_ONE_SUCCESS]: this.saveAddOneSuccess.bind(this),\n\n [EntityOp.SAVE_DELETE_MANY]: this.saveDeleteMany.bind(this),\n [EntityOp.SAVE_DELETE_MANY_ERROR]: this.saveDeleteManyError.bind(this),\n [EntityOp.SAVE_DELETE_MANY_SUCCESS]: this.saveDeleteManySuccess.bind(this),\n\n [EntityOp.SAVE_DELETE_ONE]: this.saveDeleteOne.bind(this),\n [EntityOp.SAVE_DELETE_ONE_ERROR]: this.saveDeleteOneError.bind(this),\n [EntityOp.SAVE_DELETE_ONE_SUCCESS]: this.saveDeleteOneSuccess.bind(this),\n\n [EntityOp.SAVE_UPDATE_MANY]: this.saveUpdateMany.bind(this),\n [EntityOp.SAVE_UPDATE_MANY_ERROR]: this.saveUpdateManyError.bind(this),\n [EntityOp.SAVE_UPDATE_MANY_SUCCESS]: this.saveUpdateManySuccess.bind(this),\n\n [EntityOp.SAVE_UPDATE_ONE]: this.saveUpdateOne.bind(this),\n [EntityOp.SAVE_UPDATE_ONE_ERROR]: this.saveUpdateOneError.bind(this),\n [EntityOp.SAVE_UPDATE_ONE_SUCCESS]: this.saveUpdateOneSuccess.bind(this),\n\n [EntityOp.SAVE_UPSERT_MANY]: this.saveUpsertMany.bind(this),\n [EntityOp.SAVE_UPSERT_MANY_ERROR]: this.saveUpsertManyError.bind(this),\n [EntityOp.SAVE_UPSERT_MANY_SUCCESS]: this.saveUpsertManySuccess.bind(this),\n\n [EntityOp.SAVE_UPSERT_ONE]: this.saveUpsertOne.bind(this),\n [EntityOp.SAVE_UPSERT_ONE_ERROR]: this.saveUpsertOneError.bind(this),\n [EntityOp.SAVE_UPSERT_ONE_SUCCESS]: this.saveUpsertOneSuccess.bind(this),\n\n // Do nothing on save errors except turn the loading flag off.\n // See the ChangeTrackerMetaReducers\n // Or the app could listen for those errors and do something\n\n /// cache only operations ///\n\n [EntityOp.ADD_ALL]: this.addAll.bind(this),\n [EntityOp.ADD_MANY]: this.addMany.bind(this),\n [EntityOp.ADD_ONE]: this.addOne.bind(this),\n\n [EntityOp.REMOVE_ALL]: this.removeAll.bind(this),\n [EntityOp.REMOVE_MANY]: this.removeMany.bind(this),\n [EntityOp.REMOVE_ONE]: this.removeOne.bind(this),\n\n [EntityOp.UPDATE_MANY]: this.updateMany.bind(this),\n [EntityOp.UPDATE_ONE]: this.updateOne.bind(this),\n\n [EntityOp.UPSERT_MANY]: this.upsertMany.bind(this),\n [EntityOp.UPSERT_ONE]: this.upsertOne.bind(this),\n\n [EntityOp.COMMIT_ALL]: this.commitAll.bind(this),\n [EntityOp.COMMIT_MANY]: this.commitMany.bind(this),\n [EntityOp.COMMIT_ONE]: this.commitOne.bind(this),\n [EntityOp.UNDO_ALL]: this.undoAll.bind(this),\n [EntityOp.UNDO_MANY]: this.undoMany.bind(this),\n [EntityOp.UNDO_ONE]: this.undoOne.bind(this),\n\n [EntityOp.SET_CHANGE_STATE]: this.setChangeState.bind(this),\n [EntityOp.SET_COLLECTION]: this.setCollection.bind(this),\n [EntityOp.SET_FILTER]: this.setFilter.bind(this),\n [EntityOp.SET_LOADED]: this.setLoaded.bind(this),\n [EntityOp.SET_LOADING]: this.setLoading.bind(this),\n };\n\n constructor(\n public entityName: string,\n public definition: EntityDefinition,\n /*\n * Track changes to entities since the last query or save\n * Can revert some or all of those changes\n */\n entityChangeTracker?: EntityChangeTracker\n ) {\n this.adapter = definition.entityAdapter;\n this.isChangeTracking = definition.noChangeTracking !== true;\n this.selectId = definition.selectId;\n\n this.guard = new EntityActionGuard(entityName, this.selectId);\n this.toUpdate = toUpdateFactory(this.selectId);\n\n this.entityChangeTracker =\n entityChangeTracker ||\n new EntityChangeTrackerBase(this.adapter, this.selectId);\n }\n\n /** Cancel a persistence operation */\n protected cancelPersist(\n collection: EntityCollection\n ): EntityCollection {\n return this.setLoadingFalse(collection);\n }\n\n // #region query operations\n\n protected queryAll(collection: EntityCollection): EntityCollection {\n return this.setLoadingTrue(collection);\n }\n\n protected queryAllError(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n return this.setLoadingFalse(collection);\n }\n\n /**\n * Merges query results per the MergeStrategy\n * Sets loading flag to false and loaded flag to true.\n */\n protected queryAllSuccess(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n const data = this.extractData(action);\n const mergeStrategy = this.extractMergeStrategy(action);\n return {\n ...this.entityChangeTracker.mergeQueryResults(\n data,\n collection,\n mergeStrategy\n ),\n loaded: true,\n loading: false,\n };\n }\n\n protected queryByKey(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n return this.setLoadingTrue(collection);\n }\n\n protected queryByKeyError(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n return this.setLoadingFalse(collection);\n }\n\n protected queryByKeySuccess(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n const data = this.extractData(action);\n const mergeStrategy = this.extractMergeStrategy(action);\n collection =\n data == null\n ? collection\n : this.entityChangeTracker.mergeQueryResults(\n [data],\n collection,\n mergeStrategy\n );\n return this.setLoadingFalse(collection);\n }\n\n protected queryLoad(collection: EntityCollection): EntityCollection {\n return this.setLoadingTrue(collection);\n }\n\n protected queryLoadError(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n return this.setLoadingFalse(collection);\n }\n\n /**\n * Replaces all entities in the collection\n * Sets loaded flag to true, loading flag to false,\n * and clears changeState for the entire collection.\n */\n protected queryLoadSuccess(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n const data = this.extractData(action);\n return {\n ...this.adapter.setAll(data, collection),\n loading: false,\n loaded: true,\n changeState: {},\n };\n }\n\n protected queryMany(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n return this.setLoadingTrue(collection);\n }\n\n protected queryManyError(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n return this.setLoadingFalse(collection);\n }\n\n protected queryManySuccess(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n const data = this.extractData(action);\n const mergeStrategy = this.extractMergeStrategy(action);\n return {\n ...this.entityChangeTracker.mergeQueryResults(\n data,\n collection,\n mergeStrategy\n ),\n loaded: true,\n loading: false,\n };\n }\n // #endregion query operations\n\n // #region save operations\n\n // #region saveAddMany\n /**\n * Save multiple new entities.\n * If saving pessimistically, delay adding to collection until server acknowledges success.\n * If saving optimistically; add immediately.\n * @param collection The collection to which the entities should be added.\n * @param action The action payload holds options, including whether the save is optimistic,\n * and the data, which must be an array of entities.\n * If saving optimistically, the entities must have their keys.\n */\n protected saveAddMany(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n if (this.isOptimistic(action)) {\n const entities = this.guard.mustBeEntities(action); // ensure the entity has a PK\n const mergeStrategy = this.extractMergeStrategy(action);\n collection = this.entityChangeTracker.trackAddMany(\n entities,\n collection,\n mergeStrategy\n );\n collection = this.adapter.addMany(entities, collection);\n }\n return this.setLoadingTrue(collection);\n }\n\n /**\n * Attempt to save new entities failed or timed-out.\n * Action holds the error.\n * If saved pessimistically, new entities are not in the collection and\n * you may not have to compensate for the error.\n * If saved optimistically, the unsaved entities are in the collection and\n * you may need to compensate for the error.\n */\n protected saveAddManyError(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n return this.setLoadingFalse(collection);\n }\n // #endregion saveAddMany\n\n // #region saveAddOne\n /**\n * Successfully saved new entities to the server.\n * If saved pessimistically, add the entities from the server to the collection.\n * If saved optimistically, the added entities are already in the collection.\n * However, the server might have set or modified other fields (e.g, concurrency field),\n * and may even return additional new entities.\n * Therefore, upsert the entities in the collection with the returned values (if any)\n * Caution: in a race, this update could overwrite unsaved user changes.\n * Use pessimistic add to avoid this risk.\n * Note: saveAddManySuccess differs from saveAddOneSuccess when optimistic.\n * saveAddOneSuccess updates (not upserts) with the lone entity from the server.\n * There is no effect if the entity is not already in cache.\n * saveAddManySuccess will add an entity if it is not found in cache.\n */\n protected saveAddManySuccess(\n collection: EntityCollection,\n action: EntityAction\n ) {\n // For pessimistic save, ensure the server generated the primary key if the client didn't send one.\n const entities = this.guard.mustBeEntities(action);\n const mergeStrategy = this.extractMergeStrategy(action);\n if (this.isOptimistic(action)) {\n collection = this.entityChangeTracker.mergeSaveUpserts(\n entities,\n collection,\n mergeStrategy\n );\n } else {\n collection = this.entityChangeTracker.mergeSaveAdds(\n entities,\n collection,\n mergeStrategy\n );\n }\n return this.setLoadingFalse(collection);\n }\n // #endregion saveAddMany\n\n // #region saveAddOne\n /**\n * Save a new entity.\n * If saving pessimistically, delay adding to collection until server acknowledges success.\n * If saving optimistically; add entity immediately.\n * @param collection The collection to which the entity should be added.\n * @param action The action payload holds options, including whether the save is optimistic,\n * and the data, which must be an entity.\n * If saving optimistically, the entity must have a key.\n */\n protected saveAddOne(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n if (this.isOptimistic(action)) {\n const entity = this.guard.mustBeEntity(action); // ensure the entity has a PK\n const mergeStrategy = this.extractMergeStrategy(action);\n collection = this.entityChangeTracker.trackAddOne(\n entity,\n collection,\n mergeStrategy\n );\n collection = this.adapter.addOne(entity, collection);\n }\n return this.setLoadingTrue(collection);\n }\n\n /**\n * Attempt to save a new entity failed or timed-out.\n * Action holds the error.\n * If saved pessimistically, the entity is not in the collection and\n * you may not have to compensate for the error.\n * If saved optimistically, the unsaved entity is in the collection and\n * you may need to compensate for the error.\n */\n protected saveAddOneError(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n return this.setLoadingFalse(collection);\n }\n\n /**\n * Successfully saved a new entity to the server.\n * If saved pessimistically, add the entity from the server to the collection.\n * If saved optimistically, the added entity is already in the collection.\n * However, the server might have set or modified other fields (e.g, concurrency field)\n * Therefore, update the entity in the collection with the returned value (if any)\n * Caution: in a race, this update could overwrite unsaved user changes.\n * Use pessimistic add to avoid this risk.\n */\n protected saveAddOneSuccess(\n collection: EntityCollection,\n action: EntityAction\n ) {\n // For pessimistic save, ensure the server generated the primary key if the client didn't send one.\n const entity = this.guard.mustBeEntity(action);\n const mergeStrategy = this.extractMergeStrategy(action);\n if (this.isOptimistic(action)) {\n const update: UpdateResponseData = this.toUpdate(entity);\n // Always update the cache with added entity returned from server\n collection = this.entityChangeTracker.mergeSaveUpdates(\n [update],\n collection,\n mergeStrategy,\n false /*never skip*/\n );\n } else {\n collection = this.entityChangeTracker.mergeSaveAdds(\n [entity],\n collection,\n mergeStrategy\n );\n }\n return this.setLoadingFalse(collection);\n }\n // #endregion saveAddOne\n\n // #region saveAddMany\n // TODO MANY\n // #endregion saveAddMany\n\n // #region saveDeleteOne\n /**\n * Delete an entity from the server by key and remove it from the collection (if present).\n * If the entity is an unsaved new entity, remove it from the collection immediately\n * and skip the server delete request.\n * An optimistic save removes an existing entity from the collection immediately;\n * a pessimistic save removes it after the server confirms successful delete.\n * @param collection Will remove the entity with this key from the collection.\n * @param action The action payload holds options, including whether the save is optimistic,\n * and the data, which must be a primary key or an entity with a key;\n * this reducer extracts the key from the entity.\n */\n protected saveDeleteOne(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n const toDelete = this.extractData(action);\n const deleteId =\n typeof toDelete === 'object'\n ? this.selectId(toDelete)\n : (toDelete as string | number);\n const change = collection.changeState[deleteId];\n // If entity is already tracked ...\n if (change) {\n if (change.changeType === ChangeType.Added) {\n // Remove the added entity immediately and forget about its changes (via commit).\n collection = this.adapter.removeOne(deleteId as string, collection);\n collection = this.entityChangeTracker.commitOne(deleteId, collection);\n // Should not waste effort trying to delete on the server because it can't be there.\n action.payload.skip = true;\n } else {\n // Re-track it as a delete, even if tracking is turned off for this call.\n collection = this.entityChangeTracker.trackDeleteOne(\n deleteId,\n collection\n );\n }\n }\n\n // If optimistic delete, track current state and remove immediately.\n if (this.isOptimistic(action)) {\n const mergeStrategy = this.extractMergeStrategy(action);\n collection = this.entityChangeTracker.trackDeleteOne(\n deleteId,\n collection,\n mergeStrategy\n );\n collection = this.adapter.removeOne(deleteId as string, collection);\n }\n\n return this.setLoadingTrue(collection);\n }\n\n /**\n * Attempt to delete the entity on the server failed or timed-out.\n * Action holds the error.\n * If saved pessimistically, the entity could still be in the collection and\n * you may not have to compensate for the error.\n * If saved optimistically, the entity is not in the collection and\n * you may need to compensate for the error.\n */\n protected saveDeleteOneError(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n return this.setLoadingFalse(collection);\n }\n\n /**\n * Successfully deleted entity on the server. The key of the deleted entity is in the action payload data.\n * If saved pessimistically, if the entity is still in the collection it will be removed.\n * If saved optimistically, the entity has already been removed from the collection.\n */\n protected saveDeleteOneSuccess(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n const deleteId = this.extractData(action);\n if (this.isOptimistic(action)) {\n const mergeStrategy = this.extractMergeStrategy(action);\n collection = this.entityChangeTracker.mergeSaveDeletes(\n [deleteId],\n collection,\n mergeStrategy\n );\n } else {\n // Pessimistic: ignore mergeStrategy. Remove entity from the collection and from change tracking.\n collection = this.adapter.removeOne(deleteId as string, collection);\n collection = this.entityChangeTracker.commitOne(deleteId, collection);\n }\n return this.setLoadingFalse(collection);\n }\n // #endregion saveDeleteOne\n\n // #region saveDeleteMany\n /**\n * Delete multiple entities from the server by key and remove them from the collection (if present).\n * Removes unsaved new entities from the collection immediately\n * but the id is still sent to the server for deletion even though the server will not find that entity.\n * Therefore, the server must be willing to ignore a delete request for an entity it cannot find.\n * An optimistic save removes existing entities from the collection immediately;\n * a pessimistic save removes them after the server confirms successful delete.\n * @param collection Removes entities from this collection.\n * @param action The action payload holds options, including whether the save is optimistic,\n * and the data, which must be an array of primary keys or entities with a key;\n * this reducer extracts the key from the entity.\n */\n protected saveDeleteMany(\n collection: EntityCollection,\n action: EntityAction<(number | string | T)[]>\n ): EntityCollection {\n const deleteIds = this.extractData(action).map((d) =>\n typeof d === 'object' ? this.selectId(d) : (d as string | number)\n );\n deleteIds.forEach((deleteId) => {\n const change = collection.changeState[deleteId];\n // If entity is already tracked ...\n if (change) {\n if (change.changeType === ChangeType.Added) {\n // Remove the added entity immediately and forget about its changes (via commit).\n collection = this.adapter.removeOne(deleteId as string, collection);\n collection = this.entityChangeTracker.commitOne(deleteId, collection);\n // Should not waste effort trying to delete on the server because it can't be there.\n action.payload.skip = true;\n } else {\n // Re-track it as a delete, even if tracking is turned off for this call.\n collection = this.entityChangeTracker.trackDeleteOne(\n deleteId,\n collection\n );\n }\n }\n });\n // If optimistic delete, track current state and remove immediately.\n if (this.isOptimistic(action)) {\n const mergeStrategy = this.extractMergeStrategy(action);\n collection = this.entityChangeTracker.trackDeleteMany(\n deleteIds,\n collection,\n mergeStrategy\n );\n collection = this.adapter.removeMany(deleteIds as string[], collection);\n }\n return this.setLoadingTrue(collection);\n }\n\n /**\n * Attempt to delete the entities on the server failed or timed-out.\n * Action holds the error.\n * If saved pessimistically, the entities could still be in the collection and\n * you may not have to compensate for the error.\n * If saved optimistically, the entities are not in the collection and\n * you may need to compensate for the error.\n */\n protected saveDeleteManyError(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n return this.setLoadingFalse(collection);\n }\n\n /**\n * Successfully deleted entities on the server. The keys of the deleted entities are in the action payload data.\n * If saved pessimistically, entities that are still in the collection will be removed.\n * If saved optimistically, the entities have already been removed from the collection.\n */\n protected saveDeleteManySuccess(\n collection: EntityCollection,\n action: EntityAction<(number | string)[]>\n ): EntityCollection {\n const deleteIds = this.extractData(action);\n if (this.isOptimistic(action)) {\n const mergeStrategy = this.extractMergeStrategy(action);\n collection = this.entityChangeTracker.mergeSaveDeletes(\n deleteIds,\n collection,\n mergeStrategy\n );\n } else {\n // Pessimistic: ignore mergeStrategy. Remove entity from the collection and from change tracking.\n collection = this.adapter.removeMany(deleteIds as string[], collection);\n collection = this.entityChangeTracker.commitMany(deleteIds, collection);\n }\n return this.setLoadingFalse(collection);\n }\n // #endregion saveDeleteMany\n\n // #region saveUpdateOne\n /**\n * Save an update to an existing entity.\n * If saving pessimistically, update the entity in the collection after the server confirms success.\n * If saving optimistically, update the entity immediately, before the save request.\n * @param collection The collection to update\n * @param action The action payload holds options, including if the save is optimistic,\n * and the data which, must be an {Update}\n */\n protected saveUpdateOne(\n collection: EntityCollection,\n action: EntityAction>\n ): EntityCollection {\n const update = this.guard.mustBeUpdate(action);\n if (this.isOptimistic(action)) {\n const mergeStrategy = this.extractMergeStrategy(action);\n collection = this.entityChangeTracker.trackUpdateOne(\n update,\n collection,\n mergeStrategy\n );\n collection = this.adapter.updateOne(update, collection);\n }\n return this.setLoadingTrue(collection);\n }\n\n /**\n * Attempt to update the entity on the server failed or timed-out.\n * Action holds the error.\n * If saved pessimistically, the entity in the collection is in the pre-save state\n * you may not have to compensate for the error.\n * If saved optimistically, the entity in the collection was updated\n * and you may need to compensate for the error.\n */\n protected saveUpdateOneError(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n return this.setLoadingFalse(collection);\n }\n\n /**\n * Successfully saved the updated entity to the server.\n * If saved pessimistically, update the entity in the collection with data from the server.\n * If saved optimistically, the entity was already updated in the collection.\n * However, the server might have set or modified other fields (e.g, concurrency field)\n * Therefore, update the entity in the collection with the returned value (if any)\n * Caution: in a race, this update could overwrite unsaved user changes.\n * Use pessimistic update to avoid this risk.\n * @param collection The collection to update\n * @param action The action payload holds options, including if the save is optimistic, and\n * the update data which, must be an UpdateResponse that corresponds to the Update sent to the server.\n * You must include an UpdateResponse even if the save was optimistic,\n * to ensure that the change tracking is properly reset.\n */\n protected saveUpdateOneSuccess(\n collection: EntityCollection,\n action: EntityAction>\n ): EntityCollection {\n const update = this.guard.mustBeUpdateResponse(action);\n const isOptimistic = this.isOptimistic(action);\n const mergeStrategy = this.extractMergeStrategy(action);\n collection = this.entityChangeTracker.mergeSaveUpdates(\n [update],\n collection,\n mergeStrategy,\n isOptimistic /*skip unchanged if optimistic */\n );\n return this.setLoadingFalse(collection);\n }\n // #endregion saveUpdateOne\n\n // #region saveUpdateMany\n /**\n * Save updated entities.\n * If saving pessimistically, update the entities in the collection after the server confirms success.\n * If saving optimistically, update the entities immediately, before the save request.\n * @param collection The collection to update\n * @param action The action payload holds options, including if the save is optimistic,\n * and the data which, must be an array of {Update}.\n */\n protected saveUpdateMany(\n collection: EntityCollection,\n action: EntityAction[]>\n ): EntityCollection {\n const updates = this.guard.mustBeUpdates(action);\n if (this.isOptimistic(action)) {\n const mergeStrategy = this.extractMergeStrategy(action);\n collection = this.entityChangeTracker.trackUpdateMany(\n updates,\n collection,\n mergeStrategy\n );\n collection = this.adapter.updateMany(updates, collection);\n }\n return this.setLoadingTrue(collection);\n }\n\n /**\n * Attempt to update entities on the server failed or timed-out.\n * Action holds the error.\n * If saved pessimistically, the entities in the collection are in the pre-save state\n * you may not have to compensate for the error.\n * If saved optimistically, the entities in the collection were updated\n * and you may need to compensate for the error.\n */\n protected saveUpdateManyError(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n return this.setLoadingFalse(collection);\n }\n\n /**\n * Successfully saved the updated entities to the server.\n * If saved pessimistically, the entities in the collection will be updated with data from the server.\n * If saved optimistically, the entities in the collection were already updated.\n * However, the server might have set or modified other fields (e.g, concurrency field)\n * Therefore, update the entity in the collection with the returned values (if any)\n * Caution: in a race, this update could overwrite unsaved user changes.\n * Use pessimistic update to avoid this risk.\n * @param collection The collection to update\n * @param action The action payload holds options, including if the save is optimistic,\n * and the data which, must be an array of UpdateResponse.\n * You must include an UpdateResponse for every Update sent to the server,\n * even if the save was optimistic, to ensure that the change tracking is properly reset.\n */\n protected saveUpdateManySuccess(\n collection: EntityCollection,\n action: EntityAction[]>\n ): EntityCollection {\n const updates = this.guard.mustBeUpdateResponses(action);\n const isOptimistic = this.isOptimistic(action);\n const mergeStrategy = this.extractMergeStrategy(action);\n collection = this.entityChangeTracker.mergeSaveUpdates(\n updates,\n collection,\n mergeStrategy,\n false /* never skip */\n );\n return this.setLoadingFalse(collection);\n }\n // #endregion saveUpdateMany\n\n // #region saveUpsertOne\n /**\n * Save a new or existing entity.\n * If saving pessimistically, delay adding to collection until server acknowledges success.\n * If saving optimistically; add immediately.\n * @param collection The collection to which the entity should be upserted.\n * @param action The action payload holds options, including whether the save is optimistic,\n * and the data, which must be a whole entity.\n * If saving optimistically, the entity must have its key.\n */\n protected saveUpsertOne(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n if (this.isOptimistic(action)) {\n const entity = this.guard.mustBeEntity(action); // ensure the entity has a PK\n const mergeStrategy = this.extractMergeStrategy(action);\n collection = this.entityChangeTracker.trackUpsertOne(\n entity,\n collection,\n mergeStrategy\n );\n collection = this.adapter.upsertOne(entity, collection);\n }\n return this.setLoadingTrue(collection);\n }\n\n /**\n * Attempt to save new or existing entity failed or timed-out.\n * Action holds the error.\n * If saved pessimistically, new or updated entity is not in the collection and\n * you may not have to compensate for the error.\n * If saved optimistically, the unsaved entities are in the collection and\n * you may need to compensate for the error.\n */\n protected saveUpsertOneError(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n return this.setLoadingFalse(collection);\n }\n\n /**\n * Successfully saved new or existing entities to the server.\n * If saved pessimistically, add the entities from the server to the collection.\n * If saved optimistically, the added entities are already in the collection.\n * However, the server might have set or modified other fields (e.g, concurrency field)\n * Therefore, update the entities in the collection with the returned values (if any)\n * Caution: in a race, this update could overwrite unsaved user changes.\n * Use pessimistic add to avoid this risk.\n */\n protected saveUpsertOneSuccess(\n collection: EntityCollection,\n action: EntityAction\n ) {\n // For pessimistic save, ensure the server generated the primary key if the client didn't send one.\n const entity = this.guard.mustBeEntity(action);\n const mergeStrategy = this.extractMergeStrategy(action);\n // Always update the cache with upserted entities returned from server\n collection = this.entityChangeTracker.mergeSaveUpserts(\n [entity],\n collection,\n mergeStrategy\n );\n return this.setLoadingFalse(collection);\n }\n // #endregion saveUpsertOne\n\n // #region saveUpsertMany\n /**\n * Save multiple new or existing entities.\n * If saving pessimistically, delay adding to collection until server acknowledges success.\n * If saving optimistically; add immediately.\n * @param collection The collection to which the entities should be upserted.\n * @param action The action payload holds options, including whether the save is optimistic,\n * and the data, which must be an array of whole entities.\n * If saving optimistically, the entities must have their keys.\n */\n protected saveUpsertMany(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n if (this.isOptimistic(action)) {\n const entities = this.guard.mustBeEntities(action); // ensure the entity has a PK\n const mergeStrategy = this.extractMergeStrategy(action);\n collection = this.entityChangeTracker.trackUpsertMany(\n entities,\n collection,\n mergeStrategy\n );\n collection = this.adapter.upsertMany(entities, collection);\n }\n return this.setLoadingTrue(collection);\n }\n\n /**\n * Attempt to save new or existing entities failed or timed-out.\n * Action holds the error.\n * If saved pessimistically, new entities are not in the collection and\n * you may not have to compensate for the error.\n * If saved optimistically, the unsaved entities are in the collection and\n * you may need to compensate for the error.\n */\n protected saveUpsertManyError(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n return this.setLoadingFalse(collection);\n }\n\n /**\n * Successfully saved new or existing entities to the server.\n * If saved pessimistically, add the entities from the server to the collection.\n * If saved optimistically, the added entities are already in the collection.\n * However, the server might have set or modified other fields (e.g, concurrency field)\n * Therefore, update the entities in the collection with the returned values (if any)\n * Caution: in a race, this update could overwrite unsaved user changes.\n * Use pessimistic add to avoid this risk.\n */\n protected saveUpsertManySuccess(\n collection: EntityCollection,\n action: EntityAction\n ) {\n // For pessimistic save, ensure the server generated the primary key if the client didn't send one.\n const entities = this.guard.mustBeEntities(action);\n const mergeStrategy = this.extractMergeStrategy(action);\n // Always update the cache with upserted entities returned from server\n collection = this.entityChangeTracker.mergeSaveUpserts(\n entities,\n collection,\n mergeStrategy\n );\n return this.setLoadingFalse(collection);\n }\n // #endregion saveUpsertMany\n\n // #endregion save operations\n\n // #region cache-only operations\n\n /**\n * Replaces all entities in the collection\n * Sets loaded flag to true.\n * Merges query results, preserving unsaved changes\n */\n protected addAll(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n const entities = this.guard.mustBeEntities(action);\n return {\n ...this.adapter.setAll(entities, collection),\n loading: false,\n loaded: true,\n changeState: {},\n };\n }\n\n protected addMany(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n const entities = this.guard.mustBeEntities(action);\n const mergeStrategy = this.extractMergeStrategy(action);\n collection = this.entityChangeTracker.trackAddMany(\n entities,\n collection,\n mergeStrategy\n );\n return this.adapter.addMany(entities, collection);\n }\n\n protected addOne(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n const entity = this.guard.mustBeEntity(action);\n const mergeStrategy = this.extractMergeStrategy(action);\n collection = this.entityChangeTracker.trackAddOne(\n entity,\n collection,\n mergeStrategy\n );\n return this.adapter.addOne(entity, collection);\n }\n\n protected removeMany(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n // payload must be entity keys\n const keys = this.guard.mustBeKeys(action) as string[];\n const mergeStrategy = this.extractMergeStrategy(action);\n collection = this.entityChangeTracker.trackDeleteMany(\n keys,\n collection,\n mergeStrategy\n );\n return this.adapter.removeMany(keys, collection);\n }\n\n protected removeOne(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n // payload must be entity key\n const key = this.guard.mustBeKey(action) as string;\n const mergeStrategy = this.extractMergeStrategy(action);\n collection = this.entityChangeTracker.trackDeleteOne(\n key,\n collection,\n mergeStrategy\n );\n return this.adapter.removeOne(key, collection);\n }\n\n protected removeAll(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n return {\n ...this.adapter.removeAll(collection),\n loaded: false, // Only REMOVE_ALL sets loaded to false\n loading: false,\n changeState: {}, // Assume clearing the collection and not trying to delete all entities\n };\n }\n\n protected updateMany(\n collection: EntityCollection,\n action: EntityAction[]>\n ): EntityCollection {\n // payload must be an array of `Updates`, not entities\n const updates = this.guard.mustBeUpdates(action);\n const mergeStrategy = this.extractMergeStrategy(action);\n collection = this.entityChangeTracker.trackUpdateMany(\n updates,\n collection,\n mergeStrategy\n );\n return this.adapter.updateMany(updates, collection);\n }\n\n protected updateOne(\n collection: EntityCollection,\n action: EntityAction>\n ): EntityCollection {\n // payload must be an `Update`, not an entity\n const update = this.guard.mustBeUpdate(action);\n const mergeStrategy = this.extractMergeStrategy(action);\n collection = this.entityChangeTracker.trackUpdateOne(\n update,\n collection,\n mergeStrategy\n );\n return this.adapter.updateOne(update, collection);\n }\n\n protected upsertMany(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n // `, not entities\n // v6+: payload must be an array of T\n const entities = this.guard.mustBeEntities(action);\n const mergeStrategy = this.extractMergeStrategy(action);\n collection = this.entityChangeTracker.trackUpsertMany(\n entities,\n collection,\n mergeStrategy\n );\n return this.adapter.upsertMany(entities, collection);\n }\n\n protected upsertOne(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n // `, not an entity\n // v6+: payload must be a T\n const entity = this.guard.mustBeEntity(action);\n const mergeStrategy = this.extractMergeStrategy(action);\n collection = this.entityChangeTracker.trackUpsertOne(\n entity,\n collection,\n mergeStrategy\n );\n return this.adapter.upsertOne(entity, collection);\n }\n\n protected commitAll(collection: EntityCollection) {\n return this.entityChangeTracker.commitAll(collection);\n }\n\n protected commitMany(\n collection: EntityCollection,\n action: EntityAction\n ) {\n return this.entityChangeTracker.commitMany(\n this.extractData(action),\n collection\n );\n }\n\n protected commitOne(\n collection: EntityCollection,\n action: EntityAction\n ) {\n return this.entityChangeTracker.commitOne(\n this.extractData(action),\n collection\n );\n }\n\n protected undoAll(collection: EntityCollection) {\n return this.entityChangeTracker.undoAll(collection);\n }\n\n protected undoMany(\n collection: EntityCollection,\n action: EntityAction\n ) {\n return this.entityChangeTracker.undoMany(\n this.extractData(action),\n collection\n );\n }\n\n protected undoOne(collection: EntityCollection, action: EntityAction) {\n return this.entityChangeTracker.undoOne(\n this.extractData(action),\n collection\n );\n }\n\n /** Dangerous: Completely replace the collection's ChangeState. Use rarely and wisely. */\n protected setChangeState(\n collection: EntityCollection,\n action: EntityAction>\n ) {\n const changeState = this.extractData(action);\n return collection.changeState === changeState\n ? collection\n : { ...collection, changeState };\n }\n\n /**\n * Dangerous: Completely replace the collection.\n * Primarily for testing and rehydration from local storage.\n * Use rarely and wisely.\n */\n protected setCollection(\n collection: EntityCollection,\n action: EntityAction>\n ) {\n const newCollection = this.extractData(action);\n return collection === newCollection ? collection : newCollection;\n }\n\n protected setFilter(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n const filter = this.extractData(action);\n return collection.filter === filter\n ? collection\n : { ...collection, filter };\n }\n\n protected setLoaded(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n const loaded = this.extractData(action) === true || false;\n return collection.loaded === loaded\n ? collection\n : { ...collection, loaded };\n }\n\n protected setLoading(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n return this.setLoadingFlag(collection, this.extractData(action));\n }\n\n protected setLoadingFalse(\n collection: EntityCollection\n ): EntityCollection {\n return this.setLoadingFlag(collection, false);\n }\n\n protected setLoadingTrue(\n collection: EntityCollection\n ): EntityCollection {\n return this.setLoadingFlag(collection, true);\n }\n\n /** Set the collection's loading flag */\n protected setLoadingFlag(collection: EntityCollection, loading: boolean) {\n loading = loading === true ? true : false;\n return collection.loading === loading\n ? collection\n : { ...collection, loading };\n }\n // #endregion Cache-only operations\n\n // #region helpers\n /** Safely extract data from the EntityAction payload */\n protected extractData(action: EntityAction): D {\n return (action.payload && action.payload.data) as D;\n }\n\n /** Safely extract MergeStrategy from EntityAction. Set to IgnoreChanges if collection itself is not tracked. */\n protected extractMergeStrategy(action: EntityAction) {\n // If not tracking this collection, always ignore changes\n return this.isChangeTracking\n ? action.payload && action.payload.mergeStrategy\n : MergeStrategy.IgnoreChanges;\n }\n\n protected isOptimistic(action: EntityAction) {\n return action.payload && action.payload.isOptimistic === true;\n }\n\n // #endregion helpers\n}\n\n/**\n * Creates {EntityCollectionReducerMethods} for a given entity type.\n */\n@Injectable()\nexport class EntityCollectionReducerMethodsFactory {\n constructor(private entityDefinitionService: EntityDefinitionService) {}\n\n /** Create the {EntityCollectionReducerMethods} for the named entity type */\n create(entityName: string): EntityCollectionReducerMethodMap {\n const definition =\n this.entityDefinitionService.getDefinition(entityName);\n const methodsClass = new EntityCollectionReducerMethods(\n entityName,\n definition\n );\n\n return methodsClass.methods;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { EntityAction } from '../actions/entity-action';\nimport { EntityCollection } from './entity-collection';\nimport { EntityCollectionReducerMethodsFactory } from './entity-collection-reducer-methods';\n\nexport type EntityCollectionReducer = (\n collection: EntityCollection,\n action: EntityAction\n) => EntityCollection;\n\n/** Create a default reducer for a specific entity collection */\n@Injectable()\nexport class EntityCollectionReducerFactory {\n constructor(private methodsFactory: EntityCollectionReducerMethodsFactory) {}\n\n /** Create a default reducer for a collection of entities of T */\n create(entityName: string): EntityCollectionReducer {\n const methods = this.methodsFactory.create(entityName);\n\n /** Perform Actions against a particular entity collection in the EntityCache */\n return function entityCollectionReducer(\n collection: EntityCollection,\n action: EntityAction\n ): EntityCollection {\n const reducerMethod = methods[action.payload.entityOp];\n return reducerMethod ? reducerMethod(collection, action) : collection;\n };\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { compose, MetaReducer } from '@ngrx/store';\n\nimport { EntityAction } from '../actions/entity-action';\nimport { EntityCollection } from './entity-collection';\nimport { ENTITY_COLLECTION_META_REDUCERS } from './constants';\nimport {\n EntityCollectionReducer,\n EntityCollectionReducerFactory,\n} from './entity-collection-reducer';\n\n/** A hash of EntityCollectionReducers */\nexport interface EntityCollectionReducers {\n [entity: string]: EntityCollectionReducer;\n}\n\n/**\n * Registry of entity types and their previously-constructed reducers.\n * Can create a new CollectionReducer, which it registers for subsequent use.\n */\n@Injectable()\nexport class EntityCollectionReducerRegistry {\n protected entityCollectionReducers: EntityCollectionReducers = {};\n private entityCollectionMetaReducer: MetaReducer<\n EntityCollection,\n EntityAction\n >;\n\n constructor(\n private entityCollectionReducerFactory: EntityCollectionReducerFactory,\n @Optional()\n @Inject(ENTITY_COLLECTION_META_REDUCERS)\n entityCollectionMetaReducers?: MetaReducer[]\n ) {\n // eslint-disable-next-line prefer-spread\n this.entityCollectionMetaReducer = compose.apply(\n null,\n entityCollectionMetaReducers || []\n ) as any;\n }\n\n /**\n * Get the registered EntityCollectionReducer for this entity type or create one and register it.\n * @param entityName Name of the entity type for this reducer\n */\n getOrCreateReducer(entityName: string): EntityCollectionReducer {\n let reducer: EntityCollectionReducer =\n this.entityCollectionReducers[entityName];\n\n if (!reducer) {\n reducer = this.entityCollectionReducerFactory.create(entityName);\n reducer = this.registerReducer(entityName, reducer);\n this.entityCollectionReducers[entityName] = reducer;\n }\n return reducer;\n }\n\n /**\n * Register an EntityCollectionReducer for an entity type\n * @param entityName - the name of the entity type\n * @param reducer - reducer for that entity type\n *\n * Examples:\n * registerReducer('Hero', myHeroReducer);\n * registerReducer('Villain', myVillainReducer);\n */\n registerReducer(\n entityName: string,\n reducer: EntityCollectionReducer\n ): EntityCollectionReducer {\n reducer = this.entityCollectionMetaReducer(reducer as any);\n return (this.entityCollectionReducers[entityName.trim()] = reducer);\n }\n\n /**\n * Register a batch of EntityCollectionReducers.\n * @param reducers - reducers to merge into existing reducers\n *\n * Examples:\n * registerReducers({\n * Hero: myHeroReducer,\n * Villain: myVillainReducer\n * });\n */\n registerReducers(reducers: EntityCollectionReducers) {\n const keys = reducers ? Object.keys(reducers) : [];\n keys.forEach((key) => this.registerReducer(key, reducers[key]));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Action, ActionReducer } from '@ngrx/store';\n\nimport { EntityAction } from '../actions/entity-action';\nimport { EntityCache } from './entity-cache';\n\nimport {\n EntityCacheAction,\n ClearCollections,\n LoadCollections,\n MergeQuerySet,\n SaveEntities,\n SaveEntitiesCancel,\n SaveEntitiesError,\n SaveEntitiesSuccess,\n} from '../actions/entity-cache-action';\n\nimport {\n ChangeSetOperation,\n ChangeSetItem,\n} from '../actions/entity-cache-change-set';\n\nimport { EntityCollection } from './entity-collection';\nimport { EntityCollectionCreator } from './entity-collection-creator';\nimport { EntityCollectionReducerRegistry } from './entity-collection-reducer-registry';\nimport { EntityOp } from '../actions/entity-op';\nimport { Logger } from '../utils/interfaces';\nimport { MergeStrategy } from '../actions/merge-strategy';\n\n/**\n * Creates the EntityCacheReducer via its create() method\n */\n@Injectable()\nexport class EntityCacheReducerFactory {\n constructor(\n private entityCollectionCreator: EntityCollectionCreator,\n private entityCollectionReducerRegistry: EntityCollectionReducerRegistry,\n private logger: Logger\n ) {}\n\n /**\n * Create the @ngrx/data entity cache reducer which either responds to entity cache level actions\n * or (more commonly) delegates to an EntityCollectionReducer based on the action.payload.entityName.\n */\n create(): ActionReducer {\n // This technique ensures a named function appears in the debugger\n return entityCacheReducer.bind(this);\n\n function entityCacheReducer(\n this: EntityCacheReducerFactory,\n entityCache: EntityCache = {},\n action: { type: string; payload?: any }\n ): EntityCache {\n // EntityCache actions\n switch (action.type) {\n case EntityCacheAction.CLEAR_COLLECTIONS: {\n return this.clearCollectionsReducer(\n entityCache,\n action as ClearCollections\n );\n }\n\n case EntityCacheAction.LOAD_COLLECTIONS: {\n return this.loadCollectionsReducer(\n entityCache,\n action as LoadCollections\n );\n }\n\n case EntityCacheAction.MERGE_QUERY_SET: {\n return this.mergeQuerySetReducer(\n entityCache,\n action as MergeQuerySet\n );\n }\n\n case EntityCacheAction.SAVE_ENTITIES: {\n return this.saveEntitiesReducer(entityCache, action as SaveEntities);\n }\n\n case EntityCacheAction.SAVE_ENTITIES_CANCEL: {\n return this.saveEntitiesCancelReducer(\n entityCache,\n action as SaveEntitiesCancel\n );\n }\n\n case EntityCacheAction.SAVE_ENTITIES_ERROR: {\n return this.saveEntitiesErrorReducer(\n entityCache,\n action as SaveEntitiesError\n );\n }\n\n case EntityCacheAction.SAVE_ENTITIES_SUCCESS: {\n return this.saveEntitiesSuccessReducer(\n entityCache,\n action as SaveEntitiesSuccess\n );\n }\n\n case EntityCacheAction.SET_ENTITY_CACHE: {\n // Completely replace the EntityCache. Be careful!\n return action.payload.cache;\n }\n }\n\n // Apply entity collection reducer if this is a valid EntityAction for a collection\n const payload = action.payload;\n if (payload && payload.entityName && payload.entityOp && !payload.error) {\n return this.applyCollectionReducer(entityCache, action as EntityAction);\n }\n\n // Not a valid EntityAction\n return entityCache;\n }\n }\n\n /**\n * Reducer to clear multiple collections at the same time.\n * @param entityCache the entity cache\n * @param action a ClearCollections action whose payload is an array of collection names.\n * If empty array, does nothing. If no array, clears all the collections.\n */\n protected clearCollectionsReducer(\n entityCache: EntityCache,\n action: ClearCollections\n ) {\n // eslint-disable-next-line prefer-const\n let { collections, tag } = action.payload;\n const entityOp = EntityOp.REMOVE_ALL;\n\n if (!collections) {\n // Collections is not defined. Clear all collections.\n collections = Object.keys(entityCache);\n }\n\n entityCache = collections.reduce((newCache, entityName) => {\n const payload = { entityName, entityOp };\n const act: EntityAction = {\n type: `[${entityName}] ${action.type}`,\n payload,\n };\n newCache = this.applyCollectionReducer(newCache, act);\n return newCache;\n }, entityCache);\n return entityCache;\n }\n\n /**\n * Reducer to load collection in the form of a hash of entity data for multiple collections.\n * @param entityCache the entity cache\n * @param action a LoadCollections action whose payload is the QuerySet of entity collections to load\n */\n protected loadCollectionsReducer(\n entityCache: EntityCache,\n action: LoadCollections\n ) {\n const { collections, tag } = action.payload;\n const entityOp = EntityOp.ADD_ALL;\n const entityNames = Object.keys(collections);\n entityCache = entityNames.reduce((newCache, entityName) => {\n const payload = {\n entityName,\n entityOp,\n data: collections[entityName],\n };\n const act: EntityAction = {\n type: `[${entityName}] ${action.type}`,\n payload,\n };\n newCache = this.applyCollectionReducer(newCache, act);\n return newCache;\n }, entityCache);\n return entityCache;\n }\n\n /**\n * Reducer to merge query sets in the form of a hash of entity data for multiple collections.\n * @param entityCache the entity cache\n * @param action a MergeQuerySet action with the query set and a MergeStrategy\n */\n protected mergeQuerySetReducer(\n entityCache: EntityCache,\n action: MergeQuerySet\n ) {\n // eslint-disable-next-line prefer-const\n let { mergeStrategy, querySet, tag } = action.payload;\n mergeStrategy =\n mergeStrategy === null ? MergeStrategy.PreserveChanges : mergeStrategy;\n const entityOp = EntityOp.QUERY_MANY_SUCCESS;\n\n const entityNames = Object.keys(querySet);\n entityCache = entityNames.reduce((newCache, entityName) => {\n const payload = {\n entityName,\n entityOp,\n data: querySet[entityName],\n mergeStrategy,\n };\n const act: EntityAction = {\n type: `[${entityName}] ${action.type}`,\n payload,\n };\n newCache = this.applyCollectionReducer(newCache, act);\n return newCache;\n }, entityCache);\n return entityCache;\n }\n\n // #region saveEntities reducers\n protected saveEntitiesReducer(\n entityCache: EntityCache,\n action: SaveEntities\n ) {\n const { changeSet, correlationId, isOptimistic, mergeStrategy, tag } =\n action.payload;\n\n try {\n changeSet.changes.forEach((item) => {\n const entityName = item.entityName;\n const payload = {\n entityName,\n entityOp: getEntityOp(item),\n data: item.entities,\n correlationId,\n isOptimistic,\n mergeStrategy,\n tag,\n };\n\n const act: EntityAction = {\n type: `[${entityName}] ${action.type}`,\n payload,\n };\n entityCache = this.applyCollectionReducer(entityCache, act);\n if (act.payload.error) {\n throw act.payload.error;\n }\n });\n } catch (error: any) {\n action.payload.error = error;\n }\n\n return entityCache;\n function getEntityOp(item: ChangeSetItem) {\n switch (item.op) {\n case ChangeSetOperation.Add:\n return EntityOp.SAVE_ADD_MANY;\n case ChangeSetOperation.Delete:\n return EntityOp.SAVE_DELETE_MANY;\n case ChangeSetOperation.Update:\n return EntityOp.SAVE_UPDATE_MANY;\n case ChangeSetOperation.Upsert:\n return EntityOp.SAVE_UPSERT_MANY;\n }\n }\n }\n\n protected saveEntitiesCancelReducer(\n entityCache: EntityCache,\n action: SaveEntitiesCancel\n ) {\n // This implementation can only clear the loading flag for the collections involved\n // If the save was optimistic, you'll have to compensate to fix the cache as you think necessary\n return this.clearLoadingFlags(\n entityCache,\n action.payload.entityNames || []\n );\n }\n\n protected saveEntitiesErrorReducer(\n entityCache: EntityCache,\n action: SaveEntitiesError\n ) {\n const originalAction = action.payload.originalAction;\n const originalChangeSet = originalAction.payload.changeSet;\n\n // This implementation can only clear the loading flag for the collections involved\n // If the save was optimistic, you'll have to compensate to fix the cache as you think necessary\n const entityNames = originalChangeSet.changes.map(\n (item) => item.entityName\n );\n return this.clearLoadingFlags(entityCache, entityNames);\n }\n\n protected saveEntitiesSuccessReducer(\n entityCache: EntityCache,\n action: SaveEntitiesSuccess\n ) {\n const { changeSet, correlationId, isOptimistic, mergeStrategy, tag } =\n action.payload;\n\n changeSet.changes.forEach((item) => {\n const entityName = item.entityName;\n const payload = {\n entityName,\n entityOp: getEntityOp(item),\n data: item.entities,\n correlationId,\n isOptimistic,\n mergeStrategy,\n tag,\n };\n\n const act: EntityAction = {\n type: `[${entityName}] ${action.type}`,\n payload,\n };\n entityCache = this.applyCollectionReducer(entityCache, act);\n });\n\n return entityCache;\n function getEntityOp(item: ChangeSetItem) {\n switch (item.op) {\n case ChangeSetOperation.Add:\n return EntityOp.SAVE_ADD_MANY_SUCCESS;\n case ChangeSetOperation.Delete:\n return EntityOp.SAVE_DELETE_MANY_SUCCESS;\n case ChangeSetOperation.Update:\n return EntityOp.SAVE_UPDATE_MANY_SUCCESS;\n case ChangeSetOperation.Upsert:\n return EntityOp.SAVE_UPSERT_MANY_SUCCESS;\n }\n }\n }\n // #endregion saveEntities reducers\n\n // #region helpers\n /** Apply reducer for the action's EntityCollection (if the action targets a collection) */\n private applyCollectionReducer(\n cache: EntityCache = {},\n action: EntityAction\n ) {\n const entityName = action.payload.entityName;\n const collection = cache[entityName];\n const reducer =\n this.entityCollectionReducerRegistry.getOrCreateReducer(entityName);\n\n let newCollection: EntityCollection;\n try {\n newCollection = collection\n ? reducer(collection, action)\n : reducer(this.entityCollectionCreator.create(entityName), action);\n } catch (error: any) {\n this.logger.error(error);\n action.payload.error = error;\n }\n\n return action.payload.error || collection === newCollection!\n ? cache\n : { ...cache, [entityName]: newCollection! };\n }\n\n /** Ensure loading is false for every collection in entityNames */\n private clearLoadingFlags(entityCache: EntityCache, entityNames: string[]) {\n let isMutated = false;\n entityNames.forEach((entityName) => {\n const collection = entityCache[entityName];\n if (collection.loading) {\n if (!isMutated) {\n entityCache = { ...entityCache };\n isMutated = true;\n }\n entityCache[entityName] = { ...collection, loading: false };\n }\n });\n return entityCache;\n }\n // #endregion helpers\n}\n","import { Injectable } from '@angular/core';\nimport { Logger } from './interfaces';\n\n@Injectable()\nexport class DefaultLogger implements Logger {\n error(message?: any, extra?: any) {\n if (message) {\n extra ? console.error(message, extra) : console.error(message);\n }\n }\n\n log(message?: any, extra?: any) {\n if (message) {\n extra ? console.log(message, extra) : console.log(message);\n }\n }\n\n warn(message?: any, extra?: any) {\n if (message) {\n extra ? console.warn(message, extra) : console.warn(message);\n }\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { EntityPluralNames, PLURAL_NAMES_TOKEN } from './interfaces';\n\nconst uncountable = [\n // 'sheep',\n // 'fish',\n // 'deer',\n // 'moose',\n // 'rice',\n // 'species',\n 'equipment',\n 'information',\n 'money',\n 'series',\n];\n\n@Injectable()\nexport class DefaultPluralizer {\n pluralNames: EntityPluralNames = {};\n\n constructor(\n @Optional()\n @Inject(PLURAL_NAMES_TOKEN)\n pluralNames: EntityPluralNames[]\n ) {\n // merge each plural names object\n if (pluralNames) {\n pluralNames.forEach((pn) => this.registerPluralNames(pn));\n }\n }\n\n /**\n * Pluralize a singular name using common English language pluralization rules\n * Examples: \"company\" -> \"companies\", \"employee\" -> \"employees\", \"tax\" -> \"taxes\"\n */\n pluralize(name: string) {\n const plural = this.pluralNames[name];\n if (plural) {\n return plural;\n }\n // singular and plural are the same\n if (uncountable.indexOf(name.toLowerCase()) >= 0) {\n return name;\n // vowel + y\n } else if (/[aeiou]y$/.test(name)) {\n return name + 's';\n // consonant + y\n } else if (name.endsWith('y')) {\n return name.substring(0, name.length - 1) + 'ies';\n // endings typically pluralized with 'es'\n } else if (/[s|ss|sh|ch|x|z]$/.test(name)) {\n return name + 'es';\n } else {\n return name + 's';\n }\n }\n\n /**\n * Register a mapping of entity type name to the entity name's plural\n * @param pluralNames {EntityPluralNames} plural names for entity types\n */\n registerPluralNames(pluralNames: EntityPluralNames): void {\n this.pluralNames = { ...this.pluralNames, ...(pluralNames || {}) };\n }\n}\n","import {\n ENVIRONMENT_INITIALIZER,\n EnvironmentProviders,\n inject,\n InjectionToken,\n makeEnvironmentProviders,\n Provider,\n} from '@angular/core';\nimport {\n ActionReducerFactory,\n combineReducers,\n MetaReducer,\n ReducerManager,\n} from '@ngrx/store';\nimport { EffectSources } from '@ngrx/effects';\nimport { EntityDispatcherDefaultOptions } from './dispatchers/entity-dispatcher-default-options';\nimport { EntityActionFactory } from './actions/entity-action-factory';\nimport { EntityCacheDispatcher } from './dispatchers/entity-cache-dispatcher';\nimport { entityCacheSelectorProvider } from './selectors/entity-cache-selector';\nimport { EntityCollectionServiceElementsFactory } from './entity-services/entity-collection-service-elements-factory';\nimport { EntityCollectionServiceFactory } from './entity-services/entity-collection-service-factory';\nimport { EntityServices } from './entity-services/entity-services';\nimport { EntityCollectionCreator } from './reducers/entity-collection-creator';\nimport { EntityCollectionReducerFactory } from './reducers/entity-collection-reducer';\nimport { EntityCollectionReducerMethodsFactory } from './reducers/entity-collection-reducer-methods';\nimport { EntityCollectionReducerRegistry } from './reducers/entity-collection-reducer-registry';\nimport { EntityDispatcherFactory } from './dispatchers/entity-dispatcher-factory';\nimport { EntityDefinitionService } from './entity-metadata/entity-definition.service';\nimport { EntityCacheReducerFactory } from './reducers/entity-cache-reducer';\nimport {\n ENTITY_CACHE_META_REDUCERS,\n ENTITY_CACHE_NAME,\n ENTITY_CACHE_NAME_TOKEN,\n ENTITY_COLLECTION_META_REDUCERS,\n INITIAL_ENTITY_CACHE_STATE,\n} from './reducers/constants';\nimport { EntityCache } from './reducers/entity-cache';\nimport { EntitySelectorsFactory } from './selectors/entity-selectors';\nimport { EntitySelectors$Factory } from './selectors/entity-selectors$';\nimport { EntityServicesBase } from './entity-services/entity-services-base';\nimport { EntityServicesElements } from './entity-services/entity-services-elements';\nimport { DefaultLogger } from './utils/default-logger';\nimport { Logger, PLURAL_NAMES_TOKEN, Pluralizer } from './utils/interfaces';\nimport { CorrelationIdGenerator } from './utils/correlation-id-generator';\nimport { ENTITY_METADATA_TOKEN } from './entity-metadata/entity-metadata';\nimport { DefaultDataServiceFactory } from './dataservices/default-data.service';\nimport {\n DefaultPersistenceResultHandler,\n PersistenceResultHandler,\n} from './dataservices/persistence-result-handler.service';\nimport {\n DefaultHttpUrlGenerator,\n HttpUrlGenerator,\n} from './dataservices/http-url-generator';\nimport { EntityCacheDataService } from './dataservices/entity-cache-data.service';\nimport { EntityDataService } from './dataservices/entity-data.service';\nimport { EntityCacheEffects } from './effects/entity-cache-effects';\nimport { EntityEffects } from './effects/entity-effects';\nimport { DefaultPluralizer } from './utils/default-pluralizer';\nimport { EntityDataModuleConfig } from './entity-data-config';\n\nexport const BASE_ENTITY_DATA_PROVIDERS: Provider[] = [\n CorrelationIdGenerator,\n EntityDispatcherDefaultOptions,\n EntityActionFactory,\n EntityCacheDispatcher,\n EntityCacheReducerFactory,\n entityCacheSelectorProvider,\n EntityCollectionCreator,\n EntityCollectionReducerFactory,\n EntityCollectionReducerMethodsFactory,\n EntityCollectionReducerRegistry,\n EntityCollectionServiceElementsFactory,\n EntityCollectionServiceFactory,\n EntityDefinitionService,\n EntityDispatcherFactory,\n EntitySelectorsFactory,\n EntitySelectors$Factory,\n EntityServicesElements,\n { provide: ENTITY_CACHE_NAME_TOKEN, useValue: ENTITY_CACHE_NAME },\n { provide: EntityServices, useClass: EntityServicesBase },\n { provide: Logger, useClass: DefaultLogger },\n {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useValue: () => initializeBaseEntityData(),\n },\n];\n\nfunction initializeBaseEntityData(): void {\n const reducerManager = inject(ReducerManager);\n const entityCacheReducerFactory = inject(EntityCacheReducerFactory);\n const entityCacheName = inject(ENTITY_CACHE_NAME_TOKEN, {\n optional: true,\n });\n const initialStateOrFn = inject(INITIAL_ENTITY_CACHE_STATE, {\n optional: true,\n });\n const metaReducersOrTokens = inject<\n Array | InjectionToken>>\n >(ENTITY_CACHE_META_REDUCERS, {\n optional: true,\n });\n\n // Add the @ngrx/data feature to the Store's features\n const key = entityCacheName || ENTITY_CACHE_NAME;\n const metaReducers = (metaReducersOrTokens || []).map((mr) => {\n return mr instanceof InjectionToken ? inject(mr) : mr;\n });\n const initialState =\n typeof initialStateOrFn === 'function'\n ? initialStateOrFn()\n : initialStateOrFn;\n\n const entityCacheFeature = {\n key,\n reducers: entityCacheReducerFactory.create(),\n reducerFactory: combineReducers as ActionReducerFactory,\n initialState: initialState || {},\n metaReducers: metaReducers,\n };\n reducerManager.addFeature(entityCacheFeature);\n}\n\nexport const ENTITY_DATA_EFFECTS_PROVIDERS: Provider[] = [\n DefaultDataServiceFactory,\n EntityCacheDataService,\n EntityDataService,\n EntityCacheEffects,\n EntityEffects,\n { provide: HttpUrlGenerator, useClass: DefaultHttpUrlGenerator },\n {\n provide: PersistenceResultHandler,\n useClass: DefaultPersistenceResultHandler,\n },\n { provide: Pluralizer, useClass: DefaultPluralizer },\n {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useValue: () => initializeEntityDataEffects(),\n },\n];\n\nfunction initializeEntityDataEffects(): void {\n const effectsSources = inject(EffectSources);\n const entityCacheEffects = inject(EntityCacheEffects);\n const entityEffects = inject(EntityEffects);\n\n effectsSources.addEffects(entityCacheEffects);\n effectsSources.addEffects(entityEffects);\n}\n\nexport function provideEntityDataConfig(\n config: EntityDataModuleConfig\n): Provider[] {\n return [\n {\n provide: ENTITY_CACHE_META_REDUCERS,\n useValue: config.entityCacheMetaReducers\n ? config.entityCacheMetaReducers\n : [],\n },\n {\n provide: ENTITY_COLLECTION_META_REDUCERS,\n useValue: config.entityCollectionMetaReducers\n ? config.entityCollectionMetaReducers\n : [],\n },\n {\n provide: PLURAL_NAMES_TOKEN,\n multi: true,\n useValue: config.pluralNames ? config.pluralNames : {},\n },\n {\n provide: ENTITY_METADATA_TOKEN,\n multi: true,\n useValue: config.entityMetadata ? config.entityMetadata : [],\n },\n ];\n}\n\n/**\n * Sets up base entity data providers with entity config.\n * This function should to be used at the root level.\n *\n * @usageNotes\n *\n * ### Providing entity data with effects\n *\n * When used with `withEffects` feature, the `provideEntityData` function is\n * an alternative to `EntityDataModule.forRoot`\n *\n * ```ts\n * import { provideStore } from '@ngrx/store';\n * import { provideEffects } from '@ngrx/effects';\n * import {\n * EntityMetadataMap,\n * provideEntityData,\n * withEffects,\n * } from '@ngrx/data';\n *\n * const entityMetadata: EntityMetadataMap = {\n * Hero: {},\n * Villain: {},\n * };\n * const pluralNames = { Hero: 'Heroes' };\n *\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideStore(),\n * provideEffects(),\n * provideEntityData({ entityMetadata, pluralNames }, withEffects()),\n * ],\n * });\n * ```\n *\n * ### Providing entity data without effects\n *\n * When used without `withEffects` feature, the `provideEntityData` function is\n * an alternative to `EntityDataModuleWithoutEffects.forRoot`.\n *\n * ```ts\n * import { provideStore } from '@ngrx/store';\n * import { EntityMetadataMap, provideEntityData } from '@ngrx/data';\n *\n * const entityMetadata: EntityMetadataMap = {\n * Musician: {},\n * Song: {},\n * };\n *\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideStore(),\n * provideEntityData({ entityMetadata }),\n * ],\n * });\n * ```\n *\n */\nexport function provideEntityData(\n config: EntityDataModuleConfig,\n ...features: EntityDataFeature[]\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n BASE_ENTITY_DATA_PROVIDERS,\n provideEntityDataConfig(config),\n ...features.map((feature) => feature.ɵproviders),\n ]);\n}\n\nenum EntityDataFeatureKind {\n WithEffects,\n}\n\ninterface EntityDataFeature {\n ɵkind: EntityDataFeatureKind;\n ɵproviders: Provider[];\n}\n\n/**\n * Registers entity data effects and provides HTTP data services.\n *\n * @see `provideEntityData`\n */\nexport function withEffects(): EntityDataFeature {\n return {\n ɵkind: EntityDataFeatureKind.WithEffects,\n ɵproviders: [ENTITY_DATA_EFFECTS_PROVIDERS],\n };\n}\n","import { Action, Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\nimport { EntityAction } from '../actions/entity-action';\nimport { EntityCache } from '../reducers/entity-cache';\nimport { EntityCollectionService } from './entity-collection-service';\n\n/**\n * Class-Interface for EntityCache and EntityCollection services.\n * Serves as an Angular provider token for this service class.\n * Includes a registry of EntityCollectionServices for all entity types.\n * Creates a new default EntityCollectionService for any entity type not in the registry.\n * Optionally register specialized EntityCollectionServices for individual types\n */\nexport abstract class EntityServices {\n /** Dispatch any action to the store */\n abstract dispatch(action: Action): void;\n\n /** Observable of error EntityActions (e.g. QUERY_ALL_ERROR) for all entity types */\n abstract readonly entityActionErrors$: Observable;\n\n /** Observable of the entire entity cache */\n abstract readonly entityCache$: Observable | Store;\n\n /** Get (or create) the singleton instance of an EntityCollectionService\n * @param entityName {string} Name of the entity type of the service\n */\n abstract getEntityCollectionService(\n entityName: string\n ): EntityCollectionService;\n\n /**\n * Actions scanned by the store after it processed them with reducers.\n * A replay observable of the most recent Action (not just EntityAction) reduced by the store.\n */\n abstract readonly reducedActions$: Observable;\n\n // #region EntityCollectionService creation and registration API\n\n /** Register an EntityCollectionService under its entity type name.\n * Will replace a pre-existing service for that type.\n * @param service {EntityCollectionService} The entity service\n */\n abstract registerEntityCollectionService(\n service: EntityCollectionService\n ): void;\n\n /** Register entity services for several entity types at once.\n * Will replace a pre-existing service for that type.\n * @param entityCollectionServices Array of EntityCollectionServices to register\n */\n abstract registerEntityCollectionServices(\n entityCollectionServices: EntityCollectionService[]\n ): void;\n\n /** Register entity services for several entity types at once.\n * Will replace a pre-existing service for that type.\n * @param entityCollectionServiceMap Map of service-name to entity-collection-service\n */\n abstract registerEntityCollectionServices(\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n entityCollectionServiceMap: EntityCollectionServiceMap\n ): void;\n // #endregion EntityCollectionService creation and registration API\n}\n\n/**\n * A map of service or entity names to their corresponding EntityCollectionServices.\n */\nexport interface EntityCollectionServiceMap {\n [entityName: string]: EntityCollectionService;\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { EntityDataModuleConfig } from './entity-data-config';\nimport {\n BASE_ENTITY_DATA_PROVIDERS,\n provideEntityDataConfig,\n} from './provide-entity-data';\n\n/**\n * Module without effects or dataservices which means no HTTP calls\n * This module helpful for internal testing.\n * Also helpful for apps that handle server access on their own and\n * therefore opt-out of @ngrx/effects for entities\n */\n@NgModule({\n providers: [BASE_ENTITY_DATA_PROVIDERS],\n})\nexport class EntityDataModuleWithoutEffects {\n static forRoot(\n config: EntityDataModuleConfig\n ): ModuleWithProviders {\n return {\n ngModule: EntityDataModuleWithoutEffects,\n providers: [provideEntityDataConfig(config)],\n };\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { EntityDataModuleConfig } from './entity-data-config';\nimport { EntityDataModuleWithoutEffects } from './entity-data-without-effects.module';\nimport {\n ENTITY_DATA_EFFECTS_PROVIDERS,\n provideEntityDataConfig,\n} from './provide-entity-data';\n\n/**\n * entity-data main module includes effects and HTTP data services\n * Configure with `forRoot`.\n * No `forFeature` yet.\n */\n@NgModule({\n imports: [EntityDataModuleWithoutEffects],\n providers: [ENTITY_DATA_EFFECTS_PROVIDERS],\n})\nexport class EntityDataModule {\n static forRoot(\n config: EntityDataModuleConfig\n ): ModuleWithProviders {\n return {\n ngModule: EntityDataModule,\n providers: [provideEntityDataConfig(config)],\n };\n }\n}\n","import { Component } from '@angular/core';\nimport { CustomToastrConfig } from \"@models/custom-toastr-config.interface\";\nimport { Toast } from \"ngx-toastr\";\n\n@Component({\n selector: '[app-delete-semester-toast]',\n styleUrls: ['./custom-toast.component.scss'],\n template: `\n

\n
\n
\n {{ title }}\n
\n
\n
\n
\n {{ message }}\n
\n
\n \n
\n
\n
\n
\n `,\n preserveWhitespaces: false,\n})\nexport class CustomToastComponent extends Toast {\n cancelString = 'Cancel';\n override options = this.options;\n\n action(event: Event) {\n event.stopPropagation();\n this.toastPackage.triggerAction();\n this.remove()\n return false;\n }\n}\n","import { inject } from '@angular/core';\nimport { CanActivateFn, Router, UrlTree } from '@angular/router';\nimport { AuthenticationService } from '../services/authentication.service';\nimport { APP_BASE_HREF } from \"@angular/common\";\nimport { Store } from \"@ngrx/store\";\nimport { AppState } from \"@app/store/app.reducer\";\nimport { catchError, concatMap, defaultIfEmpty, finalize, map, Observable, of, tap } from \"rxjs\";\n\ntype CanActivateType = Observable | Promise | boolean | UrlTree;\nexport const AdminAuthGuard: CanActivateFn = (route,\n state,\n store: Store = inject(Store),\n baseHref: string = inject(APP_BASE_HREF)): CanActivateType => {\n const authService = inject(AuthenticationService);\n const router = inject(Router);\n\n baseHref = baseHref ?? \"\";\n if (baseHref.charAt(baseHref.length - 1) == '/') {\n baseHref = baseHref.slice(0, -1);\n }\n\n let loading = false;\n\n return authService.getIsAuthenticated().pipe(\n map(isLoggedIn => {\n if (!loading && !isLoggedIn) {\n loading = true;\n const redirectUrl = `${baseHref}${state.url}`;\n window.location.assign(`bff/login?returnUrl=${redirectUrl}`);\n return false;\n }\n\n return isLoggedIn\n }),\n concatMap(isLoggedIn => authService.getIsAdmin().pipe(\n tap(isAdmin => {\n if (isLoggedIn && isAdmin) {\n return true;\n }\n router.navigate(['/home']);\n return false;\n }))),\n defaultIfEmpty(false),\n catchError((err) => {\n console.log('error in auth guard: ', err);\n return of(false)\n }),\n finalize(() => {\n loading = false;\n return false;\n }));\n}\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\nimport { AdminAuthGuard } from \"@app/core/guards/admin-auth-guard\";\n\nconst routes: Routes = [\n {\n path: 'admin',\n canActivate: [AdminAuthGuard],\n canActivateChild: [AdminAuthGuard],\n loadChildren: () => import(\"@modules/admin/admin.module\").then(m => m.AdminModule)\n },\n {\n path: '',\n loadChildren: () => import(\"@modules/main/main.module\").then(m => m.MainModule)\n },\n {\n // Should this be a 404?\n path: '**',\n redirectTo: 'home'\n }\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, {\n anchorScrolling: 'enabled',\n scrollPositionRestoration: 'enabled',\n paramsInheritanceStrategy: 'always'\n })],\n exports: [RouterModule]\n})\nexport class AppRoutingModule {\n}\n","/* eslint-disable local-rules/disallow-side-effects */\n/**\n * Keep references on console methods to avoid triggering patched behaviors\n *\n * NB: in some setup, console could already be patched by another SDK.\n * In this case, some display messages can be sent by the other SDK\n * but we should be safe from infinite loop nonetheless.\n */\n\nexport const ConsoleApiName = {\n log: 'log',\n debug: 'debug',\n info: 'info',\n warn: 'warn',\n error: 'error',\n} as const\n\nexport type ConsoleApiName = (typeof ConsoleApiName)[keyof typeof ConsoleApiName]\n\ninterface Display {\n debug: typeof console.debug\n log: typeof console.log\n info: typeof console.info\n warn: typeof console.warn\n error: typeof console.error\n}\n\n/**\n * When building JS bundles, some users might use a plugin[1] or configuration[2] to remove\n * \"console.*\" references. This causes some issue as we expect `console.*` to be defined.\n * As a workaround, let's use a variable alias, so those expressions won't be taken into account by\n * simple static analysis.\n *\n * [1]: https://babeljs.io/docs/babel-plugin-transform-remove-console/\n * [2]: https://github.com/terser/terser#compress-options (look for drop_console)\n */\nexport const globalConsole = console\n\nexport const originalConsoleMethods = {} as Display\nObject.keys(ConsoleApiName).forEach((name) => {\n originalConsoleMethods[name as ConsoleApiName] = globalConsole[name as ConsoleApiName]\n})\n\nconst PREFIX = 'Datadog Browser SDK:'\n\nexport const display: Display = {\n debug: originalConsoleMethods.debug.bind(globalConsole, PREFIX),\n log: originalConsoleMethods.log.bind(globalConsole, PREFIX),\n info: originalConsoleMethods.info.bind(globalConsole, PREFIX),\n warn: originalConsoleMethods.warn.bind(globalConsole, PREFIX),\n error: originalConsoleMethods.error.bind(globalConsole, PREFIX),\n}\n","import { display } from './display'\n\nexport function catchUserErrors(fn: (...args: Args) => R, errorMsg: string) {\n return (...args: Args) => {\n try {\n return fn(...args)\n } catch (err) {\n display.error(errorMsg, err)\n }\n }\n}\n","import { display } from './display'\n\nlet onMonitorErrorCollected: undefined | ((error: unknown) => void)\nlet debugMode = false\n\nexport function startMonitorErrorCollection(newOnMonitorErrorCollected: (error: unknown) => void) {\n onMonitorErrorCollected = newOnMonitorErrorCollected\n}\n\nexport function setDebugMode(newDebugMode: boolean) {\n debugMode = newDebugMode\n}\n\nexport function resetMonitor() {\n onMonitorErrorCollected = undefined\n debugMode = false\n}\n\nexport function monitored unknown>(\n _: any,\n __: string,\n descriptor: TypedPropertyDescriptor\n) {\n const originalMethod = descriptor.value!\n descriptor.value = function (this: any, ...args: Parameters) {\n const decorated = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod\n return decorated.apply(this, args) as ReturnType\n } as T\n}\n\nexport function monitor any>(fn: T): T {\n return function (this: any) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return callMonitored(fn, this, arguments as unknown as Parameters)\n } as unknown as T // consider output type has input type\n}\n\nexport function callMonitored any>(\n fn: T,\n context: ThisParameterType,\n args: Parameters\n): ReturnType | undefined\nexport function callMonitored any>(fn: T): ReturnType | undefined\nexport function callMonitored any>(\n fn: T,\n context?: any,\n args?: any\n): ReturnType | undefined {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return fn.apply(context, args)\n } catch (e) {\n displayIfDebugEnabled(e)\n if (onMonitorErrorCollected) {\n try {\n onMonitorErrorCollected(e)\n } catch (e) {\n displayIfDebugEnabled(e)\n }\n }\n }\n}\n\nexport function displayIfDebugEnabled(...args: any[]) {\n if (debugMode) {\n display.error('[MONITOR]', ...args)\n }\n}\n","export function includes(candidate: string, search: string): boolean\nexport function includes(candidate: T[], search: T): boolean\nexport function includes(candidate: string | unknown[], search: any) {\n return candidate.indexOf(search) !== -1\n}\n\nexport function arrayFrom(arrayLike: ArrayLike | Set): T[] {\n if (Array.from) {\n return Array.from(arrayLike)\n }\n\n const array = []\n\n if (arrayLike instanceof Set) {\n arrayLike.forEach((item) => array.push(item))\n } else {\n for (let i = 0; i < arrayLike.length; i++) {\n array.push(arrayLike[i])\n }\n }\n\n return array\n}\n\nexport function find(\n array: ArrayLike,\n predicate: (item: T, index: number) => item is S\n): S | undefined\nexport function find(array: ArrayLike, predicate: (item: T, index: number) => boolean): T | undefined\nexport function find(array: ArrayLike, predicate: (item: unknown, index: number) => boolean): unknown {\n for (let i = 0; i < array.length; i += 1) {\n const item = array[i]\n if (predicate(item, i)) {\n return item\n }\n }\n return undefined\n}\n\nexport function findLast(\n array: T[],\n predicate: (item: T, index: number, array: T[]) => item is S\n): S | undefined {\n for (let i = array.length - 1; i >= 0; i -= 1) {\n const item = array[i]\n if (predicate(item, i, array)) {\n return item\n }\n }\n return undefined\n}\n\nexport function forEach(\n list: List,\n callback: (value: List[number], index: number, parent: List) => void\n) {\n Array.prototype.forEach.call(list, callback as any)\n}\n\nexport function objectValues(object: { [key: string]: T }) {\n return Object.keys(object).map((key) => object[key])\n}\n\nexport function objectEntries(object: { [key: string]: T }): Array<[string, T]> {\n return Object.keys(object).map((key) => [key, object[key]])\n}\n\nexport function startsWith(candidate: string, search: string) {\n return candidate.slice(0, search.length) === search\n}\n\nexport function endsWith(candidate: string, search: string) {\n return candidate.slice(-search.length) === search\n}\n\nexport function elementMatches(element: Element & { msMatchesSelector?(selector: string): boolean }, selector: string) {\n if (element.matches) {\n return element.matches(selector)\n }\n // IE11 support\n if (element.msMatchesSelector) {\n return element.msMatchesSelector(selector)\n }\n return false\n}\n\n// https://github.com/jquery/jquery/blob/a684e6ba836f7c553968d7d026ed7941e1a612d8/src/selector/escapeSelector.js\nexport function cssEscape(str: string) {\n if (window.CSS && window.CSS.escape) {\n return window.CSS.escape(str)\n }\n\n // eslint-disable-next-line no-control-regex\n return str.replace(/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g, function (ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === '\\0') {\n return '\\uFFFD'\n }\n // Control characters and (dependent upon position) numbers get escaped as code points\n return `${ch.slice(0, -1)}\\\\${ch.charCodeAt(ch.length - 1).toString(16)} `\n }\n // Other potentially-special ASCII characters get backslash-escaped\n return `\\\\${ch}`\n })\n}\n\ninterface Assignable {\n [key: string]: any\n}\n\nexport function assign(target: T, source: U): T & U\nexport function assign(target: T, source1: U, source2: V): T & U & V\nexport function assign(target: T, source1: U, source2: V, source3: W): T & U & V & W\nexport function assign(target: Assignable, ...toAssign: Assignable[]) {\n toAssign.forEach((source: Assignable) => {\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n })\n return target\n}\n","import { catchUserErrors } from '../tools/catchUserErrors'\nimport { setDebugMode } from '../tools/monitor'\nimport { assign } from '../tools/utils/polyfills'\n\n// replaced at build time\ndeclare const __BUILD_ENV__SDK_VERSION__: string\n\nexport function makePublicApi(stub: T): T & { onReady(callback: () => void): void; version: string } {\n const publicApi = assign(\n {\n version: __BUILD_ENV__SDK_VERSION__,\n\n // This API method is intentionally not monitored, since the only thing executed is the\n // user-provided 'callback'. All SDK usages executed in the callback should be monitored, and\n // we don't want to interfere with the user uncaught exceptions.\n onReady(callback: () => void) {\n callback()\n },\n },\n stub\n )\n\n // Add a \"hidden\" property to set debug mode. We define it that way to hide it\n // as much as possible but of course it's not a real protection.\n Object.defineProperty(publicApi, '_setDebug', {\n get() {\n return setDebugMode\n },\n enumerable: false,\n })\n\n return publicApi\n}\n\nexport function defineGlobal(global: Global, name: Name, api: Global[Name]) {\n const existingGlobalVariable = global[name] as { q?: Array<() => void> } | undefined\n global[name] = api\n if (existingGlobalVariable && existingGlobalVariable.q) {\n existingGlobalVariable.q.forEach((fn) => catchUserErrors(fn, 'onReady callback threw an error:')())\n }\n}\n","/**\n * inspired by https://mathiasbynens.be/notes/globalthis\n */\n\nexport function getGlobalObject(): T {\n if (typeof globalThis === 'object') {\n return globalThis as unknown as T\n }\n Object.defineProperty(Object.prototype, '_dd_temp_', {\n get() {\n return this as object\n },\n configurable: true,\n })\n // @ts-ignore _dd_temp is defined using defineProperty\n let globalObject: unknown = _dd_temp_\n // @ts-ignore _dd_temp is defined using defineProperty\n delete Object.prototype._dd_temp_\n if (typeof globalObject !== 'object') {\n // on safari _dd_temp_ is available on window but not globally\n // fallback on other browser globals check\n if (typeof self === 'object') {\n globalObject = self\n } else if (typeof window === 'object') {\n globalObject = window\n } else {\n globalObject = {}\n }\n }\n return globalObject as T\n}\n","export const ONE_KIBI_BYTE = 1024\nexport const ONE_MEBI_BYTE = 1024 * ONE_KIBI_BYTE\n\n// eslint-disable-next-line no-control-regex\nconst HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/\n\nexport function computeBytesCount(candidate: string): number {\n // Accurate bytes count computations can degrade performances when there is a lot of events to process\n if (!HAS_MULTI_BYTES_CHARACTERS.test(candidate)) {\n return candidate.length\n }\n\n if (window.TextEncoder !== undefined) {\n return new TextEncoder().encode(candidate).length\n }\n\n return new Blob([candidate]).size\n}\n\nexport function concatBuffers(buffers: Uint8Array[]) {\n const length = buffers.reduce((total, buffer) => total + buffer.length, 0)\n const result = new Uint8Array(length)\n let offset = 0\n for (const buffer of buffers) {\n result.set(buffer, offset)\n offset += buffer.length\n }\n return result\n}\n","import { getGlobalObject } from './getGlobalObject'\n\nexport interface BrowserWindowWithZoneJs extends Window {\n Zone?: {\n // All Zone.js versions expose the __symbol__ method, but we observed that some website have a\n // 'Zone' global variable unrelated to Zone.js, so let's consider this method optional\n // nonetheless.\n __symbol__?: (name: string) => string\n }\n}\n\n/**\n * Gets the original value for a DOM API that was potentially patched by Zone.js.\n *\n * Zone.js[1] is a library that patches a bunch of JS and DOM APIs. It usually stores the original\n * value of the patched functions/constructors/methods in a hidden property prefixed by\n * __zone_symbol__.\n *\n * In multiple occasions, we observed that Zone.js is the culprit of important issues leading to\n * browser resource exhaustion (memory leak, high CPU usage). This method is used as a workaround to\n * use the original DOM API instead of the one patched by Zone.js.\n *\n * [1]: https://github.com/angular/angular/tree/main/packages/zone.js\n */\nexport function getZoneJsOriginalValue(\n target: Target,\n name: Name\n): Target[Name] {\n const browserWindow = getGlobalObject()\n let original: Target[Name] | undefined\n if (browserWindow.Zone && typeof browserWindow.Zone.__symbol__ === 'function') {\n original = (target as any)[browserWindow.Zone.__symbol__(name)]\n }\n if (!original) {\n original = target[name]\n }\n return original\n}\n","import { getZoneJsOriginalValue } from './getZoneJsOriginalValue'\nimport { monitor } from './monitor'\nimport { getGlobalObject } from './getGlobalObject'\n\nexport type TimeoutId = ReturnType\n\nexport function setTimeout(callback: () => void, delay?: number): TimeoutId {\n return getZoneJsOriginalValue(getGlobalObject(), 'setTimeout')(monitor(callback), delay)\n}\n\nexport function clearTimeout(timeoutId: TimeoutId | undefined) {\n getZoneJsOriginalValue(getGlobalObject(), 'clearTimeout')(timeoutId)\n}\n\nexport function setInterval(callback: () => void, delay?: number): TimeoutId {\n return getZoneJsOriginalValue(getGlobalObject(), 'setInterval')(monitor(callback), delay)\n}\n\nexport function clearInterval(timeoutId: TimeoutId | undefined) {\n getZoneJsOriginalValue(getGlobalObject(), 'clearInterval')(timeoutId)\n}\n","import type { TimeoutId } from '../timer'\nimport { setTimeout, clearTimeout } from '../timer'\n\n// use lodash API\nexport function throttle void>(\n fn: T,\n wait: number,\n options?: { leading?: boolean; trailing?: boolean }\n) {\n const needLeadingExecution = options && options.leading !== undefined ? options.leading : true\n const needTrailingExecution = options && options.trailing !== undefined ? options.trailing : true\n let inWaitPeriod = false\n let pendingExecutionWithParameters: Parameters | undefined\n let pendingTimeoutId: TimeoutId\n\n return {\n throttled: (...parameters: Parameters) => {\n if (inWaitPeriod) {\n pendingExecutionWithParameters = parameters\n return\n }\n if (needLeadingExecution) {\n fn(...parameters)\n } else {\n pendingExecutionWithParameters = parameters\n }\n inWaitPeriod = true\n pendingTimeoutId = setTimeout(() => {\n if (needTrailingExecution && pendingExecutionWithParameters) {\n fn(...pendingExecutionWithParameters)\n }\n inWaitPeriod = false\n pendingExecutionWithParameters = undefined\n }, wait)\n },\n cancel: () => {\n clearTimeout(pendingTimeoutId)\n inWaitPeriod = false\n pendingExecutionWithParameters = undefined\n },\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() {}\n\nexport type ListenerHandler = () => void\n","/**\n * Similar to `typeof`, but distinguish plain objects from `null` and arrays\n */\nexport function getType(value: unknown) {\n if (value === null) {\n return 'null'\n }\n if (Array.isArray(value)) {\n return 'array'\n }\n return typeof value\n}\n","import { getType } from './utils/typeUtils'\n\ntype Merged =\n // case 1 - source is undefined - return destination\n TSource extends undefined\n ? TDestination\n : // case 2 - destination is undefined - return source\n TDestination extends undefined\n ? TSource\n : // case 3 - source is an array - see if it merges or overwrites\n TSource extends any[]\n ? TDestination extends any[]\n ? TDestination & TSource\n : TSource\n : // case 4 - source is an object - see if it merges or overwrites\n TSource extends object\n ? TDestination extends object\n ? TDestination extends any[]\n ? TSource\n : TDestination & TSource\n : TSource\n : // case 5 - cannot merge - return source\n TSource\n\n/**\n * Iterate over source and affect its sub values into destination, recursively.\n * If the source and destination can't be merged, return source.\n */\nexport function mergeInto(\n destination: D,\n source: S,\n circularReferenceChecker = createCircularReferenceChecker()\n): Merged {\n // ignore the source if it is undefined\n if (source === undefined) {\n return destination as Merged\n }\n\n if (typeof source !== 'object' || source === null) {\n // primitive values - just return source\n return source as Merged\n } else if (source instanceof Date) {\n return new Date(source.getTime()) as unknown as Merged\n } else if (source instanceof RegExp) {\n const flags =\n source.flags ||\n // old browsers compatibility\n [\n source.global ? 'g' : '',\n source.ignoreCase ? 'i' : '',\n source.multiline ? 'm' : '',\n source.sticky ? 'y' : '',\n source.unicode ? 'u' : '',\n ].join('')\n return new RegExp(source.source, flags) as unknown as Merged\n }\n\n if (circularReferenceChecker.hasAlreadyBeenSeen(source)) {\n // remove circular references\n return undefined as unknown as Merged\n } else if (Array.isArray(source)) {\n const merged: any[] = Array.isArray(destination) ? destination : []\n for (let i = 0; i < source.length; ++i) {\n merged[i] = mergeInto(merged[i], source[i], circularReferenceChecker)\n }\n return merged as unknown as Merged\n }\n\n const merged = getType(destination) === 'object' ? (destination as Record) : {}\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n merged[key] = mergeInto(merged[key], source[key], circularReferenceChecker)\n }\n }\n return merged as unknown as Merged\n}\n\n/**\n * A simplistic implementation of a deep clone algorithm.\n * Caveats:\n * - It doesn't maintain prototype chains - don't use with instances of custom classes.\n * - It doesn't handle Map and Set\n */\nexport function deepClone(value: T): T {\n return mergeInto(undefined, value) as T\n}\n\ntype Combined = A extends null ? B : B extends null ? A : Merged\n\n/*\n * Performs a deep merge of objects and arrays.\n * - Arguments won't be mutated\n * - Object and arrays in the output value are de-referenced (\"deep cloned\")\n * - Arrays values are merged index by index\n * - Objects are merged by keys\n * - Values get replaced, unless undefined\n */\nexport function combine(a: A, b: B): Combined\nexport function combine(a: A, b: B, c: C): Combined, C>\nexport function combine(a: A, b: B, c: C, d: D): Combined, C>, D>\nexport function combine(\n a: A,\n b: B,\n c: C,\n d: D,\n e: E\n): Combined, C>, D>, E>\nexport function combine(\n a: A,\n b: B,\n c: C,\n d: D,\n e: E,\n f: F\n): Combined, C>, D>, E>, F>\nexport function combine(\n a: A,\n b: B,\n c: C,\n d: D,\n e: E,\n f: F,\n g: G\n): Combined, C>, D>, E>, F>, G>\nexport function combine(\n a: A,\n b: B,\n c: C,\n d: D,\n e: E,\n f: F,\n g: G,\n h: H\n): Combined, C>, D>, E>, F>, G>, H>\nexport function combine(...sources: any[]): unknown {\n let destination: any\n\n for (const source of sources) {\n // Ignore any undefined or null sources.\n if (source === undefined || source === null) {\n continue\n }\n\n destination = mergeInto(destination, source)\n }\n\n return destination as unknown\n}\n\ninterface CircularReferenceChecker {\n hasAlreadyBeenSeen(value: any): boolean\n}\n\nfunction createCircularReferenceChecker(): CircularReferenceChecker {\n if (typeof WeakSet !== 'undefined') {\n const set: WeakSet = new WeakSet()\n return {\n hasAlreadyBeenSeen(value) {\n const has = set.has(value)\n if (!has) {\n set.add(value)\n }\n return has\n },\n }\n }\n const array: any[] = []\n return {\n hasAlreadyBeenSeen(value) {\n const has = array.indexOf(value) >= 0\n if (!has) {\n array.push(value)\n }\n return has\n },\n }\n}\n","import { noop } from '../utils/functionUtils'\n\n/**\n * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that\n * because some sites badly override toJSON on certain objects. Removing all toJSON methods from\n * nested values would be too costly, so we just detach them from the root value, and native classes\n * used to build JSON values (Array and Object).\n *\n * Note: this still assumes that JSON.stringify is correct.\n */\nexport function jsonStringify(\n value: unknown,\n replacer?: Array,\n space?: string | number\n): string | undefined {\n if (typeof value !== 'object' || value === null) {\n return JSON.stringify(value)\n }\n\n // Note: The order matter here. We need to detach toJSON methods on parent classes before their\n // subclasses.\n const restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype)\n const restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype)\n const restoreValuePrototypeToJson = detachToJsonMethod(Object.getPrototypeOf(value))\n const restoreValueToJson = detachToJsonMethod(value)\n\n try {\n return JSON.stringify(value, replacer, space)\n } catch {\n return ''\n } finally {\n restoreObjectPrototypeToJson()\n restoreArrayPrototypeToJson()\n restoreValuePrototypeToJson()\n restoreValueToJson()\n }\n}\n\nexport interface ObjectWithToJsonMethod {\n toJSON?: () => unknown\n}\n\nexport function detachToJsonMethod(value: object) {\n const object = value as ObjectWithToJsonMethod\n const objectToJson = object.toJSON\n if (objectToJson) {\n delete object.toJSON\n return () => {\n object.toJSON = objectToJson\n }\n }\n return noop\n}\n","import { display } from '../display'\nimport { ONE_KIBI_BYTE } from '../utils/byteUtils'\nimport type { Context, ContextArray, ContextValue } from './context'\nimport type { ObjectWithToJsonMethod } from './jsonStringify'\nimport { detachToJsonMethod } from './jsonStringify'\n\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype PrimitivesAndFunctions = string | number | boolean | undefined | null | symbol | bigint | Function\ntype ExtendedContextValue = PrimitivesAndFunctions | object | ExtendedContext | ExtendedContextArray\ntype ExtendedContext = { [key: string]: ExtendedContextValue }\ntype ExtendedContextArray = ExtendedContextValue[]\n\ntype ContainerElementToProcess = {\n source: ExtendedContextArray | ExtendedContext\n target: ContextArray | Context\n path: string\n}\n\n// The maximum size of a single event is 256KiB. By default, we ensure that user-provided data\n// going through sanitize fits inside our events, while leaving room for other contexts, metadata, ...\nconst SANITIZE_DEFAULT_MAX_CHARACTER_COUNT = 220 * ONE_KIBI_BYTE\n\n// Symbol for the root element of the JSONPath used for visited objects\nconst JSON_PATH_ROOT_ELEMENT = '$'\n\n// When serializing (using JSON.stringify) a key of an object, { key: 42 } gets wrapped in quotes as \"key\".\n// With the separator (:), we need to add 3 characters to the count.\nconst KEY_DECORATION_LENGTH = 3\n\n/**\n * Ensures user-provided data is 'safe' for the SDK\n * - Deep clones data\n * - Removes cyclic references\n * - Transforms unserializable types to a string representation\n *\n * LIMITATIONS:\n * - Size is in characters, not byte count (may differ according to character encoding)\n * - Size does not take into account indentation that can be applied to JSON.stringify\n * - Non-numerical properties of Arrays are ignored. Same behavior as JSON.stringify\n *\n * @param source User-provided data meant to be serialized using JSON.stringify\n * @param maxCharacterCount Maximum number of characters allowed in serialized form\n */\nexport function sanitize(source: string, maxCharacterCount?: number): string | undefined\nexport function sanitize(source: Context, maxCharacterCount?: number): Context\nexport function sanitize(source: unknown, maxCharacterCount?: number): ContextValue\nexport function sanitize(source: unknown, maxCharacterCount = SANITIZE_DEFAULT_MAX_CHARACTER_COUNT) {\n // Unbind any toJSON function we may have on [] or {} prototypes\n const restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype)\n const restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype)\n\n // Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object\n const containerQueue: ContainerElementToProcess[] = []\n const visitedObjectsWithPath = new WeakMap()\n const sanitizedData = sanitizeProcessor(\n source as ExtendedContextValue,\n JSON_PATH_ROOT_ELEMENT,\n undefined,\n containerQueue,\n visitedObjectsWithPath\n )\n let accumulatedCharacterCount = JSON.stringify(sanitizedData)?.length || 0\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'discarded', source)\n return undefined\n }\n\n while (containerQueue.length > 0 && accumulatedCharacterCount < maxCharacterCount) {\n const containerToProcess = containerQueue.shift()!\n let separatorLength = 0 // 0 for the first element, 1 for subsequent elements\n\n // Arrays and Objects have to be handled distinctly to ensure\n // we do not pick up non-numerical properties from Arrays\n if (Array.isArray(containerToProcess.source)) {\n for (let key = 0; key < containerToProcess.source.length; key++) {\n const targetData = sanitizeProcessor(\n containerToProcess.source[key],\n containerToProcess.path,\n key,\n containerQueue,\n visitedObjectsWithPath\n )\n\n if (targetData !== undefined) {\n accumulatedCharacterCount += JSON.stringify(targetData).length\n } else {\n // When an element of an Array (targetData) is undefined, it is serialized as null:\n // JSON.stringify([undefined]) => '[null]' - This accounts for 4 characters\n accumulatedCharacterCount += 4\n }\n accumulatedCharacterCount += separatorLength\n separatorLength = 1\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source)\n break\n }\n ;(containerToProcess.target as ContextArray)[key] = targetData\n }\n } else {\n for (const key in containerToProcess.source) {\n if (Object.prototype.hasOwnProperty.call(containerToProcess.source, key)) {\n const targetData = sanitizeProcessor(\n containerToProcess.source[key],\n containerToProcess.path,\n key,\n containerQueue,\n visitedObjectsWithPath\n )\n // When a property of an object has an undefined value, it will be dropped during serialization:\n // JSON.stringify({a:undefined}) => '{}'\n if (targetData !== undefined) {\n accumulatedCharacterCount +=\n JSON.stringify(targetData).length + separatorLength + key.length + KEY_DECORATION_LENGTH\n separatorLength = 1\n }\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source)\n break\n }\n ;(containerToProcess.target as Context)[key] = targetData\n }\n }\n }\n }\n\n // Rebind detached toJSON functions\n restoreObjectPrototypeToJson()\n restoreArrayPrototypeToJson()\n\n return sanitizedData\n}\n\n/**\n * Internal function to factorize the process common to the\n * initial call to sanitize, and iterations for Arrays and Objects\n *\n */\nfunction sanitizeProcessor(\n source: ExtendedContextValue,\n parentPath: string,\n key: string | number | undefined,\n queue: ContainerElementToProcess[],\n visitedObjectsWithPath: WeakMap\n) {\n // Start by handling toJSON, as we want to sanitize its output\n const sourceToSanitize = tryToApplyToJSON(source)\n\n if (!sourceToSanitize || typeof sourceToSanitize !== 'object') {\n return sanitizePrimitivesAndFunctions(sourceToSanitize)\n }\n\n const sanitizedSource = sanitizeObjects(sourceToSanitize)\n if (sanitizedSource !== '[Object]' && sanitizedSource !== '[Array]' && sanitizedSource !== '[Error]') {\n return sanitizedSource\n }\n\n // Handle potential cyclic references\n // We need to use source as sourceToSanitize could be a reference to a new object\n // At this stage, we know the source is an object type\n const sourceAsObject = source as object\n if (visitedObjectsWithPath.has(sourceAsObject)) {\n return `[Reference seen at ${visitedObjectsWithPath.get(sourceAsObject)!}]`\n }\n\n // Add processed source to queue\n const currentPath = key !== undefined ? `${parentPath}.${key}` : parentPath\n const target = Array.isArray(sourceToSanitize) ? ([] as ContextArray) : ({} as Context)\n visitedObjectsWithPath.set(sourceAsObject, currentPath)\n queue.push({ source: sourceToSanitize as ExtendedContext | ExtendedContextArray, target, path: currentPath })\n\n return target\n}\n\n/**\n * Handles sanitization of simple, non-object types\n *\n */\nfunction sanitizePrimitivesAndFunctions(value: PrimitivesAndFunctions) {\n // BigInt cannot be serialized by JSON.stringify(), convert it to a string representation\n if (typeof value === 'bigint') {\n return `[BigInt] ${value.toString()}`\n }\n // Functions cannot be serialized by JSON.stringify(). Moreover, if a faulty toJSON is present, it needs to be converted\n // so it won't prevent stringify from serializing later\n if (typeof value === 'function') {\n return `[Function] ${value.name || 'unknown'}`\n }\n // JSON.stringify() does not serialize symbols.\n if (typeof value === 'symbol') {\n // symbol.description is part of ES2019+\n type symbolWithDescription = symbol & { description: string }\n return `[Symbol] ${(value as symbolWithDescription).description || value.toString()}`\n }\n\n return value\n}\n\n/**\n * Handles sanitization of object types\n *\n * LIMITATIONS\n * - If a class defines a toStringTag Symbol, it will fall in the catch-all method and prevent enumeration of properties.\n * To avoid this, a toJSON method can be defined.\n * - IE11 does not return a distinct type for objects such as Map, WeakMap, ... These objects will pass through and their\n * properties enumerated if any.\n *\n */\nfunction sanitizeObjects(value: object) {\n try {\n // Handle events - Keep a simple implementation to avoid breaking changes\n if (value instanceof Event) {\n return {\n isTrusted: value.isTrusted,\n }\n }\n\n // Handle all remaining object types in a generic way\n const result = Object.prototype.toString.call(value)\n const match = result.match(/\\[object (.*)\\]/)\n if (match && match[1]) {\n return `[${match[1]}]`\n }\n } catch {\n // If the previous serialization attempts failed, and we cannot convert using\n // Object.prototype.toString, declare the value unserializable\n }\n return '[Unserializable]'\n}\n\n/**\n * Checks if a toJSON function exists and tries to execute it\n *\n */\nfunction tryToApplyToJSON(value: ExtendedContextValue) {\n const object = value as ObjectWithToJsonMethod\n if (object && typeof object.toJSON === 'function') {\n try {\n return object.toJSON() as ExtendedContextValue\n } catch {\n // If toJSON fails, we continue by trying to serialize the value manually\n }\n }\n\n return value\n}\n\n/**\n * Helper function to display the warning when the accumulated character count is over the limit\n */\nfunction warnOverCharacterLimit(maxCharacterCount: number, changeType: 'discarded' | 'truncated', source: unknown) {\n display.warn(\n `The data provided has been ${changeType} as it is over the limit of ${maxCharacterCount} characters:`,\n source\n )\n}\n","export interface Subscription {\n unsubscribe: () => void\n}\n\nexport class Observable {\n private observers: Array<(data: T) => void> = []\n private onLastUnsubscribe?: () => void\n\n constructor(private onFirstSubscribe?: () => (() => void) | void) {}\n\n subscribe(f: (data: T) => void): Subscription {\n if (!this.observers.length && this.onFirstSubscribe) {\n this.onLastUnsubscribe = this.onFirstSubscribe() || undefined\n }\n this.observers.push(f)\n return {\n unsubscribe: () => {\n this.observers = this.observers.filter((other) => f !== other)\n if (!this.observers.length && this.onLastUnsubscribe) {\n this.onLastUnsubscribe()\n }\n },\n }\n }\n\n notify(data: T) {\n this.observers.forEach((observer) => observer(data))\n }\n}\n\nexport function mergeObservables(...observables: Array>) {\n const globalObservable = new Observable(() => {\n const subscriptions: Subscription[] = observables.map((observable) =>\n observable.subscribe((data) => globalObservable.notify(data))\n )\n return () => subscriptions.forEach((subscription) => subscription.unsubscribe())\n })\n\n return globalObservable\n}\n","import { ONE_KIBI_BYTE } from '../../tools/utils/byteUtils'\nimport { display } from '../../tools/display'\nimport { CustomerDataType } from './contextConstants'\n\n// RUM and logs batch bytes limit is 16KB\n// ensure that we leave room for other event attributes and maintain a decent amount of event per batch\n// (3KB (customer data) + 1KB (other attributes)) * 4 (events per batch) = 16KB\nexport const CUSTOMER_DATA_BYTES_LIMIT = 3 * ONE_KIBI_BYTE\n\nconst CustomerDataLabel = {\n [CustomerDataType.FeatureFlag]: 'feature flag evaluation',\n [CustomerDataType.User]: 'user',\n [CustomerDataType.GlobalContext]: 'global context',\n [CustomerDataType.LoggerContext]: 'logger context',\n}\nexport function warnIfCustomerDataLimitReached(bytesCount: number, customerDataType: CustomerDataType): boolean {\n if (bytesCount > CUSTOMER_DATA_BYTES_LIMIT) {\n display.warn(\n `The ${CustomerDataLabel[customerDataType]} data exceeds the recommended ${\n CUSTOMER_DATA_BYTES_LIMIT / ONE_KIBI_BYTE\n }KiB threshold. More details: https://docs.datadoghq.com/real_user_monitoring/browser/troubleshooting/#customer-data-exceeds-the-recommended-3kib-warning`\n )\n return true\n }\n return false\n}\n","import { computeBytesCount } from '../../tools/utils/byteUtils'\nimport { throttle } from '../../tools/utils/functionUtils'\nimport { deepClone } from '../../tools/mergeInto'\nimport { getType } from '../../tools/utils/typeUtils'\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify'\nimport { sanitize } from '../../tools/serialisation/sanitize'\nimport type { Context, ContextValue } from '../../tools/serialisation/context'\nimport { Observable } from '../../tools/observable'\nimport { warnIfCustomerDataLimitReached } from './heavyCustomerDataWarning'\nimport type { CustomerDataType } from './contextConstants'\n\nexport const BYTES_COMPUTATION_THROTTLING_DELAY = 200\n\nexport type ContextManager = ReturnType\n\nexport function createContextManager(customerDataType: CustomerDataType, computeBytesCountImpl = computeBytesCount) {\n let context: Context = {}\n let bytesCountCache: number\n let alreadyWarned = false\n const changeObservable = new Observable()\n\n // Throttle the bytes computation to minimize the impact on performance.\n // Especially useful if the user call context APIs synchronously multiple times in a row\n const { throttled: computeBytesCountThrottled } = throttle((context: Context) => {\n bytesCountCache = computeBytesCountImpl(jsonStringify(context)!)\n if (!alreadyWarned) {\n alreadyWarned = warnIfCustomerDataLimitReached(bytesCountCache, customerDataType)\n }\n }, BYTES_COMPUTATION_THROTTLING_DELAY)\n\n const contextManager = {\n getBytesCount: () => bytesCountCache,\n /** @deprecated use getContext instead */\n get: () => context,\n\n /** @deprecated use setContextProperty instead */\n add: (key: string, value: any) => {\n context[key] = value as ContextValue\n computeBytesCountThrottled(context)\n changeObservable.notify()\n },\n\n /** @deprecated renamed to removeContextProperty */\n remove: (key: string) => {\n delete context[key]\n computeBytesCountThrottled(context)\n changeObservable.notify()\n },\n\n /** @deprecated use setContext instead */\n set: (newContext: object) => {\n context = newContext as Context\n computeBytesCountThrottled(context)\n changeObservable.notify()\n },\n\n getContext: () => deepClone(context),\n\n setContext: (newContext: Context) => {\n if (getType(newContext) === 'object') {\n context = sanitize(newContext)\n computeBytesCountThrottled(context)\n } else {\n contextManager.clearContext()\n }\n changeObservable.notify()\n },\n\n setContextProperty: (key: string, property: any) => {\n context[key] = sanitize(property)\n computeBytesCountThrottled(context)\n changeObservable.notify()\n },\n\n removeContextProperty: (key: string) => {\n delete context[key]\n computeBytesCountThrottled(context)\n changeObservable.notify()\n },\n\n clearContext: () => {\n context = {}\n bytesCountCache = 0\n changeObservable.notify()\n },\n\n changeObservable,\n }\n return contextManager\n}\n","const BUFFER_LIMIT = 500\n\nexport class BoundedBuffer {\n private buffer: Array<() => void> = []\n\n add(callback: () => void) {\n const length = this.buffer.push(callback)\n if (length > BUFFER_LIMIT) {\n this.buffer.splice(0, 1)\n }\n }\n\n drain() {\n this.buffer.forEach((callback) => callback())\n this.buffer.length = 0\n }\n}\n","/**\n * Return true if the draw is successful\n * @param threshold between 0 and 100\n */\nexport function performDraw(threshold: number): boolean {\n return threshold !== 0 && Math.random() * 100 <= threshold\n}\n\nexport function round(num: number, decimals: 0 | 1 | 2 | 3 | 4) {\n return +num.toFixed(decimals)\n}\n\nexport function isPercentage(value: unknown) {\n return isNumber(value) && value >= 0 && value <= 100\n}\n\nexport function isNumber(value: unknown): value is number {\n return typeof value === 'number'\n}\n","import { isNumber, round } from './numberUtils'\n\nexport const ONE_SECOND = 1000\nexport const ONE_MINUTE = 60 * ONE_SECOND\nexport const ONE_HOUR = 60 * ONE_MINUTE\nexport const ONE_DAY = 24 * ONE_HOUR\nexport const ONE_YEAR = 365 * ONE_DAY\n\nexport type Duration = number & { d: 'Duration in ms' }\nexport type ServerDuration = number & { s: 'Duration in ns' }\nexport type TimeStamp = number & { t: 'Epoch time' }\nexport type RelativeTime = number & { r: 'Time relative to navigation start' } & { d: 'Duration in ms' }\nexport type ClocksState = { relative: RelativeTime; timeStamp: TimeStamp }\n\nexport function relativeToClocks(relative: RelativeTime) {\n return { relative, timeStamp: getCorrectedTimeStamp(relative) }\n}\n\nfunction getCorrectedTimeStamp(relativeTime: RelativeTime) {\n const correctedOrigin = (dateNow() - performance.now()) as TimeStamp\n // apply correction only for positive drift\n if (correctedOrigin > getNavigationStart()) {\n return Math.round(addDuration(correctedOrigin, relativeTime)) as TimeStamp\n }\n return getTimeStamp(relativeTime)\n}\n\nexport function currentDrift() {\n return Math.round(dateNow() - addDuration(getNavigationStart(), performance.now() as Duration))\n}\n\nexport function toServerDuration(duration: Duration): ServerDuration\nexport function toServerDuration(duration: Duration | undefined): ServerDuration | undefined\nexport function toServerDuration(duration: Duration | undefined) {\n if (!isNumber(duration)) {\n return duration\n }\n return round(duration * 1e6, 0) as ServerDuration\n}\n\nexport function dateNow() {\n // Do not use `Date.now` because sometimes websites are wrongly \"polyfilling\" it. For example, we\n // had some users using a very old version of `datejs`, which patched `Date.now` to return a Date\n // instance instead of a timestamp[1]. Those users are unlikely to fix this, so let's handle this\n // case ourselves.\n // [1]: https://github.com/datejs/Datejs/blob/97f5c7c58c5bc5accdab8aa7602b6ac56462d778/src/core-debug.js#L14-L16\n return new Date().getTime()\n}\n\nexport function timeStampNow() {\n return dateNow() as TimeStamp\n}\n\nexport function relativeNow() {\n return performance.now() as RelativeTime\n}\n\nexport function clocksNow() {\n return { relative: relativeNow(), timeStamp: timeStampNow() }\n}\n\nexport function clocksOrigin() {\n return { relative: 0 as RelativeTime, timeStamp: getNavigationStart() }\n}\n\nexport function elapsed(start: TimeStamp, end: TimeStamp): Duration\nexport function elapsed(start: RelativeTime, end: RelativeTime): Duration\nexport function elapsed(start: number, end: number) {\n return (end - start) as Duration\n}\n\nexport function addDuration(a: TimeStamp, b: Duration): TimeStamp\nexport function addDuration(a: RelativeTime, b: Duration): RelativeTime\nexport function addDuration(a: Duration, b: Duration): Duration\nexport function addDuration(a: number, b: number) {\n return a + b\n}\n\n/**\n * Get the time since the navigation was started.\n *\n * Note: this does not use `performance.timeOrigin` because it doesn't seem to reflect the actual\n * time on which the navigation has started: it may be much farther in the past, at least in Firefox 71.\n * Related issue in Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1429926\n */\nexport function getRelativeTime(timestamp: TimeStamp) {\n return (timestamp - getNavigationStart()) as RelativeTime\n}\n\nexport function getTimeStamp(relativeTime: RelativeTime) {\n return Math.round(addDuration(getNavigationStart(), relativeTime)) as TimeStamp\n}\n\nexport function looksLikeRelativeTime(time: RelativeTime | TimeStamp): time is RelativeTime {\n return time < ONE_YEAR\n}\n\n/**\n * Navigation start slightly change on some rare cases\n */\nlet navigationStart: TimeStamp | undefined\n\nfunction getNavigationStart() {\n if (navigationStart === undefined) {\n navigationStart = performance.timing.navigationStart as TimeStamp\n }\n return navigationStart\n}\n\nexport function resetNavigationStart() {\n navigationStart = undefined\n}\n","import { display } from '../tools/display'\nimport { ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils'\nimport { findCommaSeparatedValue, generateUUID } from '../tools/utils/stringUtils'\n\nexport interface CookieOptions {\n secure?: boolean\n crossSite?: boolean\n domain?: string\n}\n\nexport function setCookie(name: string, value: string, expireDelay: number, options?: CookieOptions) {\n const date = new Date()\n date.setTime(date.getTime() + expireDelay)\n const expires = `expires=${date.toUTCString()}`\n const sameSite = options && options.crossSite ? 'none' : 'strict'\n const domain = options && options.domain ? `;domain=${options.domain}` : ''\n const secure = options && options.secure ? ';secure' : ''\n document.cookie = `${name}=${value};${expires};path=/;samesite=${sameSite}${domain}${secure}`\n}\n\nexport function getCookie(name: string) {\n return findCommaSeparatedValue(document.cookie, name)\n}\n\nexport function deleteCookie(name: string, options?: CookieOptions) {\n setCookie(name, '', 0, options)\n}\n\nexport function areCookiesAuthorized(options: CookieOptions): boolean {\n if (document.cookie === undefined || document.cookie === null) {\n return false\n }\n try {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n const testCookieName = `dd_cookie_test_${generateUUID()}`\n const testCookieValue = 'test'\n setCookie(testCookieName, testCookieValue, ONE_MINUTE, options)\n const isCookieCorrectlySet = getCookie(testCookieName) === testCookieValue\n deleteCookie(testCookieName, options)\n return isCookieCorrectlySet\n } catch (error) {\n display.error(error)\n return false\n }\n}\n\n/**\n * No API to retrieve it, number of levels for subdomain and suffix are unknown\n * strategy: find the minimal domain on which cookies are allowed to be set\n * https://web.dev/same-site-same-origin/#site\n */\nlet getCurrentSiteCache: string | undefined\nexport function getCurrentSite() {\n if (getCurrentSiteCache === undefined) {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n const testCookieName = `dd_site_test_${generateUUID()}`\n const testCookieValue = 'test'\n\n const domainLevels = window.location.hostname.split('.')\n let candidateDomain = domainLevels.pop()!\n while (domainLevels.length && !getCookie(testCookieName)) {\n candidateDomain = `${domainLevels.pop()!}.${candidateDomain}`\n setCookie(testCookieName, testCookieValue, ONE_SECOND, { domain: candidateDomain })\n }\n deleteCookie(testCookieName, { domain: candidateDomain })\n getCurrentSiteCache = candidateDomain\n }\n return getCurrentSiteCache\n}\n","/**\n * UUID v4\n * from https://gist.github.com/jed/982883\n */\nexport function generateUUID(placeholder?: string): string {\n return placeholder\n ? // eslint-disable-next-line no-bitwise\n (parseInt(placeholder, 10) ^ ((Math.random() * 16) >> (parseInt(placeholder, 10) / 4))).toString(16)\n : `${1e7}-${1e3}-${4e3}-${8e3}-${1e11}`.replace(/[018]/g, generateUUID)\n}\n\nexport function findCommaSeparatedValue(rawString: string, name: string) {\n const regex = new RegExp(`(?:^|;)\\\\s*${name}\\\\s*=\\\\s*([^;]+)`)\n const matches = regex.exec(rawString)\n return matches ? matches[1] : undefined\n}\n\nexport function safeTruncate(candidate: string, length: number, suffix = '') {\n const lastChar = candidate.charCodeAt(length - 1)\n const isLastCharSurrogatePair = lastChar >= 0xd800 && lastChar <= 0xdbff\n const correctedLength = isLastCharSurrogatePair ? length + 1 : length\n\n if (candidate.length <= correctedLength) {\n return candidate\n }\n\n return `${candidate.slice(0, correctedLength)}${suffix}`\n}\n","import { getCookie } from '../../browser/cookie'\n\nexport const SYNTHETICS_TEST_ID_COOKIE_NAME = 'datadog-synthetics-public-id'\nexport const SYNTHETICS_RESULT_ID_COOKIE_NAME = 'datadog-synthetics-result-id'\nexport const SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'datadog-synthetics-injects-rum'\n\nexport interface BrowserWindow extends Window {\n _DATADOG_SYNTHETICS_PUBLIC_ID?: unknown\n _DATADOG_SYNTHETICS_RESULT_ID?: unknown\n _DATADOG_SYNTHETICS_INJECTS_RUM?: unknown\n}\n\nexport function willSyntheticsInjectRum(): boolean {\n return Boolean(\n (window as BrowserWindow)._DATADOG_SYNTHETICS_INJECTS_RUM || getCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME)\n )\n}\n\nexport function getSyntheticsTestId(): string | undefined {\n const value = (window as BrowserWindow)._DATADOG_SYNTHETICS_PUBLIC_ID || getCookie(SYNTHETICS_TEST_ID_COOKIE_NAME)\n return typeof value === 'string' ? value : undefined\n}\n\nexport function getSyntheticsResultId(): string | undefined {\n const value = (window as BrowserWindow)._DATADOG_SYNTHETICS_RESULT_ID || getCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME)\n return typeof value === 'string' ? value : undefined\n}\n","import { endsWith } from '../tools/utils/polyfills'\nimport { getGlobalObject } from '../tools/getGlobalObject'\n\nexport interface BrowserWindowWithEventBridge extends Window {\n DatadogEventBridge?: DatadogEventBridge\n}\n\nexport interface DatadogEventBridge {\n getAllowedWebViewHosts(): string\n send(msg: string): void\n}\n\nexport function getEventBridge() {\n const eventBridgeGlobal = getEventBridgeGlobal()\n\n if (!eventBridgeGlobal) {\n return\n }\n\n return {\n getAllowedWebViewHosts() {\n return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts()) as string[]\n },\n send(eventType: T, event: E) {\n eventBridgeGlobal.send(JSON.stringify({ eventType, event }))\n },\n }\n}\n\nexport function canUseEventBridge(currentHost = getGlobalObject().location?.hostname): boolean {\n const bridge = getEventBridge()\n return (\n !!bridge &&\n bridge\n .getAllowedWebViewHosts()\n .some((allowedHost) => currentHost === allowedHost || endsWith(currentHost, `.${allowedHost}`))\n )\n}\n\nfunction getEventBridgeGlobal() {\n return getGlobalObject().DatadogEventBridge\n}\n","import { monitor } from '../tools/monitor'\nimport { getZoneJsOriginalValue } from '../tools/getZoneJsOriginalValue'\nimport type { Configuration } from '../domain/configuration'\nimport type { VisualViewport, VisualViewportEventMap } from './types'\n\nexport const enum DOM_EVENT {\n BEFORE_UNLOAD = 'beforeunload',\n CLICK = 'click',\n DBL_CLICK = 'dblclick',\n KEY_DOWN = 'keydown',\n LOAD = 'load',\n POP_STATE = 'popstate',\n SCROLL = 'scroll',\n TOUCH_START = 'touchstart',\n TOUCH_END = 'touchend',\n TOUCH_MOVE = 'touchmove',\n VISIBILITY_CHANGE = 'visibilitychange',\n PAGE_SHOW = 'pageshow',\n FREEZE = 'freeze',\n RESUME = 'resume',\n DOM_CONTENT_LOADED = 'DOMContentLoaded',\n POINTER_DOWN = 'pointerdown',\n POINTER_UP = 'pointerup',\n POINTER_CANCEL = 'pointercancel',\n HASH_CHANGE = 'hashchange',\n PAGE_HIDE = 'pagehide',\n MOUSE_DOWN = 'mousedown',\n MOUSE_UP = 'mouseup',\n MOUSE_MOVE = 'mousemove',\n FOCUS = 'focus',\n BLUR = 'blur',\n CONTEXT_MENU = 'contextmenu',\n RESIZE = 'resize',\n CHANGE = 'change',\n INPUT = 'input',\n PLAY = 'play',\n PAUSE = 'pause',\n SECURITY_POLICY_VIOLATION = 'securitypolicyviolation',\n SELECTION_CHANGE = 'selectionchange',\n STORAGE = 'storage',\n}\n\ninterface AddEventListenerOptions {\n once?: boolean\n capture?: boolean\n passive?: boolean\n}\n\ntype EventMapFor = T extends Window\n ? WindowEventMap & {\n // TS 4.9.5 does not support `freeze` and `resume` events yet\n freeze: Event\n resume: Event\n // TS 4.9.5 does not define `visibilitychange` on Window (only Document)\n visibilitychange: Event\n }\n : T extends Document\n ? DocumentEventMap\n : T extends HTMLElement\n ? HTMLElementEventMap\n : T extends VisualViewport\n ? VisualViewportEventMap\n : T extends ShadowRoot\n ? // ShadowRootEventMap is not yet defined in our supported TS version. Instead, use\n // GlobalEventHandlersEventMap which is more than enough as we only need to listen for events bubbling\n // through the ShadowRoot like \"change\" or \"input\"\n GlobalEventHandlersEventMap\n : T extends XMLHttpRequest\n ? XMLHttpRequestEventMap\n : T extends Performance\n ? PerformanceEventMap\n : T extends Worker\n ? WorkerEventMap\n : Record\n\n/**\n * Add an event listener to an event target object (Window, Element, mock object...). This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n */\nexport function addEventListener & string>(\n configuration: Configuration,\n eventTarget: Target,\n eventName: EventName,\n listener: (event: EventMapFor[EventName] & { type: EventName }) => void,\n options?: AddEventListenerOptions\n) {\n return addEventListeners(configuration, eventTarget, [eventName], listener, options)\n}\n\n/**\n * Add event listeners to an event target object (Window, Element, mock object...). This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n *\n * * with `once: true`, the listener will be called at most once, even if different events are listened\n */\nexport function addEventListeners & string>(\n _: Configuration,\n eventTarget: Target,\n eventNames: EventName[],\n listener: (event: EventMapFor[EventName] & { type: EventName }) => void,\n { once, capture, passive }: AddEventListenerOptions = {}\n) {\n const listenerWithMonitor = monitor(\n once\n ? (event: Event) => {\n stop()\n listener(event as unknown as EventMapFor[EventName] & { type: EventName })\n }\n : (listener as unknown as (event: Event) => void)\n )\n\n const options = passive ? { capture, passive } : capture\n\n const add = getZoneJsOriginalValue(eventTarget, 'addEventListener')\n eventNames.forEach((eventName) => add.call(eventTarget, eventName, listenerWithMonitor, options))\n\n function stop() {\n const remove = getZoneJsOriginalValue(eventTarget, 'removeEventListener')\n eventNames.forEach((eventName) => remove.call(eventTarget, eventName, listenerWithMonitor, options))\n }\n\n return {\n stop,\n }\n}\n","import { computeBytesCount } from '../../tools/utils/byteUtils'\nimport { addEventListener, DOM_EVENT } from '../../browser/addEventListener'\nimport type { Context } from '../../tools/serialisation/context'\nimport type { Configuration } from '../configuration'\nimport type { ContextManager } from './contextManager'\nimport { createContextManager } from './contextManager'\nimport type { CustomerDataType } from './contextConstants'\n\nconst CONTEXT_STORE_KEY_PREFIX = '_dd_c'\n\nconst storageListeners: Array<{ stop: () => void }> = []\n\nexport function createStoredContextManager(\n configuration: Configuration,\n productKey: string,\n customerDataType: CustomerDataType,\n computeBytesCountImpl = computeBytesCount\n): ContextManager {\n const storageKey = buildStorageKey(productKey, customerDataType)\n const contextManager = createContextManager(customerDataType, computeBytesCountImpl)\n\n synchronizeWithStorage()\n storageListeners.push(\n addEventListener(configuration, window, DOM_EVENT.STORAGE, ({ key }) => {\n if (storageKey === key) {\n synchronizeWithStorage()\n }\n })\n )\n contextManager.changeObservable.subscribe(dumpToStorage)\n\n return contextManager\n\n function synchronizeWithStorage() {\n const rawContext = localStorage.getItem(storageKey)\n const context = rawContext !== null ? (JSON.parse(rawContext) as Context) : {}\n contextManager.setContext(context)\n }\n\n function dumpToStorage() {\n localStorage.setItem(storageKey, JSON.stringify(contextManager.getContext()))\n }\n}\n\nexport function buildStorageKey(productKey: string, customerDataType: CustomerDataType) {\n return `${CONTEXT_STORE_KEY_PREFIX}_${productKey}_${customerDataType}`\n}\n\nexport function removeStorageListeners() {\n storageListeners.map((listener) => listener.stop())\n}\n","import { startsWith } from '../../tools/utils/polyfills'\nimport type { StackTrace, StackFrame } from './types'\n\nconst UNKNOWN_FUNCTION = '?'\n\n/**\n * Computes a stack trace for an exception.\n */\nexport function computeStackTrace(ex: unknown): StackTrace {\n const stack: StackFrame[] = []\n\n let stackProperty = tryToGetString(ex, 'stack')\n const exString = String(ex)\n if (stackProperty && startsWith(stackProperty, exString)) {\n stackProperty = stackProperty.slice(exString.length)\n }\n if (stackProperty) {\n stackProperty.split('\\n').forEach((line) => {\n const stackFrame =\n parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line)\n if (stackFrame) {\n if (!stackFrame.func && stackFrame.line) {\n stackFrame.func = UNKNOWN_FUNCTION\n }\n\n stack.push(stackFrame)\n }\n })\n }\n\n return {\n message: tryToGetString(ex, 'message'),\n name: tryToGetString(ex, 'name'),\n stack,\n }\n}\nconst fileUrl = '((?:file|https?|blob|chrome-extension|native|eval|webpack|snippet||\\\\w+\\\\.|\\\\/).*?)'\nconst filePosition = '(?::(\\\\d+))'\nconst CHROME_LINE_RE = new RegExp(`^\\\\s*at (.*?) ?\\\\(${fileUrl}${filePosition}?${filePosition}?\\\\)?\\\\s*$`, 'i')\n\nconst CHROME_EVAL_RE = new RegExp(`\\\\((\\\\S*)${filePosition}${filePosition}\\\\)`)\n\nfunction parseChromeLine(line: string): StackFrame | undefined {\n const parts = CHROME_LINE_RE.exec(line)\n\n if (!parts) {\n return\n }\n\n const isNative = parts[2] && parts[2].indexOf('native') === 0 // start of line\n const isEval = parts[2] && parts[2].indexOf('eval') === 0 // start of line\n const submatch = CHROME_EVAL_RE.exec(parts[2])\n\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1] // url\n parts[3] = submatch[2] // line\n parts[4] = submatch[3] // column\n }\n\n return {\n args: isNative ? [parts[2]] : [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[3] ? +parts[3] : undefined,\n url: !isNative ? parts[2] : undefined,\n }\n}\n\nconst CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(`^\\\\s*at ?${fileUrl}${filePosition}?${filePosition}??\\\\s*$`, 'i')\n\nfunction parseChromeAnonymousLine(line: string): StackFrame | undefined {\n const parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line)\n\n if (!parts) {\n return\n }\n\n return {\n args: [],\n column: parts[3] ? +parts[3] : undefined,\n func: UNKNOWN_FUNCTION,\n line: parts[2] ? +parts[2] : undefined,\n url: parts[1],\n }\n}\n\nconst WINJS_LINE_RE =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i\n\nfunction parseWinLine(line: string): StackFrame | undefined {\n const parts = WINJS_LINE_RE.exec(line)\n if (!parts) {\n return\n }\n\n return {\n args: [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: +parts[3],\n url: parts[2],\n }\n}\n\nconst GECKO_LINE_RE =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i\nconst GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i\n\nfunction parseGeckoLine(line: string): StackFrame | undefined {\n const parts = GECKO_LINE_RE.exec(line)\n if (!parts) {\n return\n }\n\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1\n const submatch = GECKO_EVAL_RE.exec(parts[3])\n\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1]\n parts[4] = submatch[2]\n parts[5] = undefined! // no column when eval\n }\n\n return {\n args: parts[2] ? parts[2].split(',') : [],\n column: parts[5] ? +parts[5] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[4] ? +parts[4] : undefined,\n url: parts[3],\n }\n}\n\nfunction tryToGetString(candidate: unknown, property: string) {\n if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n return undefined\n }\n const value = (candidate as { [k: string]: unknown })[property]\n return typeof value === 'string' ? value : undefined\n}\n","import type { StackTrace } from '../tracekit'\nimport { computeStackTrace } from '../tracekit'\nimport { callMonitored } from '../../tools/monitor'\nimport { sanitize } from '../../tools/serialisation/sanitize'\nimport type { ClocksState } from '../../tools/utils/timeUtils'\nimport { noop } from '../../tools/utils/functionUtils'\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify'\nimport type { ErrorSource, ErrorHandling, RawError, RawErrorCause, ErrorWithCause, NonErrorPrefix } from './error.types'\n\nexport const NO_ERROR_STACK_PRESENT_MESSAGE = 'No stack, consider using an instance of Error'\n\ntype RawErrorParams = {\n stackTrace?: StackTrace\n originalError: unknown\n\n handlingStack?: string\n startClocks: ClocksState\n nonErrorPrefix: NonErrorPrefix\n source: ErrorSource\n handling: ErrorHandling\n}\n\nexport function computeRawError({\n stackTrace,\n originalError,\n handlingStack,\n startClocks,\n nonErrorPrefix,\n source,\n handling,\n}: RawErrorParams): RawError {\n const isErrorInstance = originalError instanceof Error\n\n const message = computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError)\n const stack = hasUsableStack(isErrorInstance, stackTrace)\n ? toStackTraceString(stackTrace)\n : NO_ERROR_STACK_PRESENT_MESSAGE\n const causes = isErrorInstance ? flattenErrorCauses(originalError as ErrorWithCause, source) : undefined\n const type = stackTrace?.name\n const fingerprint = tryToGetFingerprint(originalError)\n\n return {\n startClocks,\n source,\n handling,\n handlingStack,\n originalError,\n type,\n message,\n stack,\n causes,\n fingerprint,\n }\n}\n\nfunction computeMessage(\n stackTrace: StackTrace | undefined,\n isErrorInstance: boolean,\n nonErrorPrefix: NonErrorPrefix,\n originalError: unknown\n) {\n // Favor stackTrace message only if tracekit has really been able to extract something meaningful (message + name)\n // TODO rework tracekit integration to avoid scattering error building logic\n return stackTrace?.message && stackTrace?.name\n ? stackTrace.message\n : !isErrorInstance\n ? `${nonErrorPrefix} ${jsonStringify(sanitize(originalError))!}`\n : 'Empty message'\n}\n\nfunction hasUsableStack(isErrorInstance: boolean, stackTrace?: StackTrace): stackTrace is StackTrace {\n if (stackTrace === undefined) {\n return false\n }\n if (isErrorInstance) {\n return true\n }\n // handle cases where tracekit return stack = [] or stack = [{url: undefined, line: undefined, column: undefined}]\n // TODO rework tracekit integration to avoid generating those unusable stack\n return stackTrace.stack.length > 0 && (stackTrace.stack.length > 1 || stackTrace.stack[0].url !== undefined)\n}\n\nexport function tryToGetFingerprint(originalError: unknown) {\n return originalError instanceof Error && 'dd_fingerprint' in originalError\n ? String(originalError.dd_fingerprint)\n : undefined\n}\n\nexport function toStackTraceString(stack: StackTrace) {\n let result = formatErrorMessage(stack)\n stack.stack.forEach((frame) => {\n const func = frame.func === '?' ? '' : frame.func\n const args = frame.args && frame.args.length > 0 ? `(${frame.args.join(', ')})` : ''\n const line = frame.line ? `:${frame.line}` : ''\n const column = frame.line && frame.column ? `:${frame.column}` : ''\n result += `\\n at ${func!}${args} @ ${frame.url!}${line}${column}`\n })\n return result\n}\n\nexport function getFileFromStackTraceString(stack: string) {\n return /@ (.+)/.exec(stack)?.[1]\n}\n\nexport function formatErrorMessage(stack: StackTrace) {\n return `${stack.name || 'Error'}: ${stack.message!}`\n}\n\n/**\n Creates a stacktrace without SDK internal frames.\n \n Constraints:\n - Has to be called at the utmost position of the call stack.\n - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.\n */\nexport function createHandlingStack(): string {\n /**\n * Skip the two internal frames:\n * - SDK API (console.error, ...)\n * - this function\n * in order to keep only the user calls\n */\n const internalFramesToSkip = 2\n const error = new Error()\n let formattedStack: string\n\n // IE needs to throw the error to fill in the stack trace\n if (!error.stack) {\n try {\n throw error\n } catch (e) {\n noop()\n }\n }\n\n callMonitored(() => {\n const stackTrace = computeStackTrace(error)\n stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip)\n formattedStack = toStackTraceString(stackTrace)\n })\n\n return formattedStack!\n}\n\nexport function flattenErrorCauses(error: ErrorWithCause, parentSource: ErrorSource): RawErrorCause[] | undefined {\n let currentError = error\n const causes: RawErrorCause[] = []\n while (currentError?.cause instanceof Error && causes.length < 10) {\n const stackTrace = computeStackTrace(currentError.cause)\n causes.push({\n message: currentError.cause.message,\n source: parentSource,\n type: stackTrace?.name,\n stack: stackTrace && toStackTraceString(stackTrace),\n })\n currentError = currentError.cause\n }\n return causes.length ? causes : undefined\n}\n","import type { Context } from '../../tools/serialisation/context'\nimport { display } from '../../tools/display'\nimport { getType } from '../../tools/utils/typeUtils'\nimport { assign } from '../../tools/utils/polyfills'\nimport type { User } from './user.types'\n\n/**\n * Clone input data and ensure known user properties (id, name, email)\n * are strings, as defined here:\n * https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#user-related-attributes\n */\nexport function sanitizeUser(newUser: Context): Context {\n // We shallow clone only to prevent mutation of user data.\n const user = assign({}, newUser)\n const keys = ['id', 'name', 'email']\n keys.forEach((key) => {\n if (key in user) {\n user[key] = String(user[key])\n }\n })\n return user\n}\n\n/**\n * Simple check to ensure user is valid\n */\nexport function checkUser(newUser: User): boolean {\n const isValid = getType(newUser) === 'object'\n if (!isValid) {\n display.error('Unsupported user:', newUser)\n }\n return isValid\n}\n","/**\n * LIMITATION:\n * For NPM setup, this feature flag singleton is shared between RUM and Logs product.\n * This means that an experimental flag set on the RUM product will be set on the Logs product.\n * So keep in mind that in certain configurations, your experimental feature flag may affect other products.\n *\n * FORMAT:\n * All feature flags should be snake_cased\n */\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected feature flag\n// eslint-disable-next-line no-restricted-syntax\nexport enum ExperimentalFeature {\n PAGEHIDE = 'pagehide',\n FEATURE_FLAGS = 'feature_flags',\n RESOURCE_PAGE_STATES = 'resource_page_states',\n PAGE_STATES = 'page_states',\n COLLECT_FLUSH_REASON = 'collect_flush_reason',\n NO_RESOURCE_DURATION_FROZEN_STATE = 'no_resource_duration_frozen_state',\n SCROLLMAP = 'scrollmap',\n INTERACTION_TO_NEXT_PAINT = 'interaction_to_next_paint',\n WEB_VITALS_ATTRIBUTION = 'web_vitals_attribution',\n DISABLE_REPLAY_INLINE_CSS = 'disable_replay_inline_css',\n}\n\nconst enabledExperimentalFeatures: Set = new Set()\n\nexport function addExperimentalFeatures(enabledFeatures: ExperimentalFeature[]): void {\n enabledFeatures.forEach((flag) => {\n enabledExperimentalFeatures.add(flag)\n })\n}\n\nexport function isExperimentalFeatureEnabled(featureName: ExperimentalFeature): boolean {\n return enabledExperimentalFeatures.has(featureName)\n}\n\nexport function resetExperimentalFeatures(): void {\n enabledExperimentalFeatures.clear()\n}\n\nexport function getExperimentalFeatures(): Set {\n return enabledExperimentalFeatures\n}\n","import { assign } from './polyfills'\n\nexport function shallowClone(object: T): T & Record {\n return assign({}, object)\n}\n\nexport function objectHasValue(object: T, value: unknown): value is T[keyof T] {\n return Object.keys(object).some((key) => object[key] === value)\n}\n\nexport function isEmptyObject(object: object) {\n return Object.keys(object).length === 0\n}\n\nexport function mapValues(object: { [key: string]: A }, fn: (arg: A) => B) {\n const newObject: { [key: string]: B } = {}\n for (const key of Object.keys(object)) {\n newObject[key] = fn(object[key])\n }\n return newObject\n}\n","import { ONE_HOUR, ONE_MINUTE } from '../../tools/utils/timeUtils'\n\nexport const SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR\nexport const SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE\n","let browserIsIE: boolean | undefined\nexport function isIE() {\n return browserIsIE ?? (browserIsIE = Boolean((document as any).documentMode))\n}\n\nlet browserIsChromium: boolean | undefined\nexport function isChromium() {\n return (\n browserIsChromium ??\n (browserIsChromium = !!(window as any).chrome || /HeadlessChrome/.test(window.navigator.userAgent))\n )\n}\n\nlet browserIsSafari: boolean | undefined\nexport function isSafari() {\n return browserIsSafari ?? (browserIsSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent))\n}\n","import type { CookieOptions } from '../../../browser/cookie'\nimport type { SessionState } from '../sessionState'\n\nexport const SESSION_STORE_KEY = '_dd_s'\n\nexport type SessionStoreStrategyType = { type: 'Cookie'; cookieOptions: CookieOptions } | { type: 'LocalStorage' }\n\nexport interface SessionStoreStrategy {\n isLockEnabled: boolean\n persistSession: (session: SessionState) => void\n retrieveSession: () => SessionState\n clearSession: () => void\n}\n","import { isEmptyObject } from '../../tools/utils/objectUtils'\nimport { objectEntries } from '../../tools/utils/polyfills'\nimport { dateNow } from '../../tools/utils/timeUtils'\nimport { SESSION_EXPIRATION_DELAY } from './sessionConstants'\n\nconst SESSION_ENTRY_REGEXP = /^([a-z]+)=([a-z0-9-]+)$/\nconst SESSION_ENTRY_SEPARATOR = '&'\n\nexport interface SessionState {\n id?: string\n created?: string\n expire?: string\n lock?: string\n\n [key: string]: string | undefined\n}\n\nexport function isSessionInExpiredState(session: SessionState) {\n return isEmptyObject(session)\n}\n\nexport function expandSessionState(session: SessionState) {\n session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY)\n}\n\nexport function toSessionString(session: SessionState) {\n return objectEntries(session)\n .map(([key, value]) => `${key}=${value as string}`)\n .join(SESSION_ENTRY_SEPARATOR)\n}\n\nexport function toSessionState(sessionString: string | undefined | null) {\n const session: SessionState = {}\n if (isValidSessionString(sessionString)) {\n sessionString.split(SESSION_ENTRY_SEPARATOR).forEach((entry) => {\n const matches = SESSION_ENTRY_REGEXP.exec(entry)\n if (matches !== null) {\n const [, key, value] = matches\n session[key] = value\n }\n })\n }\n return session\n}\n\nfunction isValidSessionString(sessionString: string | undefined | null): sessionString is string {\n return (\n !!sessionString &&\n (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString))\n )\n}\n","import { getCookie } from '../../browser/cookie'\nimport type { SessionStoreStrategy } from './storeStrategies/sessionStoreStrategy'\nimport { SESSION_STORE_KEY } from './storeStrategies/sessionStoreStrategy'\nimport type { SessionState } from './sessionState'\nimport { expandSessionState, isSessionInExpiredState } from './sessionState'\n\nexport const OLD_SESSION_COOKIE_NAME = '_dd'\nexport const OLD_RUM_COOKIE_NAME = '_dd_r'\nexport const OLD_LOGS_COOKIE_NAME = '_dd_l'\n\n// duplicate values to avoid dependency issues\nexport const RUM_SESSION_KEY = 'rum'\nexport const LOGS_SESSION_KEY = 'logs'\n\n/**\n * This migration should remain in the codebase as long as older versions are available/live\n * to allow older sdk versions to be upgraded to newer versions without compatibility issues.\n */\nexport function tryOldCookiesMigration(cookieStoreStrategy: SessionStoreStrategy) {\n const sessionString = getCookie(SESSION_STORE_KEY)\n if (!sessionString) {\n const oldSessionId = getCookie(OLD_SESSION_COOKIE_NAME)\n const oldRumType = getCookie(OLD_RUM_COOKIE_NAME)\n const oldLogsType = getCookie(OLD_LOGS_COOKIE_NAME)\n const session: SessionState = {}\n\n if (oldSessionId) {\n session.id = oldSessionId\n }\n if (oldLogsType && /^[01]$/.test(oldLogsType)) {\n session[LOGS_SESSION_KEY] = oldLogsType\n }\n if (oldRumType && /^[012]$/.test(oldRumType)) {\n session[RUM_SESSION_KEY] = oldRumType\n }\n\n if (!isSessionInExpiredState(session)) {\n expandSessionState(session)\n cookieStoreStrategy.persistSession(session)\n }\n }\n}\n","import { isChromium } from '../../../tools/utils/browserDetection'\nimport type { CookieOptions } from '../../../browser/cookie'\nimport { getCurrentSite, areCookiesAuthorized, deleteCookie, getCookie, setCookie } from '../../../browser/cookie'\nimport type { InitConfiguration } from '../../configuration'\nimport { tryOldCookiesMigration } from '../oldCookiesMigration'\nimport { SESSION_EXPIRATION_DELAY } from '../sessionConstants'\nimport type { SessionState } from '../sessionState'\nimport { toSessionString, toSessionState } from '../sessionState'\nimport type { SessionStoreStrategy, SessionStoreStrategyType } from './sessionStoreStrategy'\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy'\n\nexport function selectCookieStrategy(initConfiguration: InitConfiguration): SessionStoreStrategyType | undefined {\n const cookieOptions = buildCookieOptions(initConfiguration)\n return areCookiesAuthorized(cookieOptions) ? { type: 'Cookie', cookieOptions } : undefined\n}\n\nexport function initCookieStrategy(cookieOptions: CookieOptions): SessionStoreStrategy {\n const cookieStore = {\n /**\n * Lock strategy allows mitigating issues due to concurrent access to cookie.\n * This issue concerns only chromium browsers and enabling this on firefox increases cookie write failures.\n */\n isLockEnabled: isChromium(),\n persistSession: persistSessionCookie(cookieOptions),\n retrieveSession: retrieveSessionCookie,\n clearSession: deleteSessionCookie(cookieOptions),\n }\n\n tryOldCookiesMigration(cookieStore)\n\n return cookieStore\n}\n\nfunction persistSessionCookie(options: CookieOptions) {\n return (session: SessionState) => {\n setCookie(SESSION_STORE_KEY, toSessionString(session), SESSION_EXPIRATION_DELAY, options)\n }\n}\n\nfunction retrieveSessionCookie(): SessionState {\n const sessionString = getCookie(SESSION_STORE_KEY)\n return toSessionState(sessionString)\n}\n\nfunction deleteSessionCookie(options: CookieOptions) {\n return () => {\n deleteCookie(SESSION_STORE_KEY, options)\n }\n}\n\nexport function buildCookieOptions(initConfiguration: InitConfiguration) {\n const cookieOptions: CookieOptions = {}\n\n cookieOptions.secure = !!initConfiguration.useSecureSessionCookie || !!initConfiguration.useCrossSiteSessionCookie\n cookieOptions.crossSite = !!initConfiguration.useCrossSiteSessionCookie\n\n if (initConfiguration.trackSessionAcrossSubdomains) {\n cookieOptions.domain = getCurrentSite()\n }\n\n return cookieOptions\n}\n","import { generateUUID } from '../../../tools/utils/stringUtils'\nimport type { SessionState } from '../sessionState'\nimport { toSessionString, toSessionState } from '../sessionState'\nimport type { SessionStoreStrategy, SessionStoreStrategyType } from './sessionStoreStrategy'\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy'\n\nconst LOCAL_STORAGE_TEST_KEY = '_dd_test_'\n\nexport function selectLocalStorageStrategy(): SessionStoreStrategyType | undefined {\n try {\n const id = generateUUID()\n const testKey = `${LOCAL_STORAGE_TEST_KEY}${id}`\n localStorage.setItem(testKey, id)\n const retrievedId = localStorage.getItem(testKey)\n localStorage.removeItem(testKey)\n return id === retrievedId ? { type: 'LocalStorage' } : undefined\n } catch (e) {\n return undefined\n }\n}\n\nexport function initLocalStorageStrategy(): SessionStoreStrategy {\n return {\n isLockEnabled: false,\n persistSession: persistInLocalStorage,\n retrieveSession: retrieveSessionFromLocalStorage,\n clearSession: clearSessionFromLocalStorage,\n }\n}\n\nfunction persistInLocalStorage(sessionState: SessionState) {\n localStorage.setItem(SESSION_STORE_KEY, toSessionString(sessionState))\n}\n\nfunction retrieveSessionFromLocalStorage(): SessionState {\n const sessionString = localStorage.getItem(SESSION_STORE_KEY)\n return toSessionState(sessionString)\n}\n\nfunction clearSessionFromLocalStorage() {\n localStorage.removeItem(SESSION_STORE_KEY)\n}\n","import { setTimeout } from '../../tools/timer'\nimport { generateUUID } from '../../tools/utils/stringUtils'\nimport type { SessionStoreStrategy } from './storeStrategies/sessionStoreStrategy'\nimport type { SessionState } from './sessionState'\nimport { expandSessionState, isSessionInExpiredState } from './sessionState'\n\ntype Operations = {\n process: (sessionState: SessionState) => SessionState | undefined\n after?: (sessionState: SessionState) => void\n}\n\nexport const LOCK_RETRY_DELAY = 10\nexport const LOCK_MAX_TRIES = 100\nconst bufferedOperations: Operations[] = []\nlet ongoingOperations: Operations | undefined\n\nexport function processSessionStoreOperations(\n operations: Operations,\n sessionStoreStrategy: SessionStoreStrategy,\n numberOfRetries = 0\n) {\n const { isLockEnabled, retrieveSession, persistSession, clearSession } = sessionStoreStrategy\n\n if (!ongoingOperations) {\n ongoingOperations = operations\n }\n if (operations !== ongoingOperations) {\n bufferedOperations.push(operations)\n return\n }\n if (isLockEnabled && numberOfRetries >= LOCK_MAX_TRIES) {\n next(sessionStoreStrategy)\n return\n }\n let currentLock: string\n let currentSession = retrieveSession()\n if (isLockEnabled) {\n // if someone has lock, retry later\n if (currentSession.lock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries)\n return\n }\n // acquire lock\n currentLock = generateUUID()\n currentSession.lock = currentLock\n persistSession(currentSession)\n // if lock is not acquired, retry later\n currentSession = retrieveSession()\n if (currentSession.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries)\n return\n }\n }\n let processedSession = operations.process(currentSession)\n if (isLockEnabled) {\n // if lock corrupted after process, retry later\n currentSession = retrieveSession()\n if (currentSession.lock !== currentLock!) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries)\n return\n }\n }\n if (processedSession) {\n if (isSessionInExpiredState(processedSession)) {\n clearSession()\n } else {\n expandSessionState(processedSession)\n persistSession(processedSession)\n }\n }\n if (isLockEnabled) {\n // correctly handle lock around expiration would require to handle this case properly at several levels\n // since we don't have evidence of lock issues around expiration, let's just not do the corruption check for it\n if (!(processedSession && isSessionInExpiredState(processedSession))) {\n // if lock corrupted after persist, retry later\n currentSession = retrieveSession()\n if (currentSession.lock !== currentLock!) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries)\n return\n }\n delete currentSession.lock\n persistSession(currentSession)\n processedSession = currentSession\n }\n }\n // call after even if session is not persisted in order to perform operations on\n // up-to-date session state value => the value could have been modified by another tab\n operations.after?.(processedSession || currentSession)\n next(sessionStoreStrategy)\n}\n\nfunction retryLater(operations: Operations, sessionStore: SessionStoreStrategy, currentNumberOfRetries: number) {\n setTimeout(() => {\n processSessionStoreOperations(operations, sessionStore, currentNumberOfRetries + 1)\n }, LOCK_RETRY_DELAY)\n}\n\nfunction next(sessionStore: SessionStoreStrategy) {\n ongoingOperations = undefined\n const nextOperations = bufferedOperations.shift()\n if (nextOperations) {\n processSessionStoreOperations(nextOperations, sessionStore)\n }\n}\n","import { clearInterval, setInterval } from '../../tools/timer'\nimport { Observable } from '../../tools/observable'\nimport { ONE_SECOND, dateNow } from '../../tools/utils/timeUtils'\nimport { throttle } from '../../tools/utils/functionUtils'\nimport { generateUUID } from '../../tools/utils/stringUtils'\nimport type { InitConfiguration } from '../configuration'\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants'\nimport { selectCookieStrategy, initCookieStrategy } from './storeStrategies/sessionInCookie'\nimport type { SessionStoreStrategyType } from './storeStrategies/sessionStoreStrategy'\nimport type { SessionState } from './sessionState'\nimport { initLocalStorageStrategy, selectLocalStorageStrategy } from './storeStrategies/sessionInLocalStorage'\nimport { processSessionStoreOperations } from './sessionStoreOperations'\n\nexport interface SessionStore {\n expandOrRenewSession: () => void\n expandSession: () => void\n getSession: () => SessionState\n renewObservable: Observable\n expireObservable: Observable\n expire: () => void\n stop: () => void\n}\n\n/**\n * Every second, the storage will be polled to check for any change that can occur\n * to the session state in another browser tab, or another window.\n * This value has been determined from our previous cookie-only implementation.\n */\nexport const STORAGE_POLL_DELAY = ONE_SECOND\n\n/**\n * Checks if cookies are available as the preferred storage\n * Else, checks if LocalStorage is allowed and available\n */\nexport function selectSessionStoreStrategyType(\n initConfiguration: InitConfiguration\n): SessionStoreStrategyType | undefined {\n let sessionStoreStrategyType = selectCookieStrategy(initConfiguration)\n if (!sessionStoreStrategyType && initConfiguration.allowFallbackToLocalStorage) {\n sessionStoreStrategyType = selectLocalStorageStrategy()\n }\n return sessionStoreStrategyType\n}\n\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(\n sessionStoreStrategyType: SessionStoreStrategyType,\n productKey: string,\n computeSessionState: (rawTrackingType?: string) => { trackingType: TrackingType; isTracked: boolean }\n): SessionStore {\n const renewObservable = new Observable()\n const expireObservable = new Observable()\n\n const sessionStoreStrategy =\n sessionStoreStrategyType.type === 'Cookie'\n ? initCookieStrategy(sessionStoreStrategyType.cookieOptions)\n : initLocalStorageStrategy()\n const { clearSession, retrieveSession } = sessionStoreStrategy\n\n const watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY)\n let sessionCache: SessionState = retrieveActiveSession()\n\n function expandOrRenewSession() {\n let isTracked: boolean\n processSessionStoreOperations(\n {\n process: (sessionState) => {\n const synchronizedSession = synchronizeSession(sessionState)\n isTracked = expandOrRenewSessionState(synchronizedSession)\n return synchronizedSession\n },\n after: (sessionState) => {\n if (isTracked && !hasSessionInCache()) {\n renewSessionInCache(sessionState)\n }\n sessionCache = sessionState\n },\n },\n sessionStoreStrategy\n )\n }\n\n function expandSession() {\n processSessionStoreOperations(\n {\n process: (sessionState) => (hasSessionInCache() ? synchronizeSession(sessionState) : undefined),\n },\n sessionStoreStrategy\n )\n }\n\n /**\n * allows two behaviors:\n * - if the session is active, synchronize the session cache without updating the session store\n * - if the session is not active, clear the session store and expire the session cache\n */\n function watchSession() {\n processSessionStoreOperations(\n {\n process: (sessionState) => (!isActiveSession(sessionState) ? {} : undefined),\n after: synchronizeSession,\n },\n sessionStoreStrategy\n )\n }\n\n function synchronizeSession(sessionState: SessionState) {\n if (!isActiveSession(sessionState)) {\n sessionState = {}\n }\n if (hasSessionInCache()) {\n if (isSessionInCacheOutdated(sessionState)) {\n expireSessionInCache()\n } else {\n sessionCache = sessionState\n }\n }\n return sessionState\n }\n\n function expandOrRenewSessionState(sessionState: SessionState) {\n const { trackingType, isTracked } = computeSessionState(sessionState[productKey])\n sessionState[productKey] = trackingType\n if (isTracked && !sessionState.id) {\n sessionState.id = generateUUID()\n sessionState.created = String(dateNow())\n }\n return isTracked\n }\n\n function hasSessionInCache() {\n return sessionCache[productKey] !== undefined\n }\n\n function isSessionInCacheOutdated(sessionState: SessionState) {\n return sessionCache.id !== sessionState.id || sessionCache[productKey] !== sessionState[productKey]\n }\n\n function expireSessionInCache() {\n sessionCache = {}\n expireObservable.notify()\n }\n\n function renewSessionInCache(sessionState: SessionState) {\n sessionCache = sessionState\n renewObservable.notify()\n }\n\n function retrieveActiveSession(): SessionState {\n const session = retrieveSession()\n if (isActiveSession(session)) {\n return session\n }\n return {}\n }\n\n function isActiveSession(sessionState: SessionState) {\n // created and expire can be undefined for versions which was not storing them\n // these checks could be removed when older versions will not be available/live anymore\n return (\n (sessionState.created === undefined || dateNow() - Number(sessionState.created) < SESSION_TIME_OUT_DELAY) &&\n (sessionState.expire === undefined || dateNow() < Number(sessionState.expire))\n )\n }\n\n return {\n expandOrRenewSession: throttle(expandOrRenewSession, STORAGE_POLL_DELAY).throttled,\n expandSession,\n getSession: () => sessionCache,\n renewObservable,\n expireObservable,\n expire: () => {\n clearSession()\n synchronizeSession({})\n },\n stop: () => {\n clearInterval(watchSessionTimeoutId)\n },\n }\n}\n","import { jsonStringify } from '../serialisation/jsonStringify'\n\nexport function normalizeUrl(url: string) {\n return buildUrl(url, getLocationOrigin()).href\n}\n\nexport function isValidUrl(url: string) {\n try {\n return !!buildUrl(url)\n } catch {\n return false\n }\n}\n\nexport function getOrigin(url: string) {\n return getLinkElementOrigin(buildUrl(url))\n}\n\nexport function getPathName(url: string) {\n const pathname = buildUrl(url).pathname\n return pathname[0] === '/' ? pathname : `/${pathname}`\n}\n\nexport function getSearch(url: string) {\n return buildUrl(url).search\n}\n\nexport function getHash(url: string) {\n return buildUrl(url).hash\n}\n\nexport function buildUrl(url: string, base?: string) {\n const supportedURL = getSupportedUrl()\n if (supportedURL) {\n try {\n return base !== undefined ? new supportedURL(url, base) : new supportedURL(url)\n } catch (error) {\n throw new Error(`Failed to construct URL: ${String(error)} ${jsonStringify({ url, base })!}`)\n }\n }\n if (base === undefined && !/:/.test(url)) {\n throw new Error(`Invalid URL: '${url}'`)\n }\n let doc = document\n const anchorElement = doc.createElement('a')\n if (base !== undefined) {\n doc = document.implementation.createHTMLDocument('')\n const baseElement = doc.createElement('base')\n baseElement.href = base\n doc.head.appendChild(baseElement)\n doc.body.appendChild(anchorElement)\n }\n anchorElement.href = url\n return anchorElement\n}\n\nconst originalURL = URL\nlet isURLSupported: boolean | undefined\nfunction getSupportedUrl(): typeof URL | undefined {\n if (isURLSupported === undefined) {\n try {\n const url = new originalURL('http://test/path')\n isURLSupported = url.href === 'http://test/path'\n } catch {\n isURLSupported = false\n }\n }\n return isURLSupported ? originalURL : undefined\n}\n\nexport function getLocationOrigin() {\n return getLinkElementOrigin(window.location)\n}\n\n/**\n * Fallback\n * On IE HTMLAnchorElement origin is not supported: https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/origin\n * On Firefox window.location.origin is \"null\" for file: URIs: https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n */\nexport function getLinkElementOrigin(element: Location | HTMLAnchorElement | URL) {\n if (element.origin && element.origin !== 'null') {\n return element.origin\n }\n const sanitizedHost = element.host.replace(/(:80|:443)$/, '')\n return `${element.protocol}//${sanitizedHost}`\n}\n","export const INTAKE_SITE_STAGING = 'datad0g.com'\nexport const INTAKE_SITE_US1 = 'datadoghq.com'\nexport const INTAKE_SITE_EU1 = 'datadoghq.eu'\nexport const INTAKE_SITE_AP1 = 'ap1.datadoghq.com'\nexport const INTAKE_SITE_US1_FED = 'ddog-gov.com'\n","import type { Payload } from '../../transport'\nimport { timeStampNow } from '../../tools/utils/timeUtils'\nimport { normalizeUrl } from '../../tools/utils/urlPolyfill'\nimport { ExperimentalFeature, isExperimentalFeatureEnabled } from '../../tools/experimentalFeatures'\nimport { generateUUID } from '../../tools/utils/stringUtils'\nimport type { InitConfiguration } from './configuration'\nimport { INTAKE_SITE_AP1, INTAKE_SITE_US1 } from './intakeSites'\n\n// replaced at build time\ndeclare const __BUILD_ENV__SDK_VERSION__: string\n\nexport const ENDPOINTS = {\n logs: 'logs',\n rum: 'rum',\n sessionReplay: 'session-replay',\n} as const\n\nconst INTAKE_TRACKS = {\n logs: 'logs',\n rum: 'rum',\n sessionReplay: 'replay',\n}\n\nexport type EndpointType = keyof typeof ENDPOINTS\n\nexport type EndpointBuilder = ReturnType\n\nexport function createEndpointBuilder(\n initConfiguration: InitConfiguration,\n endpointType: EndpointType,\n configurationTags: string[]\n) {\n const buildUrlWithParameters = createEndpointUrlWithParametersBuilder(initConfiguration, endpointType)\n\n return {\n build(api: 'xhr' | 'fetch' | 'beacon', payload: Payload) {\n const parameters = buildEndpointParameters(initConfiguration, endpointType, configurationTags, api, payload)\n return buildUrlWithParameters(parameters)\n },\n urlPrefix: buildUrlWithParameters(''),\n endpointType,\n }\n}\n\n/**\n * Create a function used to build a full endpoint url from provided parameters. The goal of this\n * function is to pre-compute some parts of the URL to avoid re-computing everything on every\n * request, as only parameters are changing.\n */\nfunction createEndpointUrlWithParametersBuilder(\n initConfiguration: InitConfiguration,\n endpointType: EndpointType\n): (parameters: string) => string {\n const path = `/api/v2/${INTAKE_TRACKS[endpointType]}`\n\n const { proxy, proxyUrl } = initConfiguration\n if (proxy) {\n const normalizedProxyUrl = normalizeUrl(proxy)\n return (parameters) => `${normalizedProxyUrl}?ddforward=${encodeURIComponent(`${path}?${parameters}`)}`\n }\n\n const host = buildEndpointHost(initConfiguration, endpointType)\n\n if (proxy === undefined && proxyUrl) {\n // TODO: remove this in a future major.\n const normalizedProxyUrl = normalizeUrl(proxyUrl)\n return (parameters) =>\n `${normalizedProxyUrl}?ddforward=${encodeURIComponent(`https://${host}${path}?${parameters}`)}`\n }\n\n return (parameters) => `https://${host}${path}?${parameters}`\n}\n\nfunction buildEndpointHost(initConfiguration: InitConfiguration, endpointType: EndpointType) {\n const { site = INTAKE_SITE_US1, internalAnalyticsSubdomain } = initConfiguration\n\n if (internalAnalyticsSubdomain && site === INTAKE_SITE_US1) {\n return `${internalAnalyticsSubdomain}.${INTAKE_SITE_US1}`\n }\n\n const domainParts = site.split('.')\n const extension = domainParts.pop()\n const subdomain = site !== INTAKE_SITE_AP1 ? `${ENDPOINTS[endpointType]}.` : ''\n return `${subdomain}browser-intake-${domainParts.join('-')}.${extension!}`\n}\n\n/**\n * Build parameters to be used for an intake request. Parameters should be re-built for each\n * request, as they change randomly.\n */\nfunction buildEndpointParameters(\n { clientToken, internalAnalyticsSubdomain }: InitConfiguration,\n endpointType: EndpointType,\n configurationTags: string[],\n api: 'xhr' | 'fetch' | 'beacon',\n { retry, flushReason, encoding }: Payload\n) {\n const tags = [`sdk_version:${__BUILD_ENV__SDK_VERSION__}`, `api:${api}`].concat(configurationTags)\n if (flushReason && isExperimentalFeatureEnabled(ExperimentalFeature.COLLECT_FLUSH_REASON)) {\n tags.push(`flush_reason:${flushReason}`)\n }\n if (retry) {\n tags.push(`retry_count:${retry.count}`, `retry_after:${retry.lastFailureStatus}`)\n }\n\n const parameters = [\n 'ddsource=browser',\n `ddtags=${encodeURIComponent(tags.join(','))}`,\n `dd-api-key=${clientToken}`,\n `dd-evp-origin-version=${encodeURIComponent(__BUILD_ENV__SDK_VERSION__)}`,\n 'dd-evp-origin=browser',\n `dd-request-id=${generateUUID()}`,\n ]\n\n if (encoding) {\n parameters.push(`dd-evp-encoding=${encoding}`)\n }\n\n if (endpointType === 'rum') {\n parameters.push(`batch_time=${timeStampNow()}`)\n }\n\n if (internalAnalyticsSubdomain) {\n parameters.reverse()\n }\n\n return parameters.join('&')\n}\n","import { display } from '../../tools/display'\nimport type { InitConfiguration } from './configuration'\n\nexport const TAG_SIZE_LIMIT = 200\n\nexport function buildTags(configuration: InitConfiguration): string[] {\n const { env, service, version, datacenter } = configuration\n const tags = []\n\n if (env) {\n tags.push(buildTag('env', env))\n }\n if (service) {\n tags.push(buildTag('service', service))\n }\n if (version) {\n tags.push(buildTag('version', version))\n }\n if (datacenter) {\n tags.push(buildTag('datacenter', datacenter))\n }\n\n return tags\n}\n\nconst FORBIDDEN_CHARACTERS = /[^a-z0-9_:./-]/\n\nexport function buildTag(key: string, rawValue: string) {\n // See https://docs.datadoghq.com/getting_started/tagging/#defining-tags for tags syntax. Note\n // that the backend may not follow the exact same rules, so we only want to display an informal\n // warning.\n const valueSizeLimit = TAG_SIZE_LIMIT - key.length - 1\n\n if (rawValue.length > valueSizeLimit || FORBIDDEN_CHARACTERS.test(rawValue)) {\n display.warn(`${key} value doesn't meet tag requirements and will be sanitized`)\n }\n\n // Let the backend do most of the sanitization, but still make sure multiple tags can't be crafted\n // by forging a value containing commas.\n const sanitizedValue = rawValue.replace(/,/g, '_')\n\n return `${key}:${sanitizedValue}`\n}\n","import { catchUserErrors } from '../../tools/catchUserErrors'\nimport { display } from '../../tools/display'\nimport type { RawTelemetryConfiguration } from '../telemetry'\nimport { ExperimentalFeature, addExperimentalFeatures } from '../../tools/experimentalFeatures'\nimport type { Duration } from '../../tools/utils/timeUtils'\nimport { ONE_SECOND } from '../../tools/utils/timeUtils'\nimport { isPercentage } from '../../tools/utils/numberUtils'\nimport { ONE_KIBI_BYTE } from '../../tools/utils/byteUtils'\nimport { objectHasValue } from '../../tools/utils/objectUtils'\nimport { assign } from '../../tools/utils/polyfills'\nimport { selectSessionStoreStrategyType } from '../session/sessionStore'\nimport type { SessionStoreStrategyType } from '../session/storeStrategies/sessionStoreStrategy'\nimport type { TransportConfiguration } from './transportConfiguration'\nimport { computeTransportConfiguration } from './transportConfiguration'\n\nexport const DefaultPrivacyLevel = {\n ALLOW: 'allow',\n MASK: 'mask',\n MASK_USER_INPUT: 'mask-user-input',\n} as const\nexport type DefaultPrivacyLevel = (typeof DefaultPrivacyLevel)[keyof typeof DefaultPrivacyLevel]\n\nexport interface InitConfiguration {\n // global options\n clientToken: string\n beforeSend?: GenericBeforeSendCallback | undefined\n /**\n * @deprecated use sessionSampleRate instead\n */\n sampleRate?: number | undefined\n sessionSampleRate?: number | undefined\n telemetrySampleRate?: number | undefined\n silentMultipleInit?: boolean | undefined\n trackResources?: boolean | undefined\n trackLongTasks?: boolean | undefined\n storeContextsAcrossPages?: boolean | undefined\n\n // transport options\n proxy?: string | undefined\n /**\n * @deprecated use `proxy` instead\n */\n proxyUrl?: string | undefined\n site?: string | undefined\n\n // tag and context options\n service?: string | undefined\n env?: string | undefined\n version?: string | undefined\n\n // cookie options\n useCrossSiteSessionCookie?: boolean | undefined\n useSecureSessionCookie?: boolean | undefined\n trackSessionAcrossSubdomains?: boolean | undefined\n\n // alternate storage option\n allowFallbackToLocalStorage?: boolean | undefined\n\n // internal options\n enableExperimentalFeatures?: string[] | undefined\n replica?: ReplicaUserConfiguration | undefined\n datacenter?: string\n internalAnalyticsSubdomain?: string\n\n telemetryConfigurationSampleRate?: number\n}\n\n// This type is only used to build the core configuration. Logs and RUM SDKs are using a proper type\n// for this option.\ntype GenericBeforeSendCallback = (event: any, context?: any) => unknown\n\ninterface ReplicaUserConfiguration {\n applicationId?: string\n clientToken: string\n}\n\nexport interface Configuration extends TransportConfiguration {\n // Built from init configuration\n beforeSend: GenericBeforeSendCallback | undefined\n sessionStoreStrategyType: SessionStoreStrategyType | undefined\n sessionSampleRate: number\n telemetrySampleRate: number\n telemetryConfigurationSampleRate: number\n service: string | undefined\n silentMultipleInit: boolean\n\n // Event limits\n eventRateLimiterThreshold: number // Limit the maximum number of actions, errors and logs per minutes\n maxTelemetryEventsPerPage: number\n\n // Batch configuration\n batchBytesLimit: number\n flushTimeout: Duration\n batchMessagesLimit: number\n messageBytesLimit: number\n}\n\nexport function validateAndBuildConfiguration(initConfiguration: InitConfiguration): Configuration | undefined {\n if (!initConfiguration || !initConfiguration.clientToken) {\n display.error('Client Token is not configured, we will not send any data.')\n return\n }\n\n const sessionSampleRate = initConfiguration.sessionSampleRate ?? initConfiguration.sampleRate\n if (sessionSampleRate !== undefined && !isPercentage(sessionSampleRate)) {\n display.error('Session Sample Rate should be a number between 0 and 100')\n return\n }\n\n if (initConfiguration.telemetrySampleRate !== undefined && !isPercentage(initConfiguration.telemetrySampleRate)) {\n display.error('Telemetry Sample Rate should be a number between 0 and 100')\n return\n }\n\n if (\n initConfiguration.telemetryConfigurationSampleRate !== undefined &&\n !isPercentage(initConfiguration.telemetryConfigurationSampleRate)\n ) {\n display.error('Telemetry Configuration Sample Rate should be a number between 0 and 100')\n return\n }\n\n // Set the experimental feature flags as early as possible, so we can use them in most places\n if (Array.isArray(initConfiguration.enableExperimentalFeatures)) {\n addExperimentalFeatures(\n initConfiguration.enableExperimentalFeatures.filter((flag): flag is ExperimentalFeature =>\n objectHasValue(ExperimentalFeature, flag)\n )\n )\n }\n\n return assign(\n {\n beforeSend:\n initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),\n sessionStoreStrategyType: selectSessionStoreStrategyType(initConfiguration),\n sessionSampleRate: sessionSampleRate ?? 100,\n telemetrySampleRate: initConfiguration.telemetrySampleRate ?? 20,\n telemetryConfigurationSampleRate: initConfiguration.telemetryConfigurationSampleRate ?? 5,\n service: initConfiguration.service,\n silentMultipleInit: !!initConfiguration.silentMultipleInit,\n\n /**\n * beacon payload max queue size implementation is 64kb\n * ensure that we leave room for logs, rum and potential other users\n */\n batchBytesLimit: 16 * ONE_KIBI_BYTE,\n\n eventRateLimiterThreshold: 3000,\n maxTelemetryEventsPerPage: 15,\n\n /**\n * flush automatically, aim to be lower than ALB connection timeout\n * to maximize connection reuse.\n */\n flushTimeout: (30 * ONE_SECOND) as Duration,\n\n /**\n * Logs intake limit\n */\n batchMessagesLimit: 50,\n messageBytesLimit: 256 * ONE_KIBI_BYTE,\n },\n computeTransportConfiguration(initConfiguration)\n )\n}\n\nexport function serializeConfiguration(initConfiguration: InitConfiguration): Partial {\n const proxy = initConfiguration.proxy ?? initConfiguration.proxyUrl\n return {\n session_sample_rate: initConfiguration.sessionSampleRate ?? initConfiguration.sampleRate,\n telemetry_sample_rate: initConfiguration.telemetrySampleRate,\n telemetry_configuration_sample_rate: initConfiguration.telemetryConfigurationSampleRate,\n use_before_send: !!initConfiguration.beforeSend,\n use_cross_site_session_cookie: initConfiguration.useCrossSiteSessionCookie,\n use_secure_session_cookie: initConfiguration.useSecureSessionCookie,\n use_proxy: proxy !== undefined ? !!proxy : undefined,\n silent_multiple_init: initConfiguration.silentMultipleInit,\n track_session_across_subdomains: initConfiguration.trackSessionAcrossSubdomains,\n track_resources: initConfiguration.trackResources,\n track_long_task: initConfiguration.trackLongTasks,\n allow_fallback_to_local_storage: !!initConfiguration.allowFallbackToLocalStorage,\n store_contexts_across_pages: !!initConfiguration.storeContextsAcrossPages,\n }\n}\n","import { objectValues, assign } from '../../tools/utils/polyfills'\nimport type { InitConfiguration } from './configuration'\nimport type { EndpointBuilder } from './endpointBuilder'\nimport { createEndpointBuilder } from './endpointBuilder'\nimport { buildTags } from './tags'\nimport { INTAKE_SITE_US1 } from './intakeSites'\n\nexport interface TransportConfiguration {\n logsEndpointBuilder: EndpointBuilder\n rumEndpointBuilder: EndpointBuilder\n sessionReplayEndpointBuilder: EndpointBuilder\n isIntakeUrl: (url: string) => boolean\n replica?: ReplicaConfiguration\n site: string\n}\n\nexport interface ReplicaConfiguration {\n applicationId?: string\n logsEndpointBuilder: EndpointBuilder\n rumEndpointBuilder: EndpointBuilder\n}\n\nexport function computeTransportConfiguration(initConfiguration: InitConfiguration): TransportConfiguration {\n const tags = buildTags(initConfiguration)\n\n const endpointBuilders = computeEndpointBuilders(initConfiguration, tags)\n const intakeUrlPrefixes = objectValues(endpointBuilders).map((builder) => builder.urlPrefix)\n\n const replicaConfiguration = computeReplicaConfiguration(initConfiguration, intakeUrlPrefixes, tags)\n\n return assign(\n {\n isIntakeUrl: (url: string) => intakeUrlPrefixes.some((intakeEndpoint) => url.indexOf(intakeEndpoint) === 0),\n replica: replicaConfiguration,\n site: initConfiguration.site || INTAKE_SITE_US1,\n },\n endpointBuilders\n )\n}\n\nfunction computeEndpointBuilders(initConfiguration: InitConfiguration, tags: string[]) {\n return {\n logsEndpointBuilder: createEndpointBuilder(initConfiguration, 'logs', tags),\n rumEndpointBuilder: createEndpointBuilder(initConfiguration, 'rum', tags),\n sessionReplayEndpointBuilder: createEndpointBuilder(initConfiguration, 'sessionReplay', tags),\n }\n}\n\nfunction computeReplicaConfiguration(\n initConfiguration: InitConfiguration,\n intakeUrlPrefixes: string[],\n tags: string[]\n): ReplicaConfiguration | undefined {\n if (!initConfiguration.replica) {\n return\n }\n\n const replicaConfiguration: InitConfiguration = assign({}, initConfiguration, {\n site: INTAKE_SITE_US1,\n clientToken: initConfiguration.replica.clientToken,\n })\n\n const replicaEndpointBuilders = {\n logsEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'logs', tags),\n rumEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'rum', tags),\n }\n\n intakeUrlPrefixes.push(...objectValues(replicaEndpointBuilders).map((builder) => builder.urlPrefix))\n\n return assign({ applicationId: initConfiguration.replica.applicationId }, replicaEndpointBuilders)\n}\n","import { startsWith } from './utils/polyfills'\nimport { display } from './display'\nimport { getType } from './utils/typeUtils'\n\nexport type MatchOption = string | RegExp | ((value: string) => boolean)\n\nexport function isMatchOption(item: unknown): item is MatchOption {\n const itemType = getType(item)\n return itemType === 'string' || itemType === 'function' || item instanceof RegExp\n}\n\n/**\n * Returns true if value can be matched by at least one of the provided MatchOptions.\n * When comparing strings, setting useStartsWith to true will compare the value with the start of\n * the option, instead of requiring an exact match.\n */\nexport function matchList(list: MatchOption[], value: string, useStartsWith = false): boolean {\n return list.some((item) => {\n try {\n if (typeof item === 'function') {\n return item(value)\n } else if (item instanceof RegExp) {\n return item.test(value)\n } else if (typeof item === 'string') {\n return useStartsWith ? startsWith(value, item) : item === value\n }\n } catch (e) {\n display.error(e)\n }\n return false\n })\n}\n","import {\n objectEntries,\n shallowClone,\n performDraw,\n isNumber,\n assign,\n find,\n getType,\n isMatchOption,\n matchList,\n} from '@datadog/browser-core'\nimport type { RumConfiguration } from '../configuration'\nimport type {\n RumFetchResolveContext,\n RumFetchStartContext,\n RumXhrCompleteContext,\n RumXhrStartContext,\n} from '../requestCollection'\nimport type { RumSessionManager } from '../rumSessionManager'\nimport type { PropagatorType, TracingOption } from './tracer.types'\n\nexport interface Tracer {\n traceFetch: (context: Partial) => void\n traceXhr: (context: Partial, xhr: XMLHttpRequest) => void\n clearTracingIfNeeded: (context: RumFetchResolveContext | RumXhrCompleteContext) => void\n}\n\ninterface TracingHeaders {\n [key: string]: string\n}\n\nexport function isTracingOption(item: unknown): item is TracingOption {\n const expectedItem = item as TracingOption\n return (\n getType(expectedItem) === 'object' &&\n isMatchOption(expectedItem.match) &&\n Array.isArray(expectedItem.propagatorTypes)\n )\n}\n\n/**\n * Clear tracing information to avoid incomplete traces. Ideally, we should do it when the\n * request did not reach the server, but the browser does not expose this. So, we clear tracing\n * information if the request ended with status 0 without being aborted by the application.\n *\n * Reasoning:\n *\n * * Applications are usually aborting requests after a bit of time, for example when the user is\n * typing (autocompletion) or navigating away (in a SPA). With a performant device and good\n * network conditions, the request is likely to reach the server before being canceled.\n *\n * * Requests aborted otherwise (ex: lack of internet, CORS issue, blocked by a privacy extension)\n * are likely to finish quickly and without reaching the server.\n *\n * Of course, it might not be the case every time, but it should limit having incomplete traces a\n * bit.\n * */\nexport function clearTracingIfNeeded(context: RumFetchResolveContext | RumXhrCompleteContext) {\n if (context.status === 0 && !context.isAborted) {\n context.traceId = undefined\n context.spanId = undefined\n context.traceSampled = undefined\n }\n}\n\nexport function startTracer(configuration: RumConfiguration, sessionManager: RumSessionManager): Tracer {\n return {\n clearTracingIfNeeded,\n traceFetch: (context) =>\n injectHeadersIfTracingAllowed(configuration, context, sessionManager, (tracingHeaders: TracingHeaders) => {\n if (context.input instanceof Request && !context.init?.headers) {\n context.input = new Request(context.input)\n Object.keys(tracingHeaders).forEach((key) => {\n ;(context.input as Request).headers.append(key, tracingHeaders[key])\n })\n } else {\n context.init = shallowClone(context.init)\n const headers: Array<[string, string]> = []\n if (context.init.headers instanceof Headers) {\n context.init.headers.forEach((value, key) => {\n headers.push([key, value])\n })\n } else if (Array.isArray(context.init.headers)) {\n context.init.headers.forEach((header) => {\n headers.push(header)\n })\n } else if (context.init.headers) {\n Object.keys(context.init.headers).forEach((key) => {\n headers.push([key, (context.init!.headers as Record)[key]])\n })\n }\n context.init.headers = headers.concat(objectEntries(tracingHeaders))\n }\n }),\n traceXhr: (context, xhr) =>\n injectHeadersIfTracingAllowed(configuration, context, sessionManager, (tracingHeaders: TracingHeaders) => {\n Object.keys(tracingHeaders).forEach((name) => {\n xhr.setRequestHeader(name, tracingHeaders[name])\n })\n }),\n }\n}\n\nfunction injectHeadersIfTracingAllowed(\n configuration: RumConfiguration,\n context: Partial,\n sessionManager: RumSessionManager,\n inject: (tracingHeaders: TracingHeaders) => void\n) {\n if (!isTracingSupported() || !sessionManager.findTrackedSession()) {\n return\n }\n\n const tracingOption = find(configuration.allowedTracingUrls, (tracingOption: TracingOption) =>\n matchList([tracingOption.match], context.url!, true)\n )\n if (!tracingOption) {\n return\n }\n\n context.traceId = new TraceIdentifier()\n context.spanId = new TraceIdentifier()\n context.traceSampled = !isNumber(configuration.traceSampleRate) || performDraw(configuration.traceSampleRate)\n inject(makeTracingHeaders(context.traceId, context.spanId, context.traceSampled, tracingOption.propagatorTypes))\n}\n\nexport function isTracingSupported() {\n return getCrypto() !== undefined\n}\n\nfunction getCrypto() {\n return window.crypto || (window as any).msCrypto\n}\n\n/**\n * When trace is not sampled, set priority to '0' instead of not adding the tracing headers\n * to prepare the implementation for sampling delegation.\n */\nfunction makeTracingHeaders(\n traceId: TraceIdentifier,\n spanId: TraceIdentifier,\n traceSampled: boolean,\n propagatorTypes: PropagatorType[]\n): TracingHeaders {\n const tracingHeaders: TracingHeaders = {}\n\n propagatorTypes.forEach((propagatorType) => {\n switch (propagatorType) {\n case 'datadog': {\n assign(tracingHeaders, {\n 'x-datadog-origin': 'rum',\n 'x-datadog-parent-id': spanId.toDecimalString(),\n 'x-datadog-sampling-priority': traceSampled ? '1' : '0',\n 'x-datadog-trace-id': traceId.toDecimalString(),\n })\n break\n }\n // https://www.w3.org/TR/trace-context/\n case 'tracecontext': {\n assign(tracingHeaders, {\n traceparent: `00-0000000000000000${traceId.toPaddedHexadecimalString()}-${spanId.toPaddedHexadecimalString()}-0${\n traceSampled ? '1' : '0'\n }`,\n })\n break\n }\n // https://github.com/openzipkin/b3-propagation\n case 'b3': {\n assign(tracingHeaders, {\n b3: `${traceId.toPaddedHexadecimalString()}-${spanId.toPaddedHexadecimalString()}-${\n traceSampled ? '1' : '0'\n }`,\n })\n break\n }\n case 'b3multi': {\n assign(tracingHeaders, {\n 'X-B3-TraceId': traceId.toPaddedHexadecimalString(),\n 'X-B3-SpanId': spanId.toPaddedHexadecimalString(),\n 'X-B3-Sampled': traceSampled ? '1' : '0',\n })\n break\n }\n }\n })\n return tracingHeaders\n}\n\n/* eslint-disable no-bitwise */\nexport class TraceIdentifier {\n private buffer: Uint8Array = new Uint8Array(8)\n\n constructor() {\n getCrypto().getRandomValues(this.buffer)\n this.buffer[0] = this.buffer[0] & 0x7f // force 63-bit\n }\n\n toString(radix: number) {\n let high = this.readInt32(0)\n let low = this.readInt32(4)\n let str = ''\n\n do {\n const mod = (high % radix) * 4294967296 + low\n high = Math.floor(high / radix)\n low = Math.floor(mod / radix)\n str = (mod % radix).toString(radix) + str\n } while (high || low)\n\n return str\n }\n\n /**\n * Format used everywhere except the trace intake\n */\n toDecimalString() {\n return this.toString(10)\n }\n\n /**\n * Format used by OTel headers\n */\n toPaddedHexadecimalString() {\n const traceId = this.toString(16)\n return Array(17 - traceId.length).join('0') + traceId\n }\n\n private readInt32(offset: number) {\n return (\n this.buffer[offset] * 16777216 +\n (this.buffer[offset + 1] << 16) +\n (this.buffer[offset + 2] << 8) +\n this.buffer[offset + 3]\n )\n }\n}\n/* eslint-enable no-bitwise */\n","import type { Configuration, InitConfiguration, MatchOption, RawTelemetryConfiguration } from '@datadog/browser-core'\nimport {\n getType,\n arrayFrom,\n getOrigin,\n isMatchOption,\n serializeConfiguration,\n assign,\n DefaultPrivacyLevel,\n display,\n isPercentage,\n objectHasValue,\n validateAndBuildConfiguration,\n} from '@datadog/browser-core'\nimport type { RumEventDomainContext } from '../domainContext.types'\nimport type { RumEvent } from '../rumEvent.types'\nimport { isTracingOption } from './tracing/tracer'\nimport type { PropagatorType, TracingOption } from './tracing/tracer.types'\n\nexport interface RumInitConfiguration extends InitConfiguration {\n // global options\n applicationId: string\n beforeSend?: ((event: RumEvent, context: RumEventDomainContext) => void | boolean) | undefined\n /**\n * @deprecated use sessionReplaySampleRate instead\n */\n premiumSampleRate?: number | undefined\n excludedActivityUrls?: MatchOption[] | undefined\n workerUrl?: string\n\n // tracing options\n /**\n * @deprecated use allowedTracingUrls instead\n */\n allowedTracingOrigins?: MatchOption[] | undefined\n allowedTracingUrls?: Array | undefined\n /**\n * @deprecated use traceSampleRate instead\n */\n tracingSampleRate?: number | undefined\n traceSampleRate?: number | undefined\n\n // replay options\n defaultPrivacyLevel?: DefaultPrivacyLevel | undefined\n subdomain?: string\n /**\n * @deprecated use sessionReplaySampleRate instead\n */\n replaySampleRate?: number | undefined\n sessionReplaySampleRate?: number | undefined\n\n // action options\n /**\n * @deprecated use trackUserInteractions instead\n */\n trackInteractions?: boolean | undefined\n trackUserInteractions?: boolean | undefined\n trackFrustrations?: boolean | undefined\n actionNameAttribute?: string | undefined\n\n // view options\n trackViewsManually?: boolean | undefined\n\n trackResources?: boolean | undefined\n trackLongTasks?: boolean | undefined\n}\n\nexport type HybridInitConfiguration = Omit\n\nexport interface RumConfiguration extends Configuration {\n // Built from init configuration\n actionNameAttribute: string | undefined\n traceSampleRate: number | undefined\n allowedTracingUrls: TracingOption[]\n excludedActivityUrls: MatchOption[]\n workerUrl: string | undefined\n applicationId: string\n defaultPrivacyLevel: DefaultPrivacyLevel\n oldPlansBehavior: boolean\n sessionReplaySampleRate: number\n trackUserInteractions: boolean\n trackFrustrations: boolean\n trackViewsManually: boolean\n trackResources: boolean | undefined\n trackLongTasks: boolean | undefined\n version?: string\n subdomain?: string\n customerDataTelemetrySampleRate: number\n}\n\nexport function validateAndBuildRumConfiguration(\n initConfiguration: RumInitConfiguration\n): RumConfiguration | undefined {\n if (!initConfiguration.applicationId) {\n display.error('Application ID is not configured, no RUM data will be collected.')\n return\n }\n\n if (\n initConfiguration.sessionReplaySampleRate !== undefined &&\n !isPercentage(initConfiguration.sessionReplaySampleRate)\n ) {\n display.error('Session Replay Sample Rate should be a number between 0 and 100')\n return\n }\n\n // TODO remove fallback in next major\n let premiumSampleRate = initConfiguration.premiumSampleRate ?? initConfiguration.replaySampleRate\n if (premiumSampleRate !== undefined && initConfiguration.sessionReplaySampleRate !== undefined) {\n display.warn('Ignoring Premium Sample Rate because Session Replay Sample Rate is set')\n premiumSampleRate = undefined\n }\n\n if (premiumSampleRate !== undefined && !isPercentage(premiumSampleRate)) {\n display.error('Premium Sample Rate should be a number between 0 and 100')\n return\n }\n\n const traceSampleRate = initConfiguration.traceSampleRate ?? initConfiguration.tracingSampleRate\n if (traceSampleRate !== undefined && !isPercentage(traceSampleRate)) {\n display.error('Trace Sample Rate should be a number between 0 and 100')\n return\n }\n\n if (initConfiguration.excludedActivityUrls !== undefined && !Array.isArray(initConfiguration.excludedActivityUrls)) {\n display.error('Excluded Activity Urls should be an array')\n return\n }\n\n const allowedTracingUrls = validateAndBuildTracingOptions(initConfiguration)\n if (!allowedTracingUrls) {\n return\n }\n\n const baseConfiguration = validateAndBuildConfiguration(initConfiguration)\n if (!baseConfiguration) {\n return\n }\n\n const trackUserInteractions = !!(initConfiguration.trackUserInteractions ?? initConfiguration.trackInteractions)\n const trackFrustrations = !!initConfiguration.trackFrustrations\n\n return assign(\n {\n applicationId: initConfiguration.applicationId,\n version: initConfiguration.version,\n actionNameAttribute: initConfiguration.actionNameAttribute,\n sessionReplaySampleRate: initConfiguration.sessionReplaySampleRate ?? premiumSampleRate ?? 100,\n oldPlansBehavior: initConfiguration.sessionReplaySampleRate === undefined,\n traceSampleRate,\n allowedTracingUrls,\n excludedActivityUrls: initConfiguration.excludedActivityUrls ?? [],\n workerUrl: initConfiguration.workerUrl,\n trackUserInteractions: trackUserInteractions || trackFrustrations,\n trackFrustrations,\n trackViewsManually: !!initConfiguration.trackViewsManually,\n trackResources: initConfiguration.trackResources,\n trackLongTasks: initConfiguration.trackLongTasks,\n subdomain: initConfiguration.subdomain,\n defaultPrivacyLevel: objectHasValue(DefaultPrivacyLevel, initConfiguration.defaultPrivacyLevel)\n ? initConfiguration.defaultPrivacyLevel\n : DefaultPrivacyLevel.MASK_USER_INPUT,\n customerDataTelemetrySampleRate: 1,\n },\n baseConfiguration\n )\n}\n\n/**\n * Handles allowedTracingUrls and processes legacy allowedTracingOrigins\n */\nfunction validateAndBuildTracingOptions(initConfiguration: RumInitConfiguration): TracingOption[] | undefined {\n // Advise about parameters precedence.\n if (initConfiguration.allowedTracingUrls !== undefined && initConfiguration.allowedTracingOrigins !== undefined) {\n display.warn(\n 'Both allowedTracingUrls and allowedTracingOrigins (deprecated) have been defined. The parameter allowedTracingUrls will override allowedTracingOrigins.'\n )\n }\n // Handle allowedTracingUrls first\n if (initConfiguration.allowedTracingUrls !== undefined) {\n if (!Array.isArray(initConfiguration.allowedTracingUrls)) {\n display.error('Allowed Tracing URLs should be an array')\n return\n }\n if (initConfiguration.allowedTracingUrls.length !== 0 && initConfiguration.service === undefined) {\n display.error('Service needs to be configured when tracing is enabled')\n return\n }\n // Convert from (MatchOption | TracingOption) to TracingOption, remove unknown properties\n const tracingOptions: TracingOption[] = []\n initConfiguration.allowedTracingUrls.forEach((option) => {\n if (isMatchOption(option)) {\n tracingOptions.push({ match: option, propagatorTypes: ['datadog'] })\n } else if (isTracingOption(option)) {\n tracingOptions.push(option)\n } else {\n display.warn(\n 'Allowed Tracing Urls parameters should be a string, RegExp, function, or an object. Ignoring parameter',\n option\n )\n }\n })\n\n return tracingOptions\n }\n\n // Handle conversion of allowedTracingOrigins to allowedTracingUrls\n if (initConfiguration.allowedTracingOrigins !== undefined) {\n if (!Array.isArray(initConfiguration.allowedTracingOrigins)) {\n display.error('Allowed Tracing Origins should be an array')\n return\n }\n if (initConfiguration.allowedTracingOrigins.length !== 0 && initConfiguration.service === undefined) {\n display.error('Service needs to be configured when tracing is enabled')\n return\n }\n\n const tracingOptions: TracingOption[] = []\n initConfiguration.allowedTracingOrigins.forEach((legacyMatchOption) => {\n const tracingOption = convertLegacyMatchOptionToTracingOption(legacyMatchOption)\n if (tracingOption) {\n tracingOptions.push(tracingOption)\n }\n })\n return tracingOptions\n }\n\n return []\n}\n\n/**\n * Converts parameters from the deprecated allowedTracingOrigins\n * to allowedTracingUrls. Handles the change from origin to full URLs.\n */\nfunction convertLegacyMatchOptionToTracingOption(item: MatchOption): TracingOption | undefined {\n let match: MatchOption | undefined\n if (typeof item === 'string') {\n match = item\n } else if (item instanceof RegExp) {\n match = (url) => item.test(getOrigin(url))\n } else if (typeof item === 'function') {\n match = (url) => item(getOrigin(url))\n }\n\n if (match === undefined) {\n display.warn('Allowed Tracing Origins parameters should be a string, RegExp or function. Ignoring parameter', item)\n return undefined\n }\n\n return { match, propagatorTypes: ['datadog'] }\n}\n\n/**\n * Combines the selected tracing propagators from the different options in allowedTracingUrls,\n * and assumes 'datadog' has been selected when using allowedTracingOrigins\n */\nfunction getSelectedTracingPropagators(configuration: RumInitConfiguration): PropagatorType[] {\n const usedTracingPropagators = new Set()\n\n if (Array.isArray(configuration.allowedTracingUrls) && configuration.allowedTracingUrls.length > 0) {\n configuration.allowedTracingUrls.forEach((option) => {\n if (isMatchOption(option)) {\n usedTracingPropagators.add('datadog')\n } else if (getType(option) === 'object' && Array.isArray(option.propagatorTypes)) {\n // Ensure we have an array, as we cannot rely on types yet (configuration is provided by users)\n option.propagatorTypes.forEach((propagatorType) => usedTracingPropagators.add(propagatorType))\n }\n })\n }\n\n if (Array.isArray(configuration.allowedTracingOrigins) && configuration.allowedTracingOrigins.length > 0) {\n usedTracingPropagators.add('datadog')\n }\n\n return arrayFrom(usedTracingPropagators)\n}\n\nexport function serializeRumConfiguration(configuration: RumInitConfiguration): RawTelemetryConfiguration {\n const baseSerializedConfiguration = serializeConfiguration(configuration)\n\n return assign(\n {\n premium_sample_rate: configuration.premiumSampleRate,\n replay_sample_rate: configuration.replaySampleRate,\n session_replay_sample_rate: configuration.sessionReplaySampleRate,\n trace_sample_rate: configuration.traceSampleRate ?? configuration.tracingSampleRate,\n action_name_attribute: configuration.actionNameAttribute,\n use_allowed_tracing_origins:\n Array.isArray(configuration.allowedTracingOrigins) && configuration.allowedTracingOrigins.length > 0,\n use_allowed_tracing_urls:\n Array.isArray(configuration.allowedTracingUrls) && configuration.allowedTracingUrls.length > 0,\n selected_tracing_propagators: getSelectedTracingPropagators(configuration),\n default_privacy_level: configuration.defaultPrivacyLevel,\n use_excluded_activity_urls:\n Array.isArray(configuration.excludedActivityUrls) && configuration.excludedActivityUrls.length > 0,\n use_worker_url: !!configuration.workerUrl,\n track_frustrations: configuration.trackFrustrations,\n track_views_manually: configuration.trackViewsManually,\n track_user_interactions: configuration.trackUserInteractions ?? configuration.trackInteractions,\n },\n baseSerializedConfiguration\n )\n}\n","import type { Context, ContextManager, User } from '@datadog/browser-core'\nimport type { RecorderApi } from '../../boot/rumPublicApi'\n\nexport interface CommonContext {\n user: User\n context: Context\n hasReplay: true | undefined\n}\n\nexport function buildCommonContext(\n globalContextManager: ContextManager,\n userContextManager: ContextManager,\n recorderApi: RecorderApi\n): CommonContext {\n return {\n context: globalContextManager.getContext(),\n user: userContextManager.getContext(),\n hasReplay: recorderApi.isRecording() ? true : undefined,\n }\n}\n","interface BrowserWindow {\n __ddBrowserSdkExtensionCallback?: (message: unknown) => void\n}\n\ntype ExtensionMessageType = 'logs' | 'record' | 'rum' | 'telemetry'\n\nexport function sendToExtension(type: ExtensionMessageType, payload: unknown) {\n const callback = (window as BrowserWindow).__ddBrowserSdkExtensionCallback\n if (callback) {\n callback({ type, payload })\n }\n}\n","import type { TelemetryEvent, TelemetryConfigurationEvent } from './telemetryEvent.types'\n\nexport const TelemetryType = {\n log: 'log',\n configuration: 'configuration',\n} as const\n\nexport const enum StatusType {\n debug = 'debug',\n error = 'error',\n}\n\nexport interface RuntimeEnvInfo {\n is_local_file: boolean\n is_worker: boolean\n}\n\nexport type RawTelemetryEvent = TelemetryEvent['telemetry']\nexport type RawTelemetryConfiguration = TelemetryConfigurationEvent['telemetry']['configuration']\n","import type { Context } from '../../tools/serialisation/context'\nimport { ConsoleApiName } from '../../tools/display'\nimport { toStackTraceString, NO_ERROR_STACK_PRESENT_MESSAGE } from '../error/error'\nimport { getExperimentalFeatures } from '../../tools/experimentalFeatures'\nimport type { Configuration } from '../configuration'\nimport { INTAKE_SITE_STAGING, INTAKE_SITE_US1_FED } from '../configuration'\nimport type { StackTrace } from '../tracekit'\nimport { computeStackTrace } from '../tracekit'\nimport { Observable } from '../../tools/observable'\nimport { timeStampNow } from '../../tools/utils/timeUtils'\nimport { displayIfDebugEnabled, startMonitorErrorCollection } from '../../tools/monitor'\nimport { sendToExtension } from '../../tools/sendToExtension'\nimport { startsWith, arrayFrom, includes, assign } from '../../tools/utils/polyfills'\nimport { performDraw } from '../../tools/utils/numberUtils'\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify'\nimport { combine } from '../../tools/mergeInto'\nimport { NonErrorPrefix } from '../error/error.types'\nimport type { TelemetryEvent } from './telemetryEvent.types'\nimport type { RawTelemetryConfiguration, RawTelemetryEvent, RuntimeEnvInfo } from './rawTelemetryEvent.types'\nimport { StatusType, TelemetryType } from './rawTelemetryEvent.types'\n\n// replaced at build time\ndeclare const __BUILD_ENV__SDK_VERSION__: string\n\nconst ALLOWED_FRAME_URLS = [\n 'https://www.datadoghq-browser-agent.com',\n 'https://www.datad0g-browser-agent.com',\n 'https://d3uc069fcn7uxw.cloudfront.net',\n 'https://d20xtzwzcl0ceb.cloudfront.net',\n 'http://localhost',\n '',\n]\n\nexport const enum TelemetryService {\n LOGS = 'browser-logs-sdk',\n RUM = 'browser-rum-sdk',\n}\n\nexport interface Telemetry {\n setContextProvider: (provider: () => Context) => void\n observable: Observable\n enabled: boolean\n}\n\nconst TELEMETRY_EXCLUDED_SITES: string[] = [INTAKE_SITE_US1_FED]\n\nconst telemetryConfiguration: {\n maxEventsPerPage: number\n sentEventCount: number\n telemetryEnabled: boolean\n telemetryConfigurationEnabled: boolean\n} = { maxEventsPerPage: 0, sentEventCount: 0, telemetryEnabled: false, telemetryConfigurationEnabled: false }\n\nlet onRawTelemetryEventCollected: ((event: RawTelemetryEvent) => void) | undefined\n\nexport function startTelemetry(telemetryService: TelemetryService, configuration: Configuration): Telemetry {\n let contextProvider: () => Context\n const observable = new Observable()\n\n telemetryConfiguration.telemetryEnabled =\n !includes(TELEMETRY_EXCLUDED_SITES, configuration.site) && performDraw(configuration.telemetrySampleRate)\n telemetryConfiguration.telemetryConfigurationEnabled =\n telemetryConfiguration.telemetryEnabled && performDraw(configuration.telemetryConfigurationSampleRate)\n\n const runtimeEnvInfo = getRuntimeEnvInfo()\n onRawTelemetryEventCollected = (rawEvent: RawTelemetryEvent) => {\n if (telemetryConfiguration.telemetryEnabled) {\n const event = toTelemetryEvent(telemetryService, rawEvent, runtimeEnvInfo)\n observable.notify(event)\n sendToExtension('telemetry', event)\n }\n }\n startMonitorErrorCollection(addTelemetryError)\n\n assign(telemetryConfiguration, {\n maxEventsPerPage: configuration.maxTelemetryEventsPerPage,\n sentEventCount: 0,\n })\n\n function toTelemetryEvent(\n telemetryService: TelemetryService,\n event: RawTelemetryEvent,\n runtimeEnvInfo: RuntimeEnvInfo\n ): TelemetryEvent & Context {\n return combine(\n {\n type: 'telemetry' as const,\n date: timeStampNow(),\n service: telemetryService,\n version: __BUILD_ENV__SDK_VERSION__,\n source: 'browser' as const,\n _dd: {\n format_version: 2 as const,\n },\n telemetry: combine(event, {\n runtime_env: runtimeEnvInfo,\n }),\n experimental_features: arrayFrom(getExperimentalFeatures()),\n },\n contextProvider !== undefined ? contextProvider() : {}\n ) as TelemetryEvent & Context\n }\n\n return {\n setContextProvider: (provider: () => Context) => {\n contextProvider = provider\n },\n observable,\n enabled: telemetryConfiguration.telemetryEnabled,\n }\n}\nfunction getRuntimeEnvInfo(): RuntimeEnvInfo {\n return {\n is_local_file: window.location.protocol === 'file:',\n is_worker: 'WorkerGlobalScope' in self,\n }\n}\n\nexport function startFakeTelemetry() {\n const events: RawTelemetryEvent[] = []\n assign(telemetryConfiguration, {\n maxEventsPerPage: Infinity,\n sentEventCount: 0,\n })\n\n onRawTelemetryEventCollected = (event: RawTelemetryEvent) => {\n events.push(event)\n }\n\n return events\n}\n\nexport function resetTelemetry() {\n onRawTelemetryEventCollected = undefined\n}\n\n/**\n * Avoid mixing telemetry events from different data centers\n * but keep replicating staging events for reliability\n */\nexport function isTelemetryReplicationAllowed(configuration: Configuration) {\n return configuration.site === INTAKE_SITE_STAGING\n}\n\nexport function addTelemetryDebug(message: string, context?: Context) {\n displayIfDebugEnabled(ConsoleApiName.debug, message, context)\n addTelemetry(\n assign(\n {\n type: TelemetryType.log,\n message,\n status: StatusType.debug,\n },\n context\n )\n )\n}\n\nexport function addTelemetryError(e: unknown, context?: Context) {\n addTelemetry(\n assign(\n {\n type: TelemetryType.log,\n status: StatusType.error,\n },\n formatError(e),\n context\n )\n )\n}\n\nexport function addTelemetryConfiguration(configuration: RawTelemetryConfiguration) {\n if (telemetryConfiguration.telemetryConfigurationEnabled) {\n addTelemetry({\n type: TelemetryType.configuration,\n configuration,\n })\n }\n}\n\nfunction addTelemetry(event: RawTelemetryEvent) {\n if (onRawTelemetryEventCollected && telemetryConfiguration.sentEventCount < telemetryConfiguration.maxEventsPerPage) {\n telemetryConfiguration.sentEventCount += 1\n onRawTelemetryEventCollected(event)\n }\n}\n\nexport function formatError(e: unknown) {\n if (e instanceof Error) {\n const stackTrace = computeStackTrace(e)\n return {\n error: {\n kind: stackTrace.name,\n stack: toStackTraceString(scrubCustomerFrames(stackTrace)),\n },\n message: stackTrace.message!,\n }\n }\n return {\n error: {\n stack: NO_ERROR_STACK_PRESENT_MESSAGE,\n },\n message: `${NonErrorPrefix.UNCAUGHT} ${jsonStringify(e)!}`,\n }\n}\n\nexport function scrubCustomerFrames(stackTrace: StackTrace) {\n stackTrace.stack = stackTrace.stack.filter(\n (frame) => !frame.url || ALLOWED_FRAME_URLS.some((allowedFrameUrl) => startsWith(frame.url!, allowedFrameUrl))\n )\n return stackTrace\n}\n","import { isExperimentalFeatureEnabled, ExperimentalFeature } from '../tools/experimentalFeatures'\nimport { Observable } from '../tools/observable'\nimport { objectValues, includes } from '../tools/utils/polyfills'\nimport { noop } from '../tools/utils/functionUtils'\nimport type { Configuration } from '../domain/configuration'\nimport { addEventListeners, addEventListener, DOM_EVENT } from './addEventListener'\n\nexport const PageExitReason = {\n HIDDEN: 'visibility_hidden',\n UNLOADING: 'before_unload',\n PAGEHIDE: 'page_hide',\n FROZEN: 'page_frozen',\n} as const\n\nexport type PageExitReason = (typeof PageExitReason)[keyof typeof PageExitReason]\n\nexport interface PageExitEvent {\n reason: PageExitReason\n}\n\nexport function createPageExitObservable(configuration: Configuration): Observable {\n const observable = new Observable(() => {\n const pagehideEnabled = isExperimentalFeatureEnabled(ExperimentalFeature.PAGEHIDE)\n const { stop: stopListeners } = addEventListeners(\n configuration,\n window,\n [DOM_EVENT.VISIBILITY_CHANGE, DOM_EVENT.FREEZE, DOM_EVENT.PAGE_HIDE],\n (event) => {\n if (event.type === DOM_EVENT.PAGE_HIDE && pagehideEnabled) {\n /**\n * Only event that detect page unload events while being compatible with the back/forward cache (bfcache)\n */\n observable.notify({ reason: PageExitReason.PAGEHIDE })\n } else if (event.type === DOM_EVENT.VISIBILITY_CHANGE && document.visibilityState === 'hidden') {\n /**\n * Only event that guarantee to fire on mobile devices when the page transitions to background state\n * (e.g. when user switches to a different application, goes to homescreen, etc), or is being unloaded.\n */\n observable.notify({ reason: PageExitReason.HIDDEN })\n } else if (event.type === DOM_EVENT.FREEZE) {\n /**\n * After transitioning in background a tab can be freezed to preserve resources. (cf: https://developer.chrome.com/blog/page-lifecycle-api)\n * Allow to collect events happening between hidden and frozen state.\n */\n observable.notify({ reason: PageExitReason.FROZEN })\n }\n },\n { capture: true }\n )\n\n let stopBeforeUnloadListener = noop\n if (!pagehideEnabled) {\n stopBeforeUnloadListener = addEventListener(configuration, window, DOM_EVENT.BEFORE_UNLOAD, () => {\n observable.notify({ reason: PageExitReason.UNLOADING })\n }).stop\n }\n\n return () => {\n stopListeners()\n stopBeforeUnloadListener()\n }\n })\n\n return observable\n}\n\nexport function isPageExitReason(reason: string | undefined): reason is PageExitReason {\n return includes(objectValues(PageExitReason), reason)\n}\n","import { monitor, noop, Observable, getZoneJsOriginalValue } from '@datadog/browser-core'\n\nexport function createDOMMutationObservable() {\n const MutationObserver = getMutationObserverConstructor()\n\n const observable: Observable = new Observable(() => {\n if (!MutationObserver) {\n return\n }\n const observer = new MutationObserver(monitor(() => observable.notify()))\n observer.observe(document, {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true,\n })\n return () => observer.disconnect()\n })\n\n return observable\n}\n\ntype MutationObserverConstructor = new (callback: MutationCallback) => MutationObserver\n\nexport interface BrowserWindow extends Window {\n MutationObserver?: MutationObserverConstructor\n Zone?: unknown\n}\n\nexport function getMutationObserverConstructor(): MutationObserverConstructor | undefined {\n let constructor: MutationObserverConstructor | undefined\n const browserWindow: BrowserWindow = window\n\n // Angular uses Zone.js to provide a context persisting across async tasks. Zone.js replaces the\n // global MutationObserver constructor with a patched version to support the context propagation.\n // There is an ongoing issue[1][2] with this setup when using a MutationObserver within a Angular\n // component: on some occasions, the callback is being called in an infinite loop, causing the\n // page to freeze (even if the callback is completely empty).\n //\n // To work around this issue, we try to get the original MutationObserver constructor stored by\n // Zone.js.\n //\n // [1] https://github.com/angular/angular/issues/26948\n // [2] https://github.com/angular/angular/issues/31712\n if (browserWindow.Zone) {\n // Zone.js 0.8.6+ is storing original class constructors into the browser 'window' object[3].\n //\n // [3] https://github.com/angular/angular/blob/6375fa79875c0fe7b815efc45940a6e6f5c9c9eb/packages/zone.js/lib/common/utils.ts#L288\n constructor = getZoneJsOriginalValue(browserWindow, 'MutationObserver')\n\n if (browserWindow.MutationObserver && constructor === browserWindow.MutationObserver) {\n // Anterior Zone.js versions (used in Angular 2) does not expose the original MutationObserver\n // in the 'window' object. Luckily, the patched MutationObserver class is storing an original\n // instance in its properties[4]. Let's get the original MutationObserver constructor from\n // there.\n //\n // [4] https://github.com/angular/zone.js/blob/v0.8.5/lib/common/utils.ts#L412\n\n const patchedInstance = new browserWindow.MutationObserver(noop) as {\n originalInstance?: { constructor: MutationObserverConstructor }\n }\n\n const originalInstance = getZoneJsOriginalValue(patchedInstance, 'originalInstance')\n constructor = originalInstance && originalInstance.constructor\n }\n }\n\n if (!constructor) {\n constructor = browserWindow.MutationObserver\n }\n\n return constructor\n}\n","import type { Configuration } from '../domain/configuration'\nimport { DOM_EVENT, addEventListener } from './addEventListener'\n\nexport function runOnReadyState(\n configuration: Configuration,\n expectedReadyState: 'complete' | 'interactive',\n callback: () => void\n) {\n if (document.readyState === expectedReadyState || document.readyState === 'complete') {\n callback()\n } else {\n const eventName = expectedReadyState === 'complete' ? DOM_EVENT.LOAD : DOM_EVENT.DOM_CONTENT_LOADED\n addEventListener(configuration, window, eventName, callback, { once: true })\n }\n}\n","import type { RelativeTime, ServerDuration } from '@datadog/browser-core'\nimport {\n assign,\n addTelemetryDebug,\n elapsed,\n getPathName,\n includes,\n isValidUrl,\n ResourceType,\n toServerDuration,\n} from '@datadog/browser-core'\n\nimport type { RumPerformanceResourceTiming } from '../../browser/performanceCollection'\n\nimport type { PerformanceResourceDetailsElement } from '../../rawRumEvent.types'\nimport type { RumConfiguration } from '../configuration'\n\nexport interface PerformanceResourceDetails {\n redirect?: PerformanceResourceDetailsElement\n dns?: PerformanceResourceDetailsElement\n connect?: PerformanceResourceDetailsElement\n ssl?: PerformanceResourceDetailsElement\n first_byte: PerformanceResourceDetailsElement\n download: PerformanceResourceDetailsElement\n}\n\nexport const FAKE_INITIAL_DOCUMENT = 'initial_document'\n\nconst RESOURCE_TYPES: Array<[ResourceType, (initiatorType: string, path: string) => boolean]> = [\n [ResourceType.DOCUMENT, (initiatorType: string) => FAKE_INITIAL_DOCUMENT === initiatorType],\n [ResourceType.XHR, (initiatorType: string) => 'xmlhttprequest' === initiatorType],\n [ResourceType.FETCH, (initiatorType: string) => 'fetch' === initiatorType],\n [ResourceType.BEACON, (initiatorType: string) => 'beacon' === initiatorType],\n [ResourceType.CSS, (_: string, path: string) => /\\.css$/i.test(path)],\n [ResourceType.JS, (_: string, path: string) => /\\.js$/i.test(path)],\n [\n ResourceType.IMAGE,\n (initiatorType: string, path: string) =>\n includes(['image', 'img', 'icon'], initiatorType) || /\\.(gif|jpg|jpeg|tiff|png|svg|ico)$/i.exec(path) !== null,\n ],\n [ResourceType.FONT, (_: string, path: string) => /\\.(woff|eot|woff2|ttf)$/i.exec(path) !== null],\n [\n ResourceType.MEDIA,\n (initiatorType: string, path: string) =>\n includes(['audio', 'video'], initiatorType) || /\\.(mp3|mp4)$/i.exec(path) !== null,\n ],\n]\n\nexport function computeResourceKind(timing: RumPerformanceResourceTiming) {\n const url = timing.name\n if (!isValidUrl(url)) {\n addTelemetryDebug(`Failed to construct URL for \"${timing.name}\"`)\n return ResourceType.OTHER\n }\n const path = getPathName(url)\n for (const [type, isType] of RESOURCE_TYPES) {\n if (isType(timing.initiatorType, path)) {\n return type\n }\n }\n return ResourceType.OTHER\n}\n\nfunction areInOrder(...numbers: number[]) {\n for (let i = 1; i < numbers.length; i += 1) {\n if (numbers[i - 1] > numbers[i]) {\n return false\n }\n }\n return true\n}\n\nexport function isRequestKind(timing: RumPerformanceResourceTiming) {\n return timing.initiatorType === 'xmlhttprequest' || timing.initiatorType === 'fetch'\n}\n\nexport function computePerformanceResourceDuration(entry: RumPerformanceResourceTiming): ServerDuration {\n const { duration, startTime, responseEnd } = entry\n\n // Safari duration is always 0 on timings blocked by cross origin policies.\n if (duration === 0 && startTime < responseEnd) {\n return toServerDuration(elapsed(startTime, responseEnd))\n }\n\n return toServerDuration(duration)\n}\n\nexport function computePerformanceResourceDetails(\n entry: RumPerformanceResourceTiming\n): PerformanceResourceDetails | undefined {\n const validEntry = toValidEntry(entry)\n\n if (!validEntry) {\n return undefined\n }\n const {\n startTime,\n fetchStart,\n redirectStart,\n redirectEnd,\n domainLookupStart,\n domainLookupEnd,\n connectStart,\n secureConnectionStart,\n connectEnd,\n requestStart,\n responseStart,\n responseEnd,\n } = validEntry\n\n const details: PerformanceResourceDetails = {\n download: formatTiming(startTime, responseStart, responseEnd),\n first_byte: formatTiming(startTime, requestStart, responseStart),\n }\n\n // Make sure a connection occurred\n if (connectEnd !== fetchStart) {\n details.connect = formatTiming(startTime, connectStart, connectEnd)\n\n // Make sure a secure connection occurred\n if (areInOrder(connectStart, secureConnectionStart, connectEnd)) {\n details.ssl = formatTiming(startTime, secureConnectionStart, connectEnd)\n }\n }\n\n // Make sure a domain lookup occurred\n if (domainLookupEnd !== fetchStart) {\n details.dns = formatTiming(startTime, domainLookupStart, domainLookupEnd)\n }\n\n if (hasRedirection(entry)) {\n details.redirect = formatTiming(startTime, redirectStart, redirectEnd)\n }\n\n return details\n}\n\nexport function toValidEntry(entry: RumPerformanceResourceTiming) {\n // Ensure timings are in the right order. On top of filtering out potential invalid\n // RumPerformanceResourceTiming, it will ignore entries from requests where timings cannot be\n // collected, for example cross origin requests without a \"Timing-Allow-Origin\" header allowing\n // it.\n if (\n !areInOrder(\n entry.startTime,\n entry.fetchStart,\n entry.domainLookupStart,\n entry.domainLookupEnd,\n entry.connectStart,\n entry.connectEnd,\n entry.requestStart,\n entry.responseStart,\n entry.responseEnd\n )\n ) {\n return undefined\n }\n\n if (!hasRedirection(entry)) {\n return entry\n }\n\n let { redirectStart, redirectEnd } = entry\n // Firefox doesn't provide redirect timings on cross origin requests.\n // Provide a default for those.\n if (redirectStart < entry.startTime) {\n redirectStart = entry.startTime\n }\n if (redirectEnd < entry.startTime) {\n redirectEnd = entry.fetchStart\n }\n\n // Make sure redirect timings are in order\n if (!areInOrder(entry.startTime, redirectStart, redirectEnd, entry.fetchStart)) {\n return undefined\n }\n\n return assign({}, entry, {\n redirectEnd,\n redirectStart,\n })\n}\n\nfunction hasRedirection(entry: RumPerformanceResourceTiming) {\n // The only time fetchStart is different than startTime is if a redirection occurred.\n return entry.fetchStart !== entry.startTime\n}\n\nfunction formatTiming(origin: RelativeTime, start: RelativeTime, end: RelativeTime) {\n return {\n duration: toServerDuration(elapsed(start, end)),\n start: toServerDuration(elapsed(origin, start)),\n }\n}\n\nexport function computeSize(entry: RumPerformanceResourceTiming) {\n // Make sure a request actually occurred\n if (entry.startTime < entry.responseStart) {\n return entry.decodedBodySize\n }\n return undefined\n}\n\nexport function isAllowedRequestUrl(configuration: RumConfiguration, url: string) {\n return url && !configuration.isIntakeUrl(url)\n}\n","export function isTextNode(node: Node): node is Text {\n return node.nodeType === Node.TEXT_NODE\n}\n\nexport function isCommentNode(node: Node): node is Comment {\n return node.nodeType === Node.COMMENT_NODE\n}\n\nexport function isElementNode(node: Node): node is Element {\n return node.nodeType === Node.ELEMENT_NODE\n}\n\nexport function isNodeShadowHost(node: Node): node is Element & { shadowRoot: ShadowRoot } {\n return isElementNode(node) && Boolean(node.shadowRoot)\n}\n\nexport function isNodeShadowRoot(node: Node): node is ShadowRoot {\n const shadowRoot = node as ShadowRoot\n return !!shadowRoot.host && shadowRoot.nodeType === Node.DOCUMENT_FRAGMENT_NODE && isElementNode(shadowRoot.host)\n}\n\nexport function hasChildNodes(node: Node) {\n return node.childNodes.length > 0 || isNodeShadowHost(node)\n}\n\nexport function forEachChildNodes(node: Node, callback: (child: Node) => void) {\n node.childNodes.forEach(callback)\n if (isNodeShadowHost(node)) {\n callback(node.shadowRoot)\n }\n}\n\n/**\n * Return `host` in case if the current node is a shadow root otherwise will return the `parentNode`\n */\nexport function getParentNode(node: Node): Node | null {\n return isNodeShadowRoot(node) ? node.host : node.parentNode\n}\n","import type { TimeStamp } from '@datadog/browser-core'\nimport { dateNow, findCommaSeparatedValue, ONE_MINUTE } from '@datadog/browser-core'\nimport { isCommentNode, isTextNode } from '../../browser/htmlDomUtils'\n\ninterface DocumentTraceData {\n traceId: string\n traceTime: TimeStamp\n}\n\nexport const INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD = 2 * ONE_MINUTE\n\nexport function getDocumentTraceId(document: Document): string | undefined {\n const data = getDocumentTraceDataFromMeta(document) || getDocumentTraceDataFromComment(document)\n\n if (!data || data.traceTime <= dateNow() - INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD) {\n return undefined\n }\n\n return data.traceId\n}\n\nexport function getDocumentTraceDataFromMeta(document: Document): DocumentTraceData | undefined {\n const traceIdMeta = document.querySelector('meta[name=dd-trace-id]')\n const traceTimeMeta = document.querySelector('meta[name=dd-trace-time]')\n return createDocumentTraceData(traceIdMeta && traceIdMeta.content, traceTimeMeta && traceTimeMeta.content)\n}\n\nexport function getDocumentTraceDataFromComment(document: Document): DocumentTraceData | undefined {\n const comment = findTraceComment(document)\n if (!comment) {\n return undefined\n }\n return createDocumentTraceData(\n findCommaSeparatedValue(comment, 'trace-id'),\n findCommaSeparatedValue(comment, 'trace-time')\n )\n}\n\nexport function createDocumentTraceData(\n traceId: string | undefined | null,\n rawTraceTime: string | undefined | null\n): DocumentTraceData | undefined {\n const traceTime = rawTraceTime && (Number(rawTraceTime) as TimeStamp)\n if (!traceId || !traceTime) {\n return undefined\n }\n\n return {\n traceId,\n traceTime,\n }\n}\n\nexport function findTraceComment(document: Document): string | undefined {\n // 1. Try to find the comment as a direct child of the document\n // Note: TSLint advises to use a 'for of', but TS doesn't allow to use 'for of' if the iterated\n // value is not an array or string (here, a NodeList).\n for (let i = 0; i < document.childNodes.length; i += 1) {\n const comment = getTraceCommentFromNode(document.childNodes[i])\n if (comment) {\n return comment\n }\n }\n\n // 2. If the comment is placed after the tag, but have some space or new lines before or\n // after, the DOM parser will lift it (and the surrounding text) at the end of the tag.\n // Try to look for the comment at the end of the by by iterating over its child nodes in\n // reverse order, stopping if we come across a non-text node.\n if (document.body) {\n for (let i = document.body.childNodes.length - 1; i >= 0; i -= 1) {\n const node = document.body.childNodes[i]\n const comment = getTraceCommentFromNode(node)\n if (comment) {\n return comment\n }\n if (!isTextNode(node)) {\n break\n }\n }\n }\n}\n\nfunction getTraceCommentFromNode(node: Node | null) {\n if (node && isCommentNode(node)) {\n const match = /^\\s*DATADOG;(.*?)\\s*$/.exec(node.data)\n if (match) {\n return match[1]\n }\n }\n}\n","import type { Duration, RelativeTime, TimeStamp } from '@datadog/browser-core'\nimport {\n dateNow,\n assign,\n addEventListeners,\n DOM_EVENT,\n getRelativeTime,\n isNumber,\n monitor,\n setTimeout,\n relativeNow,\n runOnReadyState,\n addEventListener,\n objectHasValue,\n} from '@datadog/browser-core'\n\nimport type { RumConfiguration } from '../domain/configuration'\nimport type { LifeCycle } from '../domain/lifeCycle'\nimport { LifeCycleEventType } from '../domain/lifeCycle'\nimport { FAKE_INITIAL_DOCUMENT, isAllowedRequestUrl } from '../domain/resource/resourceUtils'\n\nimport { getDocumentTraceId } from '../domain/tracing/getDocumentTraceId'\nimport type { PerformanceEntryRepresentation } from '../domainContext.types'\n\ntype RumPerformanceObserverConstructor = new (callback: PerformanceObserverCallback) => RumPerformanceObserver\n\nexport interface BrowserWindow extends Window {\n PerformanceObserver: RumPerformanceObserverConstructor\n performance: Performance & { interactionCount?: number }\n}\n\nexport interface RumPerformanceObserver extends PerformanceObserver {\n observe(options?: PerformanceObserverInit & { durationThreshold: number }): void\n}\n\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected performance entry\n// eslint-disable-next-line no-restricted-syntax\nexport enum RumPerformanceEntryType {\n EVENT = 'event',\n FIRST_INPUT = 'first-input',\n LARGEST_CONTENTFUL_PAINT = 'largest-contentful-paint',\n LAYOUT_SHIFT = 'layout-shift',\n LONG_TASK = 'longtask',\n NAVIGATION = 'navigation',\n PAINT = 'paint',\n RESOURCE = 'resource',\n}\n\nexport interface RumPerformanceResourceTiming {\n entryType: RumPerformanceEntryType.RESOURCE\n initiatorType: string\n name: string\n startTime: RelativeTime\n duration: Duration\n fetchStart: RelativeTime\n domainLookupStart: RelativeTime\n domainLookupEnd: RelativeTime\n connectStart: RelativeTime\n secureConnectionStart: RelativeTime\n connectEnd: RelativeTime\n requestStart: RelativeTime\n responseStart: RelativeTime\n responseEnd: RelativeTime\n redirectStart: RelativeTime\n redirectEnd: RelativeTime\n decodedBodySize: number\n traceId?: string\n toJSON(): PerformanceEntryRepresentation\n}\n\nexport interface RumPerformanceLongTaskTiming {\n entryType: RumPerformanceEntryType.LONG_TASK\n startTime: RelativeTime\n duration: Duration\n toJSON(): PerformanceEntryRepresentation\n}\n\nexport interface RumPerformancePaintTiming {\n entryType: RumPerformanceEntryType.PAINT\n name: 'first-paint' | 'first-contentful-paint'\n startTime: RelativeTime\n}\n\nexport interface RumPerformanceNavigationTiming {\n entryType: RumPerformanceEntryType.NAVIGATION\n domComplete: RelativeTime\n domContentLoadedEventEnd: RelativeTime\n domInteractive: RelativeTime\n loadEventEnd: RelativeTime\n responseStart: RelativeTime\n}\n\nexport interface RumLargestContentfulPaintTiming {\n entryType: RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT\n startTime: RelativeTime\n size: number\n element?: Element\n}\n\nexport interface RumFirstInputTiming {\n entryType: RumPerformanceEntryType.FIRST_INPUT\n startTime: RelativeTime\n processingStart: RelativeTime\n processingEnd: RelativeTime\n duration: Duration\n target?: Node\n interactionId?: number\n name: string\n}\n\nexport interface RumPerformanceEventTiming {\n entryType: RumPerformanceEntryType.EVENT\n startTime: RelativeTime\n processingStart: RelativeTime\n processingEnd: RelativeTime\n duration: Duration\n interactionId?: number\n target?: Node\n name: string\n}\n\nexport interface RumLayoutShiftTiming {\n entryType: RumPerformanceEntryType.LAYOUT_SHIFT\n startTime: RelativeTime\n value: number\n hadRecentInput: boolean\n sources?: Array<{\n node?: Node\n }>\n}\n\nexport type RumPerformanceEntry =\n | RumPerformanceResourceTiming\n | RumPerformanceLongTaskTiming\n | RumPerformancePaintTiming\n | RumPerformanceNavigationTiming\n | RumLargestContentfulPaintTiming\n | RumFirstInputTiming\n | RumPerformanceEventTiming\n | RumLayoutShiftTiming\n\nfunction supportPerformanceObject() {\n return window.performance !== undefined && 'getEntries' in performance\n}\n\nexport function supportPerformanceTimingEvent(entryType: RumPerformanceEntryType) {\n return (\n window.PerformanceObserver &&\n PerformanceObserver.supportedEntryTypes !== undefined &&\n PerformanceObserver.supportedEntryTypes.includes(entryType)\n )\n}\n\nexport function startPerformanceCollection(lifeCycle: LifeCycle, configuration: RumConfiguration) {\n retrieveInitialDocumentResourceTiming(configuration, (timing) => {\n handleRumPerformanceEntries(lifeCycle, configuration, [timing])\n })\n\n if (supportPerformanceObject()) {\n const performanceEntries = performance.getEntries()\n // Because the performance entry list can be quite large\n // delay the computation to prevent the SDK from blocking the main thread on init\n setTimeout(() => handleRumPerformanceEntries(lifeCycle, configuration, performanceEntries))\n }\n\n if (window.PerformanceObserver) {\n const handlePerformanceEntryList = monitor((entries: PerformanceObserverEntryList) =>\n handleRumPerformanceEntries(lifeCycle, configuration, entries.getEntries())\n )\n const mainEntries = [\n RumPerformanceEntryType.RESOURCE,\n RumPerformanceEntryType.NAVIGATION,\n RumPerformanceEntryType.LONG_TASK,\n RumPerformanceEntryType.PAINT,\n ]\n const experimentalEntries = [\n RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT,\n RumPerformanceEntryType.FIRST_INPUT,\n RumPerformanceEntryType.LAYOUT_SHIFT,\n RumPerformanceEntryType.EVENT,\n ]\n\n try {\n // Experimental entries are not retrieved by performance.getEntries()\n // use a single PerformanceObserver with buffered flag by type\n // to get values that could happen before SDK init\n experimentalEntries.forEach((type) => {\n const observer = new (window as BrowserWindow).PerformanceObserver(handlePerformanceEntryList)\n observer.observe({\n type,\n buffered: true,\n // durationThreshold only impact PerformanceEventTiming entries used for INP computation which requires a threshold at 40 (default is 104ms)\n // cf: https://github.com/GoogleChrome/web-vitals/blob/3806160ffbc93c3c4abf210a167b81228172b31c/src/onINP.ts#L209\n durationThreshold: 40,\n })\n })\n } catch (e) {\n // Some old browser versions (ex: chrome 67) don't support the PerformanceObserver type and buffered options\n // In these cases, fallback to PerformanceObserver with entryTypes\n mainEntries.push(...experimentalEntries)\n }\n\n const mainObserver = new PerformanceObserver(handlePerformanceEntryList)\n mainObserver.observe({ entryTypes: mainEntries })\n\n if (supportPerformanceObject() && 'addEventListener' in performance) {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1559377\n addEventListener(configuration, performance, 'resourcetimingbufferfull', () => {\n performance.clearResourceTimings()\n })\n }\n }\n if (!supportPerformanceTimingEvent(RumPerformanceEntryType.NAVIGATION)) {\n retrieveNavigationTiming(configuration, (timing) => {\n handleRumPerformanceEntries(lifeCycle, configuration, [timing])\n })\n }\n if (!supportPerformanceTimingEvent(RumPerformanceEntryType.FIRST_INPUT)) {\n retrieveFirstInputTiming(configuration, (timing) => {\n handleRumPerformanceEntries(lifeCycle, configuration, [timing])\n })\n }\n}\n\nexport function retrieveInitialDocumentResourceTiming(\n configuration: RumConfiguration,\n callback: (timing: RumPerformanceResourceTiming) => void\n) {\n runOnReadyState(configuration, 'interactive', () => {\n let timing: RumPerformanceResourceTiming\n\n const forcedAttributes = {\n entryType: RumPerformanceEntryType.RESOURCE as const,\n initiatorType: FAKE_INITIAL_DOCUMENT,\n traceId: getDocumentTraceId(document),\n toJSON: () => assign({}, timing, { toJSON: undefined }),\n }\n if (\n supportPerformanceTimingEvent(RumPerformanceEntryType.NAVIGATION) &&\n performance.getEntriesByType(RumPerformanceEntryType.NAVIGATION).length > 0\n ) {\n const navigationEntry = performance.getEntriesByType(RumPerformanceEntryType.NAVIGATION)[0]\n timing = assign(navigationEntry.toJSON(), forcedAttributes)\n } else {\n const relativePerformanceTiming = computeRelativePerformanceTiming()\n timing = assign(\n relativePerformanceTiming,\n {\n decodedBodySize: 0,\n duration: relativePerformanceTiming.responseEnd,\n name: window.location.href,\n startTime: 0 as RelativeTime,\n },\n forcedAttributes\n )\n }\n callback(timing)\n })\n}\n\nfunction retrieveNavigationTiming(\n configuration: RumConfiguration,\n callback: (timing: RumPerformanceNavigationTiming) => void\n) {\n function sendFakeTiming() {\n callback(\n assign(computeRelativePerformanceTiming(), {\n entryType: RumPerformanceEntryType.NAVIGATION as const,\n })\n )\n }\n\n runOnReadyState(configuration, 'complete', () => {\n // Send it a bit after the actual load event, so the \"loadEventEnd\" timing is accurate\n setTimeout(sendFakeTiming)\n })\n}\n\n/**\n * first-input timing entry polyfill based on\n * https://github.com/GoogleChrome/web-vitals/blob/master/src/lib/polyfills/firstInputPolyfill.ts\n */\nfunction retrieveFirstInputTiming(configuration: RumConfiguration, callback: (timing: RumFirstInputTiming) => void) {\n const startTimeStamp = dateNow()\n let timingSent = false\n\n const { stop: removeEventListeners } = addEventListeners(\n configuration,\n window,\n [DOM_EVENT.CLICK, DOM_EVENT.MOUSE_DOWN, DOM_EVENT.KEY_DOWN, DOM_EVENT.TOUCH_START, DOM_EVENT.POINTER_DOWN],\n (evt) => {\n // Only count cancelable events, which should trigger behavior important to the user.\n if (!evt.cancelable) {\n return\n }\n\n // This timing will be used to compute the \"first Input delay\", which is the delta between\n // when the system received the event (e.g. evt.timeStamp) and when it could run the callback\n // (e.g. performance.now()).\n const timing: RumFirstInputTiming = {\n entryType: RumPerformanceEntryType.FIRST_INPUT,\n processingStart: relativeNow(),\n processingEnd: relativeNow(),\n startTime: evt.timeStamp as RelativeTime,\n duration: 0 as Duration, // arbitrary value to avoid nullable duration and simplify INP logic\n name: '',\n }\n\n if (evt.type === DOM_EVENT.POINTER_DOWN) {\n sendTimingIfPointerIsNotCancelled(configuration, timing)\n } else {\n sendTiming(timing)\n }\n },\n { passive: true, capture: true }\n )\n\n /**\n * Pointer events are a special case, because they can trigger main or compositor thread behavior.\n * We differentiate these cases based on whether or not we see a pointercancel event, which are\n * fired when we scroll. If we're scrolling we don't need to report input delay since FID excludes\n * scrolling and pinch/zooming.\n */\n function sendTimingIfPointerIsNotCancelled(configuration: RumConfiguration, timing: RumFirstInputTiming) {\n addEventListeners(\n configuration,\n window,\n [DOM_EVENT.POINTER_UP, DOM_EVENT.POINTER_CANCEL],\n (event) => {\n if (event.type === DOM_EVENT.POINTER_UP) {\n sendTiming(timing)\n }\n },\n { once: true }\n )\n }\n\n function sendTiming(timing: RumFirstInputTiming) {\n if (!timingSent) {\n timingSent = true\n removeEventListeners()\n // In some cases the recorded delay is clearly wrong, e.g. it's negative or it's larger than\n // the time between now and when the page was loaded.\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/4\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/6\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/7\n const delay = timing.processingStart - timing.startTime\n if (delay >= 0 && delay < dateNow() - startTimeStamp) {\n callback(timing)\n }\n }\n }\n}\n\nexport type RelativePerformanceTiming = {\n -readonly [key in keyof Omit]: RelativeTime\n}\n\nfunction computeRelativePerformanceTiming() {\n const result: Partial = {}\n const timing = performance.timing\n for (const key in timing) {\n if (isNumber(timing[key as keyof PerformanceTiming])) {\n const numberKey = key as keyof RelativePerformanceTiming\n const timingElement = timing[numberKey] as TimeStamp\n result[numberKey] = timingElement === 0 ? (0 as RelativeTime) : getRelativeTime(timingElement)\n }\n }\n return result as RelativePerformanceTiming\n}\n\nfunction handleRumPerformanceEntries(\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n entries: Array\n) {\n const rumPerformanceEntries = entries.filter((entry): entry is RumPerformanceEntry =>\n objectHasValue(RumPerformanceEntryType, entry.entryType)\n )\n\n const rumAllowedPerformanceEntries = rumPerformanceEntries.filter(\n (entry) => !isIncompleteNavigation(entry) && !isForbiddenResource(configuration, entry)\n )\n\n if (rumAllowedPerformanceEntries.length) {\n lifeCycle.notify(LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED, rumAllowedPerformanceEntries)\n }\n}\n\nfunction isIncompleteNavigation(entry: RumPerformanceEntry) {\n return entry.entryType === RumPerformanceEntryType.NAVIGATION && entry.loadEventEnd <= 0\n}\n\nfunction isForbiddenResource(configuration: RumConfiguration, entry: RumPerformanceEntry) {\n return entry.entryType === RumPerformanceEntryType.RESOURCE && !isAllowedRequestUrl(configuration, entry.name)\n}\n","import type { ClocksState } from '../../tools/utils/timeUtils'\n\n// TS v4.6 introduced Error.cause[1] typed as `Error`. TS v4.8 changed Error.cause to be\n// `unknown`[2].\n//\n// Because we still support TS 3.8, we need to declare our own type. We can remove it once we drop\n// support for TS v4.7 and before. The 'cause' property defined by TS needs to be omitted because\n// we define it with a type `unknown` which is incompatible with TS 4.6 and 4.7.\n//\n// [1]: https://devblogs.microsoft.com/typescript/announcing-typescript-4-6/#target-es2022\n// [2]: https://devblogs.microsoft.com/typescript/announcing-typescript-4-8/#lib-d-ts-updates\nexport interface ErrorWithCause extends Omit {\n cause?: unknown\n}\n\nexport type RawErrorCause = {\n message: string\n source: string\n type?: string\n stack?: string\n}\n\nexport interface RawError {\n startClocks: ClocksState\n message: string\n type?: string\n stack?: string\n source: ErrorSource\n originalError?: unknown\n handling?: ErrorHandling\n handlingStack?: string\n causes?: RawErrorCause[]\n fingerprint?: string\n}\n\nexport const ErrorSource = {\n AGENT: 'agent',\n CONSOLE: 'console',\n CUSTOM: 'custom',\n LOGGER: 'logger',\n NETWORK: 'network',\n SOURCE: 'source',\n REPORT: 'report',\n} as const\n\nexport const enum NonErrorPrefix {\n UNCAUGHT = 'Uncaught',\n PROVIDED = 'Provided',\n}\n\nexport const enum ErrorHandling {\n HANDLED = 'handled',\n UNHANDLED = 'unhandled',\n}\n\nexport type ErrorSource = (typeof ErrorSource)[keyof typeof ErrorSource]\n","import { setTimeout } from '../../tools/timer'\nimport { clocksNow, ONE_MINUTE } from '../../tools/utils/timeUtils'\nimport type { RawError } from '../error/error.types'\nimport { ErrorSource } from '../error/error.types'\n\nexport type EventRateLimiter = ReturnType\n\nexport function createEventRateLimiter(\n eventType: string,\n limit: number,\n onLimitReached: (limitError: RawError) => void\n) {\n let eventCount = 0\n let allowNextEvent = false\n\n return {\n isLimitReached() {\n if (eventCount === 0) {\n setTimeout(() => {\n eventCount = 0\n }, ONE_MINUTE)\n }\n\n eventCount += 1\n if (eventCount <= limit || allowNextEvent) {\n allowNextEvent = false\n return false\n }\n\n if (eventCount === limit + 1) {\n allowNextEvent = true\n try {\n onLimitReached({\n message: `Reached max number of ${eventType}s by minute: ${limit}`,\n source: ErrorSource.AGENT,\n startClocks: clocksNow(),\n })\n } finally {\n allowNextEvent = false\n }\n }\n\n return true\n },\n }\n}\n","import { sanitize, deepClone, getType, objectEntries } from '@datadog/browser-core'\nimport type { Context } from '@datadog/browser-core'\n\nexport type ModifiableFieldPaths = Record\n\n/**\n * Current limitation:\n * - field path do not support array, 'a.b.c' only\n */\nexport function limitModification(\n object: T,\n modifiableFieldPaths: ModifiableFieldPaths,\n modifier: (object: T) => Result\n): Result | undefined {\n const clone = deepClone(object)\n const result = modifier(clone)\n objectEntries(modifiableFieldPaths).forEach(([fieldPath, fieldType]) => {\n const newValue = get(clone, fieldPath)\n const newType = getType(newValue)\n if (newType === fieldType) {\n set(object, fieldPath, sanitize(newValue))\n } else if (fieldType === 'object' && (newType === 'undefined' || newType === 'null')) {\n set(object, fieldPath, {})\n }\n })\n return result\n}\n\nfunction get(object: unknown, path: string) {\n let current = object\n for (const field of path.split('.')) {\n if (!isValidObjectContaining(current, field)) {\n return\n }\n current = current[field]\n }\n return current\n}\n\nfunction set(object: unknown, path: string, value: unknown) {\n let current = object\n const fields = path.split('.')\n for (let i = 0; i < fields.length; i += 1) {\n const field = fields[i]\n if (!isValidObject(current)) {\n return\n }\n if (i !== fields.length - 1) {\n current = current[field]\n } else {\n current[field] = value\n }\n }\n}\n\nfunction isValidObject(object: unknown): object is Record {\n return getType(object) === 'object'\n}\n\nfunction isValidObjectContaining(object: unknown, field: string): object is Record {\n return isValidObject(object) && Object.prototype.hasOwnProperty.call(object, field)\n}\n","import type { Context, RawError, EventRateLimiter, User } from '@datadog/browser-core'\nimport {\n combine,\n isEmptyObject,\n timeStampNow,\n currentDrift,\n display,\n createEventRateLimiter,\n canUseEventBridge,\n assign,\n round,\n} from '@datadog/browser-core'\nimport type { RumEventDomainContext } from '../domainContext.types'\nimport type {\n RawRumErrorEvent,\n RawRumEvent,\n RawRumLongTaskEvent,\n RawRumResourceEvent,\n RumContext,\n} from '../rawRumEvent.types'\nimport { RumEventType } from '../rawRumEvent.types'\nimport type { RumEvent } from '../rumEvent.types'\nimport { getSyntheticsContext } from './contexts/syntheticsContext'\nimport { getCiTestContext } from './contexts/ciTestContext'\nimport type { LifeCycle } from './lifeCycle'\nimport { LifeCycleEventType } from './lifeCycle'\nimport type { ViewContexts } from './contexts/viewContexts'\nimport type { RumSessionManager } from './rumSessionManager'\nimport type { UrlContexts } from './contexts/urlContexts'\nimport type { RumConfiguration } from './configuration'\nimport type { ActionContexts } from './action/actionCollection'\nimport type { DisplayContext } from './contexts/displayContext'\nimport type { CommonContext } from './contexts/commonContext'\nimport type { ModifiableFieldPaths } from './limitModification'\nimport { limitModification } from './limitModification'\n\n// replaced at build time\ndeclare const __BUILD_ENV__SDK_VERSION__: string\n\nconst enum SessionType {\n SYNTHETICS = 'synthetics',\n USER = 'user',\n CI_TEST = 'ci_test',\n}\n\nconst VIEW_MODIFIABLE_FIELD_PATHS: ModifiableFieldPaths = {\n 'view.name': 'string',\n 'view.url': 'string',\n 'view.referrer': 'string',\n}\n\nconst USER_CUSTOMIZABLE_FIELD_PATHS: ModifiableFieldPaths = {\n context: 'object',\n}\n\nlet modifiableFieldPathsByEvent: { [key in RumEventType]: ModifiableFieldPaths }\n\ntype Mutable = { -readonly [P in keyof T]: T[P] }\n\nexport function startRumAssembly(\n configuration: RumConfiguration,\n lifeCycle: LifeCycle,\n sessionManager: RumSessionManager,\n viewContexts: ViewContexts,\n urlContexts: UrlContexts,\n actionContexts: ActionContexts,\n displayContext: DisplayContext,\n buildCommonContext: () => CommonContext,\n reportError: (error: RawError) => void\n) {\n modifiableFieldPathsByEvent = {\n [RumEventType.VIEW]: VIEW_MODIFIABLE_FIELD_PATHS,\n [RumEventType.ERROR]: assign(\n {\n 'error.message': 'string',\n 'error.stack': 'string',\n 'error.resource.url': 'string',\n 'error.fingerprint': 'string',\n },\n USER_CUSTOMIZABLE_FIELD_PATHS,\n VIEW_MODIFIABLE_FIELD_PATHS\n ),\n [RumEventType.RESOURCE]: assign(\n {\n 'resource.url': 'string',\n },\n USER_CUSTOMIZABLE_FIELD_PATHS,\n VIEW_MODIFIABLE_FIELD_PATHS\n ),\n [RumEventType.ACTION]: assign(\n {\n 'action.target.name': 'string',\n },\n USER_CUSTOMIZABLE_FIELD_PATHS,\n VIEW_MODIFIABLE_FIELD_PATHS\n ),\n [RumEventType.LONG_TASK]: assign({}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS),\n }\n const eventRateLimiters = {\n [RumEventType.ERROR]: createEventRateLimiter(\n RumEventType.ERROR,\n configuration.eventRateLimiterThreshold,\n reportError\n ),\n [RumEventType.ACTION]: createEventRateLimiter(\n RumEventType.ACTION,\n configuration.eventRateLimiterThreshold,\n reportError\n ),\n }\n\n const syntheticsContext = getSyntheticsContext()\n const ciTestContext = getCiTestContext()\n\n lifeCycle.subscribe(\n LifeCycleEventType.RAW_RUM_EVENT_COLLECTED,\n ({ startTime, rawRumEvent, domainContext, savedCommonContext, customerContext }) => {\n const viewContext = viewContexts.findView(startTime)\n const urlContext = urlContexts.findUrl(startTime)\n const session = sessionManager.findTrackedSession(startTime)\n if (session && viewContext && urlContext) {\n const commonContext = savedCommonContext || buildCommonContext()\n const actionId = actionContexts.findActionId(startTime)\n\n const rumContext: RumContext = {\n _dd: {\n format_version: 2,\n drift: currentDrift(),\n session: {\n plan: session.plan,\n },\n configuration: {\n session_sample_rate: round(configuration.sessionSampleRate, 3),\n session_replay_sample_rate: round(configuration.sessionReplaySampleRate, 3),\n },\n browser_sdk_version: canUseEventBridge() ? __BUILD_ENV__SDK_VERSION__ : undefined,\n },\n application: {\n id: configuration.applicationId,\n },\n date: timeStampNow(),\n service: viewContext.service || configuration.service,\n version: viewContext.version || configuration.version,\n source: 'browser',\n session: {\n id: session.id,\n type: syntheticsContext ? SessionType.SYNTHETICS : ciTestContext ? SessionType.CI_TEST : SessionType.USER,\n },\n view: {\n id: viewContext.id,\n name: viewContext.name,\n url: urlContext.url,\n referrer: urlContext.referrer,\n },\n action: needToAssembleWithAction(rawRumEvent) && actionId ? { id: actionId } : undefined,\n synthetics: syntheticsContext,\n ci_test: ciTestContext,\n display: displayContext.get(),\n }\n\n const serverRumEvent = combine(rumContext as RumContext & Context, rawRumEvent) as RumEvent & Context\n serverRumEvent.context = combine(commonContext.context, customerContext)\n\n if (!('has_replay' in serverRumEvent.session)) {\n ;(serverRumEvent.session as Mutable).has_replay = commonContext.hasReplay\n }\n\n if (!isEmptyObject(commonContext.user)) {\n ;(serverRumEvent.usr as Mutable) = commonContext.user as User & Context\n }\n\n if (shouldSend(serverRumEvent, configuration.beforeSend, domainContext, eventRateLimiters)) {\n if (isEmptyObject(serverRumEvent.context)) {\n delete serverRumEvent.context\n }\n lifeCycle.notify(LifeCycleEventType.RUM_EVENT_COLLECTED, serverRumEvent)\n }\n }\n }\n )\n}\n\nfunction shouldSend(\n event: RumEvent & Context,\n beforeSend: RumConfiguration['beforeSend'],\n domainContext: RumEventDomainContext,\n eventRateLimiters: { [key in RumEventType]?: EventRateLimiter }\n) {\n if (beforeSend) {\n const result = limitModification(event, modifiableFieldPathsByEvent[event.type], (event) =>\n beforeSend(event, domainContext)\n )\n if (result === false && event.type !== RumEventType.VIEW) {\n return false\n }\n if (result === false) {\n display.warn(\"Can't dismiss view events using beforeSend!\")\n }\n }\n\n const rateLimitReached = eventRateLimiters[event.type]?.isLimitReached()\n return !rateLimitReached\n}\n\nfunction needToAssembleWithAction(\n event: RawRumEvent\n): event is RawRumErrorEvent | RawRumResourceEvent | RawRumLongTaskEvent {\n return [RumEventType.ERROR, RumEventType.RESOURCE, RumEventType.LONG_TASK].indexOf(event.type) !== -1\n}\n","import { getSyntheticsResultId, getSyntheticsTestId, willSyntheticsInjectRum } from '@datadog/browser-core'\n\nexport function getSyntheticsContext() {\n const testId = getSyntheticsTestId()\n const resultId = getSyntheticsResultId()\n\n if (testId && resultId) {\n return {\n test_id: testId,\n result_id: resultId,\n injected: willSyntheticsInjectRum(),\n }\n }\n}\n","export interface CiTestWindow extends Window {\n Cypress?: {\n env: (key: string) => string | undefined\n }\n}\n\nexport function getCiTestContext() {\n const testExecutionId = (window as CiTestWindow).Cypress?.env('traceId')\n\n if (typeof testExecutionId === 'string') {\n return {\n test_execution_id: testExecutionId,\n }\n }\n}\n","import type { Subscription } from './observable'\n\n/**\n * Type helper to extract event types that have \"void\" data. This allows to call `notify` without a\n * second argument. Ex:\n *\n * ```\n * interface EventMap {\n * foo: void\n * }\n * const LifeCycle = AbstractLifeCycle\n * new LifeCycle().notify('foo')\n * ```\n */\ntype EventTypesWithoutData = {\n [K in keyof EventMap]: EventMap[K] extends void ? K : never\n}[keyof EventMap]\n\nexport class AbstractLifeCycle {\n private callbacks: { [key in keyof EventMap]?: Array<(data: any) => void> } = {}\n\n notify>(eventType: EventType): void\n notify(eventType: EventType, data: EventMap[EventType]): void\n notify(eventType: keyof EventMap, data?: unknown) {\n const eventCallbacks = this.callbacks[eventType]\n if (eventCallbacks) {\n eventCallbacks.forEach((callback) => callback(data))\n }\n }\n\n subscribe(\n eventType: EventType,\n callback: (data: EventMap[EventType]) => void\n ): Subscription {\n if (!this.callbacks[eventType]) {\n this.callbacks[eventType] = []\n }\n this.callbacks[eventType]!.push(callback)\n return {\n unsubscribe: () => {\n this.callbacks[eventType] = this.callbacks[eventType]!.filter((other) => callback !== other)\n },\n }\n }\n}\n","import type { Context, PageExitEvent, RawError, RelativeTime } from '@datadog/browser-core'\nimport { AbstractLifeCycle } from '@datadog/browser-core'\nimport type { RumPerformanceEntry } from '../browser/performanceCollection'\nimport type { RumEventDomainContext } from '../domainContext.types'\nimport type { RawRumEvent } from '../rawRumEvent.types'\nimport type { RumEvent } from '../rumEvent.types'\nimport type { CommonContext } from './contexts/commonContext'\nimport type { RequestCompleteEvent, RequestStartEvent } from './requestCollection'\nimport type { AutoAction } from './action/actionCollection'\nimport type { ViewEvent, ViewCreatedEvent, ViewEndedEvent } from './view/trackViews'\n\nexport const enum LifeCycleEventType {\n PERFORMANCE_ENTRIES_COLLECTED,\n AUTO_ACTION_COMPLETED,\n VIEW_CREATED,\n VIEW_UPDATED,\n VIEW_ENDED,\n REQUEST_STARTED,\n REQUEST_COMPLETED,\n\n // The SESSION_EXPIRED lifecycle event has been introduced to represent when a session has expired\n // and trigger cleanup tasks related to this, prior to renewing the session. Its implementation is\n // slightly naive: it is not triggered as soon as the session is expired, but rather just before\n // notifying that the session is renewed. Thus, the session id is already set to the newly renewed\n // session.\n //\n // This implementation is \"good enough\" for our use-cases. Improving this is not trivial,\n // primarily because multiple instances of the SDK may be managing the same session cookie at\n // the same time, for example when using Logs and RUM on the same page, or opening multiple tabs\n // on the same domain.\n SESSION_EXPIRED,\n\n SESSION_RENEWED,\n PAGE_EXITED,\n RAW_RUM_EVENT_COLLECTED,\n RUM_EVENT_COLLECTED,\n RAW_ERROR_COLLECTED,\n}\n\n// This is a workaround for an issue occurring when the Browser SDK is included in a TypeScript\n// project configured with `isolatedModules: true`. Even if the const enum is declared in this\n// module, we cannot use it directly to define the EventMap interface keys (TS error: \"Cannot access\n// ambient const enums when the '--isolatedModules' flag is provided.\").\n//\n// Using a plain enum would fix the issue, but would also add 2KB to the minified bundle. By using\n// this workaround, we can keep using a const enum without impacting the bundle size (since it is a\n// \"declare\" statement, it will only be used during typecheck and completely ignored when building\n// JavaScript).\n//\n// See issues:\n// * https://github.com/DataDog/browser-sdk/issues/2208\n// * https://github.com/microsoft/TypeScript/issues/54152\ndeclare const LifeCycleEventTypeAsConst: {\n PERFORMANCE_ENTRIES_COLLECTED: LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED\n AUTO_ACTION_COMPLETED: LifeCycleEventType.AUTO_ACTION_COMPLETED\n VIEW_CREATED: LifeCycleEventType.VIEW_CREATED\n VIEW_UPDATED: LifeCycleEventType.VIEW_UPDATED\n VIEW_ENDED: LifeCycleEventType.VIEW_ENDED\n REQUEST_STARTED: LifeCycleEventType.REQUEST_STARTED\n REQUEST_COMPLETED: LifeCycleEventType.REQUEST_COMPLETED\n SESSION_EXPIRED: LifeCycleEventType.SESSION_EXPIRED\n SESSION_RENEWED: LifeCycleEventType.SESSION_RENEWED\n PAGE_EXITED: LifeCycleEventType.PAGE_EXITED\n RAW_RUM_EVENT_COLLECTED: LifeCycleEventType.RAW_RUM_EVENT_COLLECTED\n RUM_EVENT_COLLECTED: LifeCycleEventType.RUM_EVENT_COLLECTED\n RAW_ERROR_COLLECTED: LifeCycleEventType.RAW_ERROR_COLLECTED\n}\n\n// Note: this interface needs to be exported even if it is not used outside of this module, else TS\n// fails to build the rum-core package with error TS4058\nexport interface LifeCycleEventMap {\n [LifeCycleEventTypeAsConst.PERFORMANCE_ENTRIES_COLLECTED]: RumPerformanceEntry[]\n [LifeCycleEventTypeAsConst.AUTO_ACTION_COMPLETED]: AutoAction\n [LifeCycleEventTypeAsConst.VIEW_CREATED]: ViewCreatedEvent\n [LifeCycleEventTypeAsConst.VIEW_UPDATED]: ViewEvent\n [LifeCycleEventTypeAsConst.VIEW_ENDED]: ViewEndedEvent\n [LifeCycleEventTypeAsConst.REQUEST_STARTED]: RequestStartEvent\n [LifeCycleEventTypeAsConst.REQUEST_COMPLETED]: RequestCompleteEvent\n [LifeCycleEventTypeAsConst.SESSION_EXPIRED]: void\n [LifeCycleEventTypeAsConst.SESSION_RENEWED]: void\n [LifeCycleEventTypeAsConst.PAGE_EXITED]: PageExitEvent\n [LifeCycleEventTypeAsConst.RAW_RUM_EVENT_COLLECTED]: RawRumEventCollectedData\n [LifeCycleEventTypeAsConst.RUM_EVENT_COLLECTED]: RumEvent & Context\n [LifeCycleEventTypeAsConst.RAW_ERROR_COLLECTED]: {\n error: RawError\n savedCommonContext?: CommonContext\n customerContext?: Context\n }\n}\n\nexport interface RawRumEventCollectedData {\n startTime: RelativeTime\n savedCommonContext?: CommonContext\n customerContext?: Context\n rawRumEvent: E\n domainContext: RumEventDomainContext\n}\n\nexport const LifeCycle = AbstractLifeCycle\nexport type LifeCycle = AbstractLifeCycle\n","import { setInterval, clearInterval } from './timer'\nimport type { TimeoutId } from './timer'\nimport type { Duration, RelativeTime } from './utils/timeUtils'\nimport { addDuration, relativeNow, ONE_MINUTE } from './utils/timeUtils'\n\nconst END_OF_TIMES = Infinity as RelativeTime\n\nexport interface ValueHistoryEntry {\n startTime: RelativeTime\n endTime: RelativeTime\n value: T\n remove(): void\n close(endTime: RelativeTime): void\n}\n\nexport const CLEAR_OLD_VALUES_INTERVAL = ONE_MINUTE\n\n/**\n * Store and keep track of values spans. This whole class assumes that values are added in\n * chronological order (i.e. all entries have an increasing start time).\n */\nexport class ValueHistory {\n private entries: Array> = []\n private clearOldValuesInterval: TimeoutId\n\n constructor(\n private expireDelay: number,\n private maxEntries?: number\n ) {\n this.clearOldValuesInterval = setInterval(() => this.clearOldValues(), CLEAR_OLD_VALUES_INTERVAL)\n }\n\n /**\n * Add a value to the history associated with a start time. Returns a reference to this newly\n * added entry that can be removed or closed.\n */\n add(value: Value, startTime: RelativeTime): ValueHistoryEntry {\n const entry: ValueHistoryEntry = {\n value,\n startTime,\n endTime: END_OF_TIMES,\n remove: () => {\n const index = this.entries.indexOf(entry)\n if (index >= 0) {\n this.entries.splice(index, 1)\n }\n },\n close: (endTime: RelativeTime) => {\n entry.endTime = endTime\n },\n }\n\n if (this.maxEntries && this.entries.length >= this.maxEntries) {\n this.entries.pop()\n }\n\n this.entries.unshift(entry)\n\n return entry\n }\n\n /**\n * Return the latest value that was active during `startTime`, or the currently active value\n * if no `startTime` is provided. This method assumes that entries are not overlapping.\n */\n find(startTime: RelativeTime = END_OF_TIMES): Value | undefined {\n for (const entry of this.entries) {\n if (entry.startTime <= startTime) {\n if (startTime <= entry.endTime) {\n return entry.value\n }\n break\n }\n }\n }\n\n /**\n * Helper function to close the currently active value, if any. This method assumes that entries\n * are not overlapping.\n */\n closeActive(endTime: RelativeTime) {\n const latestEntry = this.entries[0]\n if (latestEntry && latestEntry.endTime === END_OF_TIMES) {\n latestEntry.close(endTime)\n }\n }\n\n /**\n * Return all values with an active period overlapping with the duration,\n * or all values that were active during `startTime` if no duration is provided,\n * or all currently active values if no `startTime` is provided.\n */\n findAll(startTime: RelativeTime = END_OF_TIMES, duration = 0 as Duration): Value[] {\n const endTime = addDuration(startTime, duration)\n return this.entries\n .filter((entry) => entry.startTime <= endTime && startTime <= entry.endTime)\n .map((entry) => entry.value)\n }\n\n /**\n * Remove all entries from this collection.\n */\n reset() {\n this.entries = []\n }\n\n /**\n * Stop internal garbage collection of past entries.\n */\n stop() {\n clearInterval(this.clearOldValuesInterval)\n }\n\n private clearOldValues() {\n const oldTimeThreshold = relativeNow() - this.expireDelay\n while (this.entries.length > 0 && this.entries[this.entries.length - 1].endTime < oldTimeThreshold) {\n this.entries.pop()\n }\n }\n}\n","import type { RelativeTime, ClocksState } from '@datadog/browser-core'\nimport { SESSION_TIME_OUT_DELAY, ValueHistory } from '@datadog/browser-core'\nimport type { LifeCycle } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport type { ViewCreatedEvent } from '../view/trackViews'\n\nexport const VIEW_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY\n\nexport interface ViewContext {\n service?: string\n version?: string\n id: string\n name?: string\n startClocks: ClocksState\n}\n\nexport interface ViewContexts {\n findView: (startTime?: RelativeTime) => ViewContext | undefined\n stop: () => void\n}\n\nexport function startViewContexts(lifeCycle: LifeCycle): ViewContexts {\n const viewContextHistory = new ValueHistory(VIEW_CONTEXT_TIME_OUT_DELAY)\n\n lifeCycle.subscribe(LifeCycleEventType.VIEW_CREATED, (view) => {\n viewContextHistory.add(buildViewContext(view), view.startClocks.relative)\n })\n\n lifeCycle.subscribe(LifeCycleEventType.VIEW_ENDED, ({ endClocks }) => {\n viewContextHistory.closeActive(endClocks.relative)\n })\n\n lifeCycle.subscribe(LifeCycleEventType.SESSION_RENEWED, () => {\n viewContextHistory.reset()\n })\n\n function buildViewContext(view: ViewCreatedEvent) {\n return {\n service: view.service,\n version: view.version,\n id: view.id,\n name: view.name,\n startClocks: view.startClocks,\n }\n }\n\n return {\n findView: (startTime) => viewContextHistory.find(startTime),\n stop: () => {\n viewContextHistory.stop()\n },\n }\n}\n","import { setTimeout } from './timer'\nimport { callMonitored } from './monitor'\nimport { noop } from './utils/functionUtils'\n\nexport function instrumentMethod(\n object: OBJECT,\n method: METHOD,\n instrumentationFactory: (\n original: OBJECT[METHOD]\n ) => (this: OBJECT, ...args: Parameters) => ReturnType\n) {\n const original = object[method]\n\n let instrumentation = instrumentationFactory(original)\n\n const instrumentationWrapper = function (this: OBJECT): ReturnType | undefined {\n if (typeof instrumentation !== 'function') {\n return undefined\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return instrumentation.apply(this, arguments as unknown as Parameters)\n }\n object[method] = instrumentationWrapper as OBJECT[METHOD]\n\n return {\n stop: () => {\n if (object[method] === instrumentationWrapper) {\n object[method] = original\n } else {\n instrumentation = original\n }\n },\n }\n}\n\nexport function instrumentMethodAndCallOriginal(\n object: OBJECT,\n method: METHOD,\n {\n before,\n after,\n }: {\n before?: (this: OBJECT, ...args: Parameters) => void\n after?: (this: OBJECT, ...args: Parameters) => void\n }\n) {\n return instrumentMethod(\n object,\n method,\n (original) =>\n function () {\n const args = arguments as unknown as Parameters\n let result\n\n if (before) {\n callMonitored(before, this, args)\n }\n\n if (typeof original === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n result = original.apply(this, args)\n }\n\n if (after) {\n callMonitored(after, this, args)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return result\n }\n )\n}\n\nexport function instrumentSetter(\n object: OBJECT,\n property: PROPERTY,\n after: (thisObject: OBJECT, value: OBJECT[PROPERTY]) => void\n) {\n const originalDescriptor = Object.getOwnPropertyDescriptor(object, property)\n if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {\n return { stop: noop }\n }\n\n let instrumentation = (thisObject: OBJECT, value: OBJECT[PROPERTY]) => {\n // put hooked setter into event loop to avoid of set latency\n setTimeout(() => {\n after(thisObject, value)\n }, 0)\n }\n\n const instrumentationWrapper = function (this: OBJECT, value: OBJECT[PROPERTY]) {\n originalDescriptor.set!.call(this, value)\n instrumentation(this, value)\n }\n\n Object.defineProperty(object, property, {\n set: instrumentationWrapper,\n })\n\n return {\n stop: () => {\n if (Object.getOwnPropertyDescriptor(object, property)?.set === instrumentationWrapper) {\n Object.defineProperty(object, property, originalDescriptor)\n } else {\n instrumentation = noop\n }\n },\n }\n}\n","import { instrumentMethodAndCallOriginal } from '../tools/instrumentMethod'\nimport { Observable } from '../tools/observable'\nimport type { Duration, RelativeTime, ClocksState } from '../tools/utils/timeUtils'\nimport { elapsed, relativeNow, clocksNow, timeStampNow } from '../tools/utils/timeUtils'\nimport { normalizeUrl } from '../tools/utils/urlPolyfill'\nimport { shallowClone } from '../tools/utils/objectUtils'\nimport type { Configuration } from '../domain/configuration'\nimport { addEventListener } from './addEventListener'\n\nexport interface XhrOpenContext {\n state: 'open'\n method: string\n url: string\n}\n\nexport interface XhrStartContext extends Omit {\n state: 'start'\n startTime: RelativeTime // deprecated\n startClocks: ClocksState\n isAborted: boolean\n xhr: XMLHttpRequest\n}\n\nexport interface XhrCompleteContext extends Omit {\n state: 'complete'\n duration: Duration\n status: number\n}\n\nexport type XhrContext = XhrOpenContext | XhrStartContext | XhrCompleteContext\n\nlet xhrObservable: Observable | undefined\nconst xhrContexts = new WeakMap()\n\nexport function initXhrObservable(configuration: Configuration) {\n if (!xhrObservable) {\n xhrObservable = createXhrObservable(configuration)\n }\n return xhrObservable\n}\n\nfunction createXhrObservable(configuration: Configuration) {\n const observable = new Observable(() => {\n const { stop: stopInstrumentingStart } = instrumentMethodAndCallOriginal(XMLHttpRequest.prototype, 'open', {\n before: openXhr,\n })\n\n const { stop: stopInstrumentingSend } = instrumentMethodAndCallOriginal(XMLHttpRequest.prototype, 'send', {\n before() {\n sendXhr.call(this, configuration, observable)\n },\n })\n\n const { stop: stopInstrumentingAbort } = instrumentMethodAndCallOriginal(XMLHttpRequest.prototype, 'abort', {\n before: abortXhr,\n })\n\n return () => {\n stopInstrumentingStart()\n stopInstrumentingSend()\n stopInstrumentingAbort()\n }\n })\n return observable\n}\n\nfunction openXhr(this: XMLHttpRequest, method: string, url: string | URL | undefined | null) {\n xhrContexts.set(this, {\n state: 'open',\n method,\n url: normalizeUrl(String(url)),\n })\n}\n\nfunction sendXhr(this: XMLHttpRequest, configuration: Configuration, observable: Observable) {\n const context = xhrContexts.get(this)\n if (!context) {\n return\n }\n\n const startContext = context as XhrStartContext\n startContext.state = 'start'\n startContext.startTime = relativeNow()\n startContext.startClocks = clocksNow()\n startContext.isAborted = false\n startContext.xhr = this\n\n let hasBeenReported = false\n\n const { stop: stopInstrumentingOnReadyStateChange } = instrumentMethodAndCallOriginal(this, 'onreadystatechange', {\n before() {\n if (this.readyState === XMLHttpRequest.DONE) {\n // Try to report the XHR as soon as possible, because the XHR may be mutated by the\n // application during a future event. For example, Angular is calling .abort() on\n // completed requests during a onreadystatechange event, so the status becomes '0'\n // before the request is collected.\n onEnd()\n }\n },\n })\n\n const onEnd = () => {\n unsubscribeLoadEndListener()\n stopInstrumentingOnReadyStateChange()\n if (hasBeenReported) {\n return\n }\n hasBeenReported = true\n\n const completeContext = context as XhrCompleteContext\n completeContext.state = 'complete'\n completeContext.duration = elapsed(startContext.startClocks.timeStamp, timeStampNow())\n completeContext.status = this.status\n observable.notify(shallowClone(completeContext))\n }\n\n const { stop: unsubscribeLoadEndListener } = addEventListener(configuration, this, 'loadend', onEnd)\n\n observable.notify(startContext)\n}\n\nfunction abortXhr(this: XMLHttpRequest) {\n const context = xhrContexts.get(this) as XhrStartContext | undefined\n if (context) {\n context.isAborted = true\n }\n}\n","import { instrumentMethod } from '../tools/instrumentMethod'\nimport { callMonitored, monitor } from '../tools/monitor'\nimport { Observable } from '../tools/observable'\nimport type { ClocksState } from '../tools/utils/timeUtils'\nimport { clocksNow } from '../tools/utils/timeUtils'\nimport { normalizeUrl } from '../tools/utils/urlPolyfill'\n\ninterface FetchContextBase {\n method: string\n startClocks: ClocksState\n input: unknown\n init?: RequestInit\n url: string\n}\n\nexport interface FetchStartContext extends FetchContextBase {\n state: 'start'\n}\n\nexport interface FetchResolveContext extends FetchContextBase {\n state: 'resolve'\n status: number\n response?: Response\n responseType?: string\n isAborted: boolean\n error?: Error\n}\n\nexport type FetchContext = FetchStartContext | FetchResolveContext\n\nlet fetchObservable: Observable | undefined\n\nexport function initFetchObservable() {\n if (!fetchObservable) {\n fetchObservable = createFetchObservable()\n }\n return fetchObservable\n}\n\nfunction createFetchObservable() {\n const observable = new Observable(() => {\n if (!window.fetch) {\n return\n }\n\n const { stop } = instrumentMethod(\n window,\n 'fetch',\n (originalFetch) =>\n function (input, init) {\n let responsePromise: Promise\n\n const context = callMonitored(beforeSend, null, [observable, input, init])\n if (context) {\n responsePromise = originalFetch.call(this, context.input as RequestInfo, context.init)\n callMonitored(afterSend, null, [observable, responsePromise, context])\n } else {\n responsePromise = originalFetch.call(this, input, init)\n }\n\n return responsePromise\n }\n )\n\n return stop\n })\n\n return observable\n}\n\nfunction beforeSend(observable: Observable, input: unknown, init?: RequestInit) {\n const method = (init && init.method) || (input instanceof Request && input.method) || 'GET'\n const url = input instanceof Request ? input.url : normalizeUrl(String(input))\n const startClocks = clocksNow()\n\n const context: FetchStartContext = {\n state: 'start',\n init,\n input,\n method,\n startClocks,\n url,\n }\n\n observable.notify(context)\n\n return context\n}\n\nfunction afterSend(\n observable: Observable,\n responsePromise: Promise,\n startContext: FetchStartContext\n) {\n const reportFetch = (response: Response | Error) => {\n const context = startContext as unknown as FetchResolveContext\n context.state = 'resolve'\n if ('stack' in response || response instanceof Error) {\n context.status = 0\n context.isAborted = response instanceof DOMException && response.code === DOMException.ABORT_ERR\n context.error = response\n } else if ('status' in response) {\n context.response = response\n context.responseType = response.type\n context.status = response.status\n context.isAborted = false\n }\n observable.notify(context)\n }\n\n responsePromise.then(monitor(reportFetch), monitor(reportFetch))\n}\n","export function isServerError(status: number) {\n return status >= 500\n}\n\nexport function tryToClone(response: Response): Response | undefined {\n try {\n return response.clone()\n } catch (e) {\n // clone can throw if the response has already been used by another instrumentation or is disturbed\n return\n }\n}\n","import { monitor } from './monitor'\nimport { noop } from './utils/functionUtils'\n\ntype Options = {\n bytesLimit: number\n collectStreamBody?: boolean\n}\n/**\n * Read bytes from a ReadableStream until at least `limit` bytes have been read (or until the end of\n * the stream). The callback is invoked with the at most `limit` bytes, and indicates that the limit\n * has been exceeded if more bytes were available.\n */\nexport function readBytesFromStream(\n stream: ReadableStream,\n callback: (error?: Error, bytes?: Uint8Array, limitExceeded?: boolean) => void,\n options: Options\n) {\n const reader = stream.getReader()\n const chunks: Uint8Array[] = []\n let readBytesCount = 0\n\n readMore()\n\n function readMore() {\n reader.read().then(\n monitor((result: ReadableStreamReadResult) => {\n if (result.done) {\n onDone()\n return\n }\n\n if (options.collectStreamBody) {\n chunks.push(result.value)\n }\n readBytesCount += result.value.length\n\n if (readBytesCount > options.bytesLimit) {\n onDone()\n } else {\n readMore()\n }\n }),\n monitor((error) => callback(error))\n )\n }\n\n function onDone() {\n reader.cancel().catch(\n // we don't care if cancel fails, but we still need to catch the error to avoid reporting it\n // as an unhandled rejection\n noop\n )\n\n let bytes: Uint8Array | undefined\n let limitExceeded: boolean | undefined\n if (options.collectStreamBody) {\n let completeBuffer: Uint8Array\n if (chunks.length === 1) {\n // optimization: if the response is small enough to fit in a single buffer (provided by the browser), just\n // use it directly.\n completeBuffer = chunks[0]\n } else {\n // else, we need to copy buffers into a larger buffer to concatenate them.\n completeBuffer = new Uint8Array(readBytesCount)\n let offset = 0\n chunks.forEach((chunk) => {\n completeBuffer.set(chunk, offset)\n offset += chunk.length\n })\n }\n bytes = completeBuffer.slice(0, options.bytesLimit)\n limitExceeded = completeBuffer.length > options.bytesLimit\n }\n\n callback(undefined, bytes, limitExceeded)\n }\n}\n","import type {\n Duration,\n XhrCompleteContext,\n XhrStartContext,\n ClocksState,\n FetchStartContext,\n FetchResolveContext,\n} from '@datadog/browser-core'\nimport {\n RequestType,\n initFetchObservable,\n initXhrObservable,\n readBytesFromStream,\n elapsed,\n timeStampNow,\n tryToClone,\n} from '@datadog/browser-core'\nimport type { RumSessionManager } from '..'\nimport type { RumConfiguration } from './configuration'\nimport type { LifeCycle } from './lifeCycle'\nimport { LifeCycleEventType } from './lifeCycle'\nimport { isAllowedRequestUrl } from './resource/resourceUtils'\nimport type { TraceIdentifier, Tracer } from './tracing/tracer'\nimport { startTracer } from './tracing/tracer'\n\nexport interface CustomContext {\n requestIndex: number\n spanId?: TraceIdentifier\n traceId?: TraceIdentifier\n traceSampled?: boolean\n}\nexport interface RumFetchStartContext extends FetchStartContext, CustomContext {}\nexport interface RumFetchResolveContext extends FetchResolveContext, CustomContext {}\nexport interface RumXhrStartContext extends XhrStartContext, CustomContext {}\nexport interface RumXhrCompleteContext extends XhrCompleteContext, CustomContext {}\n\nexport interface RequestStartEvent {\n requestIndex: number\n url: string\n}\nexport interface RequestCompleteEvent {\n requestIndex: number\n type: RequestType\n method: string\n url: string\n status: number\n responseType?: string\n startClocks: ClocksState\n duration: Duration\n spanId?: TraceIdentifier\n traceId?: TraceIdentifier\n traceSampled?: boolean\n xhr?: XMLHttpRequest\n response?: Response\n input?: unknown\n init?: RequestInit\n error?: Error\n}\n\nlet nextRequestIndex = 1\n\nexport function startRequestCollection(\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n sessionManager: RumSessionManager\n) {\n const tracer = startTracer(configuration, sessionManager)\n trackXhr(lifeCycle, configuration, tracer)\n trackFetch(lifeCycle, configuration, tracer)\n}\n\nexport function trackXhr(lifeCycle: LifeCycle, configuration: RumConfiguration, tracer: Tracer) {\n const subscription = initXhrObservable(configuration).subscribe((rawContext) => {\n const context = rawContext as RumXhrStartContext | RumXhrCompleteContext\n if (!isAllowedRequestUrl(configuration, context.url)) {\n return\n }\n\n switch (context.state) {\n case 'start':\n tracer.traceXhr(context, context.xhr)\n context.requestIndex = getNextRequestIndex()\n\n lifeCycle.notify(LifeCycleEventType.REQUEST_STARTED, {\n requestIndex: context.requestIndex,\n url: context.url,\n })\n break\n case 'complete':\n tracer.clearTracingIfNeeded(context)\n lifeCycle.notify(LifeCycleEventType.REQUEST_COMPLETED, {\n duration: context.duration,\n method: context.method,\n requestIndex: context.requestIndex,\n spanId: context.spanId,\n startClocks: context.startClocks,\n status: context.status,\n traceId: context.traceId,\n traceSampled: context.traceSampled,\n type: RequestType.XHR,\n url: context.url,\n xhr: context.xhr,\n })\n break\n }\n })\n\n return { stop: () => subscription.unsubscribe() }\n}\n\nexport function trackFetch(lifeCycle: LifeCycle, configuration: RumConfiguration, tracer: Tracer) {\n const subscription = initFetchObservable().subscribe((rawContext) => {\n const context = rawContext as RumFetchResolveContext | RumFetchStartContext\n if (!isAllowedRequestUrl(configuration, context.url)) {\n return\n }\n\n switch (context.state) {\n case 'start':\n tracer.traceFetch(context)\n context.requestIndex = getNextRequestIndex()\n\n lifeCycle.notify(LifeCycleEventType.REQUEST_STARTED, {\n requestIndex: context.requestIndex,\n url: context.url,\n })\n break\n case 'resolve':\n waitForResponseToComplete(context, (duration: Duration) => {\n tracer.clearTracingIfNeeded(context)\n lifeCycle.notify(LifeCycleEventType.REQUEST_COMPLETED, {\n duration,\n method: context.method,\n requestIndex: context.requestIndex,\n responseType: context.responseType,\n spanId: context.spanId,\n startClocks: context.startClocks,\n status: context.status,\n traceId: context.traceId,\n traceSampled: context.traceSampled,\n type: RequestType.FETCH,\n url: context.url,\n response: context.response,\n init: context.init,\n input: context.input,\n })\n })\n break\n }\n })\n return { stop: () => subscription.unsubscribe() }\n}\n\nfunction getNextRequestIndex() {\n const result = nextRequestIndex\n nextRequestIndex += 1\n return result\n}\n\nfunction waitForResponseToComplete(context: RumFetchResolveContext, callback: (duration: Duration) => void) {\n const clonedResponse = context.response && tryToClone(context.response)\n if (!clonedResponse || !clonedResponse.body) {\n // do not try to wait for the response if the clone failed, fetch error or null body\n callback(elapsed(context.startClocks.timeStamp, timeStampNow()))\n } else {\n readBytesFromStream(\n clonedResponse.body,\n () => {\n callback(elapsed(context.startClocks.timeStamp, timeStampNow()))\n },\n {\n bytesLimit: Number.POSITIVE_INFINITY,\n collectStreamBody: false,\n }\n )\n }\n}\n","import { noop } from '@datadog/browser-core'\nimport { RumEventType } from '../rawRumEvent.types'\nimport type { RumActionEvent, RumErrorEvent, RumLongTaskEvent, RumResourceEvent } from '../rumEvent.types'\nimport type { LifeCycle } from './lifeCycle'\nimport { LifeCycleEventType } from './lifeCycle'\n\nexport interface EventCounts {\n errorCount: number\n actionCount: number\n longTaskCount: number\n resourceCount: number\n frustrationCount: number\n}\n\nexport function trackEventCounts({\n lifeCycle,\n isChildEvent,\n onChange: callback = noop,\n}: {\n lifeCycle: LifeCycle\n isChildEvent: (event: RumActionEvent | RumErrorEvent | RumLongTaskEvent | RumResourceEvent) => boolean\n onChange?: () => void\n}) {\n const eventCounts: EventCounts = {\n errorCount: 0,\n longTaskCount: 0,\n resourceCount: 0,\n actionCount: 0,\n frustrationCount: 0,\n }\n\n const subscription = lifeCycle.subscribe(LifeCycleEventType.RUM_EVENT_COLLECTED, (event): void => {\n if (event.type === 'view' || !isChildEvent(event)) {\n return\n }\n switch (event.type) {\n case RumEventType.ERROR:\n eventCounts.errorCount += 1\n callback()\n break\n case RumEventType.ACTION:\n eventCounts.actionCount += 1\n if (event.action.frustration) {\n eventCounts.frustrationCount += event.action.frustration.type.length\n }\n callback()\n break\n case RumEventType.LONG_TASK:\n eventCounts.longTaskCount += 1\n callback()\n break\n case RumEventType.RESOURCE:\n if (!event._dd?.discarded) {\n eventCounts.resourceCount += 1\n callback()\n }\n break\n }\n })\n\n return {\n stop: () => {\n subscription.unsubscribe()\n },\n eventCounts,\n }\n}\n","import type { Subscription, TimeoutId, TimeStamp } from '@datadog/browser-core'\nimport {\n instrumentMethodAndCallOriginal,\n matchList,\n monitor,\n Observable,\n timeStampNow,\n setTimeout,\n clearTimeout,\n} from '@datadog/browser-core'\nimport { RumPerformanceEntryType } from '../browser/performanceCollection'\nimport type { RumConfiguration } from './configuration'\nimport type { LifeCycle } from './lifeCycle'\nimport { LifeCycleEventType } from './lifeCycle'\n\n// Delay to wait for a page activity to validate the tracking process\nexport const PAGE_ACTIVITY_VALIDATION_DELAY = 100\n// Delay to wait after a page activity to end the tracking process\nexport const PAGE_ACTIVITY_END_DELAY = 100\n\nexport interface PageActivityEvent {\n isBusy: boolean\n}\n\nexport type PageActivityEndEvent = { hadActivity: true; end: TimeStamp } | { hadActivity: false }\n\n/**\n * Wait for the page activity end\n *\n * Detection lifecycle:\n * ```\n * Wait page activity end\n * .-------------------'--------------------.\n * v v\n * [Wait for a page activity ] [Wait for a maximum duration]\n * [timeout: VALIDATION_DELAY] [ timeout: maxDuration ]\n * / \\ |\n * v v |\n * [No page activity] [Page activity] |\n * | |,----------------------. |\n * v v | |\n * (Discard) [Wait for a page activity] | |\n * [ timeout: END_DELAY ] | |\n * / \\ | |\n * v v | |\n * [No page activity] [Page activity] | |\n * | | | |\n * | '------------' |\n * '-----------. ,--------------------'\n * v\n * (End)\n * ```\n *\n * Note: by assuming that maxDuration is greater than VALIDATION_DELAY, we are sure that if the\n * process is still alive after maxDuration, it has been validated.\n */\nexport function waitPageActivityEnd(\n lifeCycle: LifeCycle,\n domMutationObservable: Observable,\n configuration: RumConfiguration,\n pageActivityEndCallback: (event: PageActivityEndEvent) => void,\n maxDuration?: number\n) {\n const pageActivityObservable = createPageActivityObservable(lifeCycle, domMutationObservable, configuration)\n return doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration)\n}\n\nexport function doWaitPageActivityEnd(\n pageActivityObservable: Observable,\n pageActivityEndCallback: (event: PageActivityEndEvent) => void,\n maxDuration?: number\n) {\n let pageActivityEndTimeoutId: TimeoutId\n let hasCompleted = false\n\n const validationTimeoutId = setTimeout(\n monitor(() => complete({ hadActivity: false })),\n PAGE_ACTIVITY_VALIDATION_DELAY\n )\n const maxDurationTimeoutId =\n maxDuration !== undefined\n ? setTimeout(\n monitor(() => complete({ hadActivity: true, end: timeStampNow() })),\n maxDuration\n )\n : undefined\n\n const pageActivitySubscription = pageActivityObservable.subscribe(({ isBusy }) => {\n clearTimeout(validationTimeoutId)\n clearTimeout(pageActivityEndTimeoutId)\n const lastChangeTime = timeStampNow()\n if (!isBusy) {\n pageActivityEndTimeoutId = setTimeout(\n monitor(() => complete({ hadActivity: true, end: lastChangeTime })),\n PAGE_ACTIVITY_END_DELAY\n )\n }\n })\n\n const stop = () => {\n hasCompleted = true\n clearTimeout(validationTimeoutId)\n clearTimeout(pageActivityEndTimeoutId)\n clearTimeout(maxDurationTimeoutId)\n pageActivitySubscription.unsubscribe()\n }\n\n function complete(event: PageActivityEndEvent) {\n if (hasCompleted) {\n return\n }\n stop()\n pageActivityEndCallback(event)\n }\n return { stop }\n}\n\nexport function createPageActivityObservable(\n lifeCycle: LifeCycle,\n domMutationObservable: Observable,\n configuration: RumConfiguration\n): Observable {\n const observable = new Observable(() => {\n const subscriptions: Subscription[] = []\n let firstRequestIndex: undefined | number\n let pendingRequestsCount = 0\n\n subscriptions.push(\n domMutationObservable.subscribe(notifyPageActivity),\n lifeCycle.subscribe(LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED, (entries) => {\n if (\n entries.some(\n (entry) => entry.entryType === RumPerformanceEntryType.RESOURCE && !isExcludedUrl(configuration, entry.name)\n )\n ) {\n notifyPageActivity()\n }\n }),\n lifeCycle.subscribe(LifeCycleEventType.REQUEST_STARTED, (startEvent) => {\n if (isExcludedUrl(configuration, startEvent.url)) {\n return\n }\n if (firstRequestIndex === undefined) {\n firstRequestIndex = startEvent.requestIndex\n }\n pendingRequestsCount += 1\n notifyPageActivity()\n }),\n lifeCycle.subscribe(LifeCycleEventType.REQUEST_COMPLETED, (request) => {\n if (\n isExcludedUrl(configuration, request.url) ||\n firstRequestIndex === undefined ||\n // If the request started before the tracking start, ignore it\n request.requestIndex < firstRequestIndex\n ) {\n return\n }\n pendingRequestsCount -= 1\n notifyPageActivity()\n })\n )\n\n const { stop: stopTrackingWindowOpen } = trackWindowOpen(notifyPageActivity)\n\n return () => {\n stopTrackingWindowOpen()\n subscriptions.forEach((s) => s.unsubscribe())\n }\n\n function notifyPageActivity() {\n observable.notify({ isBusy: pendingRequestsCount > 0 })\n }\n })\n\n return observable\n}\n\nfunction isExcludedUrl(configuration: RumConfiguration, requestUrl: string): boolean {\n return matchList(configuration.excludedActivityUrls, requestUrl)\n}\n\nfunction trackWindowOpen(callback: () => void) {\n return instrumentMethodAndCallOriginal(window, 'open', { before: callback })\n}\n","import { safeTruncate, isIE, find } from '@datadog/browser-core'\n\n/**\n * Get the action name from the attribute 'data-dd-action-name' on the element or any of its parent.\n * It can also be retrieved from a user defined attribute.\n */\nexport const DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE = 'data-dd-action-name'\n\nexport function getActionNameFromElement(element: Element, userProgrammaticAttribute?: string): string {\n // Proceed to get the action name in two steps:\n // * first, get the name programmatically, explicitly defined by the user.\n // * then, use strategies that are known to return good results. Those strategies will be used on\n // the element and a few parents, but it's likely that they won't succeed at all.\n // * if no name is found this way, use strategies returning less accurate names as a fallback.\n // Those are much likely to succeed.\n return (\n getActionNameFromElementProgrammatically(element, DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE) ||\n (userProgrammaticAttribute && getActionNameFromElementProgrammatically(element, userProgrammaticAttribute)) ||\n getActionNameFromElementForStrategies(element, userProgrammaticAttribute, priorityStrategies) ||\n getActionNameFromElementForStrategies(element, userProgrammaticAttribute, fallbackStrategies) ||\n ''\n )\n}\n\nfunction getActionNameFromElementProgrammatically(targetElement: Element, programmaticAttribute: string) {\n let elementWithAttribute\n // We don't use getActionNameFromElementForStrategies here, because we want to consider all parents,\n // without limit. It is up to the user to declare a relevant naming strategy.\n // If available, use element.closest() to match get the attribute from the element or any of its\n // parent. Else fallback to a more traditional implementation.\n if (supportsElementClosest()) {\n elementWithAttribute = targetElement.closest(`[${programmaticAttribute}]`)\n } else {\n let element: Element | null = targetElement\n while (element) {\n if (element.hasAttribute(programmaticAttribute)) {\n elementWithAttribute = element\n break\n }\n element = element.parentElement\n }\n }\n\n if (!elementWithAttribute) {\n return\n }\n const name = elementWithAttribute.getAttribute(programmaticAttribute)!\n return truncate(normalizeWhitespace(name.trim()))\n}\n\ntype NameStrategy = (\n element: Element | HTMLElement | HTMLInputElement | HTMLSelectElement,\n userProgrammaticAttribute: string | undefined\n) => string | undefined | null\n\nconst priorityStrategies: NameStrategy[] = [\n // associated LABEL text\n (element, userProgrammaticAttribute) => {\n // IE does not support element.labels, so we fallback to a CSS selector based on the element id\n // instead\n if (supportsLabelProperty()) {\n if ('labels' in element && element.labels && element.labels.length > 0) {\n return getTextualContent(element.labels[0], userProgrammaticAttribute)\n }\n } else if (element.id) {\n const label =\n element.ownerDocument &&\n find(element.ownerDocument.querySelectorAll('label'), (label) => label.htmlFor === element.id)\n return label && getTextualContent(label, userProgrammaticAttribute)\n }\n },\n // INPUT button (and associated) value\n (element) => {\n if (element.nodeName === 'INPUT') {\n const input = element as HTMLInputElement\n const type = input.getAttribute('type')\n if (type === 'button' || type === 'submit' || type === 'reset') {\n return input.value\n }\n }\n },\n // BUTTON, LABEL or button-like element text\n (element, userProgrammaticAttribute) => {\n if (element.nodeName === 'BUTTON' || element.nodeName === 'LABEL' || element.getAttribute('role') === 'button') {\n return getTextualContent(element, userProgrammaticAttribute)\n }\n },\n (element) => element.getAttribute('aria-label'),\n // associated element text designated by the aria-labelledby attribute\n (element, userProgrammaticAttribute) => {\n const labelledByAttribute = element.getAttribute('aria-labelledby')\n if (labelledByAttribute) {\n return labelledByAttribute\n .split(/\\s+/)\n .map((id) => getElementById(element, id))\n .filter((label): label is HTMLElement => Boolean(label))\n .map((element) => getTextualContent(element, userProgrammaticAttribute))\n .join(' ')\n }\n },\n (element) => element.getAttribute('alt'),\n (element) => element.getAttribute('name'),\n (element) => element.getAttribute('title'),\n (element) => element.getAttribute('placeholder'),\n // SELECT first OPTION text\n (element, userProgrammaticAttribute) => {\n if ('options' in element && element.options.length > 0) {\n return getTextualContent(element.options[0], userProgrammaticAttribute)\n }\n },\n]\n\nconst fallbackStrategies: NameStrategy[] = [\n (element, userProgrammaticAttribute) => getTextualContent(element, userProgrammaticAttribute),\n]\n\n/**\n * Iterates over the target element and its parent, using the strategies list to get an action name.\n * Each strategies are applied on each element, stopping as soon as a non-empty value is returned.\n */\nconst MAX_PARENTS_TO_CONSIDER = 10\nfunction getActionNameFromElementForStrategies(\n targetElement: Element,\n userProgrammaticAttribute: string | undefined,\n strategies: NameStrategy[]\n) {\n let element: Element | null = targetElement\n let recursionCounter = 0\n while (\n recursionCounter <= MAX_PARENTS_TO_CONSIDER &&\n element &&\n element.nodeName !== 'BODY' &&\n element.nodeName !== 'HTML' &&\n element.nodeName !== 'HEAD'\n ) {\n for (const strategy of strategies) {\n const name = strategy(element, userProgrammaticAttribute)\n if (typeof name === 'string') {\n const trimmedName = name.trim()\n if (trimmedName) {\n return truncate(normalizeWhitespace(trimmedName))\n }\n }\n }\n // Consider a FORM as a contextual limit to get the action name. This is experimental and may\n // be reconsidered in the future.\n if (element.nodeName === 'FORM') {\n break\n }\n element = element.parentElement\n recursionCounter += 1\n }\n}\n\nfunction normalizeWhitespace(s: string) {\n return s.replace(/\\s+/g, ' ')\n}\n\nfunction truncate(s: string) {\n return s.length > 100 ? `${safeTruncate(s, 100)} [...]` : s\n}\n\nfunction getElementById(refElement: Element, id: string) {\n // Use the element ownerDocument here, because tests are executed in an iframe, so\n // document.getElementById won't work.\n return refElement.ownerDocument ? refElement.ownerDocument.getElementById(id) : null\n}\n\nfunction getTextualContent(element: Element | HTMLElement, userProgrammaticAttribute: string | undefined) {\n if ((element as HTMLElement).isContentEditable) {\n return\n }\n\n if ('innerText' in element) {\n let text = element.innerText\n\n const removeTextFromElements = (query: string) => {\n const list = element.querySelectorAll(query)\n for (let index = 0; index < list.length; index += 1) {\n const element = list[index]\n if ('innerText' in element) {\n const textToReplace = element.innerText\n if (textToReplace && textToReplace.trim().length > 0) {\n text = text.replace(textToReplace, '')\n }\n }\n }\n }\n\n if (!supportsInnerTextScriptAndStyleRemoval()) {\n // remove the inner text of SCRIPT and STYLES from the result. This is a bit dirty, but should\n // be relatively fast and work in most cases.\n removeTextFromElements('script, style')\n }\n\n // remove the text of elements with programmatic attribute value\n removeTextFromElements(`[${DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE}]`)\n\n if (userProgrammaticAttribute) {\n removeTextFromElements(`[${userProgrammaticAttribute}]`)\n }\n\n return text\n }\n\n return element.textContent\n}\n\n/**\n * Returns true if element.innerText excludes the text from inline SCRIPT and STYLE element. This\n * should be the case everywhere except on Internet Explorer 10 and 11 (see [1])\n *\n * The innerText property relies on what is actually rendered to compute its output, so to check if\n * it actually excludes SCRIPT and STYLE content, a solution would be to create a style element, set\n * its content to '*', inject it in the document body, and check if the style element innerText\n * property returns '*'. Using a new `document` instance won't work as it is not rendered.\n *\n * This solution requires specific CSP rules (see [2]) to be set by the customer. We want to avoid\n * this, so instead we rely on browser detection. In case of false negative, the impact should be\n * low, since we rely on this result to remove the SCRIPT and STYLE innerText (which will be empty)\n * from a parent element innerText.\n *\n * [1]: https://web.archive.org/web/20210602165716/http://perfectionkills.com/the-poor-misunderstood-innerText/#diff-with-textContent\n * [2]: https://github.com/DataDog/browser-sdk/issues/1084\n */\nfunction supportsInnerTextScriptAndStyleRemoval() {\n return !isIE()\n}\n\n/**\n * Returns true if the browser supports the element.labels property. This should be the case\n * everywhere except on Internet Explorer.\n * Note: The result is computed lazily, because we don't want any DOM access when the SDK is\n * evaluated.\n */\nlet supportsLabelPropertyResult: boolean | undefined\nfunction supportsLabelProperty() {\n if (supportsLabelPropertyResult === undefined) {\n supportsLabelPropertyResult = 'labels' in HTMLInputElement.prototype\n }\n return supportsLabelPropertyResult\n}\n\n/**\n * Returns true if the browser supports the element.closest method. This should be the case\n * everywhere except on Internet Explorer.\n * Note: The result is computed lazily, because we don't want any DOM access when the SDK is\n * evaluated.\n */\nlet supportsElementClosestResult: boolean | undefined\nfunction supportsElementClosest() {\n if (supportsElementClosestResult === undefined) {\n supportsElementClosestResult = 'closest' in HTMLElement.prototype\n }\n return supportsElementClosestResult\n}\n","import { cssEscape } from '@datadog/browser-core'\nimport { DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE } from './action/getActionNameFromElement'\n\n/**\n * Stable attributes are attributes that are commonly used to identify parts of a UI (ex:\n * component). Those attribute values should not be generated randomly (hardcoded most of the time)\n * and stay the same across deploys. They are not necessarily unique across the document.\n */\nexport const STABLE_ATTRIBUTES = [\n DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE,\n // Common test attributes (list provided by google recorder)\n 'data-testid',\n 'data-test',\n 'data-qa',\n 'data-cy',\n 'data-test-id',\n 'data-qa-id',\n 'data-testing',\n // FullStory decorator attributes:\n 'data-component',\n 'data-element',\n 'data-source-file',\n]\n\ntype SelectorGetter = (element: Element, actionNameAttribute: string | undefined) => string | undefined\n\n// Selectors to use if they target a single element on the whole document. Those selectors are\n// considered as \"stable\" and uniquely identify an element regardless of the page state. If we find\n// one, we should consider the selector \"complete\" and stop iterating over ancestors.\nconst GLOBALLY_UNIQUE_SELECTOR_GETTERS: SelectorGetter[] = [getStableAttributeSelector, getIDSelector]\n\n// Selectors to use if they target a single element among an element descendants. Those selectors\n// are more brittle than \"globally unique\" selectors and should be combined with ancestor selectors\n// to improve specificity.\nconst UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS: SelectorGetter[] = [\n getStableAttributeSelector,\n getClassSelector,\n getTagNameSelector,\n]\n\nexport function getSelectorFromElement(targetElement: Element, actionNameAttribute: string | undefined) {\n let targetElementSelector = ''\n let element: Element | null = targetElement\n\n while (element && element.nodeName !== 'HTML') {\n const globallyUniqueSelector = findSelector(\n element,\n GLOBALLY_UNIQUE_SELECTOR_GETTERS,\n isSelectorUniqueGlobally,\n actionNameAttribute,\n targetElementSelector\n )\n if (globallyUniqueSelector) {\n return globallyUniqueSelector\n }\n\n const uniqueSelectorAmongChildren = findSelector(\n element,\n UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS,\n isSelectorUniqueAmongSiblings,\n actionNameAttribute,\n targetElementSelector\n )\n targetElementSelector =\n uniqueSelectorAmongChildren || combineSelector(getPositionSelector(element), targetElementSelector)\n\n element = element.parentElement\n }\n\n return targetElementSelector\n}\n\nfunction isGeneratedValue(value: string) {\n // To compute the \"URL path group\", the backend replaces every URL path parts as a question mark\n // if it thinks the part is an identifier. The condition it uses is to checks whether a digit is\n // present.\n //\n // Here, we use the same strategy: if a the value contains a digit, we consider it generated. This\n // strategy might be a bit naive and fail in some cases, but there are many fallbacks to generate\n // CSS selectors so it should be fine most of the time. We might want to allow customers to\n // provide their own `isGeneratedValue` at some point.\n return /[0-9]/.test(value)\n}\n\nfunction getIDSelector(element: Element): string | undefined {\n if (element.id && !isGeneratedValue(element.id)) {\n return `#${cssEscape(element.id)}`\n }\n}\n\nfunction getClassSelector(element: Element): string | undefined {\n if (element.tagName === 'BODY') {\n return\n }\n if (element.classList.length > 0) {\n for (let i = 0; i < element.classList.length; i += 1) {\n const className = element.classList[i]\n if (isGeneratedValue(className)) {\n continue\n }\n\n return `${cssEscape(element.tagName)}.${cssEscape(className)}`\n }\n }\n}\n\nfunction getTagNameSelector(element: Element): string {\n return cssEscape(element.tagName)\n}\n\nfunction getStableAttributeSelector(element: Element, actionNameAttribute: string | undefined): string | undefined {\n if (actionNameAttribute) {\n const selector = getAttributeSelector(actionNameAttribute)\n if (selector) {\n return selector\n }\n }\n\n for (const attributeName of STABLE_ATTRIBUTES) {\n const selector = getAttributeSelector(attributeName)\n if (selector) {\n return selector\n }\n }\n\n function getAttributeSelector(attributeName: string) {\n if (element.hasAttribute(attributeName)) {\n return `${cssEscape(element.tagName)}[${attributeName}=\"${cssEscape(element.getAttribute(attributeName)!)}\"]`\n }\n }\n}\n\nfunction getPositionSelector(element: Element): string {\n let sibling = element.parentElement!.firstElementChild\n let elementIndex = 1\n\n while (sibling && sibling !== element) {\n if (sibling.tagName === element.tagName) {\n elementIndex += 1\n }\n sibling = sibling.nextElementSibling\n }\n\n return `${cssEscape(element.tagName)}:nth-of-type(${elementIndex})`\n}\n\nfunction findSelector(\n element: Element,\n selectorGetters: SelectorGetter[],\n predicate: (element: Element, selector: string) => boolean,\n actionNameAttribute: string | undefined,\n childSelector?: string\n) {\n for (const selectorGetter of selectorGetters) {\n const elementSelector = selectorGetter(element, actionNameAttribute)\n if (!elementSelector) {\n continue\n }\n const fullSelector = combineSelector(elementSelector, childSelector)\n if (predicate(element, fullSelector)) {\n return fullSelector\n }\n }\n}\n\n/**\n * Check whether the selector is unique among the whole document.\n */\nfunction isSelectorUniqueGlobally(element: Element, selector: string): boolean {\n return element.ownerDocument.querySelectorAll(selector).length === 1\n}\n\n/**\n * Check whether the selector is unique among the element siblings. In other words, it returns true\n * if \"ELEMENT_PARENT > SELECTOR\" returns a single element.\n *\n * The result will be less accurate on browsers that don't support :scope (i. e. IE): it will check\n * for any element matching the selector contained in the parent (in other words,\n * \"ELEMENT_PARENT SELECTOR\" returns a single element), regardless of whether the selector is a\n * direct descendent of the element parent. This should not impact results too much: if it\n * inaccurately returns false, we'll just fall back to another strategy.\n */\nfunction isSelectorUniqueAmongSiblings(element: Element, selector: string): boolean {\n return (\n element.parentElement!.querySelectorAll(supportScopeSelector() ? combineSelector(':scope', selector) : selector)\n .length === 1\n )\n}\n\nfunction combineSelector(parent: string, child: string | undefined): string {\n return child ? `${parent}>${child}` : parent\n}\n\nlet supportScopeSelectorCache: boolean | undefined\nexport function supportScopeSelector() {\n if (supportScopeSelectorCache === undefined) {\n try {\n document.querySelector(':scope')\n supportScopeSelectorCache = true\n } catch {\n supportScopeSelectorCache = false\n }\n }\n return supportScopeSelectorCache\n}\n","import type { TimeoutId } from '@datadog/browser-core'\nimport { ONE_SECOND, clearTimeout, setTimeout } from '@datadog/browser-core'\nimport type { Click } from './trackClickActions'\n\nexport interface ClickChain {\n tryAppend: (click: Click) => boolean\n stop: () => void\n}\n\nexport const MAX_DURATION_BETWEEN_CLICKS = ONE_SECOND\nexport const MAX_DISTANCE_BETWEEN_CLICKS = 100\n\nconst enum ClickChainStatus {\n WaitingForMoreClicks,\n WaitingForClicksToStop,\n Finalized,\n}\n\nexport function createClickChain(firstClick: Click, onFinalize: (clicks: Click[]) => void): ClickChain {\n const bufferedClicks: Click[] = []\n let status = ClickChainStatus.WaitingForMoreClicks\n let maxDurationBetweenClicksTimeoutId: TimeoutId | undefined\n appendClick(firstClick)\n\n function appendClick(click: Click) {\n click.stopObservable.subscribe(tryFinalize)\n bufferedClicks.push(click)\n clearTimeout(maxDurationBetweenClicksTimeoutId)\n maxDurationBetweenClicksTimeoutId = setTimeout(dontAcceptMoreClick, MAX_DURATION_BETWEEN_CLICKS)\n }\n\n function tryFinalize() {\n if (status === ClickChainStatus.WaitingForClicksToStop && bufferedClicks.every((click) => click.isStopped())) {\n status = ClickChainStatus.Finalized\n onFinalize(bufferedClicks)\n }\n }\n\n function dontAcceptMoreClick() {\n clearTimeout(maxDurationBetweenClicksTimeoutId)\n if (status === ClickChainStatus.WaitingForMoreClicks) {\n status = ClickChainStatus.WaitingForClicksToStop\n tryFinalize()\n }\n }\n\n return {\n tryAppend: (click) => {\n if (status !== ClickChainStatus.WaitingForMoreClicks) {\n return false\n }\n\n if (\n bufferedClicks.length > 0 &&\n !areEventsSimilar(bufferedClicks[bufferedClicks.length - 1].event, click.event)\n ) {\n dontAcceptMoreClick()\n return false\n }\n\n appendClick(click)\n return true\n },\n stop: () => {\n dontAcceptMoreClick()\n },\n }\n}\n\n/**\n * Checks whether two events are similar by comparing their target, position and timestamp\n */\nfunction areEventsSimilar(first: MouseEvent, second: MouseEvent) {\n return (\n first.target === second.target &&\n mouseEventDistance(first, second) <= MAX_DISTANCE_BETWEEN_CLICKS &&\n first.timeStamp - second.timeStamp <= MAX_DURATION_BETWEEN_CLICKS\n )\n}\n\nfunction mouseEventDistance(origin: MouseEvent, other: MouseEvent) {\n return Math.sqrt(Math.pow(origin.clientX - other.clientX, 2) + Math.pow(origin.clientY - other.clientY, 2))\n}\n","import { addEventListener, DOM_EVENT } from '@datadog/browser-core'\nimport type { RumConfiguration } from '../configuration'\n\nexport type MouseEventOnElement = PointerEvent & { target: Element }\n\nexport interface UserActivity {\n selection: boolean\n input: boolean\n}\nexport interface ActionEventsHooks {\n onPointerDown: (event: MouseEventOnElement) => ClickContext | undefined\n onPointerUp: (context: ClickContext, event: MouseEventOnElement, getUserActivity: () => UserActivity) => void\n}\n\nexport function listenActionEvents(\n configuration: RumConfiguration,\n { onPointerDown, onPointerUp }: ActionEventsHooks\n) {\n let selectionEmptyAtPointerDown: boolean\n let userActivity: UserActivity = {\n selection: false,\n input: false,\n }\n let clickContext: ClickContext | undefined\n\n const listeners = [\n addEventListener(\n configuration,\n window,\n DOM_EVENT.POINTER_DOWN,\n (event: PointerEvent) => {\n if (isValidPointerEvent(event)) {\n selectionEmptyAtPointerDown = isSelectionEmpty()\n userActivity = {\n selection: false,\n input: false,\n }\n clickContext = onPointerDown(event)\n }\n },\n { capture: true }\n ),\n\n addEventListener(\n configuration,\n window,\n DOM_EVENT.SELECTION_CHANGE,\n () => {\n if (!selectionEmptyAtPointerDown || !isSelectionEmpty()) {\n userActivity.selection = true\n }\n },\n { capture: true }\n ),\n\n addEventListener(\n configuration,\n window,\n DOM_EVENT.POINTER_UP,\n (event: PointerEvent) => {\n if (isValidPointerEvent(event) && clickContext) {\n // Use a scoped variable to make sure the value is not changed by other clicks\n const localUserActivity = userActivity\n onPointerUp(clickContext, event, () => localUserActivity)\n clickContext = undefined\n }\n },\n { capture: true }\n ),\n\n addEventListener(\n configuration,\n window,\n DOM_EVENT.INPUT,\n () => {\n userActivity.input = true\n },\n { capture: true }\n ),\n ]\n\n return {\n stop: () => {\n listeners.forEach((listener) => listener.stop())\n },\n }\n}\n\nfunction isSelectionEmpty(): boolean {\n const selection = window.getSelection()\n return !selection || selection.isCollapsed\n}\n\nfunction isValidPointerEvent(event: PointerEvent): event is MouseEventOnElement {\n return (\n event.target instanceof Element &&\n // Only consider 'primary' pointer events for now. Multi-touch support could be implemented in\n // the future.\n event.isPrimary !== false\n )\n}\n","import { elementMatches, ONE_SECOND } from '@datadog/browser-core'\nimport { FrustrationType } from '../../rawRumEvent.types'\nimport type { Click } from './trackClickActions'\n\nconst MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE = 3\n\nexport function computeFrustration(clicks: Click[], rageClick: Click) {\n if (isRage(clicks)) {\n rageClick.addFrustration(FrustrationType.RAGE_CLICK)\n if (clicks.some(isDead)) {\n rageClick.addFrustration(FrustrationType.DEAD_CLICK)\n }\n if (rageClick.hasError) {\n rageClick.addFrustration(FrustrationType.ERROR_CLICK)\n }\n return { isRage: true }\n }\n\n const hasSelectionChanged = clicks.some((click) => click.getUserActivity().selection)\n clicks.forEach((click) => {\n if (click.hasError) {\n click.addFrustration(FrustrationType.ERROR_CLICK)\n }\n if (\n isDead(click) &&\n // Avoid considering clicks part of a double-click or triple-click selections as dead clicks\n !hasSelectionChanged\n ) {\n click.addFrustration(FrustrationType.DEAD_CLICK)\n }\n })\n return { isRage: false }\n}\n\nexport function isRage(clicks: Click[]) {\n if (clicks.some((click) => click.getUserActivity().selection)) {\n return false\n }\n for (let i = 0; i < clicks.length - (MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE - 1); i += 1) {\n if (\n clicks[i + MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE - 1].event.timeStamp - clicks[i].event.timeStamp <=\n ONE_SECOND\n ) {\n return true\n }\n }\n return false\n}\n\nconst DEAD_CLICK_EXCLUDE_SELECTOR =\n // inputs that don't trigger a meaningful event like \"input\" when clicked, including textual\n // inputs (using a negative selector is shorter here)\n 'input:not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"button\"]):not([type=\"submit\"]):not([type=\"reset\"]):not([type=\"range\"]),' +\n 'textarea,' +\n 'select,' +\n // contenteditable and their descendants don't always trigger meaningful changes when manipulated\n '[contenteditable],' +\n '[contenteditable] *,' +\n // canvas, as there is no good way to detect activity occurring on them\n 'canvas,' +\n // links that are interactive (have an href attribute) or any of their descendants, as they can\n // open a new tab or navigate to a hash without triggering a meaningful event\n 'a[href],' +\n 'a[href] *'\n\nexport function isDead(click: Click) {\n if (click.hasPageActivity || click.getUserActivity().input) {\n return false\n }\n return !elementMatches(click.event.target, DEAD_CLICK_EXCLUDE_SELECTOR)\n}\n","import type { Duration, ClocksState, RelativeTime, TimeStamp } from '@datadog/browser-core'\nimport {\n includes,\n timeStampNow,\n Observable,\n assign,\n getRelativeTime,\n ONE_MINUTE,\n ValueHistory,\n generateUUID,\n clocksNow,\n ONE_SECOND,\n elapsed,\n} from '@datadog/browser-core'\nimport type { FrustrationType } from '../../rawRumEvent.types'\nimport { ActionType } from '../../rawRumEvent.types'\nimport type { RumConfiguration } from '../configuration'\nimport type { LifeCycle } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport { trackEventCounts } from '../trackEventCounts'\nimport { PAGE_ACTIVITY_VALIDATION_DELAY, waitPageActivityEnd } from '../waitPageActivityEnd'\nimport { getSelectorFromElement } from '../getSelectorFromElement'\nimport type { ClickChain } from './clickChain'\nimport { createClickChain } from './clickChain'\nimport { getActionNameFromElement } from './getActionNameFromElement'\nimport type { MouseEventOnElement, UserActivity } from './listenActionEvents'\nimport { listenActionEvents } from './listenActionEvents'\nimport { computeFrustration } from './computeFrustration'\n\ninterface ActionCounts {\n errorCount: number\n longTaskCount: number\n resourceCount: number\n}\n\nexport interface ClickAction {\n type: ActionType.CLICK\n id: string\n name: string\n target?: {\n selector: string\n selector_with_stable_attributes?: string\n width: number\n height: number\n }\n position?: { x: number; y: number }\n startClocks: ClocksState\n duration?: Duration\n counts: ActionCounts\n event: MouseEventOnElement\n frustrationTypes: FrustrationType[]\n events: Event[]\n}\n\nexport interface ActionContexts {\n findActionId: (startTime?: RelativeTime) => string | string[] | undefined\n}\n\ntype ClickActionIdHistory = ValueHistory\n\n// Maximum duration for click actions\nexport const CLICK_ACTION_MAX_DURATION = 10 * ONE_SECOND\nexport const ACTION_CONTEXT_TIME_OUT_DELAY = 5 * ONE_MINUTE // arbitrary\n\nexport function trackClickActions(\n lifeCycle: LifeCycle,\n domMutationObservable: Observable,\n configuration: RumConfiguration\n) {\n const history: ClickActionIdHistory = new ValueHistory(ACTION_CONTEXT_TIME_OUT_DELAY)\n const stopObservable = new Observable()\n let currentClickChain: ClickChain | undefined\n\n lifeCycle.subscribe(LifeCycleEventType.SESSION_RENEWED, () => {\n history.reset()\n })\n\n lifeCycle.subscribe(LifeCycleEventType.VIEW_ENDED, stopClickChain)\n\n const { stop: stopActionEventsListener } = listenActionEvents<{\n clickActionBase: ClickActionBase\n hadActivityOnPointerDown: () => boolean\n }>(configuration, {\n onPointerDown: (pointerDownEvent) =>\n processPointerDown(configuration, lifeCycle, domMutationObservable, history, pointerDownEvent),\n onPointerUp: ({ clickActionBase, hadActivityOnPointerDown }, startEvent, getUserActivity) =>\n startClickAction(\n configuration,\n lifeCycle,\n domMutationObservable,\n history,\n stopObservable,\n appendClickToClickChain,\n clickActionBase,\n startEvent,\n getUserActivity,\n hadActivityOnPointerDown\n ),\n })\n\n const actionContexts: ActionContexts = {\n findActionId: (startTime?: RelativeTime) =>\n configuration.trackFrustrations ? history.findAll(startTime) : history.find(startTime),\n }\n\n return {\n stop: () => {\n stopClickChain()\n stopObservable.notify()\n stopActionEventsListener()\n },\n actionContexts,\n }\n\n function appendClickToClickChain(click: Click) {\n if (!currentClickChain || !currentClickChain.tryAppend(click)) {\n const rageClick = click.clone()\n currentClickChain = createClickChain(click, (clicks) => {\n finalizeClicks(clicks, rageClick)\n })\n }\n }\n\n function stopClickChain() {\n if (currentClickChain) {\n currentClickChain.stop()\n }\n }\n}\n\nfunction processPointerDown(\n configuration: RumConfiguration,\n lifeCycle: LifeCycle,\n domMutationObservable: Observable,\n history: ClickActionIdHistory,\n pointerDownEvent: MouseEventOnElement\n) {\n if (!configuration.trackFrustrations && history.find()) {\n // TODO: remove this in a future major version. To keep retrocompatibility, ignore any new\n // action if another one is already occurring.\n return\n }\n\n const clickActionBase = computeClickActionBase(pointerDownEvent, configuration.actionNameAttribute)\n if (!configuration.trackFrustrations && !clickActionBase.name) {\n // TODO: remove this in a future major version. To keep retrocompatibility, ignore any action\n // with a blank name\n return\n }\n\n let hadActivityOnPointerDown = false\n\n waitPageActivityEnd(\n lifeCycle,\n domMutationObservable,\n configuration,\n (pageActivityEndEvent) => {\n hadActivityOnPointerDown = pageActivityEndEvent.hadActivity\n },\n // We don't care about the activity duration, we just want to know whether an activity did happen\n // within the \"validation delay\" or not. Limit the duration so the callback is called sooner.\n PAGE_ACTIVITY_VALIDATION_DELAY\n )\n\n return { clickActionBase, hadActivityOnPointerDown: () => hadActivityOnPointerDown }\n}\n\nfunction startClickAction(\n configuration: RumConfiguration,\n lifeCycle: LifeCycle,\n domMutationObservable: Observable,\n history: ClickActionIdHistory,\n stopObservable: Observable,\n appendClickToClickChain: (click: Click) => void,\n clickActionBase: ClickActionBase,\n startEvent: MouseEventOnElement,\n getUserActivity: () => UserActivity,\n hadActivityOnPointerDown: () => boolean\n) {\n const click = newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent)\n\n if (configuration.trackFrustrations) {\n appendClickToClickChain(click)\n }\n\n const { stop: stopWaitPageActivityEnd } = waitPageActivityEnd(\n lifeCycle,\n domMutationObservable,\n configuration,\n (pageActivityEndEvent) => {\n if (pageActivityEndEvent.hadActivity && pageActivityEndEvent.end < click.startClocks.timeStamp) {\n // If the clock is looking weird, just discard the click\n click.discard()\n } else {\n if (pageActivityEndEvent.hadActivity) {\n click.stop(pageActivityEndEvent.end)\n } else if (hadActivityOnPointerDown()) {\n click.stop(\n // using the click start as activity end, so the click will have some activity but its\n // duration will be 0 (as the activity started before the click start)\n click.startClocks.timeStamp\n )\n } else {\n click.stop()\n }\n\n // Validate or discard the click only if we don't track frustrations. It'll be done when\n // the click chain is finalized.\n if (!configuration.trackFrustrations) {\n if (!pageActivityEndEvent.hadActivity) {\n // If we are not tracking frustrations, we should discard the click to keep backward\n // compatibility.\n click.discard()\n } else {\n click.validate()\n }\n }\n }\n },\n CLICK_ACTION_MAX_DURATION\n )\n\n const viewEndedSubscription = lifeCycle.subscribe(LifeCycleEventType.VIEW_ENDED, ({ endClocks }) => {\n click.stop(endClocks.timeStamp)\n })\n\n const stopSubscription = stopObservable.subscribe(() => {\n click.stop()\n })\n\n click.stopObservable.subscribe(() => {\n viewEndedSubscription.unsubscribe()\n stopWaitPageActivityEnd()\n stopSubscription.unsubscribe()\n })\n}\n\ntype ClickActionBase = Pick\n\nfunction computeClickActionBase(event: MouseEventOnElement, actionNameAttribute?: string): ClickActionBase {\n const rect = event.target.getBoundingClientRect()\n return {\n type: ActionType.CLICK,\n target: {\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n selector: getSelectorFromElement(event.target, actionNameAttribute),\n },\n position: {\n // Use clientX and Y because for SVG element offsetX and Y are relatives to the element\n x: Math.round(event.clientX - rect.left),\n y: Math.round(event.clientY - rect.top),\n },\n name: getActionNameFromElement(event.target, actionNameAttribute),\n }\n}\n\nconst enum ClickStatus {\n // Initial state, the click is still ongoing.\n ONGOING,\n // The click is no more ongoing but still needs to be validated or discarded.\n STOPPED,\n // Final state, the click has been stopped and validated or discarded.\n FINALIZED,\n}\n\nexport type Click = ReturnType\n\nfunction newClick(\n lifeCycle: LifeCycle,\n history: ClickActionIdHistory,\n getUserActivity: () => UserActivity,\n clickActionBase: ClickActionBase,\n startEvent: MouseEventOnElement\n) {\n const id = generateUUID()\n const startClocks = clocksNow()\n const historyEntry = history.add(id, startClocks.relative)\n const eventCountsSubscription = trackEventCounts({\n lifeCycle,\n isChildEvent: (event) =>\n event.action !== undefined &&\n (Array.isArray(event.action.id) ? includes(event.action.id, id) : event.action.id === id),\n })\n let status = ClickStatus.ONGOING\n let activityEndTime: undefined | TimeStamp\n const frustrationTypes: FrustrationType[] = []\n const stopObservable = new Observable()\n\n function stop(newActivityEndTime?: TimeStamp) {\n if (status !== ClickStatus.ONGOING) {\n return\n }\n activityEndTime = newActivityEndTime\n status = ClickStatus.STOPPED\n if (activityEndTime) {\n historyEntry.close(getRelativeTime(activityEndTime))\n } else {\n historyEntry.remove()\n }\n eventCountsSubscription.stop()\n stopObservable.notify()\n }\n\n return {\n event: startEvent,\n stop,\n stopObservable,\n\n get hasError() {\n return eventCountsSubscription.eventCounts.errorCount > 0\n },\n get hasPageActivity() {\n return activityEndTime !== undefined\n },\n getUserActivity,\n addFrustration: (frustrationType: FrustrationType) => {\n frustrationTypes.push(frustrationType)\n },\n startClocks,\n\n isStopped: () => status === ClickStatus.STOPPED || status === ClickStatus.FINALIZED,\n\n clone: () => newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent),\n\n validate: (domEvents?: Event[]) => {\n stop()\n if (status !== ClickStatus.STOPPED) {\n return\n }\n\n const { resourceCount, errorCount, longTaskCount } = eventCountsSubscription.eventCounts\n const clickAction: ClickAction = assign(\n {\n type: ActionType.CLICK as const,\n duration: activityEndTime && elapsed(startClocks.timeStamp, activityEndTime),\n startClocks,\n id,\n frustrationTypes,\n counts: {\n resourceCount,\n errorCount,\n longTaskCount,\n },\n events: domEvents ?? [startEvent],\n event: startEvent,\n },\n clickActionBase\n )\n lifeCycle.notify(LifeCycleEventType.AUTO_ACTION_COMPLETED, clickAction)\n status = ClickStatus.FINALIZED\n },\n\n discard: () => {\n stop()\n status = ClickStatus.FINALIZED\n },\n }\n}\n\nexport function finalizeClicks(clicks: Click[], rageClick: Click) {\n const { isRage } = computeFrustration(clicks, rageClick)\n if (isRage) {\n clicks.forEach((click) => click.discard())\n rageClick.stop(timeStampNow())\n rageClick.validate(clicks.map((click) => click.event))\n } else {\n rageClick.discard()\n clicks.forEach((click) => click.validate())\n }\n}\n","import type { ClocksState, Context, Observable } from '@datadog/browser-core'\nimport { noop, assign, combine, toServerDuration, generateUUID } from '@datadog/browser-core'\n\nimport type { RawRumActionEvent } from '../../rawRumEvent.types'\nimport { ActionType, RumEventType } from '../../rawRumEvent.types'\nimport type { LifeCycle, RawRumEventCollectedData } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport type { RumConfiguration } from '../configuration'\nimport type { CommonContext } from '../contexts/commonContext'\nimport type { PageStateHistory } from '../contexts/pageStateHistory'\nimport type { ActionContexts, ClickAction } from './trackClickActions'\nimport { trackClickActions } from './trackClickActions'\n\nexport type { ActionContexts }\n\nexport interface CustomAction {\n type: ActionType.CUSTOM\n name: string\n startClocks: ClocksState\n context?: Context\n}\n\nexport type AutoAction = ClickAction\n\nexport function startActionCollection(\n lifeCycle: LifeCycle,\n domMutationObservable: Observable,\n configuration: RumConfiguration,\n pageStateHistory: PageStateHistory\n) {\n lifeCycle.subscribe(LifeCycleEventType.AUTO_ACTION_COMPLETED, (action) =>\n lifeCycle.notify(LifeCycleEventType.RAW_RUM_EVENT_COLLECTED, processAction(action, pageStateHistory))\n )\n\n let actionContexts: ActionContexts = { findActionId: noop as () => undefined }\n if (configuration.trackUserInteractions) {\n actionContexts = trackClickActions(lifeCycle, domMutationObservable, configuration).actionContexts\n }\n\n return {\n addAction: (action: CustomAction, savedCommonContext?: CommonContext) => {\n lifeCycle.notify(\n LifeCycleEventType.RAW_RUM_EVENT_COLLECTED,\n assign(\n {\n savedCommonContext,\n },\n processAction(action, pageStateHistory)\n )\n )\n },\n actionContexts,\n }\n}\n\nfunction processAction(\n action: AutoAction | CustomAction,\n pageStateHistory: PageStateHistory\n): RawRumEventCollectedData {\n const autoActionProperties = isAutoAction(action)\n ? {\n action: {\n id: action.id,\n loading_time: toServerDuration(action.duration),\n frustration: {\n type: action.frustrationTypes,\n },\n error: {\n count: action.counts.errorCount,\n },\n long_task: {\n count: action.counts.longTaskCount,\n },\n resource: {\n count: action.counts.resourceCount,\n },\n },\n _dd: {\n action: {\n target: action.target,\n position: action.position,\n },\n },\n }\n : undefined\n const customerContext = !isAutoAction(action) ? action.context : undefined\n const actionEvent: RawRumActionEvent = combine(\n {\n action: {\n id: generateUUID(),\n target: {\n name: action.name,\n },\n type: action.type,\n },\n date: action.startClocks.timeStamp,\n type: RumEventType.ACTION as const,\n view: { in_foreground: pageStateHistory.isInActivePageStateAt(action.startClocks.relative) },\n },\n autoActionProperties\n )\n\n return {\n customerContext,\n rawRumEvent: actionEvent,\n startTime: action.startClocks.relative,\n domainContext: isAutoAction(action) ? { event: action.event, events: action.events } : {},\n }\n}\n\nfunction isAutoAction(action: AutoAction | CustomAction): action is AutoAction {\n return action.type !== ActionType.CUSTOM\n}\n","import { instrumentMethodAndCallOriginal } from '../../tools/instrumentMethod'\nimport { computeStackTrace } from './computeStackTrace'\nimport type { UnhandledErrorCallback, StackTrace } from './types'\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nconst ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\\s\\S]*)$/\n\n/**\n * Cross-browser collection of unhandled errors\n *\n * Supports:\n * - Firefox: full stack trace with line numbers, plus column number\n * on top frame; column number is not guaranteed\n * - Opera: full stack trace with line and column numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n * - IE: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n *\n * In theory, TraceKit should work on all of the following versions:\n * - IE5.5+ (only 8.0 tested)\n * - Firefox 0.9+ (only 3.5+ tested)\n * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require\n * Exceptions Have Stacktrace to be enabled in opera:config)\n * - Safari 3+ (only 4+ tested)\n * - Chrome 1+ (only 5+ tested)\n * - Konqueror 3.5+ (untested)\n *\n * Tries to catch all unhandled errors and report them to the\n * callback.\n *\n * Callbacks receive a StackTrace object as described in the\n * computeStackTrace docs.\n *\n * @memberof TraceKit\n * @namespace\n */\n\nexport function startUnhandledErrorCollection(callback: UnhandledErrorCallback) {\n const { stop: stopInstrumentingOnError } = instrumentOnError(callback)\n const { stop: stopInstrumentingOnUnhandledRejection } = instrumentUnhandledRejection(callback)\n\n return {\n stop: () => {\n stopInstrumentingOnError()\n stopInstrumentingOnUnhandledRejection()\n },\n }\n}\n\n/**\n * Install a global onerror handler\n */\nfunction instrumentOnError(callback: UnhandledErrorCallback) {\n return instrumentMethodAndCallOriginal(window, 'onerror', {\n before(this: any, messageObj: unknown, url?: string, line?: number, column?: number, errorObj?: unknown) {\n let stackTrace: StackTrace\n if (errorObj instanceof Error) {\n stackTrace = computeStackTrace(errorObj)\n } else {\n const stack = [{ url, column, line }]\n const { name, message } = tryToParseMessage(messageObj)\n stackTrace = {\n name,\n message,\n stack,\n }\n }\n callback(stackTrace, errorObj ?? messageObj)\n },\n })\n}\n\nfunction tryToParseMessage(messageObj: unknown) {\n let name\n let message\n if ({}.toString.call(messageObj) === '[object String]') {\n ;[, name, message] = ERROR_TYPES_RE.exec(messageObj as string)!\n }\n return { name, message }\n}\n\n/**\n * Install a global onunhandledrejection handler\n */\nfunction instrumentUnhandledRejection(callback: UnhandledErrorCallback) {\n return instrumentMethodAndCallOriginal(window, 'onunhandledrejection', {\n before(e: PromiseRejectionEvent) {\n const reason = e.reason || 'Empty reason'\n const stack = computeStackTrace(reason)\n callback(stack, reason)\n },\n })\n}\n","import type { Observable } from '../../tools/observable'\nimport { clocksNow } from '../../tools/utils/timeUtils'\nimport { startUnhandledErrorCollection } from '../tracekit'\nimport { computeRawError } from './error'\nimport type { RawError } from './error.types'\nimport { ErrorHandling, ErrorSource, NonErrorPrefix } from './error.types'\n\nexport function trackRuntimeError(errorObservable: Observable) {\n return startUnhandledErrorCollection((stackTrace, originalError) => {\n errorObservable.notify(\n computeRawError({\n stackTrace,\n originalError,\n startClocks: clocksNow(),\n nonErrorPrefix: NonErrorPrefix.UNCAUGHT,\n source: ErrorSource.SOURCE,\n handling: ErrorHandling.UNHANDLED,\n })\n )\n })\n}\n","import { computeStackTrace } from '../tracekit'\nimport { createHandlingStack, formatErrorMessage, toStackTraceString, tryToGetFingerprint } from '../error/error'\nimport { mergeObservables, Observable } from '../../tools/observable'\nimport { ConsoleApiName, globalConsole } from '../../tools/display'\nimport { callMonitored } from '../../tools/monitor'\nimport { sanitize } from '../../tools/serialisation/sanitize'\nimport { find } from '../../tools/utils/polyfills'\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify'\n\nexport interface ConsoleLog {\n message: string\n api: ConsoleApiName\n stack?: string\n handlingStack?: string\n fingerprint?: string\n}\n\nlet consoleObservablesByApi: { [k in ConsoleApiName]?: Observable } = {}\n\nexport function initConsoleObservable(apis: ConsoleApiName[]) {\n const consoleObservables = apis.map((api) => {\n if (!consoleObservablesByApi[api]) {\n consoleObservablesByApi[api] = createConsoleObservable(api)\n }\n return consoleObservablesByApi[api]!\n })\n\n return mergeObservables(...consoleObservables)\n}\n\nexport function resetConsoleObservable() {\n consoleObservablesByApi = {}\n}\n\nfunction createConsoleObservable(api: ConsoleApiName) {\n const observable = new Observable(() => {\n const originalConsoleApi = globalConsole[api]\n\n globalConsole[api] = (...params: unknown[]) => {\n originalConsoleApi.apply(console, params)\n const handlingStack = createHandlingStack()\n\n callMonitored(() => {\n observable.notify(buildConsoleLog(params, api, handlingStack))\n })\n }\n\n return () => {\n globalConsole[api] = originalConsoleApi\n }\n })\n\n return observable\n}\n\nfunction buildConsoleLog(params: unknown[], api: ConsoleApiName, handlingStack: string): ConsoleLog {\n // Todo: remove console error prefix in the next major version\n let message = params.map((param) => formatConsoleParameters(param)).join(' ')\n let stack\n let fingerprint\n\n if (api === ConsoleApiName.error) {\n const firstErrorParam = find(params, (param: unknown): param is Error => param instanceof Error)\n stack = firstErrorParam ? toStackTraceString(computeStackTrace(firstErrorParam)) : undefined\n fingerprint = tryToGetFingerprint(firstErrorParam)\n message = `console error: ${message}`\n }\n\n return {\n api,\n message,\n stack,\n handlingStack,\n fingerprint,\n }\n}\n\nfunction formatConsoleParameters(param: unknown) {\n if (typeof param === 'string') {\n return sanitize(param)\n }\n if (param instanceof Error) {\n return formatErrorMessage(computeStackTrace(param))\n }\n return jsonStringify(sanitize(param), undefined, 2)\n}\n","import { toStackTraceString } from '../error/error'\nimport { monitor } from '../../tools/monitor'\nimport { mergeObservables, Observable } from '../../tools/observable'\nimport { addEventListener, DOM_EVENT } from '../../browser/addEventListener'\nimport { includes } from '../../tools/utils/polyfills'\nimport { safeTruncate } from '../../tools/utils/stringUtils'\nimport type { Configuration } from '../configuration'\nimport type { ReportType, InterventionReport, DeprecationReport } from './browser.types'\n\nexport const RawReportType = {\n intervention: 'intervention',\n deprecation: 'deprecation',\n cspViolation: 'csp_violation',\n} as const\n\nexport type RawReportType = (typeof RawReportType)[keyof typeof RawReportType]\n\nexport interface RawReport {\n type: RawReportType\n subtype: string\n message: string\n stack?: string\n}\n\nexport function initReportObservable(configuration: Configuration, apis: RawReportType[]) {\n const observables: Array> = []\n\n if (includes(apis, RawReportType.cspViolation)) {\n observables.push(createCspViolationReportObservable(configuration))\n }\n\n const reportTypes = apis.filter((api: RawReportType): api is ReportType => api !== RawReportType.cspViolation)\n if (reportTypes.length) {\n observables.push(createReportObservable(reportTypes))\n }\n\n return mergeObservables(...observables)\n}\n\nfunction createReportObservable(reportTypes: ReportType[]) {\n const observable = new Observable(() => {\n if (!window.ReportingObserver) {\n return\n }\n\n const handleReports = monitor((reports: Array, _: ReportingObserver) =>\n reports.forEach((report) => {\n observable.notify(buildRawReportFromReport(report))\n })\n ) as ReportingObserverCallback\n\n const observer = new window.ReportingObserver(handleReports, {\n types: reportTypes,\n buffered: true,\n })\n\n observer.observe()\n return () => {\n observer.disconnect()\n }\n })\n\n return observable\n}\n\nfunction createCspViolationReportObservable(configuration: Configuration) {\n const observable = new Observable(() => {\n const { stop } = addEventListener(configuration, document, DOM_EVENT.SECURITY_POLICY_VIOLATION, (event) => {\n observable.notify(buildRawReportFromCspViolation(event))\n })\n\n return stop\n })\n return observable\n}\n\nfunction buildRawReportFromReport({ type, body }: DeprecationReport | InterventionReport): RawReport {\n return {\n type,\n subtype: body.id,\n message: `${type}: ${body.message}`,\n stack: buildStack(body.id, body.message, body.sourceFile, body.lineNumber, body.columnNumber),\n }\n}\n\nfunction buildRawReportFromCspViolation(event: SecurityPolicyViolationEvent): RawReport {\n const type = RawReportType.cspViolation\n const message = `'${event.blockedURI}' blocked by '${event.effectiveDirective}' directive`\n return {\n type: RawReportType.cspViolation,\n subtype: event.effectiveDirective,\n message: `${type}: ${message}`,\n stack: buildStack(\n event.effectiveDirective,\n event.originalPolicy\n ? `${message} of the policy \"${safeTruncate(event.originalPolicy, 100, '...')}\"`\n : 'no policy',\n event.sourceFile,\n event.lineNumber,\n event.columnNumber\n ),\n }\n}\n\nfunction buildStack(\n name: string,\n message: string,\n sourceFile: string | null,\n lineNumber: number | null,\n columnNumber: number | null\n): string | undefined {\n return sourceFile\n ? toStackTraceString({\n name,\n message,\n stack: [\n {\n func: '?',\n url: sourceFile,\n line: lineNumber ?? undefined,\n column: columnNumber ?? undefined,\n },\n ],\n })\n : undefined\n}\n","import type { Duration, RelativeTime } from '@datadog/browser-core'\nimport { addDuration } from '@datadog/browser-core'\nimport type { RumPerformanceResourceTiming } from '../../browser/performanceCollection'\nimport type { RequestCompleteEvent } from '../requestCollection'\nimport { toValidEntry } from './resourceUtils'\n\ninterface Timing {\n startTime: RelativeTime\n duration: Duration\n}\n\n/**\n * Look for corresponding timing in resource timing buffer\n *\n * Observations:\n * - Timing (start, end) are nested inside the request (start, end)\n * - Some timing can be not exactly nested, being off by < 1 ms\n *\n * Strategy:\n * - from valid nested entries (with 1 ms error margin)\n * - if a single timing match, return the timing\n * - otherwise we can't decide, return undefined\n */\nexport function matchRequestTiming(request: RequestCompleteEvent) {\n if (!performance || !('getEntriesByName' in performance)) {\n return\n }\n const sameNameEntries = performance.getEntriesByName(request.url, 'resource')\n\n if (!sameNameEntries.length || !('toJSON' in sameNameEntries[0])) {\n return\n }\n\n const candidates = sameNameEntries\n .map((entry) => entry.toJSON() as RumPerformanceResourceTiming)\n .filter(toValidEntry)\n .filter((entry) =>\n isBetween(\n entry,\n request.startClocks.relative,\n endTime({ startTime: request.startClocks.relative, duration: request.duration })\n )\n )\n\n if (candidates.length === 1) {\n return candidates[0]\n }\n\n return\n}\n\nfunction endTime(timing: Timing) {\n return addDuration(timing.startTime, timing.duration)\n}\n\nfunction isBetween(timing: Timing, start: RelativeTime, end: RelativeTime) {\n const errorMargin = 1 as Duration\n return timing.startTime >= start - errorMargin && endTime(timing) <= addDuration(end, errorMargin)\n}\n","import {\n combine,\n generateUUID,\n RequestType,\n ResourceType,\n toServerDuration,\n relativeToClocks,\n assign,\n isNumber,\n isExperimentalFeatureEnabled,\n ExperimentalFeature,\n} from '@datadog/browser-core'\nimport type { ClocksState, Duration } from '@datadog/browser-core'\nimport type { RumConfiguration } from '../configuration'\nimport type { RumPerformanceEntry, RumPerformanceResourceTiming } from '../../browser/performanceCollection'\nimport { RumPerformanceEntryType } from '../../browser/performanceCollection'\nimport type {\n PerformanceEntryRepresentation,\n RumXhrResourceEventDomainContext,\n RumFetchResourceEventDomainContext,\n} from '../../domainContext.types'\nimport type { RawRumResourceEvent } from '../../rawRumEvent.types'\nimport { RumEventType } from '../../rawRumEvent.types'\nimport type { LifeCycle, RawRumEventCollectedData } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport type { RequestCompleteEvent } from '../requestCollection'\nimport type { RumSessionManager } from '../rumSessionManager'\nimport type { PageStateHistory } from '../contexts/pageStateHistory'\nimport { PageState } from '../contexts/pageStateHistory'\nimport { matchRequestTiming } from './matchRequestTiming'\nimport {\n computePerformanceResourceDetails,\n computePerformanceResourceDuration,\n computeResourceKind,\n computeSize,\n isRequestKind,\n} from './resourceUtils'\n\nexport function startResourceCollection(\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n sessionManager: RumSessionManager,\n pageStateHistory: PageStateHistory\n) {\n lifeCycle.subscribe(LifeCycleEventType.REQUEST_COMPLETED, (request: RequestCompleteEvent) => {\n lifeCycle.notify(\n LifeCycleEventType.RAW_RUM_EVENT_COLLECTED,\n processRequest(request, configuration, sessionManager, pageStateHistory)\n )\n })\n\n lifeCycle.subscribe(LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED, (entries) => {\n for (const entry of entries) {\n if (entry.entryType === RumPerformanceEntryType.RESOURCE && !isRequestKind(entry)) {\n lifeCycle.notify(\n LifeCycleEventType.RAW_RUM_EVENT_COLLECTED,\n processResourceEntry(entry, configuration, sessionManager, pageStateHistory)\n )\n }\n }\n })\n}\n\nfunction processRequest(\n request: RequestCompleteEvent,\n configuration: RumConfiguration,\n sessionManager: RumSessionManager,\n pageStateHistory: PageStateHistory\n): RawRumEventCollectedData {\n const type = request.type === RequestType.XHR ? ResourceType.XHR : ResourceType.FETCH\n\n const matchingTiming = matchRequestTiming(request)\n const startClocks = matchingTiming ? relativeToClocks(matchingTiming.startTime) : request.startClocks\n const correspondingTimingOverrides = matchingTiming ? computePerformanceEntryMetrics(matchingTiming) : undefined\n\n const tracingInfo = computeRequestTracingInfo(request, configuration)\n const indexingInfo = computeIndexingInfo(sessionManager, startClocks)\n\n const duration = computeRequestDuration(pageStateHistory, startClocks, request.duration)\n const pageStateInfo = computePageStateInfo(\n pageStateHistory,\n startClocks,\n matchingTiming?.duration ?? request.duration\n )\n\n const resourceEvent = combine(\n {\n date: startClocks.timeStamp,\n resource: {\n id: generateUUID(),\n type,\n duration,\n method: request.method,\n status_code: request.status,\n url: request.url,\n },\n type: RumEventType.RESOURCE as const,\n },\n tracingInfo,\n correspondingTimingOverrides,\n indexingInfo,\n pageStateInfo\n )\n\n return {\n startTime: startClocks.relative,\n rawRumEvent: resourceEvent,\n domainContext: {\n performanceEntry: matchingTiming && toPerformanceEntryRepresentation(matchingTiming),\n xhr: request.xhr,\n response: request.response,\n requestInput: request.input,\n requestInit: request.init,\n error: request.error,\n } as RumFetchResourceEventDomainContext | RumXhrResourceEventDomainContext,\n }\n}\n\nfunction processResourceEntry(\n entry: RumPerformanceResourceTiming,\n configuration: RumConfiguration,\n sessionManager: RumSessionManager,\n pageStateHistory: PageStateHistory\n): RawRumEventCollectedData {\n const type = computeResourceKind(entry)\n const entryMetrics = computePerformanceEntryMetrics(entry)\n const startClocks = relativeToClocks(entry.startTime)\n\n const tracingInfo = computeEntryTracingInfo(entry, configuration)\n const indexingInfo = computeIndexingInfo(sessionManager, startClocks)\n const pageStateInfo = computePageStateInfo(pageStateHistory, startClocks, entry.duration)\n\n const resourceEvent = combine(\n {\n date: startClocks.timeStamp,\n resource: {\n id: generateUUID(),\n type,\n url: entry.name,\n },\n type: RumEventType.RESOURCE as const,\n },\n tracingInfo,\n entryMetrics,\n indexingInfo,\n pageStateInfo\n )\n return {\n startTime: startClocks.relative,\n rawRumEvent: resourceEvent,\n domainContext: {\n performanceEntry: toPerformanceEntryRepresentation(entry),\n },\n }\n}\n\nfunction computePerformanceEntryMetrics(timing: RumPerformanceResourceTiming) {\n return {\n resource: assign(\n {\n duration: computePerformanceResourceDuration(timing),\n size: computeSize(timing),\n },\n computePerformanceResourceDetails(timing)\n ),\n }\n}\n\nfunction computeRequestTracingInfo(request: RequestCompleteEvent, configuration: RumConfiguration) {\n const hasBeenTraced = request.traceSampled && request.traceId && request.spanId\n if (!hasBeenTraced) {\n return undefined\n }\n return {\n _dd: {\n span_id: request.spanId!.toDecimalString(),\n trace_id: request.traceId!.toDecimalString(),\n rule_psr: getRulePsr(configuration),\n },\n }\n}\n\nfunction computeEntryTracingInfo(entry: RumPerformanceResourceTiming, configuration: RumConfiguration) {\n const hasBeenTraced = entry.traceId\n if (!hasBeenTraced) {\n return undefined\n }\n return {\n _dd: {\n trace_id: entry.traceId,\n rule_psr: getRulePsr(configuration),\n },\n }\n}\n\n// TODO next major: use directly PerformanceEntry type in domain context\nfunction toPerformanceEntryRepresentation(entry: RumPerformanceEntry): PerformanceEntryRepresentation {\n return entry as PerformanceEntryRepresentation\n}\n\n/**\n * @returns number between 0 and 1 which represents trace sample rate\n */\nfunction getRulePsr(configuration: RumConfiguration) {\n return isNumber(configuration.traceSampleRate) ? configuration.traceSampleRate / 100 : undefined\n}\n\nfunction computeIndexingInfo(sessionManager: RumSessionManager, resourceStart: ClocksState) {\n const session = sessionManager.findTrackedSession(resourceStart.relative)\n return {\n _dd: {\n discarded: !session || !session.resourceAllowed,\n },\n }\n}\n\nfunction computePageStateInfo(pageStateHistory: PageStateHistory, startClocks: ClocksState, duration: Duration) {\n if (!isExperimentalFeatureEnabled(ExperimentalFeature.RESOURCE_PAGE_STATES)) {\n return\n }\n\n return {\n _dd: {\n page_states: pageStateHistory.findAll(startClocks.relative, duration),\n page_was_discarded: String((document as any).wasDiscarded),\n },\n }\n}\n\nfunction computeRequestDuration(pageStateHistory: PageStateHistory, startClocks: ClocksState, duration: Duration) {\n // TODO remove FF in next major\n if (!isExperimentalFeatureEnabled(ExperimentalFeature.NO_RESOURCE_DURATION_FROZEN_STATE)) {\n return toServerDuration(duration)\n }\n\n const requestCrossedFrozenState = pageStateHistory\n .findAll(startClocks.relative, duration)\n ?.some((pageState) => pageState.state === PageState.FROZEN)\n\n return !requestCrossedFrozenState ? toServerDuration(duration) : undefined\n}\n","import type { RelativeTime, Duration, ServerDuration } from '@datadog/browser-core'\nimport { toServerDuration } from '@datadog/browser-core'\nimport type { InForegroundPeriod, PageStateServerEntry } from '../../rawRumEvent.types'\nimport { PageState } from './pageStateHistory'\n\nexport interface ForegroundPeriod {\n start: RelativeTime\n end?: RelativeTime\n}\n\n// Todo: Remove in the next major release\nexport function mapToForegroundPeriods(\n pageStateServerEntries: PageStateServerEntry[],\n duration: Duration\n): InForegroundPeriod[] {\n const foregroundPeriods: InForegroundPeriod[] = []\n for (let i = 0; i < pageStateServerEntries.length; i++) {\n const current = pageStateServerEntries[i]\n const next = pageStateServerEntries[i + 1]\n\n if (current.state === PageState.ACTIVE) {\n const start = current.start >= 0 ? current.start : (0 as ServerDuration)\n const end = next ? next.start : toServerDuration(duration)\n foregroundPeriods.push({\n start,\n duration: (end - start) as ServerDuration,\n })\n }\n }\n\n return foregroundPeriods\n}\n","import type { RelativeTime } from '@datadog/browser-core'\nimport { ONE_MINUTE, find } from '@datadog/browser-core'\nimport type { LifeCycle } from '../../lifeCycle'\nimport { LifeCycleEventType } from '../../lifeCycle'\nimport type { RumPerformancePaintTiming } from '../../../browser/performanceCollection'\nimport { RumPerformanceEntryType } from '../../../browser/performanceCollection'\nimport type { FirstHidden } from './trackFirstHidden'\n\n// Discard FCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport const FCP_MAXIMUM_DELAY = 10 * ONE_MINUTE\n\nexport function trackFirstContentfulPaint(\n lifeCycle: LifeCycle,\n firstHidden: FirstHidden,\n callback: (fcpTiming: RelativeTime) => void\n) {\n const { unsubscribe: unsubscribeLifeCycle } = lifeCycle.subscribe(\n LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED,\n (entries) => {\n const fcpEntry = find(\n entries,\n (entry): entry is RumPerformancePaintTiming =>\n entry.entryType === RumPerformanceEntryType.PAINT &&\n entry.name === 'first-contentful-paint' &&\n entry.startTime < firstHidden.timeStamp &&\n entry.startTime < FCP_MAXIMUM_DELAY\n )\n if (fcpEntry) {\n callback(fcpEntry.startTime)\n }\n }\n )\n return {\n stop: unsubscribeLifeCycle,\n }\n}\n","import type { RelativeTime } from '@datadog/browser-core'\nimport {\n DOM_EVENT,\n ExperimentalFeature,\n ONE_MINUTE,\n addEventListeners,\n findLast,\n isExperimentalFeatureEnabled,\n} from '@datadog/browser-core'\nimport { LifeCycleEventType } from '../../lifeCycle'\nimport type { LifeCycle } from '../../lifeCycle'\nimport type { RumConfiguration } from '../../configuration'\nimport { RumPerformanceEntryType } from '../../../browser/performanceCollection'\nimport type { RumLargestContentfulPaintTiming } from '../../../browser/performanceCollection'\nimport { getSelectorFromElement } from '../../getSelectorFromElement'\nimport type { FirstHidden } from './trackFirstHidden'\n\n// Discard LCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport const LCP_MAXIMUM_DELAY = 10 * ONE_MINUTE\n\nexport interface LargestContentfulPaint {\n value: RelativeTime\n targetSelector?: string\n}\n/**\n * Track the largest contentful paint (LCP) occurring during the initial View. This can yield\n * multiple values, only the most recent one should be used.\n * Documentation: https://web.dev/lcp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/onLCP.ts\n */\nexport function trackLargestContentfulPaint(\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n firstHidden: FirstHidden,\n eventTarget: Window,\n callback: (largestContentfulPaint: LargestContentfulPaint) => void\n) {\n // Ignore entries that come after the first user interaction. According to the documentation, the\n // browser should not send largest-contentful-paint entries after a user interact with the page,\n // but the web-vitals reference implementation uses this as a safeguard.\n let firstInteractionTimestamp = Infinity\n const { stop: stopEventListener } = addEventListeners(\n configuration,\n eventTarget,\n [DOM_EVENT.POINTER_DOWN, DOM_EVENT.KEY_DOWN],\n (event) => {\n firstInteractionTimestamp = event.timeStamp\n },\n { capture: true, once: true }\n )\n\n const { unsubscribe: unsubscribeLifeCycle } = lifeCycle.subscribe(\n LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED,\n (entries) => {\n const lcpEntry = findLast(\n entries,\n (entry): entry is RumLargestContentfulPaintTiming =>\n entry.entryType === RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT &&\n entry.startTime < firstInteractionTimestamp &&\n entry.startTime < firstHidden.timeStamp &&\n entry.startTime < LCP_MAXIMUM_DELAY\n )\n\n if (lcpEntry) {\n let lcpTargetSelector\n if (isExperimentalFeatureEnabled(ExperimentalFeature.WEB_VITALS_ATTRIBUTION) && lcpEntry.element) {\n lcpTargetSelector = getSelectorFromElement(lcpEntry.element, configuration.actionNameAttribute)\n }\n\n callback({\n value: lcpEntry.startTime,\n targetSelector: lcpTargetSelector,\n })\n }\n }\n )\n\n return {\n stop: () => {\n stopEventListener()\n unsubscribeLifeCycle()\n },\n }\n}\n","/**\n * performance.interactionCount polyfill\n *\n * The interactionCount is an integer which counts the total number of distinct user interactions,\n * for which there was a unique interactionId.\n *\n * The interactionCount polyfill is an estimate based on a convention specific to Chrome. Cf: https://github.com/GoogleChrome/web-vitals/pull/213\n * This is currently not an issue as the polyfill is only used for INP which is currently only supported on Chrome.\n * Hopefully when/if other browsers will support INP, they will also implement performance.interactionCount at the same time, so we won't need that polyfill.\n *\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/lib/polyfills/interactionCountPolyfill.ts\n */\n\nimport { monitor } from '@datadog/browser-core'\nimport type {\n BrowserWindow,\n RumPerformanceEventTiming,\n RumPerformanceObserver,\n} from '../../../browser/performanceCollection'\n\nlet observer: RumPerformanceObserver | undefined\n\nlet interactionCountEstimate = 0\nlet minKnownInteractionId = Infinity\nlet maxKnownInteractionId = 0\n\nexport function initInteractionCountPolyfill() {\n if ('interactionCount' in performance || observer) {\n return\n }\n\n observer = new (window as BrowserWindow).PerformanceObserver(\n monitor((entries: PerformanceObserverEntryList) => {\n entries.getEntries().forEach((e) => {\n const entry = e as unknown as RumPerformanceEventTiming\n\n if (entry.interactionId) {\n minKnownInteractionId = Math.min(minKnownInteractionId, entry.interactionId)\n maxKnownInteractionId = Math.max(maxKnownInteractionId, entry.interactionId)\n\n interactionCountEstimate = (maxKnownInteractionId - minKnownInteractionId) / 7 + 1\n }\n })\n })\n )\n\n observer.observe({ type: 'event', buffered: true, durationThreshold: 0 })\n}\n\n/**\n * Returns the `interactionCount` value using the native API (if available)\n * or the polyfill estimate in this module.\n */\nexport const getInteractionCount = () =>\n observer ? interactionCountEstimate : (window as BrowserWindow).performance.interactionCount! || 0\n","import { Observable, throttle, addEventListener, DOM_EVENT } from '@datadog/browser-core'\nimport type { RumConfiguration } from '../domain/configuration'\n\nexport interface ViewportDimension {\n height: number\n width: number\n}\n\nlet viewportObservable: Observable | undefined\n\nexport function initViewportObservable(configuration: RumConfiguration) {\n if (!viewportObservable) {\n viewportObservable = createViewportObservable(configuration)\n }\n return viewportObservable\n}\n\nexport function createViewportObservable(configuration: RumConfiguration) {\n const observable = new Observable(() => {\n const { throttled: updateDimension } = throttle(() => {\n observable.notify(getViewportDimension())\n }, 200)\n\n return addEventListener(configuration, window, DOM_EVENT.RESIZE, updateDimension, { capture: true, passive: true })\n .stop\n })\n\n return observable\n}\n\n// excludes the width and height of any rendered classic scrollbar that is fixed to the visual viewport\nexport function getViewportDimension(): ViewportDimension {\n const visual = window.visualViewport\n if (visual) {\n return {\n width: Number(visual.width * visual.scale),\n height: Number(visual.height * visual.scale),\n }\n }\n\n return {\n width: Number(window.innerWidth || 0),\n height: Number(window.innerHeight || 0),\n }\n}\n","import {\n noop,\n isExperimentalFeatureEnabled,\n ExperimentalFeature,\n ONE_MINUTE,\n addTelemetryDebug,\n elapsed,\n} from '@datadog/browser-core'\nimport type { ClocksState, Duration } from '@datadog/browser-core'\nimport { RumPerformanceEntryType, supportPerformanceTimingEvent } from '../../../browser/performanceCollection'\nimport type { RumFirstInputTiming, RumPerformanceEventTiming } from '../../../browser/performanceCollection'\nimport { LifeCycleEventType } from '../../lifeCycle'\nimport type { LifeCycle } from '../../lifeCycle'\nimport { ViewLoadingType } from '../../../rawRumEvent.types'\nimport { getSelectorFromElement } from '../../getSelectorFromElement'\nimport { isElementNode } from '../../../browser/htmlDomUtils'\nimport type { RumConfiguration } from '../../configuration'\nimport { getInteractionCount, initInteractionCountPolyfill } from './interactionCountPolyfill'\n\n// Arbitrary value to prevent unnecessary memory usage on views with lots of interactions.\nconst MAX_INTERACTION_ENTRIES = 10\n\nexport interface InteractionToNextPaint {\n value: Duration\n targetSelector?: string\n}\n/**\n * Track the interaction to next paint (INP).\n * To avoid outliers, return the p98 worst interaction of the view.\n * Documentation: https://web.dev/inp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/onINP.ts\n */\nexport function trackInteractionToNextPaint(\n configuration: RumConfiguration,\n viewStart: ClocksState,\n viewLoadingType: ViewLoadingType,\n lifeCycle: LifeCycle\n) {\n if (\n !isInteractionToNextPaintSupported() ||\n !isExperimentalFeatureEnabled(ExperimentalFeature.INTERACTION_TO_NEXT_PAINT)\n ) {\n return {\n getInteractionToNextPaint: () => undefined,\n stop: noop,\n }\n }\n\n const { getViewInteractionCount } = trackViewInteractionCount(viewLoadingType)\n const longestInteractions = trackLongestInteractions(getViewInteractionCount)\n let interactionToNextPaint = -1 as Duration\n let interactionToNextPaintTargetSelector: string | undefined\n let telemetryCollected = false\n\n const { unsubscribe: stop } = lifeCycle.subscribe(LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED, (entries) => {\n for (const entry of entries) {\n if (\n (entry.entryType === RumPerformanceEntryType.EVENT ||\n entry.entryType === RumPerformanceEntryType.FIRST_INPUT) &&\n entry.interactionId\n ) {\n longestInteractions.process(entry)\n }\n }\n\n const newInteraction = longestInteractions.estimateP98Interaction()\n if (newInteraction) {\n interactionToNextPaint = newInteraction.duration\n if (interactionToNextPaint > 10 * ONE_MINUTE && !telemetryCollected) {\n telemetryCollected = true\n addTelemetryDebug('INP outlier', {\n inp: interactionToNextPaint,\n interaction: {\n timeFromViewStart: elapsed(viewStart.relative, newInteraction.startTime),\n duration: newInteraction.duration,\n startTime: newInteraction.startTime,\n processingStart: newInteraction.processingStart,\n processingEnd: newInteraction.processingEnd,\n interactionId: newInteraction.interactionId,\n name: newInteraction.name,\n targetNodeName: newInteraction.target?.nodeName,\n },\n })\n }\n\n if (\n isExperimentalFeatureEnabled(ExperimentalFeature.WEB_VITALS_ATTRIBUTION) &&\n newInteraction.target &&\n isElementNode(newInteraction.target)\n ) {\n interactionToNextPaintTargetSelector = getSelectorFromElement(\n newInteraction.target,\n configuration.actionNameAttribute\n )\n } else {\n interactionToNextPaintTargetSelector = undefined\n }\n }\n })\n\n return {\n getInteractionToNextPaint: (): InteractionToNextPaint | undefined => {\n // If no INP duration where captured because of the performanceObserver 40ms threshold\n // but the view interaction count > 0 then report 0\n if (interactionToNextPaint >= 0) {\n return {\n value: interactionToNextPaint,\n targetSelector: interactionToNextPaintTargetSelector,\n }\n } else if (getViewInteractionCount()) {\n return {\n value: 0 as Duration,\n }\n }\n },\n stop,\n }\n}\n\nfunction trackLongestInteractions(getViewInteractionCount: () => number) {\n const longestInteractions: Array = []\n\n function sortAndTrimLongestInteractions() {\n longestInteractions.sort((a, b) => b.duration - a.duration).splice(MAX_INTERACTION_ENTRIES)\n }\n\n return {\n /**\n * Process the performance entry:\n * - if its duration is long enough, add the performance entry to the list of worst interactions\n * - if an entry with the same interaction id exists and its duration is lower than the new one, then replace it in the list of worst interactions\n */\n process(entry: RumPerformanceEventTiming | RumFirstInputTiming) {\n const interactionIndex = longestInteractions.findIndex(\n (interaction) => entry.interactionId === interaction.interactionId\n )\n\n const minLongestInteraction = longestInteractions[longestInteractions.length - 1]\n\n if (interactionIndex !== -1) {\n if (entry.duration > longestInteractions[interactionIndex].duration) {\n longestInteractions[interactionIndex] = entry\n sortAndTrimLongestInteractions()\n }\n } else if (\n longestInteractions.length < MAX_INTERACTION_ENTRIES ||\n entry.duration > minLongestInteraction.duration\n ) {\n longestInteractions.push(entry)\n sortAndTrimLongestInteractions()\n }\n },\n /**\n * Compute the p98 longest interaction.\n * For better performance the computation is based on 10 longest interactions and the interaction count of the current view.\n */\n estimateP98Interaction(): RumPerformanceEventTiming | RumFirstInputTiming | undefined {\n const interactionIndex = Math.min(longestInteractions.length - 1, Math.floor(getViewInteractionCount() / 50))\n return longestInteractions[interactionIndex]\n },\n }\n}\n\nexport function trackViewInteractionCount(viewLoadingType: ViewLoadingType) {\n initInteractionCountPolyfill()\n const previousInteractionCount = viewLoadingType === ViewLoadingType.INITIAL_LOAD ? 0 : getInteractionCount()\n return {\n getViewInteractionCount: () => getInteractionCount()! - previousInteractionCount,\n }\n}\n\nexport function isInteractionToNextPaintSupported() {\n return (\n supportPerformanceTimingEvent(RumPerformanceEntryType.EVENT) &&\n window.PerformanceEventTiming &&\n 'interactionId' in PerformanceEventTiming.prototype\n )\n}\n","export function getScrollX() {\n let scrollX\n const visual = window.visualViewport\n if (visual) {\n scrollX = visual.pageLeft - visual.offsetLeft\n } else if (window.scrollX !== undefined) {\n scrollX = window.scrollX\n } else {\n scrollX = window.pageXOffset || 0\n }\n return Math.round(scrollX)\n}\n\nexport function getScrollY() {\n let scrollY\n const visual = window.visualViewport\n if (visual) {\n scrollY = visual.pageTop - visual.offsetTop\n } else if (window.scrollY !== undefined) {\n scrollY = window.scrollY\n } else {\n scrollY = window.pageYOffset || 0\n }\n return Math.round(scrollY)\n}\n","import type { ClocksState, Duration } from '@datadog/browser-core'\nimport {\n Observable,\n ONE_SECOND,\n elapsed,\n relativeNow,\n throttle,\n addEventListener,\n DOM_EVENT,\n monitor,\n} from '@datadog/browser-core'\nimport type { RumConfiguration } from '../../configuration'\nimport { getScrollY } from '../../../browser/scroll'\nimport { getViewportDimension } from '../../../browser/viewportObservable'\n\n/** Arbitrary scroll throttle duration */\nexport const THROTTLE_SCROLL_DURATION = ONE_SECOND\n\nexport interface ScrollMetrics {\n maxDepth: number\n maxScrollHeight: number\n maxDepthScrollTop: number\n maxScrollHeightTime: Duration\n}\n\nexport function trackScrollMetrics(\n configuration: RumConfiguration,\n viewStart: ClocksState,\n callback: (scrollMetrics: ScrollMetrics) => void,\n scrollValues = createScrollValuesObservable(configuration)\n) {\n let maxScrollDepth = 0\n let maxScrollHeight = 0\n let maxScrollHeightTime = 0 as Duration\n\n const subscription = scrollValues.subscribe(({ scrollDepth, scrollTop, scrollHeight }) => {\n let shouldUpdate = false\n\n if (scrollDepth > maxScrollDepth) {\n maxScrollDepth = scrollDepth\n shouldUpdate = true\n }\n\n if (scrollHeight > maxScrollHeight) {\n maxScrollHeight = scrollHeight\n const now = relativeNow()\n maxScrollHeightTime = elapsed(viewStart.relative, now)\n shouldUpdate = true\n }\n\n if (shouldUpdate) {\n callback({\n maxDepth: Math.min(maxScrollDepth, maxScrollHeight),\n maxDepthScrollTop: scrollTop,\n maxScrollHeight,\n maxScrollHeightTime,\n })\n }\n })\n\n return {\n stop: () => subscription.unsubscribe(),\n }\n}\n\nexport interface ScrollValues {\n scrollDepth: number\n scrollTop: number\n scrollHeight: number\n}\n\nexport function computeScrollValues() {\n const scrollTop = getScrollY()\n\n const { height } = getViewportDimension()\n\n const scrollHeight = Math.round((document.scrollingElement || document.documentElement).scrollHeight)\n\n const scrollDepth = Math.round(height + scrollTop)\n\n return {\n scrollHeight,\n scrollDepth,\n scrollTop,\n }\n}\n\nexport function createScrollValuesObservable(\n configuration: RumConfiguration,\n throttleDuration = THROTTLE_SCROLL_DURATION\n): Observable {\n const observable = new Observable(() => {\n function notify() {\n observable.notify(computeScrollValues())\n }\n\n if (window.ResizeObserver) {\n const throttledNotify = throttle(notify, throttleDuration, {\n leading: false,\n trailing: true,\n })\n\n const observerTarget = document.scrollingElement || document.documentElement\n const resizeObserver = new ResizeObserver(monitor(throttledNotify.throttled))\n resizeObserver.observe(observerTarget)\n const eventListener = addEventListener(configuration, window, DOM_EVENT.SCROLL, throttledNotify.throttled, {\n passive: true,\n })\n\n return () => {\n throttledNotify.cancel()\n resizeObserver.unobserve(observerTarget)\n eventListener.stop()\n }\n }\n })\n\n return observable\n}\n","import type { ClocksState, Duration, Observable } from '@datadog/browser-core'\nimport type { ViewLoadingType } from '../../../rawRumEvent.types'\nimport type { RumConfiguration } from '../../configuration'\nimport type { LifeCycle } from '../../lifeCycle'\nimport type { CumulativeLayoutShift } from './trackCumulativeLayoutShift'\nimport { trackCumulativeLayoutShift } from './trackCumulativeLayoutShift'\nimport type { InteractionToNextPaint } from './trackInteractionToNextPaint'\nimport { trackInteractionToNextPaint } from './trackInteractionToNextPaint'\nimport { trackLoadingTime } from './trackLoadingTime'\nimport type { ScrollMetrics } from './trackScrollMetrics'\nimport { trackScrollMetrics } from './trackScrollMetrics'\n\nexport interface CommonViewMetrics {\n loadingTime?: Duration\n cumulativeLayoutShift?: CumulativeLayoutShift\n interactionToNextPaint?: InteractionToNextPaint\n scroll?: ScrollMetrics\n}\n\nexport function trackCommonViewMetrics(\n lifeCycle: LifeCycle,\n domMutationObservable: Observable,\n configuration: RumConfiguration,\n scheduleViewUpdate: () => void,\n loadingType: ViewLoadingType,\n viewStart: ClocksState\n) {\n const commonViewMetrics: CommonViewMetrics = {}\n\n const { stop: stopLoadingTimeTracking, setLoadEvent } = trackLoadingTime(\n lifeCycle,\n domMutationObservable,\n configuration,\n loadingType,\n viewStart,\n (newLoadingTime) => {\n commonViewMetrics.loadingTime = newLoadingTime\n scheduleViewUpdate()\n }\n )\n\n const { stop: stopScrollMetricsTracking } = trackScrollMetrics(configuration, viewStart, (newScrollMetrics) => {\n commonViewMetrics.scroll = newScrollMetrics\n })\n\n const { stop: stopCLSTracking } = trackCumulativeLayoutShift(configuration, lifeCycle, (cumulativeLayoutShift) => {\n commonViewMetrics.cumulativeLayoutShift = cumulativeLayoutShift\n scheduleViewUpdate()\n })\n\n const { stop: stopINPTracking, getInteractionToNextPaint } = trackInteractionToNextPaint(\n configuration,\n viewStart,\n loadingType,\n lifeCycle\n )\n\n return {\n stop: () => {\n stopLoadingTimeTracking()\n stopCLSTracking()\n stopScrollMetricsTracking()\n stopINPTracking()\n },\n setLoadEvent,\n getCommonViewMetrics: () => {\n commonViewMetrics.interactionToNextPaint = getInteractionToNextPaint()\n return commonViewMetrics\n },\n }\n}\n","import type { ClocksState, Duration, Observable } from '@datadog/browser-core'\nimport { elapsed } from '@datadog/browser-core'\nimport { waitPageActivityEnd } from '../../waitPageActivityEnd'\nimport type { RumConfiguration } from '../../configuration'\nimport type { LifeCycle } from '../../lifeCycle'\nimport { ViewLoadingType } from '../../../rawRumEvent.types'\n\nexport function trackLoadingTime(\n lifeCycle: LifeCycle,\n domMutationObservable: Observable,\n configuration: RumConfiguration,\n loadType: ViewLoadingType,\n viewStart: ClocksState,\n callback: (loadingTime: Duration) => void\n) {\n let isWaitingForLoadEvent = loadType === ViewLoadingType.INITIAL_LOAD\n let isWaitingForActivityLoadingTime = true\n const loadingTimeCandidates: Duration[] = []\n\n function invokeCallbackIfAllCandidatesAreReceived() {\n if (!isWaitingForActivityLoadingTime && !isWaitingForLoadEvent && loadingTimeCandidates.length > 0) {\n callback(Math.max(...loadingTimeCandidates) as Duration)\n }\n }\n\n const { stop } = waitPageActivityEnd(lifeCycle, domMutationObservable, configuration, (event) => {\n if (isWaitingForActivityLoadingTime) {\n isWaitingForActivityLoadingTime = false\n if (event.hadActivity) {\n loadingTimeCandidates.push(elapsed(viewStart.timeStamp, event.end))\n }\n invokeCallbackIfAllCandidatesAreReceived()\n }\n })\n\n return {\n stop,\n setLoadEvent: (loadEvent: Duration) => {\n if (isWaitingForLoadEvent) {\n isWaitingForLoadEvent = false\n loadingTimeCandidates.push(loadEvent)\n invokeCallbackIfAllCandidatesAreReceived()\n }\n },\n }\n}\n","import {\n round,\n type RelativeTime,\n find,\n ONE_SECOND,\n isExperimentalFeatureEnabled,\n ExperimentalFeature,\n noop,\n} from '@datadog/browser-core'\nimport { isElementNode } from '../../../browser/htmlDomUtils'\nimport type { LifeCycle } from '../../lifeCycle'\nimport { LifeCycleEventType } from '../../lifeCycle'\nimport type { RumLayoutShiftTiming } from '../../../browser/performanceCollection'\nimport { supportPerformanceTimingEvent, RumPerformanceEntryType } from '../../../browser/performanceCollection'\nimport { getSelectorFromElement } from '../../getSelectorFromElement'\nimport type { RumConfiguration } from '../../configuration'\n\nexport interface CumulativeLayoutShift {\n value: number\n targetSelector?: string\n}\n\n/**\n * Track the cumulative layout shifts (CLS).\n * Layout shifts are grouped into session windows.\n * The minimum gap between session windows is 1 second.\n * The maximum duration of a session window is 5 second.\n * The session window layout shift value is the sum of layout shifts inside it.\n * The CLS value is the max of session windows values.\n *\n * This yields a new value whenever the CLS value is updated (a higher session window value is computed).\n *\n * See isLayoutShiftSupported to check for browser support.\n *\n * Documentation:\n * https://web.dev/cls/\n * https://web.dev/evolving-cls/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getCLS.ts\n */\nexport function trackCumulativeLayoutShift(\n configuration: RumConfiguration,\n lifeCycle: LifeCycle,\n callback: (cumulativeLayoutShift: CumulativeLayoutShift) => void\n) {\n if (!isLayoutShiftSupported()) {\n return {\n stop: noop,\n }\n }\n\n let maxClsValue = 0\n\n // if no layout shift happen the value should be reported as 0\n callback({\n value: 0,\n })\n\n const window = slidingSessionWindow()\n\n const { unsubscribe: stop } = lifeCycle.subscribe(LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED, (entries) => {\n for (const entry of entries) {\n if (entry.entryType === RumPerformanceEntryType.LAYOUT_SHIFT && !entry.hadRecentInput) {\n window.update(entry)\n\n if (window.value() > maxClsValue) {\n maxClsValue = window.value()\n const cls = round(maxClsValue, 4)\n const clsTarget = window.largestLayoutShiftTarget()\n let cslTargetSelector\n\n if (isExperimentalFeatureEnabled(ExperimentalFeature.WEB_VITALS_ATTRIBUTION) && clsTarget) {\n cslTargetSelector = getSelectorFromElement(clsTarget, configuration.actionNameAttribute)\n }\n\n callback({\n value: cls,\n targetSelector: cslTargetSelector,\n })\n }\n }\n }\n })\n\n return {\n stop,\n }\n}\n\nfunction slidingSessionWindow() {\n let value = 0\n let startTime: RelativeTime\n let endTime: RelativeTime\n\n let largestLayoutShift = 0\n let largestLayoutShiftTarget: HTMLElement | undefined\n let largestLayoutShiftTime: RelativeTime\n\n return {\n update: (entry: RumLayoutShiftTiming) => {\n const shouldCreateNewWindow =\n startTime === undefined ||\n entry.startTime - endTime >= ONE_SECOND ||\n entry.startTime - startTime >= 5 * ONE_SECOND\n if (shouldCreateNewWindow) {\n startTime = endTime = entry.startTime\n value = entry.value\n largestLayoutShift = 0\n largestLayoutShiftTarget = undefined\n } else {\n value += entry.value\n endTime = entry.startTime\n }\n\n if (entry.value > largestLayoutShift) {\n largestLayoutShift = entry.value\n largestLayoutShiftTime = entry.startTime\n\n if (entry.sources?.length) {\n largestLayoutShiftTarget = find(\n entry.sources,\n (s): s is { node: HTMLElement } => !!s.node && isElementNode(s.node)\n )?.node\n } else {\n largestLayoutShiftTarget = undefined\n }\n }\n },\n value: () => value,\n largestLayoutShiftTarget: () => largestLayoutShiftTarget,\n largestLayoutShiftTime: () => largestLayoutShiftTime,\n }\n}\n\n/**\n * Check whether `layout-shift` is supported by the browser.\n */\nexport function isLayoutShiftSupported() {\n return supportPerformanceTimingEvent(RumPerformanceEntryType.LAYOUT_SHIFT)\n}\n","import type { Duration, ClocksState, TimeStamp, Subscription, RelativeTime } from '@datadog/browser-core'\nimport {\n noop,\n PageExitReason,\n shallowClone,\n elapsed,\n generateUUID,\n ONE_MINUTE,\n throttle,\n clocksNow,\n clocksOrigin,\n timeStampNow,\n display,\n looksLikeRelativeTime,\n setInterval,\n clearInterval,\n setTimeout,\n Observable,\n} from '@datadog/browser-core'\n\nimport type { ViewCustomTimings } from '../../rawRumEvent.types'\nimport { ViewLoadingType } from '../../rawRumEvent.types'\n\nimport type { LifeCycle } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport type { EventCounts } from '../trackEventCounts'\nimport type { LocationChange } from '../../browser/locationChangeObservable'\nimport type { RumConfiguration } from '../configuration'\nimport { trackViewEventCounts } from './trackViewEventCounts'\nimport { trackInitialViewMetrics } from './viewMetrics/trackInitialViewMetrics'\nimport type { InitialViewMetrics } from './viewMetrics/trackInitialViewMetrics'\nimport type { CommonViewMetrics } from './viewMetrics/trackCommonViewMetrics'\nimport { trackCommonViewMetrics } from './viewMetrics/trackCommonViewMetrics'\n\nexport interface ViewEvent {\n id: string\n name?: string\n service?: string\n version?: string\n location: Readonly\n commonViewMetrics: CommonViewMetrics\n initialViewMetrics: InitialViewMetrics\n customTimings: ViewCustomTimings\n eventCounts: EventCounts\n documentVersion: number\n startClocks: ClocksState\n duration: Duration\n isActive: boolean\n sessionIsActive: boolean\n loadingType: ViewLoadingType\n}\n\nexport interface ViewCreatedEvent {\n id: string\n name?: string\n service?: string\n version?: string\n startClocks: ClocksState\n}\n\nexport interface ViewEndedEvent {\n endClocks: ClocksState\n}\n\nexport const THROTTLE_VIEW_UPDATE_PERIOD = 3000\nexport const SESSION_KEEP_ALIVE_INTERVAL = 5 * ONE_MINUTE\n\n// Some events or metrics can be captured after the end of the view. To avoid missing those;\n// an arbitrary delay is added for stopping their tracking after the view ends.\n//\n// Ideally, we would not stop and keep tracking events or metrics until the end of the session.\n// But this might have a small performance impact if there are many many views.\n// So let's have a fairly short delay improving the situation in most cases and avoid impacting performances too much.\nexport const KEEP_TRACKING_AFTER_VIEW_DELAY = 5 * ONE_MINUTE\n\nexport interface ViewOptions {\n name?: string\n service?: string\n version?: string\n}\n\nexport function trackViews(\n location: Location,\n lifeCycle: LifeCycle,\n domMutationObservable: Observable,\n configuration: RumConfiguration,\n locationChangeObservable: Observable,\n areViewsTrackedAutomatically: boolean,\n initialViewOptions?: ViewOptions\n) {\n const activeViews: Set> = new Set()\n let currentView = startNewView(ViewLoadingType.INITIAL_LOAD, clocksOrigin(), initialViewOptions)\n\n startViewLifeCycle()\n\n let locationChangeSubscription: Subscription\n if (areViewsTrackedAutomatically) {\n locationChangeSubscription = renewViewOnLocationChange(locationChangeObservable)\n }\n\n function startNewView(loadingType: ViewLoadingType, startClocks?: ClocksState, viewOptions?: ViewOptions) {\n const newlyCreatedView = newView(\n lifeCycle,\n domMutationObservable,\n configuration,\n location,\n loadingType,\n startClocks,\n viewOptions\n )\n activeViews.add(newlyCreatedView)\n newlyCreatedView.stopObservable.subscribe(() => {\n activeViews.delete(newlyCreatedView)\n })\n return newlyCreatedView\n }\n\n function startViewLifeCycle() {\n lifeCycle.subscribe(LifeCycleEventType.SESSION_RENEWED, () => {\n // Renew view on session renewal\n currentView = startNewView(ViewLoadingType.ROUTE_CHANGE, undefined, {\n name: currentView.name,\n service: currentView.service,\n version: currentView.version,\n })\n })\n\n lifeCycle.subscribe(LifeCycleEventType.SESSION_EXPIRED, () => {\n currentView.end({ sessionIsActive: false })\n })\n\n // End the current view on page unload\n lifeCycle.subscribe(LifeCycleEventType.PAGE_EXITED, (pageExitEvent) => {\n if (pageExitEvent.reason === PageExitReason.UNLOADING || pageExitEvent.reason === PageExitReason.PAGEHIDE) {\n currentView.end()\n }\n })\n }\n\n function renewViewOnLocationChange(locationChangeObservable: Observable) {\n return locationChangeObservable.subscribe(({ oldLocation, newLocation }) => {\n if (areDifferentLocation(oldLocation, newLocation)) {\n currentView.end()\n currentView = startNewView(ViewLoadingType.ROUTE_CHANGE)\n }\n })\n }\n\n return {\n addTiming: (name: string, time: RelativeTime | TimeStamp = timeStampNow()) => {\n currentView.addTiming(name, time)\n },\n startView: (options?: ViewOptions, startClocks?: ClocksState) => {\n currentView.end({ endClocks: startClocks })\n currentView = startNewView(ViewLoadingType.ROUTE_CHANGE, startClocks, options)\n },\n stop: () => {\n locationChangeSubscription?.unsubscribe()\n currentView.end()\n activeViews.forEach((view) => view.stop())\n },\n }\n}\n\nfunction newView(\n lifeCycle: LifeCycle,\n domMutationObservable: Observable,\n configuration: RumConfiguration,\n initialLocation: Location,\n loadingType: ViewLoadingType,\n startClocks: ClocksState = clocksNow(),\n viewOptions?: ViewOptions\n) {\n // Setup initial values\n const id = generateUUID()\n const stopObservable = new Observable()\n const customTimings: ViewCustomTimings = {}\n let documentVersion = 0\n let endClocks: ClocksState | undefined\n const location = shallowClone(initialLocation)\n\n let sessionIsActive = true\n let name: string | undefined\n let service: string | undefined\n let version: string | undefined\n if (viewOptions) {\n name = viewOptions.name\n service = viewOptions.service\n version = viewOptions.version\n }\n\n lifeCycle.notify(LifeCycleEventType.VIEW_CREATED, {\n id,\n name,\n startClocks,\n service,\n version,\n })\n\n // Update the view every time the measures are changing\n const { throttled: scheduleViewUpdate, cancel: cancelScheduleViewUpdate } = throttle(\n triggerViewUpdate,\n THROTTLE_VIEW_UPDATE_PERIOD,\n {\n leading: false,\n }\n )\n\n const {\n setLoadEvent,\n stop: stopCommonViewMetricsTracking,\n getCommonViewMetrics,\n } = trackCommonViewMetrics(\n lifeCycle,\n domMutationObservable,\n configuration,\n scheduleViewUpdate,\n loadingType,\n startClocks\n )\n\n const { stop: stopInitialViewMetricsTracking, initialViewMetrics } =\n loadingType === ViewLoadingType.INITIAL_LOAD\n ? trackInitialViewMetrics(lifeCycle, configuration, setLoadEvent, scheduleViewUpdate)\n : { stop: noop, initialViewMetrics: {} as InitialViewMetrics }\n\n const { stop: stopEventCountsTracking, eventCounts } = trackViewEventCounts(lifeCycle, id, scheduleViewUpdate)\n\n // Session keep alive\n const keepAliveIntervalId = setInterval(triggerViewUpdate, SESSION_KEEP_ALIVE_INTERVAL)\n\n // Initial view update\n triggerViewUpdate()\n\n function triggerViewUpdate() {\n cancelScheduleViewUpdate()\n documentVersion += 1\n const currentEnd = endClocks === undefined ? timeStampNow() : endClocks.timeStamp\n\n lifeCycle.notify(LifeCycleEventType.VIEW_UPDATED, {\n customTimings,\n documentVersion,\n id,\n name,\n service,\n version,\n loadingType,\n location,\n startClocks,\n commonViewMetrics: getCommonViewMetrics(),\n initialViewMetrics,\n duration: elapsed(startClocks.timeStamp, currentEnd),\n isActive: endClocks === undefined,\n sessionIsActive,\n eventCounts,\n })\n }\n\n return {\n name,\n service,\n version,\n stopObservable,\n end(options: { endClocks?: ClocksState; sessionIsActive?: boolean } = {}) {\n if (endClocks) {\n // view already ended\n return\n }\n endClocks = options.endClocks ?? clocksNow()\n sessionIsActive = options.sessionIsActive ?? true\n\n lifeCycle.notify(LifeCycleEventType.VIEW_ENDED, { endClocks })\n clearInterval(keepAliveIntervalId)\n stopCommonViewMetricsTracking()\n triggerViewUpdate()\n setTimeout(() => {\n this.stop()\n }, KEEP_TRACKING_AFTER_VIEW_DELAY)\n },\n stop() {\n stopInitialViewMetricsTracking()\n stopEventCountsTracking()\n stopObservable.notify()\n },\n addTiming(name: string, time: RelativeTime | TimeStamp) {\n if (endClocks) {\n return\n }\n const relativeTime = looksLikeRelativeTime(time) ? time : elapsed(startClocks.timeStamp, time)\n customTimings[sanitizeTiming(name)] = relativeTime\n scheduleViewUpdate()\n },\n }\n}\n\n/**\n * Timing name is used as facet path that must contain only letters, digits, or the characters - _ . @ $\n */\nfunction sanitizeTiming(name: string) {\n const sanitized = name.replace(/[^a-zA-Z0-9-_.@$]/g, '_')\n if (sanitized !== name) {\n display.warn(`Invalid timing name: ${name}, sanitized to: ${sanitized}`)\n }\n return sanitized\n}\n\nfunction areDifferentLocation(currentLocation: Location, otherLocation: Location) {\n return (\n currentLocation.pathname !== otherLocation.pathname ||\n (!isHashAnAnchor(otherLocation.hash) &&\n getPathFromHash(otherLocation.hash) !== getPathFromHash(currentLocation.hash))\n )\n}\n\nfunction isHashAnAnchor(hash: string) {\n const correspondingId = hash.substr(1)\n return !!document.getElementById(correspondingId)\n}\n\nfunction getPathFromHash(hash: string) {\n const index = hash.indexOf('?')\n return index < 0 ? hash : hash.slice(0, index)\n}\n","import type { Duration } from '@datadog/browser-core'\nimport type { RumConfiguration } from '../../configuration'\nimport type { LifeCycle } from '../../lifeCycle'\nimport { trackFirstContentfulPaint } from './trackFirstContentfulPaint'\nimport type { FirstInput } from './trackFirstInput'\nimport { trackFirstInput } from './trackFirstInput'\nimport type { NavigationTimings } from './trackNavigationTimings'\nimport { trackNavigationTimings } from './trackNavigationTimings'\nimport type { LargestContentfulPaint } from './trackLargestContentfulPaint'\nimport { trackLargestContentfulPaint } from './trackLargestContentfulPaint'\nimport { trackFirstHidden } from './trackFirstHidden'\n\nexport interface InitialViewMetrics {\n firstContentfulPaint?: Duration\n navigationTimings?: NavigationTimings\n largestContentfulPaint?: LargestContentfulPaint\n firstInput?: FirstInput\n}\n\nexport function trackInitialViewMetrics(\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n setLoadEvent: (loadEnd: Duration) => void,\n scheduleViewUpdate: () => void\n) {\n const initialViewMetrics: InitialViewMetrics = {}\n\n const { stop: stopNavigationTracking } = trackNavigationTimings(lifeCycle, (navigationTimings) => {\n setLoadEvent(navigationTimings.loadEvent)\n initialViewMetrics.navigationTimings = navigationTimings\n scheduleViewUpdate()\n })\n\n const firstHidden = trackFirstHidden(configuration)\n const { stop: stopFCPTracking } = trackFirstContentfulPaint(lifeCycle, firstHidden, (firstContentfulPaint) => {\n initialViewMetrics.firstContentfulPaint = firstContentfulPaint\n scheduleViewUpdate()\n })\n\n const { stop: stopLCPTracking } = trackLargestContentfulPaint(\n lifeCycle,\n configuration,\n firstHidden,\n window,\n (largestContentfulPaint) => {\n initialViewMetrics.largestContentfulPaint = largestContentfulPaint\n scheduleViewUpdate()\n }\n )\n\n const { stop: stopFIDTracking } = trackFirstInput(lifeCycle, configuration, firstHidden, (firstInput) => {\n initialViewMetrics.firstInput = firstInput\n scheduleViewUpdate()\n })\n\n function stop() {\n stopNavigationTracking()\n stopFCPTracking()\n stopLCPTracking()\n stopFIDTracking()\n firstHidden.stop()\n }\n\n return {\n stop,\n initialViewMetrics,\n }\n}\n","import type { Duration } from '@datadog/browser-core'\nimport { relativeNow } from '@datadog/browser-core'\nimport { RumPerformanceEntryType } from '../../../browser/performanceCollection'\nimport type { LifeCycle } from '../../lifeCycle'\nimport { LifeCycleEventType } from '../../lifeCycle'\n\nexport interface NavigationTimings {\n domComplete: Duration\n domContentLoaded: Duration\n domInteractive: Duration\n loadEvent: Duration\n firstByte: Duration | undefined\n}\n\nexport function trackNavigationTimings(lifeCycle: LifeCycle, callback: (timings: NavigationTimings) => void) {\n const { unsubscribe: stop } = lifeCycle.subscribe(LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED, (entries) => {\n for (const entry of entries) {\n if (entry.entryType === RumPerformanceEntryType.NAVIGATION) {\n callback({\n domComplete: entry.domComplete,\n domContentLoaded: entry.domContentLoadedEventEnd,\n domInteractive: entry.domInteractive,\n loadEvent: entry.loadEventEnd,\n // In some cases the value reported is negative or is larger\n // than the current page time. Ignore these cases:\n // https://github.com/GoogleChrome/web-vitals/issues/137\n // https://github.com/GoogleChrome/web-vitals/issues/162\n firstByte: entry.responseStart >= 0 && entry.responseStart <= relativeNow() ? entry.responseStart : undefined,\n })\n }\n }\n })\n\n return { stop }\n}\n","import type { RelativeTime } from '@datadog/browser-core'\nimport { addEventListeners, DOM_EVENT } from '@datadog/browser-core'\nimport type { RumConfiguration } from '../../configuration'\n\nexport type FirstHidden = ReturnType\n\nexport function trackFirstHidden(configuration: RumConfiguration, eventTarget: Window = window) {\n let timeStamp: RelativeTime\n let stopListeners: () => void | undefined\n\n if (document.visibilityState === 'hidden') {\n timeStamp = 0 as RelativeTime\n } else {\n timeStamp = Infinity as RelativeTime\n ;({ stop: stopListeners } = addEventListeners(\n configuration,\n eventTarget,\n [DOM_EVENT.PAGE_HIDE, DOM_EVENT.VISIBILITY_CHANGE],\n (event) => {\n if (event.type === DOM_EVENT.PAGE_HIDE || document.visibilityState === 'hidden') {\n timeStamp = event.timeStamp as RelativeTime\n stopListeners()\n }\n },\n { capture: true }\n ))\n }\n\n return {\n get timeStamp() {\n return timeStamp\n },\n stop() {\n stopListeners?.()\n },\n }\n}\n","import type { Duration, RelativeTime } from '@datadog/browser-core'\nimport { elapsed, find, ExperimentalFeature, isExperimentalFeatureEnabled } from '@datadog/browser-core'\nimport { isElementNode } from '../../../browser/htmlDomUtils'\nimport type { RumConfiguration } from '../../configuration'\nimport type { LifeCycle } from '../../lifeCycle'\nimport { LifeCycleEventType } from '../../lifeCycle'\nimport { RumPerformanceEntryType } from '../../../browser/performanceCollection'\nimport type { RumFirstInputTiming } from '../../../browser/performanceCollection'\nimport { getSelectorFromElement } from '../../getSelectorFromElement'\nimport type { FirstHidden } from './trackFirstHidden'\n\nexport interface FirstInput {\n delay: Duration\n time: RelativeTime\n targetSelector?: string\n}\n\n/**\n * Track the first input occurring during the initial View to return:\n * - First Input Delay\n * - First Input Time\n * Callback is called at most one time.\n * Documentation: https://web.dev/fid/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getFID.ts\n */\nexport function trackFirstInput(\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n firstHidden: FirstHidden,\n callback: (firstInput: FirstInput) => void\n) {\n const { unsubscribe: unsubscribeLifeCycle } = lifeCycle.subscribe(\n LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED,\n (entries) => {\n const firstInputEntry = find(\n entries,\n (entry): entry is RumFirstInputTiming =>\n entry.entryType === RumPerformanceEntryType.FIRST_INPUT && entry.startTime < firstHidden.timeStamp\n )\n if (firstInputEntry) {\n const firstInputDelay = elapsed(firstInputEntry.startTime, firstInputEntry.processingStart)\n let firstInputTargetSelector\n\n if (\n isExperimentalFeatureEnabled(ExperimentalFeature.WEB_VITALS_ATTRIBUTION) &&\n firstInputEntry.target &&\n isElementNode(firstInputEntry.target)\n ) {\n firstInputTargetSelector = getSelectorFromElement(firstInputEntry.target, configuration.actionNameAttribute)\n }\n\n callback({\n // Ensure firstInputDelay to be positive, see\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1185815\n delay: firstInputDelay >= 0 ? firstInputDelay : (0 as Duration),\n time: firstInputEntry.startTime,\n targetSelector: firstInputTargetSelector,\n })\n }\n }\n )\n\n return {\n stop: unsubscribeLifeCycle,\n }\n}\n","import type { LifeCycle } from '../lifeCycle'\nimport { trackEventCounts } from '../trackEventCounts'\n\nexport function trackViewEventCounts(lifeCycle: LifeCycle, viewId: string, onChange: () => void) {\n const { stop, eventCounts } = trackEventCounts({\n lifeCycle,\n isChildEvent: (event) => event.view.id === viewId,\n onChange,\n })\n\n return {\n stop,\n eventCounts,\n }\n}\n","import type { Duration, ServerDuration, Observable } from '@datadog/browser-core'\nimport {\n isExperimentalFeatureEnabled,\n ExperimentalFeature,\n isEmptyObject,\n mapValues,\n toServerDuration,\n isNumber,\n} from '@datadog/browser-core'\nimport type { RecorderApi } from '../../boot/rumPublicApi'\nimport type { RawRumViewEvent } from '../../rawRumEvent.types'\nimport { RumEventType } from '../../rawRumEvent.types'\nimport type { LifeCycle, RawRumEventCollectedData } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\nimport { mapToForegroundPeriods } from '../contexts/foregroundContexts'\nimport type { LocationChange } from '../../browser/locationChangeObservable'\nimport type { RumConfiguration } from '../configuration'\nimport type { FeatureFlagContexts } from '../contexts/featureFlagContext'\nimport type { PageStateHistory } from '../contexts/pageStateHistory'\nimport type { ViewEvent, ViewOptions } from './trackViews'\nimport { trackViews } from './trackViews'\n\nexport function startViewCollection(\n lifeCycle: LifeCycle,\n configuration: RumConfiguration,\n location: Location,\n domMutationObservable: Observable,\n locationChangeObservable: Observable,\n featureFlagContexts: FeatureFlagContexts,\n pageStateHistory: PageStateHistory,\n recorderApi: RecorderApi,\n initialViewOptions?: ViewOptions\n) {\n lifeCycle.subscribe(LifeCycleEventType.VIEW_UPDATED, (view) =>\n lifeCycle.notify(\n LifeCycleEventType.RAW_RUM_EVENT_COLLECTED,\n processViewUpdate(view, configuration, featureFlagContexts, recorderApi, pageStateHistory)\n )\n )\n return trackViews(\n location,\n lifeCycle,\n domMutationObservable,\n configuration,\n locationChangeObservable,\n !configuration.trackViewsManually,\n initialViewOptions\n )\n}\n\nfunction processViewUpdate(\n view: ViewEvent,\n configuration: RumConfiguration,\n featureFlagContexts: FeatureFlagContexts,\n recorderApi: RecorderApi,\n pageStateHistory: PageStateHistory\n): RawRumEventCollectedData {\n const replayStats = recorderApi.getReplayStats(view.id)\n const featureFlagContext = featureFlagContexts.findFeatureFlagEvaluations(view.startClocks.relative)\n const pageStatesEnabled = isExperimentalFeatureEnabled(ExperimentalFeature.PAGE_STATES)\n const pageStates = pageStateHistory.findAll(view.startClocks.relative, view.duration)\n const viewEvent: RawRumViewEvent = {\n _dd: {\n document_version: view.documentVersion,\n replay_stats: replayStats,\n page_states: pageStatesEnabled ? pageStates : undefined,\n },\n date: view.startClocks.timeStamp,\n type: RumEventType.VIEW,\n view: {\n action: {\n count: view.eventCounts.actionCount,\n },\n frustration: {\n count: view.eventCounts.frustrationCount,\n },\n cumulative_layout_shift: view.commonViewMetrics.cumulativeLayoutShift?.value,\n cumulative_layout_shift_target_selector: view.commonViewMetrics.cumulativeLayoutShift?.targetSelector,\n first_byte: toServerDuration(view.initialViewMetrics.navigationTimings?.firstByte),\n dom_complete: toServerDuration(view.initialViewMetrics.navigationTimings?.domComplete),\n dom_content_loaded: toServerDuration(view.initialViewMetrics.navigationTimings?.domContentLoaded),\n dom_interactive: toServerDuration(view.initialViewMetrics.navigationTimings?.domInteractive),\n error: {\n count: view.eventCounts.errorCount,\n },\n first_contentful_paint: toServerDuration(view.initialViewMetrics.firstContentfulPaint),\n first_input_delay: toServerDuration(view.initialViewMetrics.firstInput?.delay),\n first_input_time: toServerDuration(view.initialViewMetrics.firstInput?.time),\n first_input_target_selector: view.initialViewMetrics.firstInput?.targetSelector,\n interaction_to_next_paint: toServerDuration(view.commonViewMetrics.interactionToNextPaint?.value),\n interaction_to_next_paint_target_selector: view.commonViewMetrics.interactionToNextPaint?.targetSelector,\n is_active: view.isActive,\n name: view.name,\n largest_contentful_paint: toServerDuration(view.initialViewMetrics.largestContentfulPaint?.value),\n largest_contentful_paint_target_selector: view.initialViewMetrics.largestContentfulPaint?.targetSelector,\n load_event: toServerDuration(view.initialViewMetrics.navigationTimings?.loadEvent),\n loading_time: discardNegativeDuration(toServerDuration(view.commonViewMetrics.loadingTime)),\n loading_type: view.loadingType,\n long_task: {\n count: view.eventCounts.longTaskCount,\n },\n resource: {\n count: view.eventCounts.resourceCount,\n },\n time_spent: toServerDuration(view.duration),\n in_foreground_periods:\n !pageStatesEnabled && pageStates ? mapToForegroundPeriods(pageStates, view.duration) : undefined, // Todo: Remove in the next major release\n },\n feature_flags: featureFlagContext && !isEmptyObject(featureFlagContext) ? featureFlagContext : undefined,\n display: view.commonViewMetrics.scroll\n ? {\n scroll: {\n max_depth: view.commonViewMetrics.scroll.maxDepth,\n max_depth_scroll_top: view.commonViewMetrics.scroll.maxDepthScrollTop,\n max_scroll_height: view.commonViewMetrics.scroll.maxScrollHeight,\n max_scroll_height_time: toServerDuration(view.commonViewMetrics.scroll.maxScrollHeightTime),\n },\n }\n : undefined,\n session: {\n has_replay: replayStats ? true : undefined,\n is_active: view.sessionIsActive ? undefined : false,\n },\n privacy: {\n replay_level: configuration.defaultPrivacyLevel,\n },\n }\n if (!isEmptyObject(view.customTimings)) {\n viewEvent.view.custom_timings = mapValues(\n view.customTimings,\n toServerDuration as (duration: Duration) => ServerDuration\n )\n }\n return {\n rawRumEvent: viewEvent,\n startTime: view.startClocks.relative,\n domainContext: {\n location: view.location,\n },\n }\n}\n\nfunction discardNegativeDuration(duration: ServerDuration | undefined): ServerDuration | undefined {\n return isNumber(duration) && duration < 0 ? undefined : duration\n}\n","import type { Observable } from '../../tools/observable'\nimport type { Context } from '../../tools/serialisation/context'\nimport { ValueHistory } from '../../tools/valueHistory'\nimport type { RelativeTime } from '../../tools/utils/timeUtils'\nimport { relativeNow, clocksOrigin, ONE_MINUTE } from '../../tools/utils/timeUtils'\nimport { DOM_EVENT, addEventListener, addEventListeners } from '../../browser/addEventListener'\nimport { clearInterval, setInterval } from '../../tools/timer'\nimport type { Configuration } from '../configuration'\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants'\nimport { startSessionStore } from './sessionStore'\n\nexport interface SessionManager {\n findActiveSession: (startTime?: RelativeTime) => SessionContext | undefined\n renewObservable: Observable\n expireObservable: Observable\n expire: () => void\n}\n\nexport interface SessionContext extends Context {\n id: string\n trackingType: TrackingType\n}\n\nexport const VISIBILITY_CHECK_DELAY = ONE_MINUTE\nconst SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY\nlet stopCallbacks: Array<() => void> = []\n\nexport function startSessionManager(\n configuration: Configuration,\n productKey: string,\n computeSessionState: (rawTrackingType?: string) => { trackingType: TrackingType; isTracked: boolean }\n): SessionManager {\n // TODO - Improve configuration type and remove assertion\n const sessionStore = startSessionStore(configuration.sessionStoreStrategyType!, productKey, computeSessionState)\n stopCallbacks.push(() => sessionStore.stop())\n\n const sessionContextHistory = new ValueHistory>(SESSION_CONTEXT_TIMEOUT_DELAY)\n stopCallbacks.push(() => sessionContextHistory.stop())\n\n sessionStore.renewObservable.subscribe(() => {\n sessionContextHistory.add(buildSessionContext(), relativeNow())\n })\n sessionStore.expireObservable.subscribe(() => {\n sessionContextHistory.closeActive(relativeNow())\n })\n\n sessionStore.expandOrRenewSession()\n sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative)\n\n trackActivity(configuration, () => sessionStore.expandOrRenewSession())\n trackVisibility(configuration, () => sessionStore.expandSession())\n\n function buildSessionContext() {\n return {\n id: sessionStore.getSession().id!,\n trackingType: sessionStore.getSession()[productKey] as TrackingType,\n }\n }\n\n return {\n findActiveSession: (startTime) => sessionContextHistory.find(startTime),\n renewObservable: sessionStore.renewObservable,\n expireObservable: sessionStore.expireObservable,\n expire: sessionStore.expire,\n }\n}\n\nexport function stopSessionManager() {\n stopCallbacks.forEach((e) => e())\n stopCallbacks = []\n}\n\nfunction trackActivity(configuration: Configuration, expandOrRenewSession: () => void) {\n const { stop } = addEventListeners(\n configuration,\n window,\n [DOM_EVENT.CLICK, DOM_EVENT.TOUCH_START, DOM_EVENT.KEY_DOWN, DOM_EVENT.SCROLL],\n expandOrRenewSession,\n { capture: true, passive: true }\n )\n stopCallbacks.push(stop)\n}\n\nfunction trackVisibility(configuration: Configuration, expandSession: () => void) {\n const expandSessionWhenVisible = () => {\n if (document.visibilityState === 'visible') {\n expandSession()\n }\n }\n\n const { stop } = addEventListener(configuration, document, DOM_EVENT.VISIBILITY_CHANGE, expandSessionWhenVisible)\n stopCallbacks.push(stop)\n\n const visibilityCheckInterval = setInterval(expandSessionWhenVisible, VISIBILITY_CHECK_DELAY)\n stopCallbacks.push(() => {\n clearInterval(visibilityCheckInterval)\n })\n}\n","import type { RelativeTime } from '@datadog/browser-core'\nimport { Observable, noop, performDraw, startSessionManager } from '@datadog/browser-core'\nimport type { RumConfiguration } from './configuration'\nimport type { LifeCycle } from './lifeCycle'\nimport { LifeCycleEventType } from './lifeCycle'\n\nexport const RUM_SESSION_KEY = 'rum'\n\nexport interface RumSessionManager {\n findTrackedSession: (startTime?: RelativeTime) => RumSession | undefined\n expire: () => void\n expireObservable: Observable\n}\n\nexport type RumSession = {\n id: string\n plan: RumSessionPlan\n sessionReplayAllowed: boolean\n longTaskAllowed: boolean\n resourceAllowed: boolean\n}\n\nexport const enum RumSessionPlan {\n WITHOUT_SESSION_REPLAY = 1,\n WITH_SESSION_REPLAY = 2,\n}\n\nexport const enum RumTrackingType {\n NOT_TRACKED = '0',\n // Note: the \"tracking type\" value (stored in the session cookie) does not match the \"session\n // plan\" value (sent in RUM events). This is expected, and was done to keep retrocompatibility\n // with active sessions when upgrading the SDK.\n TRACKED_WITH_SESSION_REPLAY = '1',\n TRACKED_WITHOUT_SESSION_REPLAY = '2',\n}\n\nexport function startRumSessionManager(configuration: RumConfiguration, lifeCycle: LifeCycle): RumSessionManager {\n const sessionManager = startSessionManager(configuration, RUM_SESSION_KEY, (rawTrackingType) =>\n computeSessionState(configuration, rawTrackingType)\n )\n\n sessionManager.expireObservable.subscribe(() => {\n lifeCycle.notify(LifeCycleEventType.SESSION_EXPIRED)\n })\n\n sessionManager.renewObservable.subscribe(() => {\n lifeCycle.notify(LifeCycleEventType.SESSION_RENEWED)\n })\n\n return {\n findTrackedSession: (startTime) => {\n const session = sessionManager.findActiveSession(startTime)\n if (!session || !isTypeTracked(session.trackingType)) {\n return\n }\n const plan =\n session.trackingType === RumTrackingType.TRACKED_WITH_SESSION_REPLAY\n ? RumSessionPlan.WITH_SESSION_REPLAY\n : RumSessionPlan.WITHOUT_SESSION_REPLAY\n return {\n id: session.id,\n plan,\n sessionReplayAllowed: plan === RumSessionPlan.WITH_SESSION_REPLAY,\n longTaskAllowed:\n configuration.trackLongTasks !== undefined\n ? configuration.trackLongTasks\n : configuration.oldPlansBehavior && plan === RumSessionPlan.WITH_SESSION_REPLAY,\n resourceAllowed:\n configuration.trackResources !== undefined\n ? configuration.trackResources\n : configuration.oldPlansBehavior && plan === RumSessionPlan.WITH_SESSION_REPLAY,\n }\n },\n expire: sessionManager.expire,\n expireObservable: sessionManager.expireObservable,\n }\n}\n\n/**\n * Start a tracked replay session stub\n */\nexport function startRumSessionManagerStub(): RumSessionManager {\n const session: RumSession = {\n id: '00000000-aaaa-0000-aaaa-000000000000',\n plan: RumSessionPlan.WITHOUT_SESSION_REPLAY, // plan value should not be taken into account for mobile\n sessionReplayAllowed: false,\n longTaskAllowed: true,\n resourceAllowed: true,\n }\n return {\n findTrackedSession: () => session,\n expire: noop,\n expireObservable: new Observable(),\n }\n}\n\nfunction computeSessionState(configuration: RumConfiguration, rawTrackingType?: string) {\n let trackingType: RumTrackingType\n if (hasValidRumSession(rawTrackingType)) {\n trackingType = rawTrackingType\n } else if (!performDraw(configuration.sessionSampleRate)) {\n trackingType = RumTrackingType.NOT_TRACKED\n } else if (!performDraw(configuration.sessionReplaySampleRate)) {\n trackingType = RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY\n } else {\n trackingType = RumTrackingType.TRACKED_WITH_SESSION_REPLAY\n }\n return {\n trackingType,\n isTracked: isTypeTracked(trackingType),\n }\n}\n\nfunction hasValidRumSession(trackingType?: string): trackingType is RumTrackingType {\n return (\n trackingType === RumTrackingType.NOT_TRACKED ||\n trackingType === RumTrackingType.TRACKED_WITH_SESSION_REPLAY ||\n trackingType === RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY\n )\n}\n\nfunction isTypeTracked(rumSessionType: RumTrackingType | undefined) {\n return (\n rumSessionType === RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY ||\n rumSessionType === RumTrackingType.TRACKED_WITH_SESSION_REPLAY\n )\n}\n","import { display } from '../tools/display'\nimport type { Context } from '../tools/serialisation/context'\nimport { objectValues } from '../tools/utils/polyfills'\nimport { isPageExitReason } from '../browser/pageExitObservable'\nimport { computeBytesCount } from '../tools/utils/byteUtils'\nimport { jsonStringify } from '../tools/serialisation/jsonStringify'\nimport type { Subscription } from '../tools/observable'\nimport type { HttpRequest } from './httpRequest'\nimport type { FlushController, FlushEvent } from './flushController'\n\nexport class Batch {\n private pushOnlyBuffer: string[] = []\n private upsertBuffer: { [key: string]: string } = {}\n private flushSubscription: Subscription\n\n constructor(\n private request: HttpRequest,\n public flushController: FlushController,\n private messageBytesLimit: number\n ) {\n this.flushSubscription = this.flushController.flushObservable.subscribe((event) => this.flush(event))\n }\n\n add(message: Context) {\n this.addOrUpdate(message)\n }\n\n upsert(message: Context, key: string) {\n this.addOrUpdate(message, key)\n }\n\n stop() {\n this.flushSubscription.unsubscribe()\n }\n\n private flush(event: FlushEvent) {\n const messages = this.pushOnlyBuffer.concat(objectValues(this.upsertBuffer))\n\n this.pushOnlyBuffer = []\n this.upsertBuffer = {}\n\n const payload = { data: messages.join('\\n'), bytesCount: event.bytesCount, flushReason: event.reason }\n if (isPageExitReason(event.reason)) {\n this.request.sendOnExit(payload)\n } else {\n this.request.send(payload)\n }\n }\n\n private addOrUpdate(message: Context, key?: string) {\n const { processedMessage, messageBytesCount } = this.process(message)\n\n if (messageBytesCount >= this.messageBytesLimit) {\n display.warn(\n `Discarded a message whose size was bigger than the maximum allowed size ${this.messageBytesLimit}KB.`\n )\n return\n }\n\n if (this.hasMessageFor(key)) {\n this.remove(key)\n }\n\n this.push(processedMessage, messageBytesCount, key)\n }\n\n private process(message: Context) {\n const processedMessage = jsonStringify(message)!\n const messageBytesCount = computeBytesCount(processedMessage)\n return { processedMessage, messageBytesCount }\n }\n\n private push(processedMessage: string, messageBytesCount: number, key?: string) {\n // If there are other messages, a '\\n' will be added at serialization\n const separatorBytesCount = this.flushController.messagesCount > 0 ? 1 : 0\n\n this.flushController.notifyBeforeAddMessage(messageBytesCount + separatorBytesCount)\n if (key !== undefined) {\n this.upsertBuffer[key] = processedMessage\n } else {\n this.pushOnlyBuffer.push(processedMessage)\n }\n this.flushController.notifyAfterAddMessage()\n }\n\n private remove(key: string) {\n const removedMessage = this.upsertBuffer[key]\n delete this.upsertBuffer[key]\n const messageBytesCount = computeBytesCount(removedMessage)\n // If there are other messages, a '\\n' will be added at serialization\n const separatorBytesCount = this.flushController.messagesCount > 1 ? 1 : 0\n this.flushController.notifyAfterRemoveMessage(messageBytesCount + separatorBytesCount)\n }\n\n private hasMessageFor(key?: string): key is string {\n return key !== undefined && this.upsertBuffer[key] !== undefined\n }\n}\n","import type { EndpointType } from '../domain/configuration'\nimport { setTimeout } from '../tools/timer'\nimport { clocksNow, ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils'\nimport { ONE_MEBI_BYTE, ONE_KIBI_BYTE } from '../tools/utils/byteUtils'\nimport { isServerError } from '../tools/utils/responseUtils'\nimport type { RawError } from '../domain/error/error.types'\nimport { ErrorSource } from '../domain/error/error.types'\nimport type { Payload, HttpResponse } from './httpRequest'\n\nexport const MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE\nexport const MAX_ONGOING_REQUESTS = 32\nexport const MAX_QUEUE_BYTES_COUNT = 3 * ONE_MEBI_BYTE\nexport const MAX_BACKOFF_TIME = ONE_MINUTE\nexport const INITIAL_BACKOFF_TIME = ONE_SECOND\n\nconst enum TransportStatus {\n UP,\n FAILURE_DETECTED,\n DOWN,\n}\n\nconst enum RetryReason {\n AFTER_SUCCESS,\n AFTER_RESUME,\n}\n\nexport interface RetryState {\n transportStatus: TransportStatus\n currentBackoffTime: number\n bandwidthMonitor: ReturnType\n queuedPayloads: ReturnType\n queueFullReported: boolean\n}\n\ntype SendStrategy = (payload: Payload, onResponse: (r: HttpResponse) => void) => void\n\nexport function sendWithRetryStrategy(\n payload: Payload,\n state: RetryState,\n sendStrategy: SendStrategy,\n endpointType: EndpointType,\n reportError: (error: RawError) => void\n) {\n if (\n state.transportStatus === TransportStatus.UP &&\n state.queuedPayloads.size() === 0 &&\n state.bandwidthMonitor.canHandle(payload)\n ) {\n send(payload, state, sendStrategy, {\n onSuccess: () => retryQueuedPayloads(RetryReason.AFTER_SUCCESS, state, sendStrategy, endpointType, reportError),\n onFailure: () => {\n state.queuedPayloads.enqueue(payload)\n scheduleRetry(state, sendStrategy, endpointType, reportError)\n },\n })\n } else {\n state.queuedPayloads.enqueue(payload)\n }\n}\n\nfunction scheduleRetry(\n state: RetryState,\n sendStrategy: SendStrategy,\n endpointType: EndpointType,\n reportError: (error: RawError) => void\n) {\n if (state.transportStatus !== TransportStatus.DOWN) {\n return\n }\n setTimeout(() => {\n const payload = state.queuedPayloads.first()\n send(payload, state, sendStrategy, {\n onSuccess: () => {\n state.queuedPayloads.dequeue()\n state.currentBackoffTime = INITIAL_BACKOFF_TIME\n retryQueuedPayloads(RetryReason.AFTER_RESUME, state, sendStrategy, endpointType, reportError)\n },\n onFailure: () => {\n state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2)\n scheduleRetry(state, sendStrategy, endpointType, reportError)\n },\n })\n }, state.currentBackoffTime)\n}\n\nfunction send(\n payload: Payload,\n state: RetryState,\n sendStrategy: SendStrategy,\n { onSuccess, onFailure }: { onSuccess: () => void; onFailure: () => void }\n) {\n state.bandwidthMonitor.add(payload)\n sendStrategy(payload, (response) => {\n state.bandwidthMonitor.remove(payload)\n if (!shouldRetryRequest(response)) {\n state.transportStatus = TransportStatus.UP\n onSuccess()\n } else {\n // do not consider transport down if another ongoing request could succeed\n state.transportStatus =\n state.bandwidthMonitor.ongoingRequestCount > 0 ? TransportStatus.FAILURE_DETECTED : TransportStatus.DOWN\n payload.retry = {\n count: payload.retry ? payload.retry.count + 1 : 1,\n lastFailureStatus: response.status,\n }\n onFailure()\n }\n })\n}\n\nfunction retryQueuedPayloads(\n reason: RetryReason,\n state: RetryState,\n sendStrategy: SendStrategy,\n endpointType: EndpointType,\n reportError: (error: RawError) => void\n) {\n if (reason === RetryReason.AFTER_SUCCESS && state.queuedPayloads.isFull() && !state.queueFullReported) {\n reportError({\n message: `Reached max ${endpointType} events size queued for upload: ${MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE}MiB`,\n source: ErrorSource.AGENT,\n startClocks: clocksNow(),\n })\n state.queueFullReported = true\n }\n const previousQueue = state.queuedPayloads\n state.queuedPayloads = newPayloadQueue()\n while (previousQueue.size() > 0) {\n sendWithRetryStrategy(previousQueue.dequeue()!, state, sendStrategy, endpointType, reportError)\n }\n}\n\nfunction shouldRetryRequest(response: HttpResponse) {\n return (\n response.type !== 'opaque' &&\n ((response.status === 0 && !navigator.onLine) ||\n response.status === 408 ||\n response.status === 429 ||\n isServerError(response.status))\n )\n}\n\nexport function newRetryState(): RetryState {\n return {\n transportStatus: TransportStatus.UP,\n currentBackoffTime: INITIAL_BACKOFF_TIME,\n bandwidthMonitor: newBandwidthMonitor(),\n queuedPayloads: newPayloadQueue(),\n queueFullReported: false,\n }\n}\n\nfunction newPayloadQueue() {\n const queue: Payload[] = []\n return {\n bytesCount: 0,\n enqueue(payload: Payload) {\n if (this.isFull()) {\n return\n }\n queue.push(payload)\n this.bytesCount += payload.bytesCount\n },\n first() {\n return queue[0]\n },\n dequeue() {\n const payload = queue.shift()\n if (payload) {\n this.bytesCount -= payload.bytesCount\n }\n return payload\n },\n size() {\n return queue.length\n },\n isFull() {\n return this.bytesCount >= MAX_QUEUE_BYTES_COUNT\n },\n }\n}\n\nfunction newBandwidthMonitor() {\n return {\n ongoingRequestCount: 0,\n ongoingByteCount: 0,\n canHandle(payload: Payload) {\n return (\n this.ongoingRequestCount === 0 ||\n (this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT &&\n this.ongoingRequestCount < MAX_ONGOING_REQUESTS)\n )\n },\n add(payload: Payload) {\n this.ongoingRequestCount += 1\n this.ongoingByteCount += payload.bytesCount\n },\n remove(payload: Payload) {\n this.ongoingRequestCount -= 1\n this.ongoingByteCount -= payload.bytesCount\n },\n }\n}\n","import type { EndpointBuilder, Configuration } from '../domain/configuration'\nimport { addTelemetryError } from '../domain/telemetry'\nimport type { Context } from '../tools/serialisation/context'\nimport { monitor } from '../tools/monitor'\nimport { addEventListener } from '../browser/addEventListener'\nimport type { RawError } from '../domain/error/error.types'\nimport { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy'\nimport type { FlushReason } from './flushController'\n\n/**\n * Use POST request without content type to:\n * - avoid CORS preflight requests\n * - allow usage of sendBeacon\n *\n * multiple elements are sent separated by \\n in order\n * to be parsed correctly without content type header\n */\n\nexport type HttpRequest = ReturnType\n\nexport interface HttpResponse extends Context {\n status: number\n type?: ResponseType\n}\n\nexport interface Payload {\n data: string | FormData\n bytesCount: number\n retry?: RetryInfo\n flushReason?: FlushReason\n encoding?: 'deflate'\n}\n\nexport interface RetryInfo {\n count: number\n lastFailureStatus: number\n}\n\nexport function createHttpRequest(\n configuration: Configuration,\n endpointBuilder: EndpointBuilder,\n bytesLimit: number,\n reportError: (error: RawError) => void\n) {\n const retryState = newRetryState()\n const sendStrategyForRetry = (payload: Payload, onResponse: (r: HttpResponse) => void) =>\n fetchKeepAliveStrategy(configuration, endpointBuilder, bytesLimit, payload, onResponse)\n\n return {\n send: (payload: Payload) => {\n sendWithRetryStrategy(payload, retryState, sendStrategyForRetry, endpointBuilder.endpointType, reportError)\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: (payload: Payload) => {\n sendBeaconStrategy(configuration, endpointBuilder, bytesLimit, payload)\n },\n }\n}\n\nfunction sendBeaconStrategy(\n configuration: Configuration,\n endpointBuilder: EndpointBuilder,\n bytesLimit: number,\n payload: Payload\n) {\n const canUseBeacon = !!navigator.sendBeacon && payload.bytesCount < bytesLimit\n if (canUseBeacon) {\n try {\n const beaconUrl = endpointBuilder.build('beacon', payload)\n const isQueued = navigator.sendBeacon(beaconUrl, payload.data)\n\n if (isQueued) {\n return\n }\n } catch (e) {\n reportBeaconError(e)\n }\n }\n\n const xhrUrl = endpointBuilder.build('xhr', payload)\n sendXHR(configuration, xhrUrl, payload.data)\n}\n\nlet hasReportedBeaconError = false\n\nfunction reportBeaconError(e: unknown) {\n if (!hasReportedBeaconError) {\n hasReportedBeaconError = true\n addTelemetryError(e)\n }\n}\n\nexport function fetchKeepAliveStrategy(\n configuration: Configuration,\n endpointBuilder: EndpointBuilder,\n bytesLimit: number,\n payload: Payload,\n onResponse?: (r: HttpResponse) => void\n) {\n const canUseKeepAlive = isKeepAliveSupported() && payload.bytesCount < bytesLimit\n if (canUseKeepAlive) {\n const fetchUrl = endpointBuilder.build('fetch', payload)\n fetch(fetchUrl, { method: 'POST', body: payload.data, keepalive: true, mode: 'cors' }).then(\n monitor((response: Response) => onResponse?.({ status: response.status, type: response.type })),\n monitor(() => {\n const xhrUrl = endpointBuilder.build('xhr', payload)\n // failed to queue the request\n sendXHR(configuration, xhrUrl, payload.data, onResponse)\n })\n )\n } else {\n const xhrUrl = endpointBuilder.build('xhr', payload)\n sendXHR(configuration, xhrUrl, payload.data, onResponse)\n }\n}\n\nfunction isKeepAliveSupported() {\n // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n try {\n return window.Request && 'keepalive' in new Request('http://a')\n } catch {\n return false\n }\n}\n\nexport function sendXHR(\n configuration: Configuration,\n url: string,\n data: Payload['data'],\n onResponse?: (r: HttpResponse) => void\n) {\n const request = new XMLHttpRequest()\n request.open('POST', url, true)\n addEventListener(\n configuration,\n request,\n 'loadend',\n () => {\n onResponse?.({ status: request.status })\n },\n {\n // prevent multiple onResponse callbacks\n // if the xhr instance is reused by a third party\n once: true,\n }\n )\n request.send(data)\n}\n","import type { Configuration, EndpointBuilder } from '../domain/configuration'\nimport type { Context } from '../tools/serialisation/context'\nimport type { Observable } from '../tools/observable'\nimport type { PageExitEvent } from '../browser/pageExitObservable'\nimport type { RawError } from '../domain/error/error.types'\nimport { Batch } from './batch'\nimport { createHttpRequest } from './httpRequest'\nimport { createFlushController } from './flushController'\n\nexport function startBatchWithReplica(\n configuration: Configuration,\n primary: { endpoint: EndpointBuilder },\n replica: { endpoint: EndpointBuilder; transformMessage?: (message: T) => T } | undefined,\n reportError: (error: RawError) => void,\n pageExitObservable: Observable,\n sessionExpireObservable: Observable\n) {\n const primaryBatch = createBatch(configuration, primary.endpoint)\n const replicaBatch = replica && createBatch(configuration, replica.endpoint)\n\n function createBatch(configuration: Configuration, endpointBuilder: EndpointBuilder) {\n return new Batch(\n createHttpRequest(configuration, endpointBuilder, configuration.batchBytesLimit, reportError),\n createFlushController({\n messagesLimit: configuration.batchMessagesLimit,\n bytesLimit: configuration.batchBytesLimit,\n durationLimit: configuration.flushTimeout,\n pageExitObservable,\n sessionExpireObservable,\n }),\n configuration.messageBytesLimit\n )\n }\n\n return {\n flushObservable: primaryBatch.flushController.flushObservable,\n\n add(message: T, replicated = true) {\n primaryBatch.add(message)\n if (replicaBatch && replicated) {\n replicaBatch.add(replica.transformMessage ? replica.transformMessage(message) : message)\n }\n },\n\n upsert: (message: T, key: string) => {\n primaryBatch.upsert(message, key)\n if (replicaBatch) {\n replicaBatch.upsert(replica.transformMessage ? replica.transformMessage(message) : message, key)\n }\n },\n\n stop: () => {\n primaryBatch.stop()\n replicaBatch?.stop()\n },\n }\n}\n","import type { PageExitEvent, PageExitReason } from '../browser/pageExitObservable'\nimport { Observable } from '../tools/observable'\nimport type { TimeoutId } from '../tools/timer'\nimport { clearTimeout, setTimeout } from '../tools/timer'\nimport type { Duration } from '../tools/utils/timeUtils'\n\nexport type FlushReason = PageExitReason | 'duration_limit' | 'bytes_limit' | 'messages_limit' | 'session_expire'\n\nexport type FlushController = ReturnType\nexport interface FlushEvent {\n reason: FlushReason\n bytesCount: number\n messagesCount: number\n}\n\ninterface FlushControllerOptions {\n messagesLimit: number\n bytesLimit: number\n durationLimit: Duration\n pageExitObservable: Observable\n sessionExpireObservable: Observable\n}\n\n/**\n * Returns a \"flush controller\", responsible of notifying when flushing a pool of pending data needs\n * to happen. The implementation is designed to support both synchronous and asynchronous usages,\n * but relies on invariants described in each method documentation to keep a coherent state.\n */\nexport function createFlushController({\n messagesLimit,\n bytesLimit,\n durationLimit,\n pageExitObservable,\n sessionExpireObservable,\n}: FlushControllerOptions) {\n const pageExitSubscription = pageExitObservable.subscribe((event) => flush(event.reason))\n const sessionExpireSubscription = sessionExpireObservable.subscribe(() => flush('session_expire'))\n\n const flushObservable = new Observable(() => () => {\n pageExitSubscription.unsubscribe()\n sessionExpireSubscription.unsubscribe()\n })\n\n let currentBytesCount = 0\n let currentMessagesCount = 0\n\n function flush(flushReason: FlushReason) {\n if (currentMessagesCount === 0) {\n return\n }\n\n const messagesCount = currentMessagesCount\n const bytesCount = currentBytesCount\n\n currentMessagesCount = 0\n currentBytesCount = 0\n cancelDurationLimitTimeout()\n\n flushObservable.notify({\n reason: flushReason,\n messagesCount,\n bytesCount,\n })\n }\n\n let durationLimitTimeoutId: TimeoutId | undefined\n function scheduleDurationLimitTimeout() {\n if (durationLimitTimeoutId === undefined) {\n durationLimitTimeoutId = setTimeout(() => {\n flush('duration_limit')\n }, durationLimit)\n }\n }\n\n function cancelDurationLimitTimeout() {\n clearTimeout(durationLimitTimeoutId)\n durationLimitTimeoutId = undefined\n }\n\n return {\n flushObservable,\n get messagesCount() {\n return currentMessagesCount\n },\n\n /**\n * Notifies that a message will be added to a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right before adding the message, so no flush\n * event can happen after `notifyBeforeAddMessage` and before adding the message.\n */\n notifyBeforeAddMessage(messageBytesCount: number) {\n if (currentBytesCount + messageBytesCount >= bytesLimit) {\n flush('bytes_limit')\n }\n // Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no\n // message was added yet and `notifyAfterAddMessage` is called asynchronously, we still want\n // to notify when a flush is needed (for example on page exit).\n currentMessagesCount += 1\n currentBytesCount += messageBytesCount\n scheduleDurationLimitTimeout()\n },\n\n /**\n * Notifies that a message *was* added to a pool of pending messages waiting to be flushed.\n *\n * This function can be called asynchronously after the message was added, but in this case it\n * should not be called if a flush event occurred in between.\n */\n notifyAfterAddMessage() {\n if (currentMessagesCount >= messagesLimit) {\n flush('messages_limit')\n } else if (currentBytesCount >= bytesLimit) {\n flush('bytes_limit')\n }\n },\n\n /**\n * Notifies that a message was removed from a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right after removing the message, so no flush\n * event can happen after removing the message and before `notifyAfterRemoveMessage`.\n */\n notifyAfterRemoveMessage(messageBytesCount: number) {\n currentBytesCount -= messageBytesCount\n currentMessagesCount -= 1\n if (currentMessagesCount === 0) {\n cancelDurationLimitTimeout()\n }\n },\n }\n}\n","import type { RelativeTime, Observable } from '@datadog/browser-core'\nimport { SESSION_TIME_OUT_DELAY, relativeNow, ValueHistory } from '@datadog/browser-core'\nimport type { LocationChange } from '../../browser/locationChangeObservable'\nimport type { LifeCycle } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\n\n/**\n * We want to attach to an event:\n * - the url corresponding to its start\n * - the referrer corresponding to the previous view url (or document referrer for initial view)\n */\n\nexport const URL_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY\n\nexport interface UrlContext {\n url: string\n referrer: string\n}\n\nexport interface UrlContexts {\n findUrl: (startTime?: RelativeTime) => UrlContext | undefined\n stop: () => void\n}\n\nexport function startUrlContexts(\n lifeCycle: LifeCycle,\n locationChangeObservable: Observable,\n location: Location\n) {\n const urlContextHistory = new ValueHistory(URL_CONTEXT_TIME_OUT_DELAY)\n\n let previousViewUrl: string | undefined\n\n lifeCycle.subscribe(LifeCycleEventType.VIEW_ENDED, ({ endClocks }) => {\n urlContextHistory.closeActive(endClocks.relative)\n })\n\n lifeCycle.subscribe(LifeCycleEventType.VIEW_CREATED, ({ startClocks }) => {\n const viewUrl = location.href\n urlContextHistory.add(\n buildUrlContext({\n url: viewUrl,\n referrer: !previousViewUrl ? document.referrer : previousViewUrl,\n }),\n startClocks.relative\n )\n previousViewUrl = viewUrl\n })\n\n const locationChangeSubscription = locationChangeObservable.subscribe(({ newLocation }) => {\n const current = urlContextHistory.find()\n if (current) {\n const changeTime = relativeNow()\n urlContextHistory.closeActive(changeTime)\n urlContextHistory.add(\n buildUrlContext({\n url: newLocation.href,\n referrer: current.referrer,\n }),\n changeTime\n )\n }\n })\n\n function buildUrlContext({ url, referrer }: { url: string; referrer: string }) {\n return {\n url,\n referrer,\n }\n }\n\n return {\n findUrl: (startTime?: RelativeTime) => urlContextHistory.find(startTime),\n stop: () => {\n locationChangeSubscription.unsubscribe()\n urlContextHistory.stop()\n },\n }\n}\n","import type { RelativeTime, ContextValue, Context } from '@datadog/browser-core'\nimport {\n CustomerDataType,\n warnIfCustomerDataLimitReached,\n throttle,\n jsonStringify,\n computeBytesCount,\n noop,\n isExperimentalFeatureEnabled,\n SESSION_TIME_OUT_DELAY,\n ValueHistory,\n ExperimentalFeature,\n} from '@datadog/browser-core'\nimport type { LifeCycle } from '../lifeCycle'\nimport { LifeCycleEventType } from '../lifeCycle'\n\nexport const FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY\nexport const BYTES_COMPUTATION_THROTTLING_DELAY = 200\n\nexport type FeatureFlagContext = Context\n\nexport interface FeatureFlagContexts {\n findFeatureFlagEvaluations: (startTime?: RelativeTime) => FeatureFlagContext | undefined\n getFeatureFlagBytesCount: () => number\n addFeatureFlagEvaluation: (key: string, value: ContextValue) => void\n stop: () => void\n}\n\n/**\n * Start feature flag contexts\n *\n * Feature flag contexts follow the life of views.\n * A new context is added when a view is created and ended when the view is ended\n *\n * Note: we choose not to add a new context at each evaluation to save memory\n */\nexport function startFeatureFlagContexts(\n lifeCycle: LifeCycle,\n computeBytesCountImpl = computeBytesCount\n): FeatureFlagContexts {\n if (!isExperimentalFeatureEnabled(ExperimentalFeature.FEATURE_FLAGS)) {\n return {\n findFeatureFlagEvaluations: () => undefined,\n getFeatureFlagBytesCount: () => 0,\n addFeatureFlagEvaluation: noop,\n stop: noop,\n }\n }\n\n const featureFlagContexts = new ValueHistory(FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY)\n let bytesCountCache = 0\n let alreadyWarned = false\n\n lifeCycle.subscribe(LifeCycleEventType.VIEW_ENDED, ({ endClocks }) => {\n featureFlagContexts.closeActive(endClocks.relative)\n })\n\n lifeCycle.subscribe(LifeCycleEventType.VIEW_CREATED, ({ startClocks }) => {\n featureFlagContexts.add({}, startClocks.relative)\n bytesCountCache = 0\n })\n\n // Throttle the bytes computation to minimize the impact on performance.\n // Especially useful if the user call addFeatureFlagEvaluation API synchronously multiple times in a row\n const { throttled: computeBytesCountThrottled, cancel: cancelPendingComputation } = throttle((context: Context) => {\n bytesCountCache = computeBytesCountImpl(jsonStringify(context)!)\n if (!alreadyWarned) {\n alreadyWarned = warnIfCustomerDataLimitReached(bytesCountCache, CustomerDataType.FeatureFlag)\n }\n }, BYTES_COMPUTATION_THROTTLING_DELAY)\n\n return {\n findFeatureFlagEvaluations: (startTime?: RelativeTime) => featureFlagContexts.find(startTime),\n getFeatureFlagBytesCount: () => {\n const currentContext = featureFlagContexts.find()\n if (!currentContext) {\n return 0\n }\n\n return bytesCountCache\n },\n addFeatureFlagEvaluation: (key: string, value: ContextValue) => {\n const currentContext = featureFlagContexts.find()\n if (currentContext) {\n currentContext[key] = value\n computeBytesCountThrottled(currentContext)\n }\n },\n stop: cancelPendingComputation,\n }\n}\n","import type { Context, ContextManager, FlushEvent, Observable, Telemetry } from '@datadog/browser-core'\nimport { isEmptyObject, includes, performDraw, ONE_SECOND, addTelemetryDebug, setInterval } from '@datadog/browser-core'\nimport { RumEventType } from '../rawRumEvent.types'\nimport type { RumEvent } from '../rumEvent.types'\nimport type { RumConfiguration } from './configuration'\nimport type { FeatureFlagContexts } from './contexts/featureFlagContext'\nimport type { LifeCycle } from './lifeCycle'\nimport { LifeCycleEventType } from './lifeCycle'\n\nexport const MEASURES_PERIOD_DURATION = 10 * ONE_SECOND\n\ntype Measure = {\n min: number\n max: number\n sum: number\n}\n\ntype CurrentPeriodMeasures = {\n batchCount: number\n batchBytesCount: Measure\n batchMessagesCount: Measure\n globalContextBytes: Measure\n userContextBytes: Measure\n featureFlagBytes: Measure\n}\n\ntype CurrentBatchMeasures = {\n globalContextBytes: Measure\n userContextBytes: Measure\n featureFlagBytes: Measure\n}\n\nlet currentPeriodMeasures: CurrentPeriodMeasures\nlet currentBatchMeasures: CurrentBatchMeasures\nlet batchHasRumEvent: boolean\n\nexport function startCustomerDataTelemetry(\n configuration: RumConfiguration,\n telemetry: Telemetry,\n lifeCycle: LifeCycle,\n globalContextManager: ContextManager,\n userContextManager: ContextManager,\n featureFlagContexts: FeatureFlagContexts,\n batchFlushObservable: Observable\n) {\n const customerDataTelemetryEnabled = telemetry.enabled && performDraw(configuration.customerDataTelemetrySampleRate)\n if (!customerDataTelemetryEnabled) {\n return\n }\n\n initCurrentPeriodMeasures()\n initCurrentBatchMeasures()\n\n // We measure the data of every view updates even if there could only be one per batch due to the upsert\n // It means that contexts bytes count sums can be higher than it really is\n lifeCycle.subscribe(LifeCycleEventType.RUM_EVENT_COLLECTED, (event: RumEvent & Context) => {\n batchHasRumEvent = true\n updateMeasure(\n currentBatchMeasures.globalContextBytes,\n !isEmptyObject(globalContextManager.get()) ? globalContextManager.getBytesCount() : 0\n )\n\n updateMeasure(\n currentBatchMeasures.userContextBytes,\n !isEmptyObject(userContextManager.get()) ? userContextManager.getBytesCount() : 0\n )\n\n const featureFlagContext = featureFlagContexts.findFeatureFlagEvaluations()\n const hasFeatureFlagContext =\n includes([RumEventType.VIEW, RumEventType.ERROR], event.type) &&\n featureFlagContext &&\n !isEmptyObject(featureFlagContext)\n updateMeasure(\n currentBatchMeasures.featureFlagBytes,\n hasFeatureFlagContext ? featureFlagContexts.getFeatureFlagBytesCount() : 0\n )\n })\n\n batchFlushObservable.subscribe(({ bytesCount, messagesCount }) => {\n // Don't measure batch that only contains telemetry events to avoid batch sending loop\n // It could happen because after each batch we are adding a customer data measures telemetry event to the next one\n if (!batchHasRumEvent) {\n return\n }\n currentPeriodMeasures.batchCount += 1\n updateMeasure(currentPeriodMeasures.batchBytesCount, bytesCount)\n updateMeasure(currentPeriodMeasures.batchMessagesCount, messagesCount)\n mergeMeasure(currentPeriodMeasures.globalContextBytes, currentBatchMeasures.globalContextBytes)\n mergeMeasure(currentPeriodMeasures.userContextBytes, currentBatchMeasures.userContextBytes)\n mergeMeasure(currentPeriodMeasures.featureFlagBytes, currentBatchMeasures.featureFlagBytes)\n initCurrentBatchMeasures()\n })\n\n setInterval(sendCurrentPeriodMeasures, MEASURES_PERIOD_DURATION)\n}\n\nfunction sendCurrentPeriodMeasures() {\n if (currentPeriodMeasures.batchCount === 0) {\n return\n }\n\n addTelemetryDebug('Customer data measures', currentPeriodMeasures)\n initCurrentPeriodMeasures()\n}\n\nfunction createMeasure(): Measure {\n return { min: Infinity, max: 0, sum: 0 }\n}\n\nfunction updateMeasure(measure: Measure, value: number) {\n measure.sum += value\n measure.min = Math.min(measure.min, value)\n measure.max = Math.max(measure.max, value)\n}\n\nfunction mergeMeasure(target: Measure, source: Measure) {\n target.sum += source.sum\n target.min = Math.min(target.min, source.min)\n target.max = Math.max(target.max, source.max)\n}\n\nfunction initCurrentPeriodMeasures() {\n currentPeriodMeasures = {\n batchCount: 0,\n batchBytesCount: createMeasure(),\n batchMessagesCount: createMeasure(),\n globalContextBytes: createMeasure(),\n userContextBytes: createMeasure(),\n featureFlagBytes: createMeasure(),\n }\n}\n\nfunction initCurrentBatchMeasures() {\n batchHasRumEvent = false\n currentBatchMeasures = {\n globalContextBytes: createMeasure(),\n userContextBytes: createMeasure(),\n featureFlagBytes: createMeasure(),\n }\n}\n","import type { Duration, RelativeTime } from '@datadog/browser-core'\nimport {\n elapsed,\n ValueHistory,\n SESSION_TIME_OUT_DELAY,\n toServerDuration,\n addEventListeners,\n relativeNow,\n DOM_EVENT,\n} from '@datadog/browser-core'\nimport type { RumConfiguration } from '../configuration'\nimport type { PageStateServerEntry } from '../../rawRumEvent.types'\n\n// Arbitrary value to cap number of element for memory consumption in the browser\nexport const MAX_PAGE_STATE_ENTRIES = 4000\n// Arbitrary value to cap number of element for backend & to save bandwidth\nexport const MAX_PAGE_STATE_ENTRIES_SELECTABLE = 500\n\nexport const PAGE_STATE_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY\n\nexport const enum PageState {\n ACTIVE = 'active',\n PASSIVE = 'passive',\n HIDDEN = 'hidden',\n FROZEN = 'frozen',\n TERMINATED = 'terminated',\n}\n\nexport type PageStateEntry = { state: PageState; startTime: RelativeTime }\n\nexport interface PageStateHistory {\n findAll: (startTime: RelativeTime, duration: Duration) => PageStateServerEntry[] | undefined\n isInActivePageStateAt: (startTime: RelativeTime) => boolean\n addPageState(nextPageState: PageState, startTime?: RelativeTime): void\n stop: () => void\n}\n\nexport function startPageStateHistory(\n configuration: RumConfiguration,\n maxPageStateEntriesSelectable = MAX_PAGE_STATE_ENTRIES_SELECTABLE\n): PageStateHistory {\n const pageStateHistory = new ValueHistory(PAGE_STATE_CONTEXT_TIME_OUT_DELAY, MAX_PAGE_STATE_ENTRIES)\n\n let currentPageState: PageState\n addPageState(getPageState(), relativeNow())\n\n const { stop: stopEventListeners } = addEventListeners(\n configuration,\n window,\n [\n DOM_EVENT.PAGE_SHOW,\n DOM_EVENT.FOCUS,\n DOM_EVENT.BLUR,\n DOM_EVENT.VISIBILITY_CHANGE,\n DOM_EVENT.RESUME,\n DOM_EVENT.FREEZE,\n DOM_EVENT.PAGE_HIDE,\n ],\n (event) => {\n // Only get events fired by the browser to avoid false currentPageState changes done with custom events\n // cf: developer extension auto flush: https://github.com/DataDog/browser-sdk/blob/2f72bf05a672794c9e33965351964382a94c72ba/developer-extension/src/panel/flushEvents.ts#L11-L12\n if (event.isTrusted) {\n addPageState(computePageState(event), event.timeStamp as RelativeTime)\n }\n },\n { capture: true }\n )\n\n function addPageState(nextPageState: PageState, startTime = relativeNow()) {\n if (nextPageState === currentPageState) {\n return\n }\n\n currentPageState = nextPageState\n pageStateHistory.closeActive(startTime)\n pageStateHistory.add({ state: currentPageState, startTime }, startTime)\n }\n\n return {\n findAll: (eventStartTime: RelativeTime, duration: Duration): PageStateServerEntry[] | undefined => {\n const pageStateEntries = pageStateHistory.findAll(eventStartTime, duration)\n\n if (pageStateEntries.length === 0) {\n return\n }\n\n const pageStateServerEntries = []\n // limit the number of entries to return\n const limit = Math.max(0, pageStateEntries.length - maxPageStateEntriesSelectable)\n\n // loop page state entries backward to return the selected ones in desc order\n for (let index = pageStateEntries.length - 1; index >= limit; index--) {\n const pageState = pageStateEntries[index]\n // compute the start time relative to the event start time (ex: to be relative to the view start time)\n const relativeStartTime = elapsed(eventStartTime, pageState.startTime)\n\n pageStateServerEntries.push({\n state: pageState.state,\n start: toServerDuration(relativeStartTime),\n })\n }\n\n return pageStateServerEntries\n },\n isInActivePageStateAt: (startTime: RelativeTime) => {\n const pageStateEntry = pageStateHistory.find(startTime)\n return pageStateEntry !== undefined && pageStateEntry.state === PageState.ACTIVE\n },\n addPageState,\n stop: () => {\n stopEventListeners()\n pageStateHistory.stop()\n },\n }\n}\n\nfunction computePageState(event: Event & { type: DOM_EVENT }) {\n if (event.type === DOM_EVENT.FREEZE) {\n return PageState.FROZEN\n } else if (event.type === DOM_EVENT.PAGE_HIDE) {\n return (event as PageTransitionEvent).persisted ? PageState.FROZEN : PageState.TERMINATED\n }\n return getPageState()\n}\n\nfunction getPageState() {\n if (document.visibilityState === 'hidden') {\n return PageState.HIDDEN\n }\n\n if (document.hasFocus()) {\n return PageState.ACTIVE\n }\n\n return PageState.PASSIVE\n}\n","import type * as SessionReplay from './sessionReplay'\n\nexport const RecordType: {\n FullSnapshot: SessionReplay.BrowserFullSnapshotRecord['type']\n IncrementalSnapshot: SessionReplay.BrowserIncrementalSnapshotRecord['type']\n Meta: SessionReplay.MetaRecord['type']\n Focus: SessionReplay.FocusRecord['type']\n ViewEnd: SessionReplay.ViewEndRecord['type']\n VisualViewport: SessionReplay.VisualViewportRecord['type']\n FrustrationRecord: SessionReplay.FrustrationRecord['type']\n} = {\n FullSnapshot: 2,\n IncrementalSnapshot: 3,\n Meta: 4,\n Focus: 6,\n ViewEnd: 7,\n VisualViewport: 8,\n FrustrationRecord: 9,\n} as const\n\nexport type RecordType = (typeof RecordType)[keyof typeof RecordType]\n\nexport const NodeType: {\n Document: SessionReplay.DocumentNode['type']\n DocumentType: SessionReplay.DocumentTypeNode['type']\n Element: SessionReplay.ElementNode['type']\n Text: SessionReplay.TextNode['type']\n CDATA: SessionReplay.CDataNode['type']\n DocumentFragment: SessionReplay.DocumentFragmentNode['type']\n} = {\n Document: 0,\n DocumentType: 1,\n Element: 2,\n Text: 3,\n CDATA: 4,\n DocumentFragment: 11,\n} as const\n\nexport type NodeType = (typeof NodeType)[keyof typeof NodeType]\n\nexport const IncrementalSource: {\n Mutation: SessionReplay.BrowserMutationData['source']\n MouseMove: Exclude\n MouseInteraction: SessionReplay.MouseInteractionData['source']\n Scroll: SessionReplay.ScrollData['source']\n ViewportResize: SessionReplay.ViewportResizeData['source']\n Input: SessionReplay.InputData['source']\n TouchMove: Exclude\n MediaInteraction: SessionReplay.MediaInteractionData['source']\n StyleSheetRule: SessionReplay.StyleSheetRuleData['source']\n} = {\n Mutation: 0,\n MouseMove: 1,\n MouseInteraction: 2,\n Scroll: 3,\n ViewportResize: 4,\n Input: 5,\n TouchMove: 6,\n MediaInteraction: 7,\n StyleSheetRule: 8,\n // CanvasMutation : 9,\n // Font : 10,\n} as const\n\nexport type IncrementalSource = (typeof IncrementalSource)[keyof typeof IncrementalSource]\n\nexport const MouseInteractionType = {\n MouseUp: 0,\n MouseDown: 1,\n Click: 2,\n ContextMenu: 3,\n DblClick: 4,\n Focus: 5,\n Blur: 6,\n TouchStart: 7,\n TouchEnd: 9,\n} as const\n\nexport type MouseInteractionType = (typeof MouseInteractionType)[keyof typeof MouseInteractionType]\n\nexport const MediaInteractionType = {\n Play: 0,\n Pause: 1,\n} as const\n\nexport type MediaInteractionType = (typeof MediaInteractionType)[keyof typeof MediaInteractionType]\n","import { assign, timeStampNow } from '@datadog/browser-core'\nimport type { BrowserIncrementalData, BrowserIncrementalSnapshotRecord } from '../../types'\nimport { RecordType } from '../../types'\n\nexport function assembleIncrementalSnapshot(\n source: Data['source'],\n data: Omit\n): BrowserIncrementalSnapshotRecord {\n return {\n data: assign(\n {\n source,\n },\n data\n ) as Data,\n type: RecordType.IncrementalSnapshot,\n timestamp: timeStampNow(),\n }\n}\n","import { DefaultPrivacyLevel } from '@datadog/browser-core'\n\nexport const NodePrivacyLevel = {\n IGNORE: 'ignore',\n HIDDEN: 'hidden',\n ALLOW: DefaultPrivacyLevel.ALLOW,\n MASK: DefaultPrivacyLevel.MASK,\n MASK_USER_INPUT: DefaultPrivacyLevel.MASK_USER_INPUT,\n} as const\nexport type NodePrivacyLevel = (typeof NodePrivacyLevel)[keyof typeof NodePrivacyLevel]\n\nexport const PRIVACY_ATTR_NAME = 'data-dd-privacy'\n\n// Privacy Attrs\nexport const PRIVACY_ATTR_VALUE_ALLOW = 'allow'\nexport const PRIVACY_ATTR_VALUE_MASK = 'mask'\nexport const PRIVACY_ATTR_VALUE_MASK_USER_INPUT = 'mask-user-input'\nexport const PRIVACY_ATTR_VALUE_HIDDEN = 'hidden'\n\n// Privacy Classes - not all customers can set plain HTML attributes, so support classes too\nexport const PRIVACY_CLASS_ALLOW = 'dd-privacy-allow'\nexport const PRIVACY_CLASS_MASK = 'dd-privacy-mask'\nexport const PRIVACY_CLASS_MASK_USER_INPUT = 'dd-privacy-mask-user-input'\nexport const PRIVACY_CLASS_HIDDEN = 'dd-privacy-hidden'\n\n// Private Replacement Templates\nexport const CENSORED_STRING_MARK = '***'\nexport const CENSORED_IMG_MARK = 'data:image/gif;base64,R0lGODlhAQABAIAAAMLCwgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=='\n\nexport const FORM_PRIVATE_TAG_NAMES: { [tagName: string]: true } = {\n INPUT: true,\n OUTPUT: true,\n TEXTAREA: true,\n SELECT: true,\n OPTION: true,\n DATALIST: true,\n OPTGROUP: true,\n}\n","import { isElementNode, getParentNode, isTextNode } from '@datadog/browser-rum-core'\nimport {\n NodePrivacyLevel,\n PRIVACY_ATTR_NAME,\n PRIVACY_ATTR_VALUE_ALLOW,\n PRIVACY_ATTR_VALUE_MASK,\n PRIVACY_ATTR_VALUE_MASK_USER_INPUT,\n PRIVACY_ATTR_VALUE_HIDDEN,\n PRIVACY_CLASS_ALLOW,\n PRIVACY_CLASS_MASK,\n PRIVACY_CLASS_MASK_USER_INPUT,\n PRIVACY_CLASS_HIDDEN,\n FORM_PRIVATE_TAG_NAMES,\n CENSORED_STRING_MARK,\n} from '../../constants'\n\nexport const MAX_ATTRIBUTE_VALUE_CHAR_LENGTH = 100_000\n\nconst TEXT_MASKING_CHAR = 'x'\n\n/**\n * Get node privacy level by iterating over its ancestors. When the direct parent privacy level is\n * know, it is best to use something like:\n *\n * derivePrivacyLevelGivenParent(getNodeSelfPrivacyLevel(node), parentNodePrivacyLevel)\n */\nexport function getNodePrivacyLevel(node: Node, defaultPrivacyLevel: NodePrivacyLevel): NodePrivacyLevel {\n const parentNode = getParentNode(node)\n const parentNodePrivacyLevel = parentNode ? getNodePrivacyLevel(parentNode, defaultPrivacyLevel) : defaultPrivacyLevel\n const selfNodePrivacyLevel = getNodeSelfPrivacyLevel(node)\n return reducePrivacyLevel(selfNodePrivacyLevel, parentNodePrivacyLevel)\n}\n\n/**\n * Reduces the next privacy level based on self + parent privacy levels\n */\nexport function reducePrivacyLevel(\n childPrivacyLevel: NodePrivacyLevel | undefined,\n parentNodePrivacyLevel: NodePrivacyLevel\n): NodePrivacyLevel {\n switch (parentNodePrivacyLevel) {\n // These values cannot be overridden\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return parentNodePrivacyLevel\n }\n switch (childPrivacyLevel) {\n case NodePrivacyLevel.ALLOW:\n case NodePrivacyLevel.MASK:\n case NodePrivacyLevel.MASK_USER_INPUT:\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return childPrivacyLevel\n default:\n return parentNodePrivacyLevel\n }\n}\n\n/**\n * Determines the node's own privacy level without checking for ancestors.\n */\nexport function getNodeSelfPrivacyLevel(node: Node): NodePrivacyLevel | undefined {\n // Only Element types can have a privacy level set\n if (!isElementNode(node)) {\n return\n }\n\n const privAttr = node.getAttribute(PRIVACY_ATTR_NAME)\n\n // Overrules for replay purpose\n if (node.tagName === 'BASE') {\n return NodePrivacyLevel.ALLOW\n }\n\n // Overrules to enforce end-user protection\n if (node.tagName === 'INPUT') {\n const inputElement = node as HTMLInputElement\n if (inputElement.type === 'password' || inputElement.type === 'email' || inputElement.type === 'tel') {\n return NodePrivacyLevel.MASK\n }\n if (inputElement.type === 'hidden') {\n return NodePrivacyLevel.MASK\n }\n const autocomplete = inputElement.getAttribute('autocomplete')\n // Handle input[autocomplete=cc-number/cc-csc/cc-exp/cc-exp-month/cc-exp-year]\n if (autocomplete && autocomplete.indexOf('cc-') === 0) {\n return NodePrivacyLevel.MASK\n }\n }\n\n // Check HTML privacy attributes and classes\n if (privAttr === PRIVACY_ATTR_VALUE_HIDDEN || node.classList.contains(PRIVACY_CLASS_HIDDEN)) {\n return NodePrivacyLevel.HIDDEN\n }\n\n if (privAttr === PRIVACY_ATTR_VALUE_MASK || node.classList.contains(PRIVACY_CLASS_MASK)) {\n return NodePrivacyLevel.MASK\n }\n\n if (privAttr === PRIVACY_ATTR_VALUE_MASK_USER_INPUT || node.classList.contains(PRIVACY_CLASS_MASK_USER_INPUT)) {\n return NodePrivacyLevel.MASK_USER_INPUT\n }\n\n if (privAttr === PRIVACY_ATTR_VALUE_ALLOW || node.classList.contains(PRIVACY_CLASS_ALLOW)) {\n return NodePrivacyLevel.ALLOW\n }\n\n if (shouldIgnoreElement(node)) {\n return NodePrivacyLevel.IGNORE\n }\n}\n\n/**\n * Helper aiming to unify `mask` and `mask-user-input` privacy levels:\n *\n * In the `mask` case, it is trivial: we should mask the element.\n *\n * In the `mask-user-input` case, we should mask the element only if it is a \"form\" element or the\n * direct parent is a form element for text nodes).\n *\n * Other `shouldMaskNode` cases are edge cases that should not matter too much (ex: should we mask a\n * node if it is ignored or hidden? it doesn't matter since it won't be serialized).\n */\nexport function shouldMaskNode(node: Node, privacyLevel: NodePrivacyLevel) {\n switch (privacyLevel) {\n case NodePrivacyLevel.MASK:\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return true\n case NodePrivacyLevel.MASK_USER_INPUT:\n return isTextNode(node) ? isFormElement(node.parentNode) : isFormElement(node)\n default:\n return false\n }\n}\n\nfunction isFormElement(node: Node | null): boolean {\n if (!node || node.nodeType !== node.ELEMENT_NODE) {\n return false\n }\n const element = node as HTMLInputElement\n if (element.tagName === 'INPUT') {\n switch (element.type) {\n case 'button':\n case 'color':\n case 'reset':\n case 'submit':\n return false\n }\n }\n return !!FORM_PRIVATE_TAG_NAMES[element.tagName]\n}\n\n/**\n * Text censoring non-destructively maintains whitespace characters in order to preserve text shape\n * during replay.\n */\nexport const censorText = (text: string) => text.replace(/\\S/g, TEXT_MASKING_CHAR)\n\nexport function getTextContent(\n textNode: Node,\n ignoreWhiteSpace: boolean,\n parentNodePrivacyLevel: NodePrivacyLevel\n): string | undefined {\n // The parent node may not be a html element which has a tagName attribute.\n // So just let it be undefined which is ok in this use case.\n const parentTagName = textNode.parentElement?.tagName\n let textContent = textNode.textContent || ''\n\n if (ignoreWhiteSpace && !textContent.trim()) {\n return\n }\n\n const nodePrivacyLevel = parentNodePrivacyLevel\n\n const isScript = parentTagName === 'SCRIPT'\n\n if (isScript) {\n // For perf reasons, we don't record script (heuristic)\n textContent = CENSORED_STRING_MARK\n } else if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n // Should never occur, but just in case, we set to CENSORED_MARK.\n textContent = CENSORED_STRING_MARK\n } else if (shouldMaskNode(textNode, nodePrivacyLevel)) {\n if (\n // Scrambling the child list breaks text nodes for DATALIST/SELECT/OPTGROUP\n parentTagName === 'DATALIST' ||\n parentTagName === 'SELECT' ||\n parentTagName === 'OPTGROUP'\n ) {\n if (!textContent.trim()) {\n return\n }\n } else if (parentTagName === 'OPTION') {\n //
\n Skip to main content \n
\n\n \n","import { EntityMetadataMap, EntityDataModuleConfig } from '@ngrx/data';\n\nconst entityMetadata: EntityMetadataMap = {};\n\nconst pluralNames = { };\n\nexport const entityConfig: EntityDataModuleConfig = {\n entityMetadata,\n pluralNames\n};\n","import { ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from \"@angular/router\";\nimport {Injectable} from \"@angular/core\";\nimport {Observable, of} from \"rxjs\";\nimport {AlertService} from \"@app/core/services/alert.service\";\n\n// @Injectable({\n// providedIn: 'root'\n// })\n// export class CanDeactivateAdminFormGuard implements CanActivate {\n// canActivate(\n// route: ActivatedRouteSnapshot,\n// state: RouterStateSnapshot\n// ): Observable | Promise | boolean | UrlTree {\n//\n// return true;\n// }\n// }\n//\nexport class Permissions {\n canDeactivate(id: string): boolean {\n return false;\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CanDeactivateAdminFormGuard {\n constructor(private permissions: Permissions, private alertService: AlertService) {\n }\n\n canDeactivate(\n component: any,\n currentRoute: ActivatedRouteSnapshot,\n currentState: RouterStateSnapshot,\n nextState: RouterStateSnapshot\n ): Observable | Promise | boolean | UrlTree {\n const result = this.permissions.canDeactivate(currentRoute.params[\"id\"]);\n if (!result) {\n // this.alertService.error('Warning - you are about to lose unsaved changes');\n const result = window.confirm('There are unsaved changes! Are you sure?');\n return of(result);\n }\n return result;\n }\n}\n\n\ntype CanDeactivateType = Observable | Promise | boolean | UrlTree;\n\nexport interface CanComponentDeactivate {\n canDeactivate: () => CanDeactivateType;\n}\n","import { Injectable } from \"@angular/core\";\nimport { PeService } from '@app/core/services/pe.service';\nimport { Actions, createEffect, ofType } from \"@ngrx/effects\";\nimport { map, mergeMap } from \"rxjs\";\nimport { SessionActions } from \"@app/store/sessions/sessions-action-types\";\n\n@Injectable()\nexport class SessionsEffects {\n\n constructor(private actions$: Actions,\n private peService: PeService) {\n }\n\n //#region READ/LOAD\n loadSessionByRnrSessionId$ = createEffect(\n () => this.actions$\n .pipe(\n ofType(SessionActions.loadSessionByRnrSessionId),\n map(action => action),\n mergeMap(action => this.peService.getSessionByRnrSessionId(action.rnrSessionId).pipe(\n map(session => {\n return SessionActions.sessionInserted({ session, rnrSessionId: action.rnrSessionId });\n },\n )\n )\n )));\n //#endregion\n\n //#region CREATE\n\n //#endregion\n\n //#region DELETE\n\n //#endregion\n\n //#region UPDATE\n\n //#endregion\n}\n","import { Injectable } from \"@angular/core\";\nimport { WebRegService } from \"@app/core/services/api-request.service\";\nimport { map, Observable } from \"rxjs\";\nimport { IProgramCoursesVM } from \"./WebRegApiClient\";\n\n\n@Injectable()\nexport class ProgramCourseListService {\n\n constructor(private apiService: WebRegService) {\n }\n\n getCourses(termCode: number, schoolCode: string, programCode: string): Observable {\n return this.apiService.apiProgramsCourses(termCode, schoolCode, programCode)\n .pipe(map(r => r.toJSON() as IProgramCoursesVM)\n );\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Actions, createEffect, ofType } from \"@ngrx/effects\";\nimport { catchError, map, mergeMap, of } from \"rxjs\";\nimport { ProgramCourseListActions } from \"@app/store/program-course-list/program-course-list-action-types\";\nimport { ProgramCourseListService } from \"@app/core/services/program-course-list.service\";\n\n@Injectable()\nexport class ProgramCourseListEffects {\n\n constructor(private actions$: Actions,\n private programCourseListService: ProgramCourseListService) {\n }\n\n //#region READ/LOAD\n loadProgramCourseList$ = createEffect(\n () => this.actions$\n .pipe(\n ofType(ProgramCourseListActions.loadProgramCourseList),\n map(action => action),\n mergeMap(action => this.programCourseListService.getCourses(action.termCode, action.schoolCode, action.programCode).pipe(\n map(programCourseList => {\n return ProgramCourseListActions.loadProgramCourseListSuccess({\n programCourseList,\n concatenatedKey: action.termCode + action.schoolCode + action.programCode\n });\n },\n ),\n catchError(error => {\n return of(ProgramCourseListActions.loadProgramCourseListFailure({\n error: error\n }))\n }),\n )))\n );\n //#endregion\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class CsrfHeaderInterceptor implements HttpInterceptor {\n\n constructor() {}\n\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n if (!request.headers.has(\"X-CSRF\")) {\n request = request.clone({\n headers: request.headers.set(\"X-CSRF\", \"1\"),\n });\n }\n\n return next.handle(request);\n }\n}\n","import { APP_BASE_HREF, CommonModule } from \"@angular/common\";\nimport { HTTP_INTERCEPTORS, HttpClientModule } from \"@angular/common/http\";\nimport { isDevMode, NgModule } from '@angular/core';\nimport { MatSnackBar } from \"@angular/material/snack-bar\";\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { AlertService } from \"@app/core/services/alert.service\";\nimport { AnnouncementService } from '@app/core/services/announcement.service';\nimport { ProgramsService } from \"@app/core/services/programs.service\";\nimport { TermsService } from \"@app/core/services/terms.service\";\nimport { ToastNotificationService } from \"@app/core/services/toast-notification.service\";\nimport { API_BASE_URL } from \"@app/core/services/WebRegApiClient\";\nimport { metaReducers, reducers } from \"@app/store/app.reducer\";\nimport { ProgramsEffects } from \"@app/store/programs/programs.effects\";\nimport { SchoolsEffects } from \"@app/store/schools/schools.effects\";\nimport { TermsEffects } from \"@modules/main/homepage/store/terms/terms.effects\";\nimport { EntityDataModule } from '@ngrx/data';\nimport { EffectsModule } from '@ngrx/effects';\nimport { RouterState, StoreRouterConnectingModule } from '@ngrx/router-store';\nimport { StoreModule } from '@ngrx/store';\nimport { StoreDevtoolsModule } from '@ngrx/store-devtools';\nimport { CustomToastComponent } from \"@shared-components/custom-toast/custom-toast.component\";\nimport { SharedComponentsModule } from \"@shared-components/shared-components.module\";\nimport { provideToastr, ToastrService } from \"ngx-toastr\";\nimport { environment } from \"../environments/environment\";\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { SchoolsService } from \"./core/services/schools.service\";\nimport { entityConfig } from './store/entity-metadata';\nimport { Permissions } from \"@app/core/guards/can-deactivate-admin-form\";\nimport { CoursesService } from \"./core/services/courses.service\";\nimport { DepartmentsService } from \"./core/services/departments.service\";\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from \"@angular/material/form-field\";\nimport { SessionsEffects } from \"@app/store/sessions/sessions.effects\";\nimport { PeService } from \"@app/core/services/pe.service\";\nimport { LoggerService } from \"@app/core/services/logger.service\";\nimport { PhoneFormatPipe } from \"@app/core/pipes/phone-format.pipe\";\nimport { ProgramCourseListEffects } from \"@app/store/program-course-list/program-course-list.effects\";\nimport { ProgramCourseListService } from \"@app/core/services/program-course-list.service\";\nimport { CsrfHeaderInterceptor } from \"./csrf-header.interceptor\";\n\n@NgModule({\n declarations: [\n AppComponent,\n PhoneFormatPipe\n ],\n imports: [\n BrowserModule.withServerTransition({ appId: 'ng-cli-universal' }),\n AppRoutingModule,\n HttpClientModule,\n CommonModule,\n SharedComponentsModule,\n BrowserAnimationsModule,\n StoreModule.forRoot(reducers, {\n metaReducers\n }),\n EffectsModule.forRoot([\n TermsEffects,\n SchoolsEffects,\n ProgramsEffects,\n SessionsEffects,\n ProgramCourseListEffects\n ]),\n StoreRouterConnectingModule.forRoot({\n stateKey: \"router\",\n routerState: RouterState.Minimal\n }),\n StoreDevtoolsModule.instrument({ maxAge: 25, logOnly: !isDevMode() }),\n EntityDataModule.forRoot(entityConfig),\n ],\n providers: [\n { provide: API_BASE_URL, useValue: environment.apiBaseUrl },\n { provide: HTTP_INTERCEPTORS, useClass: CsrfHeaderInterceptor, multi: true },\n { provide: APP_BASE_HREF, useValue: environment.apiBaseHref },\n TermsService,\n SchoolsService,\n CoursesService,\n AnnouncementService,\n DepartmentsService,\n AlertService,\n ToastNotificationService,\n provideToastr({ toastComponent: CustomToastComponent, positionClass: 'toast-bottom-right' }),\n ToastrService,\n MatSnackBar,\n ProgramsService,\n Permissions,\n {\n provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: {\n subscriptSizing: 'dynamic'\n }\n },\n PeService,\n LoggerService,\n PhoneFormatPipe,\n ProgramCourseListService\n ],\n bootstrap: [AppComponent]\n})\n\nexport class AppModule {\n}\n","/// \n\nimport {platformBrowserDynamic} from \"@angular/platform-browser-dynamic\";\nimport {AppModule} from \"@app/app.module\";\n\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n","import { Subject } from './Subject';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\n\n/**\n * A variant of Subject that requires an initial value and emits its current\n * value whenever it is subscribed to.\n *\n * @class BehaviorSubject\n */\nexport class BehaviorSubject extends Subject {\n constructor(private _value: T) {\n super();\n }\n\n get value(): T {\n return this.getValue();\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n const subscription = super._subscribe(subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n }\n\n getValue(): T {\n const { hasError, thrownError, _value } = this;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n }\n\n next(value: T): void {\n super.next((this._value = value));\n }\n}\n","import { Operator } from './Operator';\nimport { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription, Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, Subscribable, Observer } from './types';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable\n */\nexport class Observable implements Subscribable {\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n source: Observable | undefined;\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n operator: Operator | undefined;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable, subscriber: Subscriber) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new Observable by calling the Observable constructor\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new observable\n * @nocollapse\n * @deprecated Use `new Observable()` instead. Will be removed in v8.\n */\n static create: (...args: any[]) => any = (subscribe?: (subscriber: Subscriber) => TeardownLogic) => {\n return new Observable(subscribe);\n };\n\n /**\n * Creates a new Observable, with this Observable instance as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param operator the operator defining the operation to take on the observable\n * @return a new observable with the Operator applied\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * If you have implemented an operator using `lift`, it is recommended that you create an\n * operator by simply returning `new Observable()` directly. See \"Creating new operators from\n * scratch\" section here: https://rxjs.dev/guide/operators\n */\n lift(operator?: Operator): Observable {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observerOrNext?: Partial> | ((value: T) => void)): Subscription;\n /** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\n subscribe(next?: ((value: T) => void) | null, error?: ((error: any) => void) | null, complete?: (() => void) | null): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * Use it when you have all these Observables, but still nothing is happening.\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to Observable's constructor, but most of the time it is\n * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * the thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * of the following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular, do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, if the `error` method is not provided and an error happens,\n * it will be thrown asynchronously. Errors thrown asynchronously cannot be caught using `try`/`catch`. Instead,\n * use the {@link onUnhandledError} configuration option or use a runtime handler (like `window.onerror` or\n * `process.on('error)`) to be notified of unhandled errors. Because of this, it's recommended that you provide\n * an `error` method to avoid missing thrown errors.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of an Observer,\n * if you do not need to listen for something, you can omit a function by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to the `error` function, as with an Observer, if not provided, errors emitted by an Observable will be thrown asynchronously.\n *\n * You can, however, subscribe with no parameters at all. This may be the case where you're not interested in terminal events\n * and you also handled emissions internally by using operators (e.g. using `tap`).\n *\n * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n *\n * #### Examples\n *\n * Subscribe with an {@link guide/observer Observer}\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() {\n * // We actually could just remove this method,\n * // since we do not really care about errors right now.\n * },\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Subscribe with functions ({@link deprecations/subscribe-arguments deprecated})\n *\n * ```ts\n * import { of } from 'rxjs'\n *\n * let sum = 0;\n *\n * of(1, 2, 3).subscribe(\n * value => {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * () => console.log('Sum equals: ' + sum)\n * );\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Cancel a subscription\n *\n * ```ts\n * import { interval } from 'rxjs';\n *\n * const subscription = interval(1000).subscribe({\n * next(num) {\n * console.log(num)\n * },\n * complete() {\n * // Will not be called, even when cancelling subscription.\n * console.log('completed!');\n * }\n * });\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 'unsubscribed!' after 2.5s\n * ```\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown asynchronously as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {Subscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(\n observerOrNext?: Partial> | ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null\n ): Subscription {\n const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n\n errorContext(() => {\n const { operator, source } = this;\n subscriber.add(\n operator\n ? // We're dealing with a subscription in the\n // operator chain to one of our lifted operators.\n operator.call(subscriber, source)\n : source\n ? // If `source` has a value, but `operator` does not, something that\n // had intimate knowledge of our API, like our `Subject`, must have\n // set it. We're going to just call `_subscribe` directly.\n this._subscribe(subscriber)\n : // In all other cases, we're likely wrapping a user-provided initializer\n // function, so we need to catch errors and handle them appropriately.\n this._trySubscribe(subscriber)\n );\n });\n\n return subscriber;\n }\n\n /** @internal */\n protected _trySubscribe(sink: Subscriber): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n // We don't need to return anything in this case,\n // because it's just going to try to `add()` to a subscription\n // above.\n sink.error(err);\n }\n }\n\n /**\n * Used as a NON-CANCELLABLE means of subscribing to an observable, for use with\n * APIs that expect promises, like `async/await`. You cannot unsubscribe from this.\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * #### Example\n *\n * ```ts\n * import { interval, take } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(4));\n *\n * async function getTotal() {\n * let total = 0;\n *\n * await source$.forEach(value => {\n * total += value;\n * console.log('observable -> ' + value);\n * });\n *\n * return total;\n * }\n *\n * getTotal().then(\n * total => console.log('Total: ' + total)\n * );\n *\n * // Expected:\n * // 'observable -> 0'\n * // 'observable -> 1'\n * // 'observable -> 2'\n * // 'observable -> 3'\n * // 'Total: 6'\n * ```\n *\n * @param next a handler for each value emitted by the observable\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void): Promise;\n\n /**\n * @param next a handler for each value emitted by the observable\n * @param promiseCtor a constructor function used to instantiate the Promise\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n * @deprecated Passing a Promise constructor will no longer be available\n * in upcoming versions of RxJS. This is because it adds weight to the library, for very\n * little benefit. If you need this functionality, it is recommended that you either\n * polyfill Promise, or you create an adapter to convert the returned native promise\n * to whatever promise implementation you wanted. Will be removed in v8.\n */\n forEach(next: (value: T) => void, promiseCtor: PromiseConstructorLike): Promise;\n\n forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n const subscriber = new SafeSubscriber({\n next: (value) => {\n try {\n next(value);\n } catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n this.subscribe(subscriber);\n }) as Promise;\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): TeardownLogic {\n return this.source?.subscribe(subscriber);\n }\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable;\n pipe(op1: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction,\n op9: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction,\n op9: OperatorFunction,\n ...operations: OperatorFunction[]\n ): Observable;\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * ## Example\n *\n * ```ts\n * import { interval, filter, map, scan } from 'rxjs';\n *\n * interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x));\n * ```\n */\n pipe(...operations: OperatorFunction[]): Observable {\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(): Promise;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: typeof Promise): Promise;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: PromiseConstructorLike): Promise;\n /* tslint:enable:max-line-length */\n\n /**\n * Subscribe to this Observable and get a Promise resolving on\n * `complete` with the last emission (if any).\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * @method toPromise\n * @param [promiseCtor] a constructor function used to instantiate\n * the Promise\n * @return A Promise that resolves with the last value emit, or\n * rejects on an error. If there were no emissions, Promise\n * resolves with undefined.\n * @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise\n */\n toPromise(promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n let value: T | undefined;\n this.subscribe(\n (x: T) => (value = x),\n (err: any) => reject(err),\n () => resolve(value)\n );\n }) as Promise;\n }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n return promiseCtor ?? config.Promise ?? Promise;\n}\n\nfunction isObserver(value: any): value is Observer {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\n\nfunction isSubscriber(value: any): value is Subscriber {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n","import { Subject } from './Subject';\nimport { TimestampProvider } from './types';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * A variant of {@link Subject} that \"replays\" old values to new subscribers by emitting them when they first subscribe.\n *\n * `ReplaySubject` has an internal buffer that will store a specified number of values that it has observed. Like `Subject`,\n * `ReplaySubject` \"observes\" values by having them passed to its `next` method. When it observes a value, it will store that\n * value for a time determined by the configuration of the `ReplaySubject`, as passed to its constructor.\n *\n * When a new subscriber subscribes to the `ReplaySubject` instance, it will synchronously emit all values in its buffer in\n * a First-In-First-Out (FIFO) manner. The `ReplaySubject` will also complete, if it has observed completion; and it will\n * error if it has observed an error.\n *\n * There are two main configuration items to be concerned with:\n *\n * 1. `bufferSize` - This will determine how many items are stored in the buffer, defaults to infinite.\n * 2. `windowTime` - The amount of time to hold a value in the buffer before removing it from the buffer.\n *\n * Both configurations may exist simultaneously. So if you would like to buffer a maximum of 3 values, as long as the values\n * are less than 2 seconds old, you could do so with a `new ReplaySubject(3, 2000)`.\n *\n * ### Differences with BehaviorSubject\n *\n * `BehaviorSubject` is similar to `new ReplaySubject(1)`, with a couple of exceptions:\n *\n * 1. `BehaviorSubject` comes \"primed\" with a single value upon construction.\n * 2. `ReplaySubject` will replay values, even after observing an error, where `BehaviorSubject` will not.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n * @see {@link shareReplay}\n */\nexport class ReplaySubject extends Subject {\n private _buffer: (T | number)[] = [];\n private _infiniteTimeWindow = true;\n\n /**\n * @param bufferSize The size of the buffer to replay on subscription\n * @param windowTime The amount of time the buffered items will stay buffered\n * @param timestampProvider An object with a `now()` method that provides the current timestamp. This is used to\n * calculate the amount of time something has been buffered.\n */\n constructor(\n private _bufferSize = Infinity,\n private _windowTime = Infinity,\n private _timestampProvider: TimestampProvider = dateTimestampProvider\n ) {\n super();\n this._infiniteTimeWindow = _windowTime === Infinity;\n this._bufferSize = Math.max(1, _bufferSize);\n this._windowTime = Math.max(1, _windowTime);\n }\n\n next(value: T): void {\n const { isStopped, _buffer, _infiniteTimeWindow, _timestampProvider, _windowTime } = this;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n super.next(value);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n this._throwIfClosed();\n this._trimBuffer();\n\n const subscription = this._innerSubscribe(subscriber);\n\n const { _infiniteTimeWindow, _buffer } = this;\n // We use a copy here, so reentrant code does not mutate our array while we're\n // emitting it to a new subscriber.\n const copy = _buffer.slice();\n for (let i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i] as T);\n }\n\n this._checkFinalizedStatuses(subscriber);\n\n return subscription;\n }\n\n private _trimBuffer() {\n const { _bufferSize, _timestampProvider, _buffer, _infiniteTimeWindow } = this;\n // If we don't have an infinite buffer size, and we're over the length,\n // use splice to truncate the old buffer values off. Note that we have to\n // double the size for instances where we're not using an infinite time window\n // because we're storing the values and the timestamps in the same array.\n const adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n\n // Now, if we're not in an infinite time window, remove all values where the time is\n // older than what is allowed.\n if (!_infiniteTimeWindow) {\n const now = _timestampProvider.now();\n let last = 0;\n // Search the array for the first timestamp that isn't expired and\n // truncate the buffer up to that point.\n for (let i = 1; i < _buffer.length && (_buffer[i] as number) <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n }\n}\n","import { createErrorClass } from './createErrorClass';\n\nexport interface ObjectUnsubscribedError extends Error {}\n\nexport interface ObjectUnsubscribedErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (): ObjectUnsubscribedError;\n}\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport const ObjectUnsubscribedError: ObjectUnsubscribedErrorCtor = createErrorClass(\n (_super) =>\n function ObjectUnsubscribedErrorImpl(this: any) {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n }\n);\n","import { Operator } from './Operator';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { Observer, SubscriptionLike, TeardownLogic } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A Subject is a special type of Observable that allows values to be\n * multicasted to many Observers. Subjects are like EventEmitters.\n *\n * Every Subject is an Observable and an Observer. You can subscribe to a\n * Subject, and you can call next to feed values as well as error and complete.\n */\nexport class Subject extends Observable implements SubscriptionLike {\n closed = false;\n\n private currentObservers: Observer[] | null = null;\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n observers: Observer[] = [];\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n isStopped = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n hasError = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n thrownError: any = null;\n\n /**\n * Creates a \"subject\" by basically gluing an observer to an observable.\n *\n * @nocollapse\n * @deprecated Recommended you do not use. Will be removed at some point in the future. Plans for replacement still under discussion.\n */\n static create: (...args: any[]) => any = (destination: Observer, source: Observable): AnonymousSubject => {\n return new AnonymousSubject(destination, source);\n };\n\n constructor() {\n // NOTE: This must be here to obscure Observable's constructor.\n super();\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n lift(operator: Operator): Observable {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator as any;\n return subject as any;\n }\n\n /** @internal */\n protected _throwIfClosed() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n }\n\n next(value: T) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n if (!this.currentObservers) {\n this.currentObservers = Array.from(this.observers);\n }\n for (const observer of this.currentObservers) {\n observer.next(value);\n }\n }\n });\n }\n\n error(err: any) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.hasError = this.isStopped = true;\n this.thrownError = err;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.error(err);\n }\n }\n });\n }\n\n complete() {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.isStopped = true;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.complete();\n }\n }\n });\n }\n\n unsubscribe() {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null!;\n }\n\n get observed() {\n return this.observers?.length > 0;\n }\n\n /** @internal */\n protected _trySubscribe(subscriber: Subscriber): TeardownLogic {\n this._throwIfClosed();\n return super._trySubscribe(subscriber);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n }\n\n /** @internal */\n protected _innerSubscribe(subscriber: Subscriber) {\n const { hasError, isStopped, observers } = this;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(() => {\n this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n }\n\n /** @internal */\n protected _checkFinalizedStatuses(subscriber: Subscriber) {\n const { hasError, thrownError, isStopped } = this;\n if (hasError) {\n subscriber.error(thrownError);\n } else if (isStopped) {\n subscriber.complete();\n }\n }\n\n /**\n * Creates a new Observable with this Subject as the source. You can do this\n * to create custom Observer-side logic of the Subject and conceal it from\n * code that uses the Observable.\n * @return {Observable} Observable that the Subject casts to\n */\n asObservable(): Observable {\n const observable: any = new Observable();\n observable.source = this;\n return observable;\n }\n}\n\n/**\n * @class AnonymousSubject\n */\nexport class AnonymousSubject extends Subject {\n constructor(\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n public destination?: Observer,\n source?: Observable\n ) {\n super();\n this.source = source;\n }\n\n next(value: T) {\n this.destination?.next?.(value);\n }\n\n error(err: any) {\n this.destination?.error?.(err);\n }\n\n complete() {\n this.destination?.complete?.();\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n return this.source?.subscribe(subscriber) ?? EMPTY_SUBSCRIPTION;\n }\n}\n","import { CompleteNotification, NextNotification, ErrorNotification } from './types';\n\n/**\n * A completion object optimized for memory use and created to be the\n * same \"shape\" as other notifications in v8.\n * @internal\n */\nexport const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined) as CompleteNotification)();\n\n/**\n * Internal use only. Creates an optimized error notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function errorNotification(error: any): ErrorNotification {\n return createNotification('E', undefined, error) as any;\n}\n\n/**\n * Internal use only. Creates an optimized next notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function nextNotification(value: T) {\n return createNotification('N', value, undefined) as NextNotification;\n}\n\n/**\n * Ensures that all notifications created internally have the same \"shape\" in v8.\n *\n * TODO: This is only exported to support a crazy legacy test in `groupBy`.\n * @internal\n */\nexport function createNotification(kind: 'N' | 'E' | 'C', value: any, error: any) {\n return {\n kind,\n value,\n error,\n };\n}\n","import { isFunction } from './util/isFunction';\nimport { Observer, ObservableNotification } from './types';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber\n */\nexport class Subscriber extends Subscription implements Observer {\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param next The `next` callback of an Observer.\n * @param error The `error` callback of an\n * Observer.\n * @param complete The `complete` callback of an\n * Observer.\n * @return A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n * @nocollapse\n * @deprecated Do not use. Will be removed in v8. There is no replacement for this\n * method, and there is no reason to be creating instances of `Subscriber` directly.\n * If you have a specific use case, please file an issue.\n */\n static create(next?: (x?: T) => void, error?: (e?: any) => void, complete?: () => void): Subscriber {\n return new SafeSubscriber(next, error, complete);\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected isStopped: boolean = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected destination: Subscriber | Observer; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * There is no reason to directly create an instance of Subscriber. This type is exported for typings reasons.\n */\n constructor(destination?: Subscriber | Observer) {\n super();\n if (destination) {\n this.destination = destination;\n // Automatically chain subscriptions together here.\n // if destination is a Subscription, then it is a Subscriber.\n if (isSubscription(destination)) {\n destination.add(this);\n }\n } else {\n this.destination = EMPTY_OBSERVER;\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n next(value?: T): void {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n } else {\n this._next(value!);\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached `Error`. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n error(err?: any): void {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n } else {\n this.isStopped = true;\n this._error(err);\n }\n }\n\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n complete(): void {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n } else {\n this.isStopped = true;\n this._complete();\n }\n }\n\n unsubscribe(): void {\n if (!this.closed) {\n this.isStopped = true;\n super.unsubscribe();\n this.destination = null!;\n }\n }\n\n protected _next(value: T): void {\n this.destination.next(value);\n }\n\n protected _error(err: any): void {\n try {\n this.destination.error(err);\n } finally {\n this.unsubscribe();\n }\n }\n\n protected _complete(): void {\n try {\n this.destination.complete();\n } finally {\n this.unsubscribe();\n }\n }\n}\n\n/**\n * This bind is captured here because we want to be able to have\n * compatibility with monoid libraries that tend to use a method named\n * `bind`. In particular, a library called Monio requires this.\n */\nconst _bind = Function.prototype.bind;\n\nfunction bind any>(fn: Fn, thisArg: any): Fn {\n return _bind.call(fn, thisArg);\n}\n\n/**\n * Internal optimization only, DO NOT EXPOSE.\n * @internal\n */\nclass ConsumerObserver implements Observer {\n constructor(private partialObserver: Partial>) {}\n\n next(value: T): void {\n const { partialObserver } = this;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n\n error(err: any): void {\n const { partialObserver } = this;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n } catch (error) {\n handleUnhandledError(error);\n }\n } else {\n handleUnhandledError(err);\n }\n }\n\n complete(): void {\n const { partialObserver } = this;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n}\n\nexport class SafeSubscriber extends Subscriber {\n constructor(\n observerOrNext?: Partial> | ((value: T) => void) | null,\n error?: ((e?: any) => void) | null,\n complete?: (() => void) | null\n ) {\n super();\n\n let partialObserver: Partial>;\n if (isFunction(observerOrNext) || !observerOrNext) {\n // The first argument is a function, not an observer. The next\n // two arguments *could* be observers, or they could be empty.\n partialObserver = {\n next: (observerOrNext ?? undefined) as (((value: T) => void) | undefined),\n error: error ?? undefined,\n complete: complete ?? undefined,\n };\n } else {\n // The first argument is a partial observer.\n let context: any;\n if (this && config.useDeprecatedNextContext) {\n // This is a deprecated path that made `this.unsubscribe()` available in\n // next handler functions passed to subscribe. This only exists behind a flag\n // now, as it is *very* slow.\n context = Object.create(observerOrNext);\n context.unsubscribe = () => this.unsubscribe();\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context),\n error: observerOrNext.error && bind(observerOrNext.error, context),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context),\n };\n } else {\n // The \"normal\" path. Just use the partial observer directly.\n partialObserver = observerOrNext;\n }\n }\n\n // Wrap the partial observer to ensure it's a full observer, and\n // make sure proper error handling is accounted for.\n this.destination = new ConsumerObserver(partialObserver);\n }\n}\n\nfunction handleUnhandledError(error: any) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n } else {\n // Ideal path, we report this as an unhandled error,\n // which is thrown on a new call stack.\n reportUnhandledError(error);\n }\n}\n\n/**\n * An error handler used when no error handler was supplied\n * to the SafeSubscriber -- meaning no error handler was supplied\n * do the `subscribe` call on our observable.\n * @param err The error to handle\n */\nfunction defaultErrorHandler(err: any) {\n throw err;\n}\n\n/**\n * A handler for notifications that cannot be sent to a stopped subscriber.\n * @param notification The notification being sent\n * @param subscriber The stopped subscriber\n */\nfunction handleStoppedNotification(notification: ObservableNotification, subscriber: Subscriber) {\n const { onStoppedNotification } = config;\n onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));\n}\n\n/**\n * The observer used as a stub for subscriptions where the user did not\n * pass any arguments to `subscribe`. Comes with the default error handling\n * behavior.\n */\nexport const EMPTY_OBSERVER: Readonly> & { closed: true } = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n","import { createErrorClass } from './createErrorClass';\n\nexport interface UnsubscriptionError extends Error {\n readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (errors: any[]): UnsubscriptionError;\n}\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = createErrorClass(\n (_super) =>\n function UnsubscriptionErrorImpl(this: any, errors: (Error | string)[]) {\n _super(this);\n this.message = errors\n ? `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}`\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n }\n);\n","import { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic, Unsubscribable } from './types';\nimport { arrRemove } from './util/arrRemove';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements SubscriptionLike {\n /** @nocollapse */\n public static EMPTY = (() => {\n const empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n */\n public closed = false;\n\n private _parentage: Subscription[] | Subscription | null = null;\n\n /**\n * The list of registered finalizers to execute upon unsubscription. Adding and removing from this\n * list occurs in the {@link #add} and {@link #remove} methods.\n */\n private _finalizers: Exclude[] | null = null;\n\n /**\n * @param initialTeardown A function executed first as part of the finalization\n * process that is kicked off when {@link #unsubscribe} is called.\n */\n constructor(private initialTeardown?: () => void) {}\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let errors: any[] | undefined;\n\n if (!this.closed) {\n this.closed = true;\n\n // Remove this from it's parents.\n const { _parentage } = this;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n for (const parent of _parentage) {\n parent.remove(this);\n }\n } else {\n _parentage.remove(this);\n }\n }\n\n const { initialTeardown: initialFinalizer } = this;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n\n const { _finalizers } = this;\n if (_finalizers) {\n this._finalizers = null;\n for (const finalizer of _finalizers) {\n try {\n execFinalizer(finalizer);\n } catch (err) {\n errors = errors ?? [];\n if (err instanceof UnsubscriptionError) {\n errors = [...errors, ...err.errors];\n } else {\n errors.push(err);\n }\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n }\n\n /**\n * Adds a finalizer to this subscription, so that finalization will be unsubscribed/called\n * when this subscription is unsubscribed. If this subscription is already {@link #closed},\n * because it has already been unsubscribed, then whatever finalizer is passed to it\n * will automatically be executed (unless the finalizer itself is also a closed subscription).\n *\n * Closed Subscriptions cannot be added as finalizers to any subscription. Adding a closed\n * subscription to a any subscription will result in no operation. (A noop).\n *\n * Adding a subscription to itself, or adding `null` or `undefined` will not perform any\n * operation at all. (A noop).\n *\n * `Subscription` instances that are added to this instance will automatically remove themselves\n * if they are unsubscribed. Functions and {@link Unsubscribable} objects that you wish to remove\n * will need to be removed manually with {@link #remove}\n *\n * @param teardown The finalization logic to add to this subscription.\n */\n add(teardown: TeardownLogic): void {\n // Only add the finalizer if it's not undefined\n // and don't add a subscription to itself.\n if (teardown && teardown !== this) {\n if (this.closed) {\n // If this subscription is already closed,\n // execute whatever finalizer is handed to it automatically.\n execFinalizer(teardown);\n } else {\n if (teardown instanceof Subscription) {\n // We don't add closed subscriptions, and we don't add the same subscription\n // twice. Subscription unsubscribe is idempotent.\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = this._finalizers ?? []).push(teardown);\n }\n }\n }\n\n /**\n * Checks to see if a this subscription already has a particular parent.\n * This will signal that this subscription has already been added to the parent in question.\n * @param parent the parent to check for\n */\n private _hasParent(parent: Subscription) {\n const { _parentage } = this;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n }\n\n /**\n * Adds a parent to this subscription so it can be removed from the parent if it\n * unsubscribes on it's own.\n *\n * NOTE: THIS ASSUMES THAT {@link _hasParent} HAS ALREADY BEEN CHECKED.\n * @param parent The parent subscription to add\n */\n private _addParent(parent: Subscription) {\n const { _parentage } = this;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n }\n\n /**\n * Called on a child when it is removed via {@link #remove}.\n * @param parent The parent to remove\n */\n private _removeParent(parent: Subscription) {\n const { _parentage } = this;\n if (_parentage === parent) {\n this._parentage = null;\n } else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n }\n\n /**\n * Removes a finalizer from this subscription that was previously added with the {@link #add} method.\n *\n * Note that `Subscription` instances, when unsubscribed, will automatically remove themselves\n * from every other `Subscription` they have been added to. This means that using the `remove` method\n * is not a common thing and should be used thoughtfully.\n *\n * If you add the same finalizer instance of a function or an unsubscribable object to a `Subscription` instance\n * more than once, you will need to call `remove` the same number of times to remove all instances.\n *\n * All finalizer instances are removed to free up memory upon unsubscription.\n *\n * @param teardown The finalizer to remove from this subscription\n */\n remove(teardown: Exclude): void {\n const { _finalizers } = this;\n _finalizers && arrRemove(_finalizers, teardown);\n\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n }\n}\n\nexport const EMPTY_SUBSCRIPTION = Subscription.EMPTY;\n\nexport function isSubscription(value: any): value is Subscription {\n return (\n value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe))\n );\n}\n\nfunction execFinalizer(finalizer: Unsubscribable | (() => void)) {\n if (isFunction(finalizer)) {\n finalizer();\n } else {\n finalizer.unsubscribe();\n }\n}\n","import { Subscriber } from './Subscriber';\nimport { ObservableNotification } from './types';\n\n/**\n * The {@link GlobalConfig} object for RxJS. It is used to configure things\n * like how to react on unhandled errors.\n */\nexport const config: GlobalConfig = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like how to react on unhandled errors. Accessible via {@link config}\n * object.\n */\nexport interface GlobalConfig {\n /**\n * A registration point for unhandled errors from RxJS. These are errors that\n * cannot were not handled by consuming code in the usual subscription path. For\n * example, if you have this configured, and you subscribe to an observable without\n * providing an error handler, errors from that subscription will end up here. This\n * will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onUnhandledError: ((err: any) => void) | null;\n\n /**\n * A registration point for notifications that cannot be sent to subscribers because they\n * have completed, errored or have been explicitly unsubscribed. By default, next, complete\n * and error notifications sent to stopped subscribers are noops. However, sometimes callers\n * might want a different behavior. For example, with sources that attempt to report errors\n * to stopped subscribers, a caller can configure RxJS to throw an unhandled error instead.\n * This will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onStoppedNotification: ((notification: ObservableNotification, subscriber: Subscriber) => void) | null;\n\n /**\n * The promise constructor used by default for {@link Observable#toPromise toPromise} and {@link Observable#forEach forEach}\n * methods.\n *\n * @deprecated As of version 8, RxJS will no longer support this sort of injection of a\n * Promise constructor. If you need a Promise implementation other than native promises,\n * please polyfill/patch Promise as you see appropriate. Will be removed in v8.\n */\n Promise?: PromiseConstructorLike;\n\n /**\n * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n * call in a try/catch block. It also enables producer interference, a nasty bug\n * where a multicast can be broken for all observers by a downstream consumer with\n * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BUY TIME\n * FOR MIGRATION REASONS.\n *\n * @deprecated As of version 8, RxJS will no longer support synchronous throwing\n * of unhandled errors. All errors will be thrown on a separate call stack to prevent bad\n * behaviors described above. Will be removed in v8.\n */\n useDeprecatedSynchronousErrorHandling: boolean;\n\n /**\n * If true, enables an as-of-yet undocumented feature from v5: The ability to access\n * `unsubscribe()` via `this` context in `next` functions created in observers passed\n * to `subscribe`.\n *\n * This is being removed because the performance was severely problematic, and it could also cause\n * issues when types other than POJOs are passed to subscribe as subscribers, as they will likely have\n * their `this` context overwritten.\n *\n * @deprecated As of version 8, RxJS will no longer support altering the\n * context of next functions provided as part of an observer to Subscribe. Instead,\n * you will have access to a subscription or a signal or token that will allow you to do things like\n * unsubscribe and test closed status. Will be removed in v8.\n */\n useDeprecatedNextContext: boolean;\n}\n","import { Subject } from '../Subject';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { hasLift } from '../util/lift';\n\n/**\n * @class ConnectableObservable\n * @deprecated Will be removed in v8. Use {@link connectable} to create a connectable observable.\n * If you are using the `refCount` method of `ConnectableObservable`, use the {@link share} operator\n * instead.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport class ConnectableObservable extends Observable {\n protected _subject: Subject | null = null;\n protected _refCount: number = 0;\n protected _connection: Subscription | null = null;\n\n /**\n * @param source The source observable\n * @param subjectFactory The factory that creates the subject used internally.\n * @deprecated Will be removed in v8. Use {@link connectable} to create a connectable observable.\n * `new ConnectableObservable(source, factory)` is equivalent to\n * `connectable(source, { connector: factory })`.\n * When the `refCount()` method is needed, the {@link share} operator should be used instead:\n * `new ConnectableObservable(source, factory).refCount()` is equivalent to\n * `source.pipe(share({ connector: factory }))`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\n constructor(public source: Observable, protected subjectFactory: () => Subject) {\n super();\n // If we have lift, monkey patch that here. This is done so custom observable\n // types will compose through multicast. Otherwise the resulting observable would\n // simply be an instance of `ConnectableObservable`.\n if (hasLift(source)) {\n this.lift = source.lift;\n }\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber) {\n return this.getSubject().subscribe(subscriber);\n }\n\n protected getSubject(): Subject {\n const subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject!;\n }\n\n protected _teardown() {\n this._refCount = 0;\n const { _connection } = this;\n this._subject = this._connection = null;\n _connection?.unsubscribe();\n }\n\n /**\n * @deprecated {@link ConnectableObservable} will be removed in v8. Use {@link connectable} instead.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\n connect(): Subscription {\n let connection = this._connection;\n if (!connection) {\n connection = this._connection = new Subscription();\n const subject = this.getSubject();\n connection.add(\n this.source.subscribe(\n createOperatorSubscriber(\n subject as any,\n undefined,\n () => {\n this._teardown();\n subject.complete();\n },\n (err) => {\n this._teardown();\n subject.error(err);\n },\n () => this._teardown()\n )\n )\n );\n\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n }\n\n /**\n * @deprecated {@link ConnectableObservable} will be removed in v8. Use the {@link share} operator instead.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\n refCount(): Observable {\n return higherOrderRefCount()(this) as Observable;\n }\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf, ObservableInputTuple } from '../types';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { Subscriber } from '../Subscriber';\nimport { from } from './from';\nimport { identity } from '../util/identity';\nimport { Subscription } from '../Subscription';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { popResultSelector, popScheduler } from '../util/args';\nimport { createObject } from '../util/createObject';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { AnyCatcher } from '../AnyCatcher';\nimport { executeSchedule } from '../util/executeSchedule';\n\n// combineLatest(any)\n// We put this first because we need to catch cases where the user has supplied\n// _exactly `any`_ as the argument. Since `any` literally matches _anything_,\n// we don't want it to randomly hit one of the other type signatures below,\n// as we have no idea at build-time what type we should be returning when given an any.\n\n/**\n * You have passed `any` here, we can't figure out if it is\n * an array or an object, so you're getting `unknown`. Use better types.\n * @param arg Something typed as `any`\n */\nexport function combineLatest(arg: T): Observable;\n\n// combineLatest([a, b, c])\nexport function combineLatest(sources: []): Observable;\nexport function combineLatest(sources: readonly [...ObservableInputTuple]): Observable;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `combineLatestAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function combineLatest(\n sources: readonly [...ObservableInputTuple],\n resultSelector: (...values: A) => R,\n scheduler: SchedulerLike\n): Observable;\nexport function combineLatest(\n sources: readonly [...ObservableInputTuple],\n resultSelector: (...values: A) => R\n): Observable;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `combineLatestAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function combineLatest(\n sources: readonly [...ObservableInputTuple],\n scheduler: SchedulerLike\n): Observable;\n\n// combineLatest(a, b, c)\n/** @deprecated Pass an array of sources instead. The rest-parameters signature will be removed in v8. Details: https://rxjs.dev/deprecations/array-argument */\nexport function combineLatest(...sources: [...ObservableInputTuple]): Observable;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `combineLatestAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function combineLatest(\n ...sourcesAndResultSelectorAndScheduler: [...ObservableInputTuple, (...values: A) => R, SchedulerLike]\n): Observable;\n/** @deprecated Pass an array of sources instead. The rest-parameters signature will be removed in v8. Details: https://rxjs.dev/deprecations/array-argument */\nexport function combineLatest(\n ...sourcesAndResultSelector: [...ObservableInputTuple, (...values: A) => R]\n): Observable;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `combineLatestAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function combineLatest(\n ...sourcesAndScheduler: [...ObservableInputTuple, SchedulerLike]\n): Observable;\n\n// combineLatest({a, b, c})\nexport function combineLatest(sourcesObject: { [K in any]: never }): Observable;\nexport function combineLatest>>(\n sourcesObject: T\n): Observable<{ [K in keyof T]: ObservedValueOf }>;\n\n/**\n * Combines multiple Observables to create an Observable whose values are\n * calculated from the latest values of each of its input Observables.\n *\n * Whenever any input Observable emits a value, it\n * computes a formula using the latest values from all the inputs, then emits\n * the output of that formula.\n *\n * ![](combineLatest.png)\n *\n * `combineLatest` combines the values from all the Observables passed in the\n * observables array. This is done by subscribing to each Observable in order and,\n * whenever any Observable emits, collecting an array of the most recent\n * values from each Observable. So if you pass `n` Observables to this operator,\n * the returned Observable will always emit an array of `n` values, in an order\n * corresponding to the order of the passed Observables (the value from the first Observable\n * will be at index 0 of the array and so on).\n *\n * Static version of `combineLatest` accepts an array of Observables. Note that an array of\n * Observables is a good choice, if you don't know beforehand how many Observables\n * you will combine. Passing an empty array will result in an Observable that\n * completes immediately.\n *\n * To ensure the output array always has the same length, `combineLatest` will\n * actually wait for all input Observables to emit at least once,\n * before it starts emitting results. This means if some Observable emits\n * values before other Observables started emitting, all these values but the last\n * will be lost. On the other hand, if some Observable does not emit a value but\n * completes, resulting Observable will complete at the same moment without\n * emitting anything, since it will now be impossible to include a value from the\n * completed Observable in the resulting array. Also, if some input Observable does\n * not emit any value and never completes, `combineLatest` will also never emit\n * and never complete, since, again, it will wait for all streams to emit some\n * value.\n *\n * If at least one Observable was passed to `combineLatest` and all passed Observables\n * emitted something, the resulting Observable will complete when all combined\n * streams complete. So even if some Observable completes, the result of\n * `combineLatest` will still emit values when other Observables do. In case\n * of a completed Observable, its value from now on will always be the last\n * emitted value. On the other hand, if any Observable errors, `combineLatest`\n * will error immediately as well, and all other Observables will be unsubscribed.\n *\n * ## Examples\n *\n * Combine two timer Observables\n *\n * ```ts\n * import { timer, combineLatest } from 'rxjs';\n *\n * const firstTimer = timer(0, 1000); // emit 0, 1, 2... after every second, starting from now\n * const secondTimer = timer(500, 1000); // emit 0, 1, 2... after every second, starting 0,5s from now\n * const combinedTimers = combineLatest([firstTimer, secondTimer]);\n * combinedTimers.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0] after 0.5s\n * // [1, 0] after 1s\n * // [1, 1] after 1.5s\n * // [2, 1] after 2s\n * ```\n *\n * Combine a dictionary of Observables\n *\n * ```ts\n * import { of, delay, startWith, combineLatest } from 'rxjs';\n *\n * const observables = {\n * a: of(1).pipe(delay(1000), startWith(0)),\n * b: of(5).pipe(delay(5000), startWith(0)),\n * c: of(10).pipe(delay(10000), startWith(0))\n * };\n * const combined = combineLatest(observables);\n * combined.subscribe(value => console.log(value));\n * // Logs\n * // { a: 0, b: 0, c: 0 } immediately\n * // { a: 1, b: 0, c: 0 } after 1s\n * // { a: 1, b: 5, c: 0 } after 5s\n * // { a: 1, b: 5, c: 10 } after 10s\n * ```\n *\n * Combine an array of Observables\n *\n * ```ts\n * import { of, delay, startWith, combineLatest } from 'rxjs';\n *\n * const observables = [1, 5, 10].map(\n * n => of(n).pipe(\n * delay(n * 1000), // emit 0 and then emit n after n seconds\n * startWith(0)\n * )\n * );\n * const combined = combineLatest(observables);\n * combined.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0, 0] immediately\n * // [1, 0, 0] after 1s\n * // [1, 5, 0] after 5s\n * // [1, 5, 10] after 10s\n * ```\n *\n * Use map operator to dynamically calculate the Body-Mass Index\n *\n * ```ts\n * import { of, combineLatest, map } from 'rxjs';\n *\n * const weight = of(70, 72, 76, 79, 75);\n * const height = of(1.76, 1.77, 1.78);\n * const bmi = combineLatest([weight, height]).pipe(\n * map(([w, h]) => w / (h * h)),\n * );\n * bmi.subscribe(x => console.log('BMI is ' + x));\n *\n * // With output to console:\n * // BMI is 24.212293388429753\n * // BMI is 23.93948099205209\n * // BMI is 23.671253629592222\n * ```\n *\n * @see {@link combineLatestAll}\n * @see {@link merge}\n * @see {@link withLatestFrom}\n *\n * @param {ObservableInput} [observables] An array of input Observables to combine with each other.\n * An array of Observables must be given as the first argument.\n * @param {function} [project] An optional function to project the values from\n * the combined latest values into a new value on the output Observable.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for subscribing to\n * each input Observable.\n * @return {Observable} An Observable of projected values from the most recent\n * values from each input Observable, or an array of the most recent values from\n * each input Observable.\n */\nexport function combineLatest, R>(...args: any[]): Observable | Observable[]> {\n const scheduler = popScheduler(args);\n const resultSelector = popResultSelector(args);\n\n const { args: observables, keys } = argsArgArrayOrObject(args);\n\n if (observables.length === 0) {\n // If no observables are passed, or someone has passed an empty array\n // of observables, or even an empty object POJO, we need to just\n // complete (EMPTY), but we have to honor the scheduler provided if any.\n return from([], scheduler as any);\n }\n\n const result = new Observable[]>(\n combineLatestInit(\n observables as ObservableInput>[],\n scheduler,\n keys\n ? // A handler for scrubbing the array of args into a dictionary.\n (values) => createObject(keys, values)\n : // A passthrough to just return the array\n identity\n )\n );\n\n return resultSelector ? (result.pipe(mapOneOrManyArgs(resultSelector)) as Observable) : result;\n}\n\nexport function combineLatestInit(\n observables: ObservableInput[],\n scheduler?: SchedulerLike,\n valueTransform: (values: any[]) => any = identity\n) {\n return (subscriber: Subscriber) => {\n // The outer subscription. We're capturing this in a function\n // because we may have to schedule it.\n maybeSchedule(\n scheduler,\n () => {\n const { length } = observables;\n // A store for the values each observable has emitted so far. We match observable to value on index.\n const values = new Array(length);\n // The number of currently active subscriptions, as they complete, we decrement this number to see if\n // we are all done combining values, so we can complete the result.\n let active = length;\n // The number of inner sources that still haven't emitted the first value\n // We need to track this because all sources need to emit one value in order\n // to start emitting values.\n let remainingFirstValues = length;\n // The loop to kick off subscription. We're keying everything on index `i` to relate the observables passed\n // in to the slot in the output array or the key in the array of keys in the output dictionary.\n for (let i = 0; i < length; i++) {\n maybeSchedule(\n scheduler,\n () => {\n const source = from(observables[i], scheduler as any);\n let hasFirstValue = false;\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n // When we get a value, record it in our set of values.\n values[i] = value;\n if (!hasFirstValue) {\n // If this is our first value, record that.\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n // We're not waiting for any more\n // first values, so we can emit!\n subscriber.next(valueTransform(values.slice()));\n }\n },\n () => {\n if (!--active) {\n // We only complete the result if we have no more active\n // inner observables.\n subscriber.complete();\n }\n }\n )\n );\n },\n subscriber\n );\n }\n },\n subscriber\n );\n };\n}\n\n/**\n * A small utility to handle the couple of locations where we want to schedule if a scheduler was provided,\n * but we don't if there was no scheduler.\n */\nfunction maybeSchedule(scheduler: SchedulerLike | undefined, execute: () => void, subscription: Subscription) {\n if (scheduler) {\n executeSchedule(subscription, scheduler, execute);\n } else {\n execute();\n }\n}\n","import { Observable } from '../Observable';\nimport { ObservableInputTuple, SchedulerLike } from '../types';\nimport { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\n\nexport function concat(...inputs: [...ObservableInputTuple]): Observable;\nexport function concat(\n ...inputsAndScheduler: [...ObservableInputTuple, SchedulerLike]\n): Observable;\n\n/**\n * Creates an output Observable which sequentially emits all values from the first given\n * Observable and then moves on to the next.\n *\n * Concatenates multiple Observables together by\n * sequentially emitting their values, one Observable after the other.\n *\n * ![](concat.png)\n *\n * `concat` joins multiple Observables together, by subscribing to them one at a time and\n * merging their results into the output Observable. You can pass either an array of\n * Observables, or put them directly as arguments. Passing an empty array will result\n * in Observable that completes immediately.\n *\n * `concat` will subscribe to first input Observable and emit all its values, without\n * changing or affecting them in any way. When that Observable completes, it will\n * subscribe to then next Observable passed and, again, emit its values. This will be\n * repeated, until the operator runs out of Observables. When last input Observable completes,\n * `concat` will complete as well. At any given moment only one Observable passed to operator\n * emits values. If you would like to emit values from passed Observables concurrently, check out\n * {@link merge} instead, especially with optional `concurrent` parameter. As a matter of fact,\n * `concat` is an equivalent of `merge` operator with `concurrent` parameter set to `1`.\n *\n * Note that if some input Observable never completes, `concat` will also never complete\n * and Observables following the one that did not complete will never be subscribed. On the other\n * hand, if some Observable simply completes immediately after it is subscribed, it will be\n * invisible for `concat`, which will just move on to the next Observable.\n *\n * If any Observable in chain errors, instead of passing control to the next Observable,\n * `concat` will error immediately as well. Observables that would be subscribed after\n * the one that emitted error, never will.\n *\n * If you pass to `concat` the same Observable many times, its stream of values\n * will be \"replayed\" on every subscription, which means you can repeat given Observable\n * as many times as you like. If passing the same Observable to `concat` 1000 times becomes tedious,\n * you can always use {@link repeat}.\n *\n * ## Examples\n *\n * Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10\n *\n * ```ts\n * import { interval, take, range, concat } from 'rxjs';\n *\n * const timer = interval(1000).pipe(take(4));\n * const sequence = range(1, 10);\n * const result = concat(timer, sequence);\n * result.subscribe(x => console.log(x));\n *\n * // results in:\n * // 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10\n * ```\n *\n * Concatenate 3 Observables\n *\n * ```ts\n * import { interval, take, concat } from 'rxjs';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n *\n * const result = concat(timer1, timer2, timer3);\n * result.subscribe(x => console.log(x));\n *\n * // results in the following:\n * // (Prints to console sequentially)\n * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9\n * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5\n * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9\n * ```\n *\n * Concatenate the same Observable to repeat it\n *\n * ```ts\n * import { interval, take, concat } from 'rxjs';\n *\n * const timer = interval(1000).pipe(take(2));\n *\n * concat(timer, timer) // concatenating the same Observable!\n * .subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('...and it is done!')\n * });\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 0 after 3s\n * // 1 after 4s\n * // '...and it is done!' also after 4s\n * ```\n *\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link startWith}\n * @see {@link endWith}\n *\n * @param args Input Observables to concatenate.\n */\nexport function concat(...args: any[]): Observable {\n return concatAll()(from(args, popScheduler(args)));\n}\n","import { mergeAll } from './mergeAll';\nimport { OperatorFunction, ObservableInput, ObservedValueOf } from '../types';\n\n/**\n * Converts a higher-order Observable into a first-order Observable by\n * concatenating the inner Observables in order.\n *\n * Flattens an Observable-of-Observables by putting one\n * inner Observable after the other.\n *\n * ![](concatAll.svg)\n *\n * Joins every Observable emitted by the source (a higher-order Observable), in\n * a serial fashion. It subscribes to each inner Observable only after the\n * previous inner Observable has completed, and merges all of their values into\n * the returned observable.\n *\n * __Warning:__ If the source Observable emits Observables quickly and\n * endlessly, and the inner Observables it emits generally complete slower than\n * the source emits, you can run into memory issues as the incoming Observables\n * collect in an unbounded buffer.\n *\n * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set\n * to `1`.\n *\n * ## Example\n *\n * For each click event, tick every second from 0 to 3, with no concurrency\n *\n * ```ts\n * import { fromEvent, map, interval, take, concatAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map(() => interval(1000).pipe(take(4)))\n * );\n * const firstOrder = higherOrder.pipe(concatAll());\n * firstOrder.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link combineLatestAll}\n * @see {@link concat}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link exhaustAll}\n * @see {@link mergeAll}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @return A function that returns an Observable emitting values from all the\n * inner Observables concatenated.\n */\nexport function concatAll>(): OperatorFunction> {\n return mergeAll(1);\n}\n","import { Observable } from '../Observable';\nimport { ObservedValueOf, ObservableInput } from '../types';\nimport { innerFrom } from './innerFrom';\n\n/**\n * Creates an Observable that, on subscribe, calls an Observable factory to\n * make an Observable for each new Observer.\n *\n * Creates the Observable lazily, that is, only when it\n * is subscribed.\n * \n *\n * ![](defer.png)\n *\n * `defer` allows you to create an Observable only when the Observer\n * subscribes. It waits until an Observer subscribes to it, calls the given\n * factory function to get an Observable -- where a factory function typically\n * generates a new Observable -- and subscribes the Observer to this Observable.\n * In case the factory function returns a falsy value, then EMPTY is used as\n * Observable instead. Last but not least, an exception during the factory\n * function call is transferred to the Observer by calling `error`.\n *\n * ## Example\n *\n * Subscribe to either an Observable of clicks or an Observable of interval, at random\n *\n * ```ts\n * import { defer, fromEvent, interval } from 'rxjs';\n *\n * const clicksOrInterval = defer(() => {\n * return Math.random() > 0.5\n * ? fromEvent(document, 'click')\n * : interval(1000);\n * });\n * clicksOrInterval.subscribe(x => console.log(x));\n *\n * // Results in the following behavior:\n * // If the result of Math.random() is greater than 0.5 it will listen\n * // for clicks anywhere on the \"document\"; when document is clicked it\n * // will log a MouseEvent object to the console. If the result is less\n * // than 0.5 it will emit ascending numbers, one every second(1000ms).\n * ```\n *\n * @see {@link Observable}\n *\n * @param {function(): ObservableInput} observableFactory The Observable\n * factory function to invoke for each Observer that subscribes to the output\n * Observable. May also return a Promise, which will be converted on the fly\n * to an Observable.\n * @return {Observable} An Observable whose Observers' subscriptions trigger\n * an invocation of the given Observable factory function.\n */\nexport function defer>(observableFactory: () => R): Observable> {\n return new Observable>((subscriber) => {\n innerFrom(observableFactory()).subscribe(subscriber);\n });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\n/**\n * A simple Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * Just emits 'complete', and nothing else.\n *\n * ![](empty.png)\n *\n * A simple Observable that only emits the complete notification. It can be used\n * for composing with other Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n *\n * Log complete notification\n *\n * ```ts\n * import { EMPTY } from 'rxjs';\n *\n * EMPTY.subscribe({\n * next: () => console.log('Next'),\n * complete: () => console.log('Complete!')\n * });\n *\n * // Outputs\n * // Complete!\n * ```\n *\n * Emit the number 7, then complete\n *\n * ```ts\n * import { EMPTY, startWith } from 'rxjs';\n *\n * const result = EMPTY.pipe(startWith(7));\n * result.subscribe(x => console.log(x));\n *\n * // Outputs\n * // 7\n * ```\n *\n * Map and flatten only odd numbers to the sequence `'a'`, `'b'`, `'c'`\n *\n * ```ts\n * import { interval, mergeMap, of, EMPTY } from 'rxjs';\n *\n * const interval$ = interval(1000);\n * const result = interval$.pipe(\n * mergeMap(x => x % 2 === 1 ? of('a', 'b', 'c') : EMPTY),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval, e.g. (0, 1, 2, 3, ...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1, print a, b, c (each on its own)\n * // if x % 2 is not equal to 1, nothing will be output\n * ```\n *\n * @see {@link Observable}\n * @see {@link NEVER}\n * @see {@link of}\n * @see {@link throwError}\n */\nexport const EMPTY = new Observable((subscriber) => subscriber.complete());\n\n/**\n * @param scheduler A {@link SchedulerLike} to use for scheduling\n * the emission of the complete notification.\n * @deprecated Replaced with the {@link EMPTY} constant or {@link scheduled} (e.g. `scheduled([], scheduler)`). Will be removed in v8.\n */\nexport function empty(scheduler?: SchedulerLike) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\n\nfunction emptyScheduled(scheduler: SchedulerLike) {\n return new Observable((subscriber) => scheduler.schedule(() => subscriber.complete()));\n}\n","import { Observable } from '../Observable';\nimport { ObservedValueOf, ObservableInputTuple, ObservableInput } from '../types';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { innerFrom } from './innerFrom';\nimport { popResultSelector } from '../util/args';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { createObject } from '../util/createObject';\nimport { AnyCatcher } from '../AnyCatcher';\n\n// forkJoin(any)\n// We put this first because we need to catch cases where the user has supplied\n// _exactly `any`_ as the argument. Since `any` literally matches _anything_,\n// we don't want it to randomly hit one of the other type signatures below,\n// as we have no idea at build-time what type we should be returning when given an any.\n\n/**\n * You have passed `any` here, we can't figure out if it is\n * an array or an object, so you're getting `unknown`. Use better types.\n * @param arg Something typed as `any`\n */\nexport function forkJoin(arg: T): Observable;\n\n// forkJoin(null | undefined)\nexport function forkJoin(scheduler: null | undefined): Observable;\n\n// forkJoin([a, b, c])\nexport function forkJoin(sources: readonly []): Observable;\nexport function forkJoin(sources: readonly [...ObservableInputTuple]): Observable;\nexport function forkJoin(\n sources: readonly [...ObservableInputTuple],\n resultSelector: (...values: A) => R\n): Observable;\n\n// forkJoin(a, b, c)\n/** @deprecated Pass an array of sources instead. The rest-parameters signature will be removed in v8. Details: https://rxjs.dev/deprecations/array-argument */\nexport function forkJoin(...sources: [...ObservableInputTuple]): Observable;\n/** @deprecated Pass an array of sources instead. The rest-parameters signature will be removed in v8. Details: https://rxjs.dev/deprecations/array-argument */\nexport function forkJoin(\n ...sourcesAndResultSelector: [...ObservableInputTuple, (...values: A) => R]\n): Observable;\n\n// forkJoin({a, b, c})\nexport function forkJoin(sourcesObject: { [K in any]: never }): Observable;\nexport function forkJoin>>(\n sourcesObject: T\n): Observable<{ [K in keyof T]: ObservedValueOf }>;\n\n/**\n * Accepts an `Array` of {@link ObservableInput} or a dictionary `Object` of {@link ObservableInput} and returns\n * an {@link Observable} that emits either an array of values in the exact same order as the passed array,\n * or a dictionary of values in the same shape as the passed dictionary.\n *\n * Wait for Observables to complete and then combine last values they emitted;\n * complete immediately if an empty array is passed.\n *\n * ![](forkJoin.png)\n *\n * `forkJoin` is an operator that takes any number of input observables which can be passed either as an array\n * or a dictionary of input observables. If no input observables are provided (e.g. an empty array is passed),\n * then the resulting stream will complete immediately.\n *\n * `forkJoin` will wait for all passed observables to emit and complete and then it will emit an array or an object with last\n * values from corresponding observables.\n *\n * If you pass an array of `n` observables to the operator, then the resulting\n * array will have `n` values, where the first value is the last one emitted by the first observable,\n * second value is the last one emitted by the second observable and so on.\n *\n * If you pass a dictionary of observables to the operator, then the resulting\n * objects will have the same keys as the dictionary passed, with their last values they have emitted\n * located at the corresponding key.\n *\n * That means `forkJoin` will not emit more than once and it will complete after that. If you need to emit combined\n * values not only at the end of the lifecycle of passed observables, but also throughout it, try out {@link combineLatest}\n * or {@link zip} instead.\n *\n * In order for the resulting array to have the same length as the number of input observables, whenever any of\n * the given observables completes without emitting any value, `forkJoin` will complete at that moment as well\n * and it will not emit anything either, even if it already has some last values from other observables.\n * Conversely, if there is an observable that never completes, `forkJoin` will never complete either,\n * unless at any point some other observable completes without emitting a value, which brings us back to\n * the previous case. Overall, in order for `forkJoin` to emit a value, all given observables\n * have to emit something at least once and complete.\n *\n * If any given observable errors at some point, `forkJoin` will error as well and immediately unsubscribe\n * from the other observables.\n *\n * Optionally `forkJoin` accepts a `resultSelector` function, that will be called with values which normally\n * would land in the emitted array. Whatever is returned by the `resultSelector`, will appear in the output\n * observable instead. This means that the default `resultSelector` can be thought of as a function that takes\n * all its arguments and puts them into an array. Note that the `resultSelector` will be called only\n * when `forkJoin` is supposed to emit a result.\n *\n * ## Examples\n *\n * Use `forkJoin` with a dictionary of observable inputs\n *\n * ```ts\n * import { forkJoin, of, timer } from 'rxjs';\n *\n * const observable = forkJoin({\n * foo: of(1, 2, 3, 4),\n * bar: Promise.resolve(8),\n * baz: timer(4000)\n * });\n * observable.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('This is how it ends!'),\n * });\n *\n * // Logs:\n * // { foo: 4, bar: 8, baz: 0 } after 4 seconds\n * // 'This is how it ends!' immediately after\n * ```\n *\n * Use `forkJoin` with an array of observable inputs\n *\n * ```ts\n * import { forkJoin, of, timer } from 'rxjs';\n *\n * const observable = forkJoin([\n * of(1, 2, 3, 4),\n * Promise.resolve(8),\n * timer(4000)\n * ]);\n * observable.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('This is how it ends!'),\n * });\n *\n * // Logs:\n * // [4, 8, 0] after 4 seconds\n * // 'This is how it ends!' immediately after\n * ```\n *\n * @see {@link combineLatest}\n * @see {@link zip}\n *\n * @param {...ObservableInput} args Any number of Observables provided either as an array or as an arguments\n * passed directly to the operator.\n * @param {function} [project] Function that takes values emitted by input Observables and returns value\n * that will appear in resulting Observable instead of default array.\n * @return {Observable} Observable emitting either an array of last values emitted by passed Observables\n * or value from project function.\n */\nexport function forkJoin(...args: any[]): Observable {\n const resultSelector = popResultSelector(args);\n const { args: sources, keys } = argsArgArrayOrObject(args);\n const result = new Observable((subscriber) => {\n const { length } = sources;\n if (!length) {\n subscriber.complete();\n return;\n }\n const values = new Array(length);\n let remainingCompletions = length;\n let remainingEmissions = length;\n for (let sourceIndex = 0; sourceIndex < length; sourceIndex++) {\n let hasValue = false;\n innerFrom(sources[sourceIndex]).subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n if (!hasValue) {\n hasValue = true;\n remainingEmissions--;\n }\n values[sourceIndex] = value;\n },\n () => remainingCompletions--,\n undefined,\n () => {\n if (!remainingCompletions || !hasValue) {\n if (!remainingEmissions) {\n subscriber.next(keys ? createObject(keys, values) : values);\n }\n subscriber.complete();\n }\n }\n )\n );\n }\n });\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\n","import { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\n\n/**\n * Asynchronously subscribes Observers to this Observable on the specified {@link SchedulerLike}.\n *\n * With `subscribeOn` you can decide what type of scheduler a specific Observable will be using when it is subscribed to.\n *\n * Schedulers control the speed and order of emissions to observers from an Observable stream.\n *\n * ![](subscribeOn.png)\n *\n * ## Example\n *\n * Given the following code:\n *\n * ```ts\n * import { of, merge } from 'rxjs';\n *\n * const a = of(1, 2, 3);\n * const b = of(4, 5, 6);\n *\n * merge(a, b).subscribe(console.log);\n *\n * // Outputs\n * // 1\n * // 2\n * // 3\n * // 4\n * // 5\n * // 6\n * ```\n *\n * Both Observable `a` and `b` will emit their values directly and synchronously once they are subscribed to.\n *\n * If we instead use the `subscribeOn` operator declaring that we want to use the {@link asyncScheduler} for values emitted by Observable `a`:\n *\n * ```ts\n * import { of, subscribeOn, asyncScheduler, merge } from 'rxjs';\n *\n * const a = of(1, 2, 3).pipe(subscribeOn(asyncScheduler));\n * const b = of(4, 5, 6);\n *\n * merge(a, b).subscribe(console.log);\n *\n * // Outputs\n * // 4\n * // 5\n * // 6\n * // 1\n * // 2\n * // 3\n * ```\n *\n * The reason for this is that Observable `b` emits its values directly and synchronously like before\n * but the emissions from `a` are scheduled on the event loop because we are now using the {@link asyncScheduler} for that specific Observable.\n *\n * @param scheduler The {@link SchedulerLike} to perform subscription actions on.\n * @param delay A delay to pass to the scheduler to delay subscriptions\n * @return A function that returns an Observable modified so that its\n * subscriptions happen on the specified {@link SchedulerLike}.\n */\nexport function subscribeOn(scheduler: SchedulerLike, delay: number = 0): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n subscriber.add(scheduler.schedule(() => source.subscribe(subscriber), delay));\n });\n}\n","import { SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\n\nexport function scheduleAsyncIterable(input: AsyncIterable, scheduler: SchedulerLike) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable((subscriber) => {\n executeSchedule(subscriber, scheduler, () => {\n const iterator = input[Symbol.asyncIterator]();\n executeSchedule(\n subscriber,\n scheduler,\n () => {\n iterator.next().then((result) => {\n if (result.done) {\n // This will remove the subscriptions from\n // the parent subscription.\n subscriber.complete();\n } else {\n subscriber.next(result.value);\n }\n });\n },\n 0,\n true\n );\n });\n });\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\n\nexport function from>(input: O): Observable>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function from>(input: O, scheduler: SchedulerLike | undefined): Observable>;\n\n/**\n * Creates an Observable from an Array, an array-like object, a Promise, an iterable object, or an Observable-like object.\n *\n * Converts almost anything to an Observable.\n *\n * ![](from.png)\n *\n * `from` converts various other objects and data types into Observables. It also converts a Promise, an array-like, or an\n * iterable\n * object into an Observable that emits the items in that promise, array, or iterable. A String, in this context, is treated\n * as an array of characters. Observable-like objects (contains a function named with the ES2015 Symbol for Observable) can also be\n * converted through this operator.\n *\n * ## Examples\n *\n * Converts an array to an Observable\n *\n * ```ts\n * import { from } from 'rxjs';\n *\n * const array = [10, 20, 30];\n * const result = from(array);\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 10\n * // 20\n * // 30\n * ```\n *\n * Convert an infinite iterable (from a generator) to an Observable\n *\n * ```ts\n * import { from, take } from 'rxjs';\n *\n * function* generateDoubles(seed) {\n * let i = seed;\n * while (true) {\n * yield i;\n * i = 2 * i; // double it\n * }\n * }\n *\n * const iterator = generateDoubles(3);\n * const result = from(iterator).pipe(take(10));\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 3\n * // 6\n * // 12\n * // 24\n * // 48\n * // 96\n * // 192\n * // 384\n * // 768\n * // 1536\n * ```\n *\n * With `asyncScheduler`\n *\n * ```ts\n * import { from, asyncScheduler } from 'rxjs';\n *\n * console.log('start');\n *\n * const array = [10, 20, 30];\n * const result = from(array, asyncScheduler);\n *\n * result.subscribe(x => console.log(x));\n *\n * console.log('end');\n *\n * // Logs:\n * // 'start'\n * // 'end'\n * // 10\n * // 20\n * // 30\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link fromEventPattern}\n *\n * @param {ObservableInput} A subscription object, a Promise, an Observable-like,\n * an Array, an iterable, or an array-like object to be converted.\n * @param {SchedulerLike} An optional {@link SchedulerLike} on which to schedule the emission of values.\n * @return {Observable}\n */\nexport function from(input: ObservableInput, scheduler?: SchedulerLike): Observable {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { ObservableInput, SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\n\n/**\n * Converts from a common {@link ObservableInput} type to an observable where subscription and emissions\n * are scheduled on the provided scheduler.\n *\n * @see {@link from}\n * @see {@link of}\n *\n * @param input The observable, array, promise, iterable, etc you would like to schedule\n * @param scheduler The scheduler to use to schedule the subscription and emissions from\n * the returned observable.\n */\nexport function scheduled(input: ObservableInput, scheduler: SchedulerLike): Observable {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nimport { InteropObservable, SchedulerLike } from '../types';\n\nexport function scheduleObservable(input: InteropObservable, scheduler: SchedulerLike) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\nexport function scheduleArray(input: ArrayLike, scheduler: SchedulerLike) {\n return new Observable((subscriber) => {\n // The current array index.\n let i = 0;\n // Start iterating over the array like on a schedule.\n return scheduler.schedule(function () {\n if (i === input.length) {\n // If we have hit the end of the array like in the\n // previous job, we can complete.\n subscriber.complete();\n } else {\n // Otherwise let's next the value at the current index,\n // then increment our index.\n subscriber.next(input[i++]);\n // If the last emission didn't cause us to close the subscriber\n // (via take or some side effect), reschedule the job and we'll\n // make another pass.\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nimport { SchedulerLike } from '../types';\n\nexport function schedulePromise(input: PromiseLike, scheduler: SchedulerLike) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\n\n/**\n * Used in {@link scheduled} to create an observable from an Iterable.\n * @param input The iterable to create an observable from\n * @param scheduler The scheduler to use\n */\nexport function scheduleIterable(input: Iterable, scheduler: SchedulerLike) {\n return new Observable((subscriber) => {\n let iterator: Iterator;\n\n // Schedule the initial creation of the iterator from\n // the iterable. This is so the code in the iterable is\n // not called until the scheduled job fires.\n executeSchedule(subscriber, scheduler, () => {\n // Create the iterator.\n iterator = (input as any)[Symbol_iterator]();\n\n executeSchedule(\n subscriber,\n scheduler,\n () => {\n let value: T;\n let done: boolean | undefined;\n try {\n // Pull the value out of the iterator\n ({ value, done } = iterator.next());\n } catch (err) {\n // We got an error while pulling from the iterator\n subscriber.error(err);\n return;\n }\n\n if (done) {\n // If it is \"done\" we just complete. This mimics the\n // behavior of JavaScript's `for..of` consumption of\n // iterables, which will not emit the value from an iterator\n // result of `{ done: true: value: 'here' }`.\n subscriber.complete();\n } else {\n // The iterable is not done, emit the value.\n subscriber.next(value);\n }\n },\n 0,\n true\n );\n });\n\n // During finalization, if we see this iterator has a `return` method,\n // then we know it is a Generator, and not just an Iterator. So we call\n // the `return()` function. This will ensure that any `finally { }` blocks\n // inside of the generator we can hit will be hit properly.\n return () => isFunction(iterator?.return) && iterator.return();\n });\n}\n","import { SchedulerLike, ReadableStreamLike } from '../types';\nimport { Observable } from '../Observable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\n\nexport function scheduleReadableStreamLike(input: ReadableStreamLike, scheduler: SchedulerLike): Observable {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\n\n// These constants are used to create handler registry functions using array mapping below.\nconst nodeEventEmitterMethods = ['addListener', 'removeListener'] as const;\nconst eventTargetMethods = ['addEventListener', 'removeEventListener'] as const;\nconst jqueryMethods = ['on', 'off'] as const;\n\nexport interface NodeStyleEventEmitter {\n addListener(eventName: string | symbol, handler: NodeEventHandler): this;\n removeListener(eventName: string | symbol, handler: NodeEventHandler): this;\n}\n\nexport type NodeEventHandler = (...args: any[]) => void;\n\n// For APIs that implement `addListener` and `removeListener` methods that may\n// not use the same arguments or return EventEmitter values\n// such as React Native\nexport interface NodeCompatibleEventEmitter {\n addListener(eventName: string, handler: NodeEventHandler): void | {};\n removeListener(eventName: string, handler: NodeEventHandler): void | {};\n}\n\n// Use handler types like those in @types/jquery. See:\n// https://github.com/DefinitelyTyped/DefinitelyTyped/blob/847731ba1d7fa6db6b911c0e43aa0afe596e7723/types/jquery/misc.d.ts#L6395\nexport interface JQueryStyleEventEmitter {\n on(eventName: string, handler: (this: TContext, t: T, ...args: any[]) => any): void;\n off(eventName: string, handler: (this: TContext, t: T, ...args: any[]) => any): void;\n}\n\nexport interface EventListenerObject {\n handleEvent(evt: E): void;\n}\n\nexport interface HasEventTargetAddRemove {\n addEventListener(\n type: string,\n listener: ((evt: E) => void) | EventListenerObject | null,\n options?: boolean | AddEventListenerOptions\n ): void;\n removeEventListener(\n type: string,\n listener: ((evt: E) => void) | EventListenerObject | null,\n options?: EventListenerOptions | boolean\n ): void;\n}\n\nexport interface EventListenerOptions {\n capture?: boolean;\n passive?: boolean;\n once?: boolean;\n}\n\nexport interface AddEventListenerOptions extends EventListenerOptions {\n once?: boolean;\n passive?: boolean;\n}\n\nexport function fromEvent(target: HasEventTargetAddRemove | ArrayLike>, eventName: string): Observable;\nexport function fromEvent(\n target: HasEventTargetAddRemove | ArrayLike>,\n eventName: string,\n resultSelector: (event: T) => R\n): Observable;\nexport function fromEvent(\n target: HasEventTargetAddRemove | ArrayLike>,\n eventName: string,\n options: EventListenerOptions\n): Observable;\nexport function fromEvent(\n target: HasEventTargetAddRemove | ArrayLike>,\n eventName: string,\n options: EventListenerOptions,\n resultSelector: (event: T) => R\n): Observable;\n\nexport function fromEvent(target: NodeStyleEventEmitter | ArrayLike, eventName: string): Observable;\n/** @deprecated Do not specify explicit type parameters. Signatures with type parameters that cannot be inferred will be removed in v8. */\nexport function fromEvent(target: NodeStyleEventEmitter | ArrayLike, eventName: string): Observable;\nexport function fromEvent(\n target: NodeStyleEventEmitter | ArrayLike,\n eventName: string,\n resultSelector: (...args: any[]) => R\n): Observable;\n\nexport function fromEvent(\n target: NodeCompatibleEventEmitter | ArrayLike,\n eventName: string\n): Observable;\n/** @deprecated Do not specify explicit type parameters. Signatures with type parameters that cannot be inferred will be removed in v8. */\nexport function fromEvent(target: NodeCompatibleEventEmitter | ArrayLike, eventName: string): Observable;\nexport function fromEvent(\n target: NodeCompatibleEventEmitter | ArrayLike,\n eventName: string,\n resultSelector: (...args: any[]) => R\n): Observable;\n\nexport function fromEvent(\n target: JQueryStyleEventEmitter | ArrayLike>,\n eventName: string\n): Observable;\nexport function fromEvent(\n target: JQueryStyleEventEmitter | ArrayLike>,\n eventName: string,\n resultSelector: (value: T, ...args: any[]) => R\n): Observable;\n\n/**\n * Creates an Observable that emits events of a specific type coming from the\n * given event target.\n *\n * Creates an Observable from DOM events, or Node.js\n * EventEmitter events or others.\n *\n * ![](fromEvent.png)\n *\n * `fromEvent` accepts as a first argument event target, which is an object with methods\n * for registering event handler functions. As a second argument it takes string that indicates\n * type of event we want to listen for. `fromEvent` supports selected types of event targets,\n * which are described in detail below. If your event target does not match any of the ones listed,\n * you should use {@link fromEventPattern}, which can be used on arbitrary APIs.\n * When it comes to APIs supported by `fromEvent`, their methods for adding and removing event\n * handler functions have different names, but they all accept a string describing event type\n * and function itself, which will be called whenever said event happens.\n *\n * Every time resulting Observable is subscribed, event handler function will be registered\n * to event target on given event type. When that event fires, value\n * passed as a first argument to registered function will be emitted by output Observable.\n * When Observable is unsubscribed, function will be unregistered from event target.\n *\n * Note that if event target calls registered function with more than one argument, second\n * and following arguments will not appear in resulting stream. In order to get access to them,\n * you can pass to `fromEvent` optional project function, which will be called with all arguments\n * passed to event handler. Output Observable will then emit value returned by project function,\n * instead of the usual value.\n *\n * Remember that event targets listed below are checked via duck typing. It means that\n * no matter what kind of object you have and no matter what environment you work in,\n * you can safely use `fromEvent` on that object if it exposes described methods (provided\n * of course they behave as was described above). So for example if Node.js library exposes\n * event target which has the same method names as DOM EventTarget, `fromEvent` is still\n * a good choice.\n *\n * If the API you use is more callback then event handler oriented (subscribed\n * callback function fires only once and thus there is no need to manually\n * unregister it), you should use {@link bindCallback} or {@link bindNodeCallback}\n * instead.\n *\n * `fromEvent` supports following types of event targets:\n *\n * **DOM EventTarget**\n *\n * This is an object with `addEventListener` and `removeEventListener` methods.\n *\n * In the browser, `addEventListener` accepts - apart from event type string and event\n * handler function arguments - optional third parameter, which is either an object or boolean,\n * both used for additional configuration how and when passed function will be called. When\n * `fromEvent` is used with event target of that type, you can provide this values\n * as third parameter as well.\n *\n * **Node.js EventEmitter**\n *\n * An object with `addListener` and `removeListener` methods.\n *\n * **JQuery-style event target**\n *\n * An object with `on` and `off` methods\n *\n * **DOM NodeList**\n *\n * List of DOM Nodes, returned for example by `document.querySelectorAll` or `Node.childNodes`.\n *\n * Although this collection is not event target in itself, `fromEvent` will iterate over all Nodes\n * it contains and install event handler function in every of them. When returned Observable\n * is unsubscribed, function will be removed from all Nodes.\n *\n * **DOM HtmlCollection**\n *\n * Just as in case of NodeList it is a collection of DOM nodes. Here as well event handler function is\n * installed and removed in each of elements.\n *\n *\n * ## Examples\n *\n * Emit clicks happening on the DOM document\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * clicks.subscribe(x => console.log(x));\n *\n * // Results in:\n * // MouseEvent object logged to console every time a click\n * // occurs on the document.\n * ```\n *\n * Use `addEventListener` with capture option\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const div = document.createElement('div');\n * div.style.cssText = 'width: 200px; height: 200px; background: #09c;';\n * document.body.appendChild(div);\n *\n * // note optional configuration parameter which will be passed to addEventListener\n * const clicksInDocument = fromEvent(document, 'click', { capture: true });\n * const clicksInDiv = fromEvent(div, 'click');\n *\n * clicksInDocument.subscribe(() => console.log('document'));\n * clicksInDiv.subscribe(() => console.log('div'));\n *\n * // By default events bubble UP in DOM tree, so normally\n * // when we would click on div in document\n * // \"div\" would be logged first and then \"document\".\n * // Since we specified optional `capture` option, document\n * // will catch event when it goes DOWN DOM tree, so console\n * // will log \"document\" and then \"div\".\n * ```\n *\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n * @see {@link fromEventPattern}\n *\n * @param {FromEventTarget} target The DOM EventTarget, Node.js\n * EventEmitter, JQuery-like event target, NodeList or HTMLCollection to attach the event handler to.\n * @param {string} eventName The event name of interest, being emitted by the\n * `target`.\n * @param {EventListenerOptions} [options] Options to pass through to addEventListener\n * @return {Observable}\n */\nexport function fromEvent(\n target: any,\n eventName: string,\n options?: EventListenerOptions | ((...args: any[]) => T),\n resultSelector?: (...args: any[]) => T\n): Observable {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options as EventListenerOptions).pipe(mapOneOrManyArgs(resultSelector));\n }\n\n // Figure out our add and remove methods. In order to do this,\n // we are going to analyze the target in a preferred order, if\n // the target matches a given signature, we take the two \"add\" and \"remove\"\n // method names and apply them to a map to create opposite versions of the\n // same function. This is because they all operate in duplicate pairs,\n // `addListener(name, handler)`, `removeListener(name, handler)`, for example.\n // The call only differs by method name, as to whether or not you're adding or removing.\n const [add, remove] =\n // If it is an EventTarget, we need to use a slightly different method than the other two patterns.\n isEventTarget(target)\n ? eventTargetMethods.map((methodName) => (handler: any) => target[methodName](eventName, handler, options as EventListenerOptions))\n : // In all other cases, the call pattern is identical with the exception of the method names.\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [];\n\n // If add is falsy, it's because we didn't match a pattern above.\n // Check to see if it is an ArrayLike, because if it is, we want to\n // try to apply fromEvent to all of it's items. We do this check last,\n // because there are may be some types that are both ArrayLike *and* implement\n // event registry points, and we'd rather delegate to that when possible.\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap((subTarget: any) => fromEvent(subTarget, eventName, options as EventListenerOptions))(\n innerFrom(target)\n ) as Observable;\n }\n }\n\n // If add is falsy and we made it here, it's because we didn't\n // match any valid target objects above.\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n\n return new Observable((subscriber) => {\n // The handler we are going to register. Forwards the event object, by itself, or\n // an array of arguments to the event handler, if there is more than one argument,\n // to the consumer.\n const handler = (...args: any[]) => subscriber.next(1 < args.length ? args : args[0]);\n // Do the work of adding the handler to the target.\n add(handler);\n // When we finalize, we want to remove the handler and free up memory.\n return () => remove!(handler);\n });\n}\n\n/**\n * Used to create `add` and `remove` functions to register and unregister event handlers\n * from a target in the most common handler pattern, where there are only two arguments.\n * (e.g. `on(name, fn)`, `off(name, fn)`, `addListener(name, fn)`, or `removeListener(name, fn)`)\n * @param target The target we're calling methods on\n * @param eventName The event name for the event we're creating register or unregister functions for\n */\nfunction toCommonHandlerRegistry(target: any, eventName: string) {\n return (methodName: string) => (handler: any) => target[methodName](eventName, handler);\n}\n\n/**\n * Checks to see if the target implements the required node-style EventEmitter methods\n * for adding and removing event handlers.\n * @param target the object to check\n */\nfunction isNodeStyleEventEmitter(target: any): target is NodeStyleEventEmitter {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\n\n/**\n * Checks to see if the target implements the required jQuery-style EventEmitter methods\n * for adding and removing event handlers.\n * @param target the object to check\n */\nfunction isJQueryStyleEventEmitter(target: any): target is JQueryStyleEventEmitter {\n return isFunction(target.on) && isFunction(target.off);\n}\n\n/**\n * Checks to see if the target implements the required EventTarget methods\n * for adding and removing event handlers.\n * @param target the object to check\n */\nfunction isEventTarget(target: any): target is HasEventTargetAddRemove {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n","import { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { ObservableInput, ObservedValueOf, ReadableStreamLike } from '../types';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { Subscriber } from '../Subscriber';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\n\nexport function innerFrom>(input: O): Observable>;\nexport function innerFrom(input: ObservableInput): Observable {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n\n throw createInvalidObservableTypeError(input);\n}\n\n/**\n * Creates an RxJS Observable from an object that implements `Symbol.observable`.\n * @param obj An object that properly implements `Symbol.observable`.\n */\nexport function fromInteropObservable(obj: any) {\n return new Observable((subscriber: Subscriber) => {\n const obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n // Should be caught by observable subscribe function error handling.\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\n\n/**\n * Synchronously emits the values of an array like and completes.\n * This is exported because there are creation functions and operators that need to\n * make direct use of the same logic, and there's no reason to make them run through\n * `from` conditionals because we *know* they're dealing with an array.\n * @param array The array to emit values from\n */\nexport function fromArrayLike(array: ArrayLike) {\n return new Observable((subscriber: Subscriber) => {\n // Loop over the array and emit each value. Note two things here:\n // 1. We're making sure that the subscriber is not closed on each loop.\n // This is so we don't continue looping over a very large array after\n // something like a `take`, `takeWhile`, or other synchronous unsubscription\n // has already unsubscribed.\n // 2. In this form, reentrant code can alter that array we're looping over.\n // This is a known issue, but considered an edge case. The alternative would\n // be to copy the array before executing the loop, but this has\n // performance implications.\n for (let i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\n\nexport function fromPromise(promise: PromiseLike) {\n return new Observable((subscriber: Subscriber) => {\n promise\n .then(\n (value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n },\n (err: any) => subscriber.error(err)\n )\n .then(null, reportUnhandledError);\n });\n}\n\nexport function fromIterable(iterable: Iterable) {\n return new Observable((subscriber: Subscriber) => {\n for (const value of iterable) {\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n subscriber.complete();\n });\n}\n\nexport function fromAsyncIterable(asyncIterable: AsyncIterable) {\n return new Observable((subscriber: Subscriber) => {\n process(asyncIterable, subscriber).catch((err) => subscriber.error(err));\n });\n}\n\nexport function fromReadableStreamLike(readableStream: ReadableStreamLike) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\n\nasync function process(asyncIterable: AsyncIterable, subscriber: Subscriber) {\n for await (const value of asyncIterable) {\n subscriber.next(value);\n // A side-effect may have closed our subscriber,\n // check before the next iteration.\n if (subscriber.closed) {\n return;\n }\n }\n subscriber.complete();\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, ObservableInputTuple, SchedulerLike } from '../types';\nimport { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\n\nexport function merge(...sources: [...ObservableInputTuple]): Observable;\nexport function merge(...sourcesAndConcurrency: [...ObservableInputTuple, number?]): Observable;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `mergeAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function merge(\n ...sourcesAndScheduler: [...ObservableInputTuple, SchedulerLike?]\n): Observable;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `mergeAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function merge(\n ...sourcesAndConcurrencyAndScheduler: [...ObservableInputTuple, number?, SchedulerLike?]\n): Observable;\n\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * Flattens multiple Observables together by blending\n * their values into one Observable.\n *\n * ![](merge.png)\n *\n * `merge` subscribes to each given input Observable (as arguments), and simply\n * forwards (without doing any transformation) all the values from all the input\n * Observables to the output Observable. The output Observable only completes\n * once all input Observables have completed. Any error delivered by an input\n * Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n *\n * Merge together two Observables: 1s interval and clicks\n *\n * ```ts\n * import { merge, fromEvent, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const timer = interval(1000);\n * const clicksOrTimer = merge(clicks, timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // timer will emit ascending values, one every second(1000ms) to console\n * // clicks logs MouseEvents to console every time the \"document\" is clicked\n * // Since the two streams are merged you see these happening\n * // as they occur.\n * ```\n *\n * Merge together 3 Observables, but run only 2 concurrently\n *\n * ```ts\n * import { interval, take, merge } from 'rxjs';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n *\n * const concurrent = 2; // the argument\n * const merged = merge(timer1, timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - First timer1 and timer2 will run concurrently\n * // - timer1 will emit a value every 1000ms for 10 iterations\n * // - timer2 will emit a value every 2000ms for 6 iterations\n * // - after timer1 hits its max iteration, timer2 will\n * // continue, and timer3 will start to run concurrently with timer2\n * // - when timer2 hits its max iteration it terminates, and\n * // timer3 will continue to emit a value every 500ms until it is complete\n * ```\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {...ObservableInput} observables Input Observables to merge together.\n * @param {number} [concurrent=Infinity] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for managing\n * concurrency of input Observables.\n * @return {Observable} an Observable that emits items that are the result of\n * every input Observable.\n */\nexport function merge(...args: (ObservableInput | number | SchedulerLike)[]): Observable {\n const scheduler = popScheduler(args);\n const concurrent = popNumber(args, Infinity);\n const sources = args as ObservableInput[];\n return !sources.length\n ? // No source provided\n EMPTY\n : sources.length === 1\n ? // One source? Just return it.\n innerFrom(sources[0])\n : // Merge all sources\n mergeAll(concurrent)(from(sources, scheduler));\n}\n","import { SchedulerLike, ValueFromArray } from '../types';\nimport { Observable } from '../Observable';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\n\n// Devs are more likely to pass null or undefined than they are a scheduler\n// without accompanying values. To make things easier for (naughty) devs who\n// use the `strictNullChecks: false` TypeScript compiler option, these\n// overloads with explicit null and undefined values are included.\n\nexport function of(value: null): Observable;\nexport function of(value: undefined): Observable;\n\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function of(scheduler: SchedulerLike): Observable;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function of(...valuesAndScheduler: [...A, SchedulerLike]): Observable>;\n\nexport function of(): Observable;\n/** @deprecated Do not specify explicit type parameters. Signatures with type parameters that cannot be inferred will be removed in v8. */\nexport function of(): Observable;\nexport function of(value: T): Observable;\nexport function of(...values: A): Observable>;\n\n/**\n * Converts the arguments to an observable sequence.\n *\n * Each argument becomes a `next` notification.\n *\n * ![](of.png)\n *\n * Unlike {@link from}, it does not do any flattening and emits each argument in whole\n * as a separate `next` notification.\n *\n * ## Examples\n *\n * Emit the values `10, 20, 30`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of(10, 20, 30)\n * .subscribe({\n * next: value => console.log('next:', value),\n * error: err => console.log('error:', err),\n * complete: () => console.log('the end'),\n * });\n *\n * // Outputs\n * // next: 10\n * // next: 20\n * // next: 30\n * // the end\n * ```\n *\n * Emit the array `[1, 2, 3]`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of([1, 2, 3])\n * .subscribe({\n * next: value => console.log('next:', value),\n * error: err => console.log('error:', err),\n * complete: () => console.log('the end'),\n * });\n *\n * // Outputs\n * // next: [1, 2, 3]\n * // the end\n * ```\n *\n * @see {@link from}\n * @see {@link range}\n *\n * @param {...T} values A comma separated list of arguments you want to be emitted\n * @return {Observable} An Observable that emits the arguments\n * described above and then completes.\n */\nexport function of(...args: Array): Observable {\n const scheduler = popScheduler(args);\n return from(args as T[], scheduler);\n}\n","import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { SchedulerLike } from '../types';\nimport { isFunction } from '../util/isFunction';\n\n/**\n * Creates an observable that will create an error instance and push it to the consumer as an error\n * immediately upon subscription.\n *\n * Just errors and does nothing else\n *\n * ![](throw.png)\n *\n * This creation function is useful for creating an observable that will create an error and error every\n * time it is subscribed to. Generally, inside of most operators when you might want to return an errored\n * observable, this is unnecessary. In most cases, such as in the inner return of {@link concatMap},\n * {@link mergeMap}, {@link defer}, and many others, you can simply throw the error, and RxJS will pick\n * that up and notify the consumer of the error.\n *\n * ## Example\n *\n * Create a simple observable that will create a new error with a timestamp and log it\n * and the message every time you subscribe to it\n *\n * ```ts\n * import { throwError } from 'rxjs';\n *\n * let errorCount = 0;\n *\n * const errorWithTimestamp$ = throwError(() => {\n * const error: any = new Error(`This is error number ${ ++errorCount }`);\n * error.timestamp = Date.now();\n * return error;\n * });\n *\n * errorWithTimestamp$.subscribe({\n * error: err => console.log(err.timestamp, err.message)\n * });\n *\n * errorWithTimestamp$.subscribe({\n * error: err => console.log(err.timestamp, err.message)\n * });\n *\n * // Logs the timestamp and a new error message for each subscription\n * ```\n *\n * ### Unnecessary usage\n *\n * Using `throwError` inside of an operator or creation function\n * with a callback, is usually not necessary\n *\n * ```ts\n * import { of, concatMap, timer, throwError } from 'rxjs';\n *\n * const delays$ = of(1000, 2000, Infinity, 3000);\n *\n * delays$.pipe(\n * concatMap(ms => {\n * if (ms < 10000) {\n * return timer(ms);\n * } else {\n * // This is probably overkill.\n * return throwError(() => new Error(`Invalid time ${ ms }`));\n * }\n * })\n * )\n * .subscribe({\n * next: console.log,\n * error: console.error\n * });\n * ```\n *\n * You can just throw the error instead\n *\n * ```ts\n * import { of, concatMap, timer } from 'rxjs';\n *\n * const delays$ = of(1000, 2000, Infinity, 3000);\n *\n * delays$.pipe(\n * concatMap(ms => {\n * if (ms < 10000) {\n * return timer(ms);\n * } else {\n * // Cleaner and easier to read for most folks.\n * throw new Error(`Invalid time ${ ms }`);\n * }\n * })\n * )\n * .subscribe({\n * next: console.log,\n * error: console.error\n * });\n * ```\n *\n * @param errorFactory A factory function that will create the error instance that is pushed.\n */\nexport function throwError(errorFactory: () => any): Observable;\n\n/**\n * Returns an observable that will error with the specified error immediately upon subscription.\n *\n * @param error The error instance to emit\n * @deprecated Support for passing an error value will be removed in v8. Instead, pass a factory function to `throwError(() => new Error('test'))`. This is\n * because it will create the error at the moment it should be created and capture a more appropriate stack trace. If\n * for some reason you need to create the error ahead of time, you can still do that: `const err = new Error('test'); throwError(() => err);`.\n */\nexport function throwError(error: any): Observable;\n\n/**\n * Notifies the consumer of an error using a given scheduler by scheduling it at delay `0` upon subscription.\n *\n * @param errorOrErrorFactory An error instance or error factory\n * @param scheduler A scheduler to use to schedule the error notification\n * @deprecated The `scheduler` parameter will be removed in v8.\n * Use `throwError` in combination with {@link observeOn}: `throwError(() => new Error('test')).pipe(observeOn(scheduler));`.\n * Details: https://rxjs.dev/deprecations/scheduler-argument\n */\nexport function throwError(errorOrErrorFactory: any, scheduler: SchedulerLike): Observable;\n\nexport function throwError(errorOrErrorFactory: any, scheduler?: SchedulerLike): Observable {\n const errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : () => errorOrErrorFactory;\n const init = (subscriber: Subscriber) => subscriber.error(errorFactory());\n return new Observable(scheduler ? (subscriber) => scheduler.schedule(init as any, 0, subscriber) : init);\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\n\n/**\n * Creates an observable that will wait for a specified time period, or exact date, before\n * emitting the number 0.\n *\n * Used to emit a notification after a delay.\n *\n * This observable is useful for creating delays in code, or racing against other values\n * for ad-hoc timeouts.\n *\n * The `delay` is specified by default in milliseconds, however providing a custom scheduler could\n * create a different behavior.\n *\n * ## Examples\n *\n * Wait 3 seconds and start another observable\n *\n * You might want to use `timer` to delay subscription to an\n * observable by a set amount of time. Here we use a timer with\n * {@link concatMapTo} or {@link concatMap} in order to wait\n * a few seconds and start a subscription to a source.\n *\n * ```ts\n * import { of, timer, concatMap } from 'rxjs';\n *\n * // This could be any observable\n * const source = of(1, 2, 3);\n *\n * timer(3000)\n * .pipe(concatMap(() => source))\n * .subscribe(console.log);\n * ```\n *\n * Take all values until the start of the next minute\n *\n * Using a `Date` as the trigger for the first emission, you can\n * do things like wait until midnight to fire an event, or in this case,\n * wait until a new minute starts (chosen so the example wouldn't take\n * too long to run) in order to stop watching a stream. Leveraging\n * {@link takeUntil}.\n *\n * ```ts\n * import { interval, takeUntil, timer } from 'rxjs';\n *\n * // Build a Date object that marks the\n * // next minute.\n * const currentDate = new Date();\n * const startOfNextMinute = new Date(\n * currentDate.getFullYear(),\n * currentDate.getMonth(),\n * currentDate.getDate(),\n * currentDate.getHours(),\n * currentDate.getMinutes() + 1\n * );\n *\n * // This could be any observable stream\n * const source = interval(1000);\n *\n * const result = source.pipe(\n * takeUntil(timer(startOfNextMinute))\n * );\n *\n * result.subscribe(console.log);\n * ```\n *\n * ### Known Limitations\n *\n * - The {@link asyncScheduler} uses `setTimeout` which has limitations for how far in the future it can be scheduled.\n *\n * - If a `scheduler` is provided that returns a timestamp other than an epoch from `now()`, and\n * a `Date` object is passed to the `dueTime` argument, the calculation for when the first emission\n * should occur will be incorrect. In this case, it would be best to do your own calculations\n * ahead of time, and pass a `number` in as the `dueTime`.\n *\n * @param due If a `number`, the amount of time in milliseconds to wait before emitting.\n * If a `Date`, the exact time at which to emit.\n * @param scheduler The scheduler to use to schedule the delay. Defaults to {@link asyncScheduler}.\n */\nexport function timer(due: number | Date, scheduler?: SchedulerLike): Observable<0>;\n\n/**\n * Creates an observable that starts an interval after a specified delay, emitting incrementing numbers -- starting at `0` --\n * on each interval after words.\n *\n * The `delay` and `intervalDuration` are specified by default in milliseconds, however providing a custom scheduler could\n * create a different behavior.\n *\n * ## Example\n *\n * ### Start an interval that starts right away\n *\n * Since {@link interval} waits for the passed delay before starting,\n * sometimes that's not ideal. You may want to start an interval immediately.\n * `timer` works well for this. Here we have both side-by-side so you can\n * see them in comparison.\n *\n * Note that this observable will never complete.\n *\n * ```ts\n * import { timer, interval } from 'rxjs';\n *\n * timer(0, 1000).subscribe(n => console.log('timer', n));\n * interval(1000).subscribe(n => console.log('interval', n));\n * ```\n *\n * ### Known Limitations\n *\n * - The {@link asyncScheduler} uses `setTimeout` which has limitations for how far in the future it can be scheduled.\n *\n * - If a `scheduler` is provided that returns a timestamp other than an epoch from `now()`, and\n * a `Date` object is passed to the `dueTime` argument, the calculation for when the first emission\n * should occur will be incorrect. In this case, it would be best to do your own calculations\n * ahead of time, and pass a `number` in as the `startDue`.\n * @param startDue If a `number`, is the time to wait before starting the interval.\n * If a `Date`, is the exact time at which to start the interval.\n * @param intervalDuration The delay between each value emitted in the interval. Passing a\n * negative number here will result in immediate completion after the first value is emitted, as though\n * no `intervalDuration` was passed at all.\n * @param scheduler The scheduler to use to schedule the delay. Defaults to {@link asyncScheduler}.\n */\nexport function timer(startDue: number | Date, intervalDuration: number, scheduler?: SchedulerLike): Observable;\n\n/**\n * @deprecated The signature allowing `undefined` to be passed for `intervalDuration` will be removed in v8. Use the `timer(dueTime, scheduler?)` signature instead.\n */\nexport function timer(dueTime: number | Date, unused: undefined, scheduler?: SchedulerLike): Observable<0>;\n\nexport function timer(\n dueTime: number | Date = 0,\n intervalOrScheduler?: number | SchedulerLike,\n scheduler: SchedulerLike = asyncScheduler\n): Observable {\n // Since negative intervalDuration is treated as though no\n // interval was specified at all, we start with a negative number.\n let intervalDuration = -1;\n\n if (intervalOrScheduler != null) {\n // If we have a second argument, and it's a scheduler,\n // override the scheduler we had defaulted. Otherwise,\n // it must be an interval.\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n } else {\n // Note that this *could* be negative, in which case\n // it's like not passing an intervalDuration at all.\n intervalDuration = intervalOrScheduler;\n }\n }\n\n return new Observable((subscriber) => {\n // If a valid date is passed, calculate how long to wait before\n // executing the first value... otherwise, if it's a number just schedule\n // that many milliseconds (or scheduler-specified unit size) in the future.\n let due = isValidDate(dueTime) ? +dueTime - scheduler!.now() : dueTime;\n\n if (due < 0) {\n // Ensure we don't schedule in the future.\n due = 0;\n }\n\n // The incrementing value we emit.\n let n = 0;\n\n // Start the timer.\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n // Emit the next value and increment.\n subscriber.next(n++);\n\n if (0 <= intervalDuration) {\n // If we have a interval after the initial timer,\n // reschedule with the period.\n this.schedule(undefined, intervalDuration);\n } else {\n // We didn't have an interval. So just complete.\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n","import { Subscriber } from '../Subscriber';\n\n/**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional teardown logic here. This will only be called on teardown if the\n * subscriber itself is not already closed. This is called after all other teardown logic is executed.\n */\nexport function createOperatorSubscriber(\n destination: Subscriber,\n onNext?: (value: T) => void,\n onComplete?: () => void,\n onError?: (err: any) => void,\n onFinalize?: () => void\n): Subscriber {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\n\n/**\n * A generic helper for allowing operators to be created with a Subscriber and\n * use closures to capture necessary state from the operator function itself.\n */\nexport class OperatorSubscriber extends Subscriber {\n /**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional finalization logic here. This will only be called on finalization if the\n * subscriber itself is not already closed. This is called after all other finalization logic is executed.\n * @param shouldUnsubscribe An optional check to see if an unsubscribe call should truly unsubscribe.\n * NOTE: This currently **ONLY** exists to support the strange behavior of {@link groupBy}, where unsubscription\n * to the resulting observable does not actually disconnect from the source if there are active subscriptions\n * to any grouped observable. (DO NOT EXPOSE OR USE EXTERNALLY!!!)\n */\n constructor(\n destination: Subscriber,\n onNext?: (value: T) => void,\n onComplete?: () => void,\n onError?: (err: any) => void,\n private onFinalize?: () => void,\n private shouldUnsubscribe?: () => boolean\n ) {\n // It's important - for performance reasons - that all of this class's\n // members are initialized and that they are always initialized in the same\n // order. This will ensure that all OperatorSubscriber instances have the\n // same hidden class in V8. This, in turn, will help keep the number of\n // hidden classes involved in property accesses within the base class as\n // low as possible. If the number of hidden classes involved exceeds four,\n // the property accesses will become megamorphic and performance penalties\n // will be incurred - i.e. inline caches won't be used.\n //\n // The reasons for ensuring all instances have the same hidden class are\n // further discussed in this blog post from Benedikt Meurer:\n // https://benediktmeurer.de/2018/03/23/impact-of-polymorphism-on-component-based-frameworks-like-react/\n super(destination);\n this._next = onNext\n ? function (this: OperatorSubscriber, value: T) {\n try {\n onNext(value);\n } catch (err) {\n destination.error(err);\n }\n }\n : super._next;\n this._error = onError\n ? function (this: OperatorSubscriber, err: any) {\n try {\n onError(err);\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure finalization.\n this.unsubscribe();\n }\n }\n : super._error;\n this._complete = onComplete\n ? function (this: OperatorSubscriber) {\n try {\n onComplete();\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure finalization.\n this.unsubscribe();\n }\n }\n : super._complete;\n }\n\n unsubscribe() {\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n const { closed } = this;\n super.unsubscribe();\n // Execute additional teardown if we have any and we didn't already do so.\n !closed && this.onFinalize?.();\n }\n }\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\n\n/**\n * Ignores source values for `duration` milliseconds, then emits the most recent\n * value from the source Observable, then repeats this process.\n *\n * When it sees a source value, it ignores that plus\n * the next ones for `duration` milliseconds, and then it emits the most recent\n * value from the source.\n *\n * ![](auditTime.png)\n *\n * `auditTime` is similar to `throttleTime`, but emits the last value from the\n * silenced time window, instead of the first value. `auditTime` emits the most\n * recent value from the source Observable on the output Observable as soon as\n * its internal timer becomes disabled, and ignores source values while the\n * timer is enabled. Initially, the timer is disabled. As soon as the first\n * source value arrives, the timer is enabled. After `duration` milliseconds (or\n * the time unit determined internally by the optional `scheduler`) has passed,\n * the timer is disabled, then the most recent source value is emitted on the\n * output Observable, and this process repeats for the next source value.\n * Optionally takes a {@link SchedulerLike} for managing timers.\n *\n * ## Example\n *\n * Emit clicks at a rate of at most one click per second\n *\n * ```ts\n * import { fromEvent, auditTime } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(auditTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param {number} duration Time to wait before emitting the most recent source\n * value, measured in milliseconds or the time unit determined internally\n * by the optional `scheduler`.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the rate-limiting behavior.\n * @return A function that returns an Observable that performs rate-limiting of\n * emissions from the source Observable.\n */\nexport function auditTime(duration: number, scheduler: SchedulerLike = asyncScheduler): MonoTypeOperatorFunction {\n return audit(() => timer(duration, scheduler));\n}\n","import { Subscriber } from '../Subscriber';\nimport { MonoTypeOperatorFunction, ObservableInput } from '../types';\n\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Ignores source values for a duration determined by another Observable, then\n * emits the most recent value from the source Observable, then repeats this\n * process.\n *\n * It's like {@link auditTime}, but the silencing\n * duration is determined by a second Observable.\n *\n * ![](audit.svg)\n *\n * `audit` is similar to `throttle`, but emits the last value from the silenced\n * time window, instead of the first value. `audit` emits the most recent value\n * from the source Observable on the output Observable as soon as its internal\n * timer becomes disabled, and ignores source values while the timer is enabled.\n * Initially, the timer is disabled. As soon as the first source value arrives,\n * the timer is enabled by calling the `durationSelector` function with the\n * source value, which returns the \"duration\" Observable. When the duration\n * Observable emits a value, the timer is disabled, then the most\n * recent source value is emitted on the output Observable, and this process\n * repeats for the next source value.\n *\n * ## Example\n *\n * Emit clicks at a rate of at most one click per second\n *\n * ```ts\n * import { fromEvent, audit, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(audit(ev => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttle}\n *\n * @param durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration, returned as an Observable or a Promise.\n * @return A function that returns an Observable that performs rate-limiting of\n * emissions from the source Observable.\n */\nexport function audit(durationSelector: (value: T) => ObservableInput): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n let hasValue = false;\n let lastValue: T | null = null;\n let durationSubscriber: Subscriber | null = null;\n let isComplete = false;\n\n const endDuration = () => {\n durationSubscriber?.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n const value = lastValue!;\n lastValue = null;\n subscriber.next(value);\n }\n isComplete && subscriber.complete();\n };\n\n const cleanupDuration = () => {\n durationSubscriber = null;\n isComplete && subscriber.complete();\n };\n\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n hasValue = true;\n lastValue = value;\n if (!durationSubscriber) {\n innerFrom(durationSelector(value)).subscribe(\n (durationSubscriber = createOperatorSubscriber(subscriber, endDuration, cleanupDuration))\n );\n }\n },\n () => {\n isComplete = true;\n (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();\n }\n )\n );\n });\n}\n","import { Observable } from '../Observable';\n\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { Subscription } from '../Subscription';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { operate } from '../util/lift';\n\n/* tslint:disable:max-line-length */\nexport function catchError>(\n selector: (err: any, caught: Observable) => O\n): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\n/**\n * Catches errors on the observable to be handled by returning a new observable or throwing an error.\n *\n * \n * It only listens to the error channel and ignores notifications.\n * Handles errors from the source observable, and maps them to a new observable.\n * The error may also be rethrown, or a new error can be thrown to emit an error from the result.\n * \n *\n * ![](catch.png)\n *\n * This operator handles errors, but forwards along all other events to the resulting observable.\n * If the source observable terminates with an error, it will map that error to a new observable,\n * subscribe to it, and forward all of its events to the resulting observable.\n *\n * ## Examples\n *\n * Continue with a different Observable when there's an error\n *\n * ```ts\n * import { of, map, catchError } from 'rxjs';\n *\n * of(1, 2, 3, 4, 5)\n * .pipe(\n * map(n => {\n * if (n === 4) {\n * throw 'four!';\n * }\n * return n;\n * }),\n * catchError(err => of('I', 'II', 'III', 'IV', 'V'))\n * )\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, I, II, III, IV, V\n * ```\n *\n * Retry the caught source Observable again in case of error, similar to `retry()` operator\n *\n * ```ts\n * import { of, map, catchError, take } from 'rxjs';\n *\n * of(1, 2, 3, 4, 5)\n * .pipe(\n * map(n => {\n * if (n === 4) {\n * throw 'four!';\n * }\n * return n;\n * }),\n * catchError((err, caught) => caught),\n * take(30)\n * )\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, 1, 2, 3, ...\n * ```\n *\n * Throw a new error when the source Observable throws an error\n *\n * ```ts\n * import { of, map, catchError } from 'rxjs';\n *\n * of(1, 2, 3, 4, 5)\n * .pipe(\n * map(n => {\n * if (n === 4) {\n * throw 'four!';\n * }\n * return n;\n * }),\n * catchError(err => {\n * throw 'error in source. Details: ' + err;\n * })\n * )\n * .subscribe({\n * next: x => console.log(x),\n * error: err => console.log(err)\n * });\n * // 1, 2, 3, error in source. Details: four!\n * ```\n *\n * @see {@link onErrorResumeNext}\n * @see {@link repeat}\n * @see {@link repeatWhen}\n * @see {@link retry }\n * @see {@link retryWhen}\n *\n * @param {function} selector a function that takes as arguments `err`, which is the error, and `caught`, which\n * is the source observable, in case you'd like to \"retry\" that observable by returning it again. Whatever observable\n * is returned by the `selector` will be used to continue the observable chain.\n * @return A function that returns an Observable that originates from either\n * the source or the Observable returned by the `selector` function.\n */\nexport function catchError>(\n selector: (err: any, caught: Observable) => O\n): OperatorFunction> {\n return operate((source, subscriber) => {\n let innerSub: Subscription | null = null;\n let syncUnsub = false;\n let handledResult: Observable>;\n\n innerSub = source.subscribe(\n createOperatorSubscriber(subscriber, undefined, undefined, (err) => {\n handledResult = innerFrom(selector(err, catchError(selector)(source)));\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n } else {\n // We don't have an innerSub yet, that means the error was synchronous\n // because the subscribe call hasn't returned yet.\n syncUnsub = true;\n }\n })\n );\n\n if (syncUnsub) {\n // We have a synchronous error, we need to make sure to\n // finalize right away. This ensures that callbacks in the `finalize` operator are called\n // at the right time, and that finalization occurs at the expected\n // time between the source error and the subscription to the\n // next observable.\n innerSub.unsubscribe();\n innerSub = null;\n handledResult!.subscribe(subscriber);\n }\n });\n}\n","import { mergeMap } from './mergeMap';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { isFunction } from '../util/isFunction';\n\n/* tslint:disable:max-line-length */\nexport function concatMap>(\n project: (value: T, index: number) => O\n): OperatorFunction>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function concatMap>(\n project: (value: T, index: number) => O,\n resultSelector: undefined\n): OperatorFunction>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function concatMap>(\n project: (value: T, index: number) => O,\n resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R\n): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, in a serialized fashion waiting for each one to complete before\n * merging the next.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link concatAll}.\n *\n * ![](concatMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each new inner Observable is\n * concatenated with the previous inner Observable.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMap` is equivalent to `mergeMap` with concurrency parameter set\n * to `1`.\n *\n * ## Example\n *\n * For each click event, tick every second from 0 to 3, with no concurrency\n *\n * ```ts\n * import { fromEvent, concatMap, interval, take } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * concatMap(ev => interval(1000).pipe(take(4)))\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMapTo}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return A function that returns an Observable that emits the result of\n * applying the projection function (and the optional deprecated\n * `resultSelector`) to each item emitted by the source Observable and taking\n * values from each projected inner Observable sequentially.\n */\nexport function concatMap>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R\n): OperatorFunction | R> {\n return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1);\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SchedulerAction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Emits a notification from the source Observable only after a particular time span\n * has passed without another source emission.\n *\n * It's like {@link delay}, but passes only the most\n * recent notification from each burst of emissions.\n *\n * ![](debounceTime.png)\n *\n * `debounceTime` delays notifications emitted by the source Observable, but drops\n * previous pending delayed emissions if a new notification arrives on the source\n * Observable. This operator keeps track of the most recent notification from the\n * source Observable, and emits that only when `dueTime` has passed\n * without any other notification appearing on the source Observable. If a new value\n * appears before `dueTime` silence occurs, the previous notification will be dropped\n * and will not be emitted and a new `dueTime` is scheduled.\n * If the completing event happens during `dueTime` the last cached notification\n * is emitted before the completion event is forwarded to the output observable.\n * If the error event happens during `dueTime` or after it only the error event is\n * forwarded to the output observable. The cache notification is not emitted in this case.\n *\n * This is a rate-limiting operator, because it is impossible for more than one\n * notification to be emitted in any time window of duration `dueTime`, but it is also\n * a delay-like operator since output emissions do not occur at the same time as\n * they did on the source Observable. Optionally takes a {@link SchedulerLike} for\n * managing timers.\n *\n * ## Example\n *\n * Emit the most recent click after a burst of clicks\n *\n * ```ts\n * import { fromEvent, debounceTime } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(debounceTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link sample}\n * @see {@link sampleTime}\n * @see {@link throttle}\n * @see {@link throttleTime}\n *\n * @param {number} dueTime The timeout duration in milliseconds (or the time\n * unit determined internally by the optional `scheduler`) for the window of\n * time required to wait for emission silence before emitting the most recent\n * source value.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the timeout for each value.\n * @return A function that returns an Observable that delays the emissions of\n * the source Observable by the specified `dueTime`, and may drop some values\n * if they occur too frequently.\n */\nexport function debounceTime(dueTime: number, scheduler: SchedulerLike = asyncScheduler): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n let activeTask: Subscription | null = null;\n let lastValue: T | null = null;\n let lastTime: number | null = null;\n\n const emit = () => {\n if (activeTask) {\n // We have a value! Free up memory first, then emit the value.\n activeTask.unsubscribe();\n activeTask = null;\n const value = lastValue!;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle(this: SchedulerAction) {\n // This is called `dueTime` after the first value\n // but we might have received new values during this window!\n\n const targetTime = lastTime! + dueTime;\n const now = scheduler.now();\n if (now < targetTime) {\n // On that case, re-schedule to the new target\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n\n emit();\n }\n\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value: T) => {\n lastValue = value;\n lastTime = scheduler.now();\n\n // Only set up a task if it's not already up\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n },\n () => {\n // Source completed.\n // Emit any pending debounced values then complete\n emit();\n subscriber.complete();\n },\n // Pass all errors through to consumer.\n undefined,\n () => {\n // Finalization.\n lastValue = activeTask = null;\n }\n )\n );\n });\n}\n","import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Emits a given value if the source Observable completes without emitting any\n * `next` value, otherwise mirrors the source Observable.\n *\n * If the source Observable turns out to be empty, then\n * this operator will emit a default value.\n *\n * ![](defaultIfEmpty.png)\n *\n * `defaultIfEmpty` emits the values emitted by the source Observable or a\n * specified default value if the source Observable is empty (completes without\n * having emitted any `next` value).\n *\n * ## Example\n *\n * If no clicks happen in 5 seconds, then emit 'no clicks'\n *\n * ```ts\n * import { fromEvent, takeUntil, interval, defaultIfEmpty } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksBeforeFive = clicks.pipe(takeUntil(interval(5000)));\n * const result = clicksBeforeFive.pipe(defaultIfEmpty('no clicks'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link empty}\n * @see {@link last}\n *\n * @param defaultValue The default value used if the source\n * Observable is empty.\n * @return A function that returns an Observable that emits either the\n * specified `defaultValue` if the source Observable emits no items, or the\n * values emitted by the source Observable.\n */\nexport function defaultIfEmpty(defaultValue: R): OperatorFunction {\n return operate((source, subscriber) => {\n let hasValue = false;\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n hasValue = true;\n subscriber.next(value);\n },\n () => {\n if (!hasValue) {\n subscriber.next(defaultValue!);\n }\n subscriber.complete();\n }\n )\n );\n });\n}\n","import { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nimport { innerFrom } from '../observable/innerFrom';\n\n/** @deprecated The `subscriptionDelay` parameter will be removed in v8. */\nexport function delayWhen(\n delayDurationSelector: (value: T, index: number) => ObservableInput,\n subscriptionDelay: Observable\n): MonoTypeOperatorFunction;\nexport function delayWhen(delayDurationSelector: (value: T, index: number) => ObservableInput): MonoTypeOperatorFunction;\n\n/**\n * Delays the emission of items from the source Observable by a given time span\n * determined by the emissions of another Observable.\n *\n * It's like {@link delay}, but the time span of the\n * delay duration is determined by a second Observable.\n *\n * ![](delayWhen.png)\n *\n * `delayWhen` operator shifts each emitted value from the source Observable by\n * a time span determined by another Observable. When the source emits a value,\n * the `delayDurationSelector` function is called with the value emitted from\n * the source Observable as the first argument to the `delayDurationSelector`.\n * The `delayDurationSelector` function should return an {@link ObservableInput},\n * that is internally converted to an Observable that is called the \"duration\"\n * Observable.\n *\n * The source value is emitted on the output Observable only when the \"duration\"\n * Observable emits ({@link guide/glossary-and-semantics#next next}s) any value.\n * Upon that, the \"duration\" Observable gets unsubscribed.\n *\n * Before RxJS V7, the {@link guide/glossary-and-semantics#complete completion}\n * of the \"duration\" Observable would have been triggering the emission of the\n * source value to the output Observable, but with RxJS V7, this is not the case\n * anymore.\n *\n * Only next notifications (from the \"duration\" Observable) trigger values from\n * the source Observable to be passed to the output Observable. If the \"duration\"\n * Observable only emits the complete notification (without next), the value\n * emitted by the source Observable will never get to the output Observable - it\n * will be swallowed. If the \"duration\" Observable errors, the error will be\n * propagated to the output Observable.\n *\n * Optionally, `delayWhen` takes a second argument, `subscriptionDelay`, which\n * is an Observable. When `subscriptionDelay` emits its first value or\n * completes, the source Observable is subscribed to and starts behaving like\n * described in the previous paragraph. If `subscriptionDelay` is not provided,\n * `delayWhen` will subscribe to the source Observable as soon as the output\n * Observable is subscribed.\n *\n * ## Example\n *\n * Delay each click by a random amount of time, between 0 and 5 seconds\n *\n * ```ts\n * import { fromEvent, delayWhen, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const delayedClicks = clicks.pipe(\n * delayWhen(() => interval(Math.random() * 5000))\n * );\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link delay}\n * @see {@link throttle}\n * @see {@link throttleTime}\n * @see {@link debounce}\n * @see {@link debounceTime}\n * @see {@link sample}\n * @see {@link sampleTime}\n * @see {@link audit}\n * @see {@link auditTime}\n *\n * @param delayDurationSelector A function that returns an `ObservableInput` for\n * each `value` emitted by the source Observable, which is then used to delay the\n * emission of that `value` on the output Observable until the `ObservableInput`\n * returned from this function emits a next value. When called, beside `value`,\n * this function receives a zero-based `index` of the emission order.\n * @param subscriptionDelay An Observable that triggers the subscription to the\n * source Observable once it emits any value.\n * @return A function that returns an Observable that delays the emissions of\n * the source Observable by an amount of time specified by the Observable\n * returned by `delayDurationSelector`.\n */\nexport function delayWhen(\n delayDurationSelector: (value: T, index: number) => ObservableInput,\n subscriptionDelay?: Observable\n): MonoTypeOperatorFunction {\n if (subscriptionDelay) {\n // DEPRECATED PATH\n return (source: Observable) =>\n concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n }\n\n return mergeMap((value, index) => innerFrom(delayDurationSelector(value, index)).pipe(take(1), mapTo(value)));\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\n\n/**\n * Delays the emission of items from the source Observable by a given timeout or\n * until a given Date.\n *\n * Time shifts each item by some specified amount of\n * milliseconds.\n *\n * ![](delay.svg)\n *\n * If the delay argument is a Number, this operator time shifts the source\n * Observable by that amount of time expressed in milliseconds. The relative\n * time intervals between the values are preserved.\n *\n * If the delay argument is a Date, this operator time shifts the start of the\n * Observable execution until the given date occurs.\n *\n * ## Examples\n *\n * Delay each click by one second\n *\n * ```ts\n * import { fromEvent, delay } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const delayedClicks = clicks.pipe(delay(1000)); // each click emitted after 1 second\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * Delay all clicks until a future date happens\n *\n * ```ts\n * import { fromEvent, delay } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const date = new Date('March 15, 2050 12:00:00'); // in the future\n * const delayedClicks = clicks.pipe(delay(date)); // click emitted only after that date\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link delayWhen}\n * @see {@link throttle}\n * @see {@link throttleTime}\n * @see {@link debounce}\n * @see {@link debounceTime}\n * @see {@link sample}\n * @see {@link sampleTime}\n * @see {@link audit}\n * @see {@link auditTime}\n *\n * @param {number|Date} due The delay duration in milliseconds (a `number`) or\n * a `Date` until which the emission of the source items is delayed.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the time-shift for each item.\n * @return A function that returns an Observable that delays the emissions of\n * the source Observable by the specified timeout or Date.\n */\nexport function delay(due: number | Date, scheduler: SchedulerLike = asyncScheduler): MonoTypeOperatorFunction {\n const duration = timer(due, scheduler);\n return delayWhen(() => duration);\n}\n","import { MonoTypeOperatorFunction } from '../types';\nimport { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\nexport function distinctUntilChanged(comparator?: (previous: T, current: T) => boolean): MonoTypeOperatorFunction;\nexport function distinctUntilChanged(\n comparator: (previous: K, current: K) => boolean,\n keySelector: (value: T) => K\n): MonoTypeOperatorFunction;\n\n/**\n * Returns a result {@link Observable} that emits all values pushed by the source observable if they\n * are distinct in comparison to the last value the result observable emitted.\n *\n * When provided without parameters or with the first parameter (`{@link distinctUntilChanged#comparator comparator}`),\n * it behaves like this:\n *\n * 1. It will always emit the first value from the source.\n * 2. For all subsequent values pushed by the source, they will be compared to the previously emitted values\n * using the provided `comparator` or an `===` equality check.\n * 3. If the value pushed by the source is determined to be unequal by this check, that value is emitted and\n * becomes the new \"previously emitted value\" internally.\n *\n * When the second parameter (`{@link distinctUntilChanged#keySelector keySelector}`) is provided, the behavior\n * changes:\n *\n * 1. It will always emit the first value from the source.\n * 2. The `keySelector` will be run against all values, including the first value.\n * 3. For all values after the first, the selected key will be compared against the key selected from\n * the previously emitted value using the `comparator`.\n * 4. If the keys are determined to be unequal by this check, the value (not the key), is emitted\n * and the selected key from that value is saved for future comparisons against other keys.\n *\n * ## Examples\n *\n * A very basic example with no `{@link distinctUntilChanged#comparator comparator}`. Note that `1` is emitted more than once,\n * because it's distinct in comparison to the _previously emitted_ value,\n * not in comparison to _all other emitted values_.\n *\n * ```ts\n * import { of, distinctUntilChanged } from 'rxjs';\n *\n * of(1, 1, 1, 2, 2, 2, 1, 1, 3, 3)\n * .pipe(distinctUntilChanged())\n * .subscribe(console.log);\n * // Logs: 1, 2, 1, 3\n * ```\n *\n * With a `{@link distinctUntilChanged#comparator comparator}`, you can do custom comparisons. Let's say\n * you only want to emit a value when all of its components have\n * changed:\n *\n * ```ts\n * import { of, distinctUntilChanged } from 'rxjs';\n *\n * const totallyDifferentBuilds$ = of(\n * { engineVersion: '1.1.0', transmissionVersion: '1.2.0' },\n * { engineVersion: '1.1.0', transmissionVersion: '1.4.0' },\n * { engineVersion: '1.3.0', transmissionVersion: '1.4.0' },\n * { engineVersion: '1.3.0', transmissionVersion: '1.5.0' },\n * { engineVersion: '2.0.0', transmissionVersion: '1.5.0' }\n * ).pipe(\n * distinctUntilChanged((prev, curr) => {\n * return (\n * prev.engineVersion === curr.engineVersion ||\n * prev.transmissionVersion === curr.transmissionVersion\n * );\n * })\n * );\n *\n * totallyDifferentBuilds$.subscribe(console.log);\n *\n * // Logs:\n * // { engineVersion: '1.1.0', transmissionVersion: '1.2.0' }\n * // { engineVersion: '1.3.0', transmissionVersion: '1.4.0' }\n * // { engineVersion: '2.0.0', transmissionVersion: '1.5.0' }\n * ```\n *\n * You can also provide a custom `{@link distinctUntilChanged#comparator comparator}` to check that emitted\n * changes are only in one direction. Let's say you only want to get\n * the next record temperature:\n *\n * ```ts\n * import { of, distinctUntilChanged } from 'rxjs';\n *\n * const temps$ = of(30, 31, 20, 34, 33, 29, 35, 20);\n *\n * const recordHighs$ = temps$.pipe(\n * distinctUntilChanged((prevHigh, temp) => {\n * // If the current temp is less than\n * // or the same as the previous record,\n * // the record hasn't changed.\n * return temp <= prevHigh;\n * })\n * );\n *\n * recordHighs$.subscribe(console.log);\n * // Logs: 30, 31, 34, 35\n * ```\n *\n * Selecting update events only when the `updatedBy` field shows\n * the account changed hands.\n *\n * ```ts\n * import { of, distinctUntilChanged } from 'rxjs';\n *\n * // A stream of updates to a given account\n * const accountUpdates$ = of(\n * { updatedBy: 'blesh', data: [] },\n * { updatedBy: 'blesh', data: [] },\n * { updatedBy: 'ncjamieson', data: [] },\n * { updatedBy: 'ncjamieson', data: [] },\n * { updatedBy: 'blesh', data: [] }\n * );\n *\n * // We only want the events where it changed hands\n * const changedHands$ = accountUpdates$.pipe(\n * distinctUntilChanged(undefined, update => update.updatedBy)\n * );\n *\n * changedHands$.subscribe(console.log);\n * // Logs:\n * // { updatedBy: 'blesh', data: Array[0] }\n * // { updatedBy: 'ncjamieson', data: Array[0] }\n * // { updatedBy: 'blesh', data: Array[0] }\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilKeyChanged}\n *\n * @param comparator A function used to compare the previous and current keys for\n * equality. Defaults to a `===` check.\n * @param keySelector Used to select a key value to be passed to the `comparator`.\n *\n * @return A function that returns an Observable that emits items from the\n * source Observable with distinct values.\n */\nexport function distinctUntilChanged(\n comparator?: (previous: K, current: K) => boolean,\n keySelector: (value: T) => K = identity as (value: T) => K\n): MonoTypeOperatorFunction {\n // We've been allowing `null` do be passed as the `compare`, so we can't do\n // a default value for the parameter, because that will only work\n // for `undefined`.\n comparator = comparator ?? defaultCompare;\n\n return operate((source, subscriber) => {\n // The previous key, used to compare against keys selected\n // from new arrivals to determine \"distinctiveness\".\n let previousKey: K;\n // Whether or not this is the first value we've gotten.\n let first = true;\n\n source.subscribe(\n createOperatorSubscriber(subscriber, (value) => {\n // We always call the key selector.\n const currentKey = keySelector(value);\n\n // If it's the first value, we always emit it.\n // Otherwise, we compare this key to the previous key, and\n // if the comparer returns false, we emit.\n if (first || !comparator!(previousKey, currentKey)) {\n // Update our state *before* we emit the value\n // as emission can be the source of re-entrant code\n // in functional libraries like this. We only really\n // need to do this if it's the first value, or if the\n // key we're tracking in previous needs to change.\n first = false;\n previousKey = currentKey;\n\n // Emit the value!\n subscriber.next(value);\n }\n })\n );\n });\n}\n\nfunction defaultCompare(a: any, b: any) {\n return a === b;\n}\n","import { OperatorFunction, MonoTypeOperatorFunction, TruthyTypesOf } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function filter(predicate: (this: A, value: T, index: number) => value is S, thisArg: A): OperatorFunction;\nexport function filter(predicate: (value: T, index: number) => value is S): OperatorFunction;\nexport function filter(predicate: BooleanConstructor): OperatorFunction>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function filter(predicate: (this: A, value: T, index: number) => boolean, thisArg: A): MonoTypeOperatorFunction;\nexport function filter(predicate: (value: T, index: number) => boolean): MonoTypeOperatorFunction;\n\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.\n *\n * ![](filter.png)\n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * ## Example\n *\n * Emit only click events whose target was a DIV element\n *\n * ```ts\n * import { fromEvent, filter } from 'rxjs';\n *\n * const div = document.createElement('div');\n * div.style.cssText = 'width: 200px; height: 200px; background: #09c;';\n * document.body.appendChild(div);\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksOnDivs = clicks.pipe(filter(ev => (ev.target).tagName === 'DIV'));\n * clicksOnDivs.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param thisArg An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return A function that returns an Observable that emits items from the\n * source Observable that satisfy the specified `predicate`.\n */\nexport function filter(predicate: (value: T, index: number) => boolean, thisArg?: any): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n // An index passed to our predicate function on each call.\n let index = 0;\n\n // Subscribe to the source, all errors and completions are\n // forwarded to the consumer.\n source.subscribe(\n // Call the predicate with the appropriate `this` context,\n // if the predicate returns `true`, then send the value\n // to the consumer.\n createOperatorSubscriber(subscriber, (value) => predicate.call(thisArg, value, index++) && subscriber.next(value))\n );\n });\n}\n","import { MonoTypeOperatorFunction } from '../types';\nimport { operate } from '../util/lift';\n\n/**\n * Returns an Observable that mirrors the source Observable, but will call a specified function when\n * the source terminates on complete or error.\n * The specified function will also be called when the subscriber explicitly unsubscribes.\n *\n * ## Examples\n *\n * Execute callback function when the observable completes\n *\n * ```ts\n * import { interval, take, finalize } from 'rxjs';\n *\n * // emit value in sequence every 1 second\n * const source = interval(1000);\n * const example = source.pipe(\n * take(5), //take only the first 5 values\n * finalize(() => console.log('Sequence complete')) // Execute when the observable completes\n * );\n * const subscribe = example.subscribe(val => console.log(val));\n *\n * // results:\n * // 0\n * // 1\n * // 2\n * // 3\n * // 4\n * // 'Sequence complete'\n * ```\n *\n * Execute callback function when the subscriber explicitly unsubscribes\n *\n * ```ts\n * import { interval, finalize, tap, noop, timer } from 'rxjs';\n *\n * const source = interval(100).pipe(\n * finalize(() => console.log('[finalize] Called')),\n * tap({\n * next: () => console.log('[next] Called'),\n * error: () => console.log('[error] Not called'),\n * complete: () => console.log('[tap complete] Not called')\n * })\n * );\n *\n * const sub = source.subscribe({\n * next: x => console.log(x),\n * error: noop,\n * complete: () => console.log('[complete] Not called')\n * });\n *\n * timer(150).subscribe(() => sub.unsubscribe());\n *\n * // results:\n * // '[next] Called'\n * // 0\n * // '[finalize] Called'\n * ```\n *\n * @param {function} callback Function to be called when source terminates.\n * @return A function that returns an Observable that mirrors the source, but\n * will call the specified function on termination.\n */\nexport function finalize(callback: () => void): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n // TODO: This try/finally was only added for `useDeprecatedSynchronousErrorHandling`.\n // REMOVE THIS WHEN THAT HOT GARBAGE IS REMOVED IN V8.\n try {\n source.subscribe(subscriber);\n } finally {\n subscriber.add(callback);\n }\n });\n}\n","import { Observable } from '../Observable';\nimport { EmptyError } from '../util/EmptyError';\nimport { OperatorFunction, TruthyTypesOf } from '../types';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\n\nexport function first(predicate?: null, defaultValue?: D): OperatorFunction;\nexport function first(predicate: BooleanConstructor): OperatorFunction>;\nexport function first(predicate: BooleanConstructor, defaultValue: D): OperatorFunction | D>;\nexport function first(\n predicate: (value: T, index: number, source: Observable) => value is S,\n defaultValue?: S\n): OperatorFunction;\nexport function first(\n predicate: (value: T, index: number, source: Observable) => value is S,\n defaultValue: D\n): OperatorFunction;\nexport function first(\n predicate: (value: T, index: number, source: Observable) => boolean,\n defaultValue?: D\n): OperatorFunction;\n\n/**\n * Emits only the first value (or the first value that meets some condition)\n * emitted by the source Observable.\n *\n * Emits only the first value. Or emits only the first\n * value that passes some test.\n *\n * ![](first.png)\n *\n * If called with no arguments, `first` emits the first value of the source\n * Observable, then completes. If called with a `predicate` function, `first`\n * emits the first value of the source that matches the specified condition. Throws an error if\n * `defaultValue` was not provided and a matching element is not found.\n *\n * ## Examples\n *\n * Emit only the first click that happens on the DOM\n *\n * ```ts\n * import { fromEvent, first } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(first());\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Emits the first click that happens on a DIV\n *\n * ```ts\n * import { fromEvent, first } from 'rxjs';\n *\n * const div = document.createElement('div');\n * div.style.cssText = 'width: 200px; height: 200px; background: #09c;';\n * document.body.appendChild(div);\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(first(ev => (ev.target).tagName === 'DIV'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link filter}\n * @see {@link find}\n * @see {@link take}\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n * This is how `first()` is different from {@link take}(1) which completes instead.\n *\n * @param {function(value: T, index: number, source: Observable): boolean} [predicate]\n * An optional function called with each item to test for condition matching.\n * @param {D} [defaultValue] The default value emitted in case no valid value\n * was found on the source.\n * @return A function that returns an Observable that emits the first item that\n * matches the condition.\n */\nexport function first(\n predicate?: ((value: T, index: number, source: Observable) => boolean) | null,\n defaultValue?: D\n): OperatorFunction {\n const hasDefaultValue = arguments.length >= 2;\n return (source: Observable) =>\n source.pipe(\n predicate ? filter((v, i) => predicate(v, i, source)) : identity,\n take(1),\n hasDefaultValue ? defaultIfEmpty(defaultValue!) : throwIfEmpty(() => new EmptyError())\n );\n}\n","import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\n\n/**\n * Ignores all items emitted by the source Observable and only passes calls of `complete` or `error`.\n *\n * ![](ignoreElements.png)\n *\n * The `ignoreElements` operator suppresses all items emitted by the source Observable,\n * but allows its termination notification (either `error` or `complete`) to pass through unchanged.\n *\n * If you do not care about the items being emitted by an Observable, but you do want to be notified\n * when it completes or when it terminates with an error, you can apply the `ignoreElements` operator\n * to the Observable, which will ensure that it will never call its observers’ `next` handlers.\n *\n * ## Example\n *\n * Ignore all `next` emissions from the source\n *\n * ```ts\n * import { of, ignoreElements } from 'rxjs';\n *\n * of('you', 'talking', 'to', 'me')\n * .pipe(ignoreElements())\n * .subscribe({\n * next: word => console.log(word),\n * error: err => console.log('error:', err),\n * complete: () => console.log('the end'),\n * });\n *\n * // result:\n * // 'the end'\n * ```\n *\n * @return A function that returns an empty Observable that only calls\n * `complete` or `error`, based on which one is called by the source\n * Observable.\n */\nexport function ignoreElements(): OperatorFunction {\n return operate((source, subscriber) => {\n source.subscribe(createOperatorSubscriber(subscriber, noop));\n });\n}\n","import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\nexport function map(project: (value: T, index: number) => R): OperatorFunction;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function map(project: (this: A, value: T, index: number) => R, thisArg: A): OperatorFunction;\n\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.\n *\n * ![](map.png)\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * ## Example\n *\n * Map every click to the `clientX` position of that click\n *\n * ```ts\n * import { fromEvent, map } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const positions = clicks.pipe(map(ev => ev.clientX));\n *\n * positions.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return A function that returns an Observable that emits the values from the\n * source Observable transformed by the given `project` function.\n */\nexport function map(project: (value: T, index: number) => R, thisArg?: any): OperatorFunction {\n return operate((source, subscriber) => {\n // The index of the value from the source. Used with projection.\n let index = 0;\n // Subscribe to the source, all errors and completions are sent along\n // to the consumer.\n source.subscribe(\n createOperatorSubscriber(subscriber, (value: T) => {\n // Call the projection function with the appropriate this context,\n // and send the resulting value to the consumer.\n subscriber.next(project.call(thisArg, value, index++));\n })\n );\n });\n}\n","import { OperatorFunction } from '../types';\nimport { map } from './map';\n\n/** @deprecated To be removed in v9. Use {@link map} instead: `map(() => value)`. */\nexport function mapTo(value: R): OperatorFunction;\n/**\n * @deprecated Do not specify explicit type parameters. Signatures with type parameters\n * that cannot be inferred will be removed in v8. `mapTo` itself will be removed in v9,\n * use {@link map} instead: `map(() => value)`.\n * */\nexport function mapTo(value: R): OperatorFunction;\n\n/**\n * Emits the given constant value on the output Observable every time the source\n * Observable emits a value.\n *\n * Like {@link map}, but it maps every source value to\n * the same output value every time.\n *\n * ![](mapTo.png)\n *\n * Takes a constant `value` as argument, and emits that whenever the source\n * Observable emits a value. In other words, ignores the actual source value,\n * and simply uses the emission moment to know when to emit the given `value`.\n *\n * ## Example\n *\n * Map every click to the string `'Hi'`\n *\n * ```ts\n * import { fromEvent, mapTo } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const greetings = clicks.pipe(mapTo('Hi'));\n *\n * greetings.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link map}\n *\n * @param value The value to map each source value to.\n * @return A function that returns an Observable that emits the given `value`\n * every time the source Observable emits.\n * @deprecated To be removed in v9. Use {@link map} instead: `map(() => value)`.\n */\nexport function mapTo(value: R): OperatorFunction {\n return map(() => value);\n}\n","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nimport { OperatorFunction, ObservableInput, ObservedValueOf } from '../types';\n\n/**\n * Converts a higher-order Observable into a first-order Observable which\n * concurrently delivers all values that are emitted on the inner Observables.\n *\n * Flattens an Observable-of-Observables.\n *\n * ![](mergeAll.png)\n *\n * `mergeAll` subscribes to an Observable that emits Observables, also known as\n * a higher-order Observable. Each time it observes one of these emitted inner\n * Observables, it subscribes to that and delivers all the values from the\n * inner Observable on the output Observable. The output Observable only\n * completes once all inner Observables have completed. Any error delivered by\n * a inner Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n *\n * Spawn a new interval Observable for each click event, and blend their outputs as one Observable\n *\n * ```ts\n * import { fromEvent, map, interval, mergeAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(map(() => interval(1000)));\n * const firstOrder = higherOrder.pipe(mergeAll());\n *\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * Count from 0 to 9 every second for each click, but only allow 2 concurrent timers\n *\n * ```ts\n * import { fromEvent, map, interval, take, mergeAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map(() => interval(1000).pipe(take(10)))\n * );\n * const firstOrder = higherOrder.pipe(mergeAll(2));\n *\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatestAll}\n * @see {@link concatAll}\n * @see {@link exhaustAll}\n * @see {@link merge}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @param {number} [concurrent=Infinity] Maximum number of inner\n * Observables being subscribed to concurrently.\n * @return A function that returns an Observable that emits values coming from\n * all the inner Observables emitted by the source Observable.\n */\nexport function mergeAll>(concurrent: number = Infinity): OperatorFunction> {\n return mergeMap(identity, concurrent);\n}\n","import { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\n\n/* tslint:disable:max-line-length */\nexport function mergeMap>(\n project: (value: T, index: number) => O,\n concurrent?: number\n): OperatorFunction>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function mergeMap>(\n project: (value: T, index: number) => O,\n resultSelector: undefined,\n concurrent?: number\n): OperatorFunction>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function mergeMap>(\n project: (value: T, index: number) => O,\n resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R,\n concurrent?: number\n): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.\n *\n * ![](mergeMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * ## Example\n *\n * Map and flatten each letter to an Observable ticking every 1 second\n *\n * ```ts\n * import { of, mergeMap, interval, map } from 'rxjs';\n *\n * const letters = of('a', 'b', 'c');\n * const result = letters.pipe(\n * mergeMap(x => interval(1000).pipe(map(i => x + i)))\n * );\n *\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a, b, c every second with respective ascending integers\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {number} [concurrent=Infinity] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return A function that returns an Observable that emits the result of\n * applying the projection function (and the optional deprecated\n * `resultSelector`) to each item emitted by the source Observable and merging\n * the results of the Observables obtained from this transformation.\n */\nexport function mergeMap>(\n project: (value: T, index: number) => O,\n resultSelector?: ((outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R) | number,\n concurrent: number = Infinity\n): OperatorFunction | R> {\n if (isFunction(resultSelector)) {\n // DEPRECATED PATH\n return mergeMap((a, i) => map((b: any, ii: number) => resultSelector(a, b, i, ii))(innerFrom(project(a, i))), concurrent);\n } else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n\n return operate((source, subscriber) => mergeInternals(source, subscriber, project, concurrent));\n}\n","import { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subscriber } from '../Subscriber';\nimport { ObservableInput, SchedulerLike } from '../types';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * A process embodying the general \"merge\" strategy. This is used in\n * `mergeMap` and `mergeScan` because the logic is otherwise nearly identical.\n * @param source The original source observable\n * @param subscriber The consumer subscriber\n * @param project The projection function to get our inner sources\n * @param concurrent The number of concurrent inner subscriptions\n * @param onBeforeNext Additional logic to apply before nexting to our consumer\n * @param expand If `true` this will perform an \"expand\" strategy, which differs only\n * in that it recurses, and the inner subscription must be schedule-able.\n * @param innerSubScheduler A scheduler to use to schedule inner subscriptions,\n * this is to support the expand strategy, mostly, and should be deprecated\n */\nexport function mergeInternals(\n source: Observable,\n subscriber: Subscriber,\n project: (value: T, index: number) => ObservableInput,\n concurrent: number,\n onBeforeNext?: (innerValue: R) => void,\n expand?: boolean,\n innerSubScheduler?: SchedulerLike,\n additionalFinalizer?: () => void\n) {\n // Buffered values, in the event of going over our concurrency limit\n const buffer: T[] = [];\n // The number of active inner subscriptions.\n let active = 0;\n // An index to pass to our accumulator function\n let index = 0;\n // Whether or not the outer source has completed.\n let isComplete = false;\n\n /**\n * Checks to see if we can complete our result or not.\n */\n const checkComplete = () => {\n // If the outer has completed, and nothing is left in the buffer,\n // and we don't have any active inner subscriptions, then we can\n // Emit the state and complete.\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n\n // If we're under our concurrency limit, just start the inner subscription, otherwise buffer and wait.\n const outerNext = (value: T) => (active < concurrent ? doInnerSub(value) : buffer.push(value));\n\n const doInnerSub = (value: T) => {\n // If we're expanding, we need to emit the outer values and the inner values\n // as the inners will \"become outers\" in a way as they are recursively fed\n // back to the projection mechanism.\n expand && subscriber.next(value as any);\n\n // Increment the number of active subscriptions so we can track it\n // against our concurrency limit later.\n active++;\n\n // A flag used to show that the inner observable completed.\n // This is checked during finalization to see if we should\n // move to the next item in the buffer, if there is on.\n let innerComplete = false;\n\n // Start our inner subscription.\n innerFrom(project(value, index++)).subscribe(\n createOperatorSubscriber(\n subscriber,\n (innerValue) => {\n // `mergeScan` has additional handling here. For example\n // taking the inner value and updating state.\n onBeforeNext?.(innerValue);\n\n if (expand) {\n // If we're expanding, then just recurse back to our outer\n // handler. It will emit the value first thing.\n outerNext(innerValue as any);\n } else {\n // Otherwise, emit the inner value.\n subscriber.next(innerValue);\n }\n },\n () => {\n // Flag that we have completed, so we know to check the buffer\n // during finalization.\n innerComplete = true;\n },\n // Errors are passed to the destination.\n undefined,\n () => {\n // During finalization, if the inner completed (it wasn't errored or\n // cancelled), then we want to try the next item in the buffer if\n // there is one.\n if (innerComplete) {\n // We have to wrap this in a try/catch because it happens during\n // finalization, possibly asynchronously, and we want to pass\n // any errors that happen (like in a projection function) to\n // the outer Subscriber.\n try {\n // INNER SOURCE COMPLETE\n // Decrement the active count to ensure that the next time\n // we try to call `doInnerSub`, the number is accurate.\n active--;\n // If we have more values in the buffer, try to process those\n // Note that this call will increment `active` ahead of the\n // next conditional, if there were any more inner subscriptions\n // to start.\n while (buffer.length && active < concurrent) {\n const bufferedValue = buffer.shift()!;\n // Particularly for `expand`, we need to check to see if a scheduler was provided\n // for when we want to start our inner subscription. Otherwise, we just start\n // are next inner subscription.\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, () => doInnerSub(bufferedValue));\n } else {\n doInnerSub(bufferedValue);\n }\n }\n // Check to see if we can complete, and complete if so.\n checkComplete();\n } catch (err) {\n subscriber.error(err);\n }\n }\n }\n )\n );\n };\n\n // Subscribe to our source observable.\n source.subscribe(\n createOperatorSubscriber(subscriber, outerNext, () => {\n // Outer completed, make a note of it, and check to see if we can complete everything.\n isComplete = true;\n checkComplete();\n })\n );\n\n // Additional finalization (for when the destination is torn down).\n // Other finalization is added implicitly via subscription above.\n return () => {\n additionalFinalizer?.();\n };\n}\n","/** @prettier */\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * Ensure a specific scheduler is used, from outside of an Observable.\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * ## Example\n *\n * Ensure values in subscribe are called just before browser repaint\n *\n * ```ts\n * import { interval, observeOn, animationFrameScheduler } from 'rxjs';\n *\n * const someDiv = document.createElement('div');\n * someDiv.style.cssText = 'width: 200px;background: #09c';\n * document.body.appendChild(someDiv);\n * const intervals = interval(10); // Intervals are scheduled\n * // with async scheduler by default...\n * intervals.pipe(\n * observeOn(animationFrameScheduler) // ...but we will observe on animationFrame\n * ) // scheduler to ensure smooth animation.\n * .subscribe(val => {\n * someDiv.style.height = val + 'px';\n * });\n * ```\n *\n * @see {@link delay}\n *\n * @param scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param delay Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return A function that returns an Observable that emits the same\n * notifications as the source Observable, but with provided scheduler.\n */\nexport function observeOn(scheduler: SchedulerLike, delay = 0): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => executeSchedule(subscriber, scheduler, () => subscriber.next(value), delay),\n () => executeSchedule(subscriber, scheduler, () => subscriber.complete(), delay),\n (err) => executeSchedule(subscriber, scheduler, () => subscriber.error(err), delay)\n )\n );\n });\n}\n","import { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Make a {@link ConnectableObservable} behave like a ordinary observable and automates the way\n * you can connect to it.\n *\n * Internally it counts the subscriptions to the observable and subscribes (only once) to the source if\n * the number of subscriptions is larger than 0. If the number of subscriptions is smaller than 1, it\n * unsubscribes from the source. This way you can make sure that everything before the *published*\n * refCount has only a single subscription independently of the number of subscribers to the target\n * observable.\n *\n * Note that using the {@link share} operator is exactly the same as using the `multicast(() => new Subject())` operator\n * (making the observable hot) and the *refCount* operator in a sequence.\n *\n * ![](refCount.png)\n *\n * ## Example\n *\n * In the following example there are two intervals turned into connectable observables\n * by using the *publish* operator. The first one uses the *refCount* operator, the\n * second one does not use it. You will notice that a connectable observable does nothing\n * until you call its connect function.\n *\n * ```ts\n * import { interval, tap, publish, refCount } from 'rxjs';\n *\n * // Turn the interval observable into a ConnectableObservable (hot)\n * const refCountInterval = interval(400).pipe(\n * tap(num => console.log(`refCount ${ num }`)),\n * publish(),\n * refCount()\n * );\n *\n * const publishedInterval = interval(400).pipe(\n * tap(num => console.log(`publish ${ num }`)),\n * publish()\n * );\n *\n * refCountInterval.subscribe();\n * refCountInterval.subscribe();\n * // 'refCount 0' -----> 'refCount 1' -----> etc\n * // All subscriptions will receive the same value and the tap (and\n * // every other operator) before the `publish` operator will be executed\n * // only once per event independently of the number of subscriptions.\n *\n * publishedInterval.subscribe();\n * // Nothing happens until you call .connect() on the observable.\n * ```\n *\n * @return A function that returns an Observable that automates the connection\n * to ConnectableObservable.\n * @see {@link ConnectableObservable}\n * @see {@link share}\n * @see {@link publish}\n * @deprecated Replaced with the {@link share} operator. How `share` is used\n * will depend on the connectable observable you created just prior to the\n * `refCount` operator.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function refCount(): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n let connection: Subscription | null = null;\n\n (source as any)._refCount++;\n\n const refCounter = createOperatorSubscriber(subscriber, undefined, undefined, undefined, () => {\n if (!source || (source as any)._refCount <= 0 || 0 < --(source as any)._refCount) {\n connection = null;\n return;\n }\n\n ///\n // Compare the local RefCountSubscriber's connection Subscription to the\n // connection Subscription on the shared ConnectableObservable. In cases\n // where the ConnectableObservable source synchronously emits values, and\n // the RefCountSubscriber's downstream Observers synchronously unsubscribe,\n // execution continues to here before the RefCountOperator has a chance to\n // supply the RefCountSubscriber with the shared connection Subscription.\n // For example:\n // ```\n // range(0, 10).pipe(\n // publish(),\n // refCount(),\n // take(5),\n // )\n // .subscribe();\n // ```\n // In order to account for this case, RefCountSubscriber should only dispose\n // the ConnectableObservable's shared connection Subscription if the\n // connection Subscription exists, *and* either:\n // a. RefCountSubscriber doesn't have a reference to the shared connection\n // Subscription yet, or,\n // b. RefCountSubscriber's connection Subscription reference is identical\n // to the shared connection Subscription\n ///\n\n const sharedConnection = (source as any)._connection;\n const conn = connection;\n connection = null;\n\n if (sharedConnection && (!conn || sharedConnection === conn)) {\n sharedConnection.unsubscribe();\n }\n\n subscriber.unsubscribe();\n });\n\n source.subscribe(refCounter);\n\n if (!refCounter.closed) {\n connection = (source as ConnectableObservable).connect();\n }\n });\n}\n","import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { scanInternals } from './scanInternals';\n\nexport function scan(accumulator: (acc: A | V, value: V, index: number) => A): OperatorFunction;\nexport function scan(accumulator: (acc: A, value: V, index: number) => A, seed: A): OperatorFunction;\nexport function scan(accumulator: (acc: A | S, value: V, index: number) => A, seed: S): OperatorFunction;\n\n// TODO: link to a \"redux pattern\" section in the guide (location TBD)\n\n/**\n * Useful for encapsulating and managing state. Applies an accumulator (or \"reducer function\")\n * to each value from the source after an initial state is established -- either via\n * a `seed` value (second argument), or from the first value from the source.\n *\n * It's like {@link reduce}, but emits the current\n * accumulation state after each update\n *\n * ![](scan.png)\n *\n * This operator maintains an internal state and emits it after processing each value as follows:\n *\n * 1. First value arrives\n * - If a `seed` value was supplied (as the second argument to `scan`), let `state = seed` and `value = firstValue`.\n * - If NO `seed` value was supplied (no second argument), let `state = firstValue` and go to 3.\n * 2. Let `state = accumulator(state, value)`.\n * - If an error is thrown by `accumulator`, notify the consumer of an error. The process ends.\n * 3. Emit `state`.\n * 4. Next value arrives, let `value = nextValue`, go to 2.\n *\n * ## Examples\n *\n * An average of previous numbers. This example shows how\n * not providing a `seed` can prime the stream with the\n * first value from the source.\n *\n * ```ts\n * import { of, scan, map } from 'rxjs';\n *\n * const numbers$ = of(1, 2, 3);\n *\n * numbers$\n * .pipe(\n * // Get the sum of the numbers coming in.\n * scan((total, n) => total + n),\n * // Get the average by dividing the sum by the total number\n * // received so far (which is 1 more than the zero-based index).\n * map((sum, index) => sum / (index + 1))\n * )\n * .subscribe(console.log);\n * ```\n *\n * The Fibonacci sequence. This example shows how you can use\n * a seed to prime accumulation process. Also... you know... Fibonacci.\n * So important to like, computers and stuff that its whiteboarded\n * in job interviews. Now you can show them the Rx version! (Please don't, haha)\n *\n * ```ts\n * import { interval, scan, map, startWith } from 'rxjs';\n *\n * const firstTwoFibs = [0, 1];\n * // An endless stream of Fibonacci numbers.\n * const fibonacci$ = interval(1000).pipe(\n * // Scan to get the fibonacci numbers (after 0, 1)\n * scan(([a, b]) => [b, a + b], firstTwoFibs),\n * // Get the second number in the tuple, it's the one you calculated\n * map(([, n]) => n),\n * // Start with our first two digits :)\n * startWith(...firstTwoFibs)\n * );\n *\n * fibonacci$.subscribe(console.log);\n * ```\n *\n * @see {@link expand}\n * @see {@link mergeScan}\n * @see {@link reduce}\n * @see {@link switchScan}\n *\n * @param accumulator A \"reducer function\". This will be called for each value after an initial state is\n * acquired.\n * @param seed The initial state. If this is not provided, the first value from the source will\n * be used as the initial state, and emitted without going through the accumulator. All subsequent values\n * will be processed by the accumulator function. If this is provided, all values will go through\n * the accumulator function.\n * @return A function that returns an Observable of the accumulated values.\n */\nexport function scan(accumulator: (acc: V | A | S, value: V, index: number) => A, seed?: S): OperatorFunction {\n // providing a seed of `undefined` *should* be valid and trigger\n // hasSeed! so don't use `seed !== undefined` checks!\n // For this reason, we have to check it here at the original call site\n // otherwise inside Operator/Subscriber we won't know if `undefined`\n // means they didn't provide anything or if they literally provided `undefined`\n return operate(scanInternals(accumulator, seed as S, arguments.length >= 2, true));\n}\n","import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * A basic scan operation. This is used for `scan` and `reduce`.\n * @param accumulator The accumulator to use\n * @param seed The seed value for the state to accumulate\n * @param hasSeed Whether or not a seed was provided\n * @param emitOnNext Whether or not to emit the state on next\n * @param emitBeforeComplete Whether or not to emit the before completion\n */\n\nexport function scanInternals(\n accumulator: (acc: V | A | S, value: V, index: number) => A,\n seed: S,\n hasSeed: boolean,\n emitOnNext: boolean,\n emitBeforeComplete?: undefined | true\n) {\n return (source: Observable, subscriber: Subscriber) => {\n // Whether or not we have state yet. This will only be\n // false before the first value arrives if we didn't get\n // a seed value.\n let hasState = hasSeed;\n // The state that we're tracking, starting with the seed,\n // if there is one, and then updated by the return value\n // from the accumulator on each emission.\n let state: any = seed;\n // An index to pass to the accumulator function.\n let index = 0;\n\n // Subscribe to our source. All errors and completions are passed through.\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n // Always increment the index.\n const i = index++;\n // Set the state\n state = hasState\n ? // We already have state, so we can get the new state from the accumulator\n accumulator(state, value, i)\n : // We didn't have state yet, a seed value was not provided, so\n\n // we set the state to the first value, and mark that we have state now\n ((hasState = true), value);\n\n // Maybe send it to the consumer.\n emitOnNext && subscriber.next(state);\n },\n // If an onComplete was given, call it, otherwise\n // just pass through the complete notification to the consumer.\n emitBeforeComplete &&\n (() => {\n hasState && subscriber.next(state);\n subscriber.complete();\n })\n )\n );\n };\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SubjectLike, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\n\nexport interface ShareConfig {\n /**\n * The factory used to create the subject that will connect the source observable to\n * multicast consumers.\n */\n connector?: () => SubjectLike;\n /**\n * If `true`, the resulting observable will reset internal state on error from source and return to a \"cold\" state. This\n * allows the resulting observable to be \"retried\" in the event of an error.\n * If `false`, when an error comes from the source it will push the error into the connecting subject, and the subject\n * will remain the connecting subject, meaning the resulting observable will not go \"cold\" again, and subsequent retries\n * or resubscriptions will resubscribe to that same subject. In all cases, RxJS subjects will emit the same error again, however\n * {@link ReplaySubject} will also push its buffered values before pushing the error.\n * It is also possible to pass a notifier factory returning an `ObservableInput` instead which grants more fine-grained\n * control over how and when the reset should happen. This allows behaviors like conditional or delayed resets.\n */\n resetOnError?: boolean | ((error: any) => ObservableInput);\n /**\n * If `true`, the resulting observable will reset internal state on completion from source and return to a \"cold\" state. This\n * allows the resulting observable to be \"repeated\" after it is done.\n * If `false`, when the source completes, it will push the completion through the connecting subject, and the subject\n * will remain the connecting subject, meaning the resulting observable will not go \"cold\" again, and subsequent repeats\n * or resubscriptions will resubscribe to that same subject.\n * It is also possible to pass a notifier factory returning an `ObservableInput` instead which grants more fine-grained\n * control over how and when the reset should happen. This allows behaviors like conditional or delayed resets.\n */\n resetOnComplete?: boolean | (() => ObservableInput);\n /**\n * If `true`, when the number of subscribers to the resulting observable reaches zero due to those subscribers unsubscribing, the\n * internal state will be reset and the resulting observable will return to a \"cold\" state. This means that the next\n * time the resulting observable is subscribed to, a new subject will be created and the source will be subscribed to\n * again.\n * If `false`, when the number of subscribers to the resulting observable reaches zero due to unsubscription, the subject\n * will remain connected to the source, and new subscriptions to the result will be connected through that same subject.\n * It is also possible to pass a notifier factory returning an `ObservableInput` instead which grants more fine-grained\n * control over how and when the reset should happen. This allows behaviors like conditional or delayed resets.\n */\n resetOnRefCountZero?: boolean | (() => ObservableInput);\n}\n\nexport function share(): MonoTypeOperatorFunction;\n\nexport function share(options: ShareConfig): MonoTypeOperatorFunction;\n\n/**\n * Returns a new Observable that multicasts (shares) the original Observable. As long as there is at least one\n * Subscriber this Observable will be subscribed and emitting data. When all subscribers have unsubscribed it will\n * unsubscribe from the source Observable. Because the Observable is multicasting it makes the stream `hot`.\n * This is an alias for `multicast(() => new Subject()), refCount()`.\n *\n * The subscription to the underlying source Observable can be reset (unsubscribe and resubscribe for new subscribers),\n * if the subscriber count to the shared observable drops to 0, or if the source Observable errors or completes. It is\n * possible to use notifier factories for the resets to allow for behaviors like conditional or delayed resets. Please\n * note that resetting on error or complete of the source Observable does not behave like a transparent retry or restart\n * of the source because the error or complete will be forwarded to all subscribers and their subscription will be\n * closed. Only new subscribers after a reset on error or complete happened will cause a fresh subscription to the\n * source. To achieve transparent retries or restarts pipe the source through appropriate operators before sharing.\n *\n * ![](share.png)\n *\n * ## Example\n *\n * Generate new multicast Observable from the `source` Observable value\n *\n * ```ts\n * import { interval, tap, map, take, share } from 'rxjs';\n *\n * const source = interval(1000).pipe(\n * tap(x => console.log('Processing: ', x)),\n * map(x => x * x),\n * take(6),\n * share()\n * );\n *\n * source.subscribe(x => console.log('subscription 1: ', x));\n * source.subscribe(x => console.log('subscription 2: ', x));\n *\n * // Logs:\n * // Processing: 0\n * // subscription 1: 0\n * // subscription 2: 0\n * // Processing: 1\n * // subscription 1: 1\n * // subscription 2: 1\n * // Processing: 2\n * // subscription 1: 4\n * // subscription 2: 4\n * // Processing: 3\n * // subscription 1: 9\n * // subscription 2: 9\n * // Processing: 4\n * // subscription 1: 16\n * // subscription 2: 16\n * // Processing: 5\n * // subscription 1: 25\n * // subscription 2: 25\n * ```\n *\n * ## Example with notifier factory: Delayed reset\n *\n * ```ts\n * import { interval, take, share, timer } from 'rxjs';\n *\n * const source = interval(1000).pipe(\n * take(3),\n * share({\n * resetOnRefCountZero: () => timer(1000)\n * })\n * );\n *\n * const subscriptionOne = source.subscribe(x => console.log('subscription 1: ', x));\n * setTimeout(() => subscriptionOne.unsubscribe(), 1300);\n *\n * setTimeout(() => source.subscribe(x => console.log('subscription 2: ', x)), 1700);\n *\n * setTimeout(() => source.subscribe(x => console.log('subscription 3: ', x)), 5000);\n *\n * // Logs:\n * // subscription 1: 0\n * // (subscription 1 unsubscribes here)\n * // (subscription 2 subscribes here ~400ms later, source was not reset)\n * // subscription 2: 1\n * // subscription 2: 2\n * // (subscription 2 unsubscribes here)\n * // (subscription 3 subscribes here ~2000ms later, source did reset before)\n * // subscription 3: 0\n * // subscription 3: 1\n * // subscription 3: 2\n * ```\n *\n * @see {@link shareReplay}\n *\n * @return A function that returns an Observable that mirrors the source.\n */\nexport function share(options: ShareConfig = {}): MonoTypeOperatorFunction {\n const { connector = () => new Subject(), resetOnError = true, resetOnComplete = true, resetOnRefCountZero = true } = options;\n // It's necessary to use a wrapper here, as the _operator_ must be\n // referentially transparent. Otherwise, it cannot be used in calls to the\n // static `pipe` function - to create a partial pipeline.\n //\n // The _operator function_ - the function returned by the _operator_ - will\n // not be referentially transparent - as it shares its source - but the\n // _operator function_ is called when the complete pipeline is composed via a\n // call to a source observable's `pipe` method - not when the static `pipe`\n // function is called.\n return (wrapperSource) => {\n let connection: SafeSubscriber | undefined;\n let resetConnection: Subscription | undefined;\n let subject: SubjectLike | undefined;\n let refCount = 0;\n let hasCompleted = false;\n let hasErrored = false;\n\n const cancelReset = () => {\n resetConnection?.unsubscribe();\n resetConnection = undefined;\n };\n // Used to reset the internal state to a \"cold\"\n // state, as though it had never been subscribed to.\n const reset = () => {\n cancelReset();\n connection = subject = undefined;\n hasCompleted = hasErrored = false;\n };\n const resetAndUnsubscribe = () => {\n // We need to capture the connection before\n // we reset (if we need to reset).\n const conn = connection;\n reset();\n conn?.unsubscribe();\n };\n\n return operate((source, subscriber) => {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n\n // Create the subject if we don't have one yet. Grab a local reference to\n // it as well, which avoids non-null assertions when using it and, if we\n // connect to it now, then error/complete need a reference after it was\n // reset.\n const dest = (subject = subject ?? connector());\n\n // Add the finalization directly to the subscriber - instead of returning it -\n // so that the handling of the subscriber's unsubscription will be wired\n // up _before_ the subscription to the source occurs. This is done so that\n // the assignment to the source connection's `closed` property will be seen\n // by synchronous firehose sources.\n subscriber.add(() => {\n refCount--;\n\n // If we're resetting on refCount === 0, and it's 0, we only want to do\n // that on \"unsubscribe\", really. Resetting on error or completion is a different\n // configuration.\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n\n // The following line adds the subscription to the subscriber passed.\n // Basically, `subscriber === dest.subscribe(subscriber)` is `true`.\n dest.subscribe(subscriber);\n\n if (\n !connection &&\n // Check this shareReplay is still activate - it can be reset to 0\n // and be \"unsubscribed\" _before_ it actually subscribes.\n // If we were to subscribe then, it'd leak and get stuck.\n refCount > 0\n ) {\n // We need to create a subscriber here - rather than pass an observer and\n // assign the returned subscription to connection - because it's possible\n // for reentrant subscriptions to the shared observable to occur and in\n // those situations we want connection to be already-assigned so that we\n // don't create another connection to the source.\n connection = new SafeSubscriber({\n next: (value) => dest.next(value),\n error: (err) => {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: () => {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n innerFrom(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\n\nfunction handleReset(\n reset: () => void,\n on: boolean | ((...args: T) => ObservableInput),\n ...args: T\n): Subscription | undefined {\n if (on === true) {\n reset();\n return;\n }\n\n if (on === false) {\n return;\n }\n\n const onSubscriber = new SafeSubscriber({\n next: () => {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n\n return innerFrom(on(...args)).subscribe(onSubscriber);\n}\n","import { ReplaySubject } from '../ReplaySubject';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { share } from './share';\n\nexport interface ShareReplayConfig {\n bufferSize?: number;\n windowTime?: number;\n refCount: boolean;\n scheduler?: SchedulerLike;\n}\n\nexport function shareReplay(config: ShareReplayConfig): MonoTypeOperatorFunction;\nexport function shareReplay(bufferSize?: number, windowTime?: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n\n/**\n * Share source and replay specified number of emissions on subscription.\n *\n * This operator is a specialization of `replay` that connects to a source observable\n * and multicasts through a `ReplaySubject` constructed with the specified arguments.\n * A successfully completed source will stay cached in the `shareReplay`ed observable forever,\n * but an errored source can be retried.\n *\n * ## Why use `shareReplay`?\n *\n * You generally want to use `shareReplay` when you have side-effects or taxing computations\n * that you do not wish to be executed amongst multiple subscribers.\n * It may also be valuable in situations where you know you will have late subscribers to\n * a stream that need access to previously emitted values.\n * This ability to replay values on subscription is what differentiates {@link share} and `shareReplay`.\n *\n * ## Reference counting\n *\n * By default `shareReplay` will use `refCount` of false, meaning that it will _not_ unsubscribe the\n * source when the reference counter drops to zero, i.e. the inner `ReplaySubject` will _not_ be unsubscribed\n * (and potentially run for ever).\n * This is the default as it is expected that `shareReplay` is often used to keep around expensive to setup\n * observables which we want to keep running instead of having to do the expensive setup again.\n *\n * As of RXJS version 6.4.0 a new overload signature was added to allow for manual control over what\n * happens when the operators internal reference counter drops to zero.\n * If `refCount` is true, the source will be unsubscribed from once the reference count drops to zero, i.e.\n * the inner `ReplaySubject` will be unsubscribed. All new subscribers will receive value emissions from a\n * new `ReplaySubject` which in turn will cause a new subscription to the source observable.\n *\n * ## Examples\n *\n * Example with a third subscriber coming late to the party\n *\n * ```ts\n * import { interval, take, shareReplay } from 'rxjs';\n *\n * const shared$ = interval(2000).pipe(\n * take(6),\n * shareReplay(3)\n * );\n *\n * shared$.subscribe(x => console.log('sub A: ', x));\n * shared$.subscribe(y => console.log('sub B: ', y));\n *\n * setTimeout(() => {\n * shared$.subscribe(y => console.log('sub C: ', y));\n * }, 11000);\n *\n * // Logs:\n * // (after ~2000 ms)\n * // sub A: 0\n * // sub B: 0\n * // (after ~4000 ms)\n * // sub A: 1\n * // sub B: 1\n * // (after ~6000 ms)\n * // sub A: 2\n * // sub B: 2\n * // (after ~8000 ms)\n * // sub A: 3\n * // sub B: 3\n * // (after ~10000 ms)\n * // sub A: 4\n * // sub B: 4\n * // (after ~11000 ms, sub C gets the last 3 values)\n * // sub C: 2\n * // sub C: 3\n * // sub C: 4\n * // (after ~12000 ms)\n * // sub A: 5\n * // sub B: 5\n * // sub C: 5\n * ```\n *\n * Example for `refCount` usage\n *\n * ```ts\n * import { Observable, tap, interval, shareReplay, take } from 'rxjs';\n *\n * const log = (name: string, source: Observable) => source.pipe(\n * tap({\n * subscribe: () => console.log(`${ name }: subscribed`),\n * next: value => console.log(`${ name }: ${ value }`),\n * complete: () => console.log(`${ name }: completed`),\n * finalize: () => console.log(`${ name }: unsubscribed`)\n * })\n * );\n *\n * const obs$ = log('source', interval(1000));\n *\n * const shared$ = log('shared', obs$.pipe(\n * shareReplay({ bufferSize: 1, refCount: true }),\n * take(2)\n * ));\n *\n * shared$.subscribe(x => console.log('sub A: ', x));\n * shared$.subscribe(y => console.log('sub B: ', y));\n *\n * // PRINTS:\n * // shared: subscribed <-- reference count = 1\n * // source: subscribed\n * // shared: subscribed <-- reference count = 2\n * // source: 0\n * // shared: 0\n * // sub A: 0\n * // shared: 0\n * // sub B: 0\n * // source: 1\n * // shared: 1\n * // sub A: 1\n * // shared: completed <-- take(2) completes the subscription for sub A\n * // shared: unsubscribed <-- reference count = 1\n * // shared: 1\n * // sub B: 1\n * // shared: completed <-- take(2) completes the subscription for sub B\n * // shared: unsubscribed <-- reference count = 0\n * // source: unsubscribed <-- replaySubject unsubscribes from source observable because the reference count dropped to 0 and refCount is true\n *\n * // In case of refCount being false, the unsubscribe is never called on the source and the source would keep on emitting, even if no subscribers\n * // are listening.\n * // source: 2\n * // source: 3\n * // source: 4\n * // ...\n * ```\n *\n * @see {@link publish}\n * @see {@link share}\n * @see {@link publishReplay}\n *\n * @param configOrBufferSize Maximum element count of the replay buffer or {@link ShareReplayConfig configuration}\n * object.\n * @param windowTime Maximum time length of the replay buffer in milliseconds.\n * @param scheduler Scheduler where connected observers within the selector function\n * will be invoked on.\n * @return A function that returns an Observable sequence that contains the\n * elements of a sequence produced by multicasting the source sequence within a\n * selector function.\n */\nexport function shareReplay(\n configOrBufferSize?: ShareReplayConfig | number,\n windowTime?: number,\n scheduler?: SchedulerLike\n): MonoTypeOperatorFunction {\n let bufferSize: number;\n let refCount = false;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n ({ bufferSize = Infinity, windowTime = Infinity, refCount = false, scheduler } = configOrBufferSize);\n } else {\n bufferSize = (configOrBufferSize ?? Infinity) as number;\n }\n return share({\n connector: () => new ReplaySubject(bufferSize, windowTime, scheduler),\n resetOnError: true,\n resetOnComplete: false,\n resetOnRefCountZero: refCount,\n });\n}\n","import { MonoTypeOperatorFunction } from '../types';\nimport { filter } from './filter';\n\n/**\n * Returns an Observable that skips the first `count` items emitted by the source Observable.\n *\n * ![](skip.png)\n *\n * Skips the values until the sent notifications are equal or less than provided skip count. It raises\n * an error if skip count is equal or more than the actual number of emits and source raises an error.\n *\n * ## Example\n *\n * Skip the values before the emission\n *\n * ```ts\n * import { interval, skip } from 'rxjs';\n *\n * // emit every half second\n * const source = interval(500);\n * // skip the first 10 emitted values\n * const result = source.pipe(skip(10));\n *\n * result.subscribe(value => console.log(value));\n * // output: 10...11...12...13...\n * ```\n *\n * @see {@link last}\n * @see {@link skipWhile}\n * @see {@link skipUntil}\n * @see {@link skipLast}\n *\n * @param {Number} count - The number of times, items emitted by source Observable should be skipped.\n * @return A function that returns an Observable that skips the first `count`\n * values emitted by the source Observable.\n */\nexport function skip(count: number): MonoTypeOperatorFunction {\n return filter((_, index) => count <= index);\n}\n","import { concat } from '../observable/concat';\nimport { OperatorFunction, SchedulerLike, ValueFromArray } from '../types';\nimport { popScheduler } from '../util/args';\nimport { operate } from '../util/lift';\n\n// Devs are more likely to pass null or undefined than they are a scheduler\n// without accompanying values. To make things easier for (naughty) devs who\n// use the `strictNullChecks: false` TypeScript compiler option, these\n// overloads with explicit null and undefined values are included.\n\nexport function startWith(value: null): OperatorFunction;\nexport function startWith(value: undefined): OperatorFunction;\n\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `concatAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function startWith(\n ...valuesAndScheduler: [...A, SchedulerLike]\n): OperatorFunction>;\nexport function startWith(...values: A): OperatorFunction>;\n\n/**\n * Returns an observable that, at the moment of subscription, will synchronously emit all\n * values provided to this operator, then subscribe to the source and mirror all of its emissions\n * to subscribers.\n *\n * This is a useful way to know when subscription has occurred on an existing observable.\n *\n * First emits its arguments in order, and then any\n * emissions from the source.\n *\n * ![](startWith.png)\n *\n * ## Examples\n *\n * Emit a value when a timer starts.\n *\n * ```ts\n * import { timer, map, startWith } from 'rxjs';\n *\n * timer(1000)\n * .pipe(\n * map(() => 'timer emit'),\n * startWith('timer start')\n * )\n * .subscribe(x => console.log(x));\n *\n * // results:\n * // 'timer start'\n * // 'timer emit'\n * ```\n *\n * @param values Items you want the modified Observable to emit first.\n * @return A function that returns an Observable that synchronously emits\n * provided values before subscribing to the source Observable.\n *\n * @see {@link endWith}\n * @see {@link finalize}\n * @see {@link concat}\n */\nexport function startWith(...values: D[]): OperatorFunction {\n const scheduler = popScheduler(values);\n return operate((source, subscriber) => {\n // Here we can't pass `undefined` as a scheduler, because if we did, the\n // code inside of `concat` would be confused by the `undefined`, and treat it\n // like an invalid observable. So we have to split it two different ways.\n (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);\n });\n}\n","import { Subscriber } from '../Subscriber';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/* tslint:disable:max-line-length */\nexport function switchMap>(\n project: (value: T, index: number) => O\n): OperatorFunction>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function switchMap>(\n project: (value: T, index: number) => O,\n resultSelector: undefined\n): OperatorFunction>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function switchMap>(\n project: (value: T, index: number) => O,\n resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R\n): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, emitting values only from the most recently projected Observable.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link switchAll}.\n *\n * ![](switchMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each time it observes one of these\n * inner Observables, the output Observable begins emitting the items emitted by\n * that inner Observable. When a new inner Observable is emitted, `switchMap`\n * stops emitting items from the earlier-emitted inner Observable and begins\n * emitting items from the new one. It continues to behave like this for\n * subsequent inner Observables.\n *\n * ## Example\n *\n * Generate new Observable according to source Observable values\n *\n * ```ts\n * import { of, switchMap } from 'rxjs';\n *\n * const switched = of(1, 2, 3).pipe(switchMap(x => of(x, x ** 2, x ** 3)));\n * switched.subscribe(x => console.log(x));\n * // outputs\n * // 1\n * // 1\n * // 1\n * // 2\n * // 4\n * // 8\n * // 3\n * // 9\n * // 27\n * ```\n *\n * Restart an interval Observable on every click event\n *\n * ```ts\n * import { fromEvent, switchMap, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(switchMap(() => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchAll}\n * @see {@link switchMapTo}\n *\n * @param {function(value: T, index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return A function that returns an Observable that emits the result of\n * applying the projection function (and the optional deprecated\n * `resultSelector`) to each item emitted by the source Observable and taking\n * only the values from the most recently projected inner Observable.\n */\nexport function switchMap>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R\n): OperatorFunction | R> {\n return operate((source, subscriber) => {\n let innerSubscriber: Subscriber> | null = null;\n let index = 0;\n // Whether or not the source subscription has completed\n let isComplete = false;\n\n // We only complete the result if the source is complete AND we don't have an active inner subscription.\n // This is called both when the source completes and when the inners complete.\n const checkComplete = () => isComplete && !innerSubscriber && subscriber.complete();\n\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n // Cancel the previous inner subscription if there was one\n innerSubscriber?.unsubscribe();\n let innerIndex = 0;\n const outerIndex = index++;\n // Start the next inner subscription\n innerFrom(project(value, outerIndex)).subscribe(\n (innerSubscriber = createOperatorSubscriber(\n subscriber,\n // When we get a new inner value, next it through. Note that this is\n // handling the deprecate result selector here. This is because with this architecture\n // it ends up being smaller than using the map operator.\n (innerValue) => subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue),\n () => {\n // The inner has completed. Null out the inner subscriber to\n // free up memory and to signal that we have no inner subscription\n // currently.\n innerSubscriber = null!;\n checkComplete();\n }\n ))\n );\n },\n () => {\n isComplete = true;\n checkComplete();\n }\n )\n );\n });\n}\n","import { MonoTypeOperatorFunction } from '../types';\nimport { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Emits only the first `count` values emitted by the source Observable.\n *\n * Takes the first `count` values from the source, then\n * completes.\n *\n * ![](take.png)\n *\n * `take` returns an Observable that emits only the first `count` values emitted\n * by the source Observable. If the source emits fewer than `count` values then\n * all of its values are emitted. After that, it completes, regardless if the\n * source completes.\n *\n * ## Example\n *\n * Take the first 5 seconds of an infinite 1-second interval Observable\n *\n * ```ts\n * import { interval, take } from 'rxjs';\n *\n * const intervalCount = interval(1000);\n * const takeFive = intervalCount.pipe(take(5));\n * takeFive.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * // 3\n * // 4\n * ```\n *\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @param count The maximum number of `next` values to emit.\n * @return A function that returns an Observable that emits only the first\n * `count` values emitted by the source Observable, or all of the values from\n * the source if the source emits fewer than `count` values.\n */\nexport function take(count: number): MonoTypeOperatorFunction {\n return count <= 0\n ? // If we are taking no values, that's empty.\n () => EMPTY\n : operate((source, subscriber) => {\n let seen = 0;\n source.subscribe(\n createOperatorSubscriber(subscriber, (value) => {\n // Increment the number of values we have seen,\n // then check it against the allowed count to see\n // if we are still letting values through.\n if (++seen <= count) {\n subscriber.next(value);\n // If we have met or passed our allowed count,\n // we need to complete. We have to do <= here,\n // because re-entrant code will increment `seen` twice.\n if (count <= seen) {\n subscriber.complete();\n }\n }\n })\n );\n });\n}\n","import { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\n\n/**\n * Emits the values emitted by the source Observable until a `notifier`\n * Observable emits a value.\n *\n * Lets values pass until a second Observable,\n * `notifier`, emits a value. Then, it completes.\n *\n * ![](takeUntil.png)\n *\n * `takeUntil` subscribes and begins mirroring the source Observable. It also\n * monitors a second Observable, `notifier` that you provide. If the `notifier`\n * emits a value, the output Observable stops mirroring the source Observable\n * and completes. If the `notifier` doesn't emit any value and completes\n * then `takeUntil` will pass all values.\n *\n * ## Example\n *\n * Tick every second until the first click happens\n *\n * ```ts\n * import { interval, fromEvent, takeUntil } from 'rxjs';\n *\n * const source = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const result = source.pipe(takeUntil(clicks));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @param {Observable} notifier The Observable whose first emitted value will\n * cause the output Observable of `takeUntil` to stop emitting values from the\n * source Observable.\n * @return A function that returns an Observable that emits the values from the\n * source Observable until `notifier` emits its first value.\n */\nexport function takeUntil(notifier: ObservableInput): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, () => subscriber.complete(), noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n","import { MonoTypeOperatorFunction, Observer } from '../types';\nimport { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\n\n/**\n * An extension to the {@link Observer} interface used only by the {@link tap} operator.\n *\n * It provides a useful set of callbacks a user can register to do side-effects in\n * cases other than what the usual {@link Observer} callbacks are\n * ({@link guide/glossary-and-semantics#next next},\n * {@link guide/glossary-and-semantics#error error} and/or\n * {@link guide/glossary-and-semantics#complete complete}).\n *\n * ## Example\n *\n * ```ts\n * import { fromEvent, switchMap, tap, interval, take } from 'rxjs';\n *\n * const source$ = fromEvent(document, 'click');\n * const result$ = source$.pipe(\n * switchMap((_, i) => i % 2 === 0\n * ? fromEvent(document, 'mousemove').pipe(\n * tap({\n * subscribe: () => console.log('Subscribed to the mouse move events after click #' + i),\n * unsubscribe: () => console.log('Mouse move events #' + i + ' unsubscribed'),\n * finalize: () => console.log('Mouse move events #' + i + ' finalized')\n * })\n * )\n * : interval(1_000).pipe(\n * take(5),\n * tap({\n * subscribe: () => console.log('Subscribed to the 1-second interval events after click #' + i),\n * unsubscribe: () => console.log('1-second interval events #' + i + ' unsubscribed'),\n * finalize: () => console.log('1-second interval events #' + i + ' finalized')\n * })\n * )\n * )\n * );\n *\n * const subscription = result$.subscribe({\n * next: console.log\n * });\n *\n * setTimeout(() => {\n * console.log('Unsubscribe after 60 seconds');\n * subscription.unsubscribe();\n * }, 60_000);\n * ```\n */\nexport interface TapObserver extends Observer {\n /**\n * The callback that `tap` operator invokes at the moment when the source Observable\n * gets subscribed to.\n */\n subscribe: () => void;\n /**\n * The callback that `tap` operator invokes when an explicit\n * {@link guide/glossary-and-semantics#unsubscription unsubscribe} happens. It won't get invoked on\n * `error` or `complete` events.\n */\n unsubscribe: () => void;\n /**\n * The callback that `tap` operator invokes when any kind of\n * {@link guide/glossary-and-semantics#finalization finalization} happens - either when\n * the source Observable `error`s or `complete`s or when it gets explicitly unsubscribed\n * by the user. There is no difference in using this callback or the {@link finalize}\n * operator, but if you're already using `tap` operator, you can use this callback\n * instead. You'd get the same result in either case.\n */\n finalize: () => void;\n}\nexport function tap(observerOrNext?: Partial> | ((value: T) => void)): MonoTypeOperatorFunction;\n/** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\nexport function tap(\n next?: ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null\n): MonoTypeOperatorFunction;\n\n/**\n * Used to perform side-effects for notifications from the source observable\n *\n * Used when you want to affect outside state with a notification without altering the notification\n *\n * ![](tap.png)\n *\n * Tap is designed to allow the developer a designated place to perform side effects. While you _could_ perform side-effects\n * inside of a `map` or a `mergeMap`, that would make their mapping functions impure, which isn't always a big deal, but will\n * make it so you can't do things like memoize those functions. The `tap` operator is designed solely for such side-effects to\n * help you remove side-effects from other operations.\n *\n * For any notification, next, error, or complete, `tap` will call the appropriate callback you have provided to it, via a function\n * reference, or a partial observer, then pass that notification down the stream.\n *\n * The observable returned by `tap` is an exact mirror of the source, with one exception: Any error that occurs -- synchronously -- in a handler\n * provided to `tap` will be emitted as an error from the returned observable.\n *\n * > Be careful! You can mutate objects as they pass through the `tap` operator's handlers.\n *\n * The most common use of `tap` is actually for debugging. You can place a `tap(console.log)` anywhere\n * in your observable `pipe`, log out the notifications as they are emitted by the source returned by the previous\n * operation.\n *\n * ## Examples\n *\n * Check a random number before it is handled. Below is an observable that will use a random number between 0 and 1,\n * and emit `'big'` or `'small'` depending on the size of that number. But we wanted to log what the original number\n * was, so we have added a `tap(console.log)`.\n *\n * ```ts\n * import { of, tap, map } from 'rxjs';\n *\n * of(Math.random()).pipe(\n * tap(console.log),\n * map(n => n > 0.5 ? 'big' : 'small')\n * ).subscribe(console.log);\n * ```\n *\n * Using `tap` to analyze a value and force an error. Below is an observable where in our system we only\n * want to emit numbers 3 or less we get from another source. We can force our observable to error\n * using `tap`.\n *\n * ```ts\n * import { of, tap } from 'rxjs';\n *\n * const source = of(1, 2, 3, 4, 5);\n *\n * source.pipe(\n * tap(n => {\n * if (n > 3) {\n * throw new TypeError(`Value ${ n } is greater than 3`);\n * }\n * })\n * )\n * .subscribe({ next: console.log, error: err => console.log(err.message) });\n * ```\n *\n * We want to know when an observable completes before moving on to the next observable. The system\n * below will emit a random series of `'X'` characters from 3 different observables in sequence. The\n * only way we know when one observable completes and moves to the next one, in this case, is because\n * we have added a `tap` with the side effect of logging to console.\n *\n * ```ts\n * import { of, concatMap, interval, take, map, tap } from 'rxjs';\n *\n * of(1, 2, 3).pipe(\n * concatMap(n => interval(1000).pipe(\n * take(Math.round(Math.random() * 10)),\n * map(() => 'X'),\n * tap({ complete: () => console.log(`Done with ${ n }`) })\n * ))\n * )\n * .subscribe(console.log);\n * ```\n *\n * @see {@link finalize}\n * @see {@link TapObserver}\n *\n * @param observerOrNext A next handler or partial observer\n * @param error An error handler\n * @param complete A completion handler\n * @return A function that returns an Observable identical to the source, but\n * runs the specified Observer or callback(s) for each item.\n */\nexport function tap(\n observerOrNext?: Partial> | ((value: T) => void) | null,\n error?: ((e: any) => void) | null,\n complete?: (() => void) | null\n): MonoTypeOperatorFunction {\n // We have to check to see not only if next is a function,\n // but if error or complete were passed. This is because someone\n // could technically call tap like `tap(null, fn)` or `tap(null, null, fn)`.\n const tapObserver =\n isFunction(observerOrNext) || error || complete\n ? // tslint:disable-next-line: no-object-literal-type-assertion\n ({ next: observerOrNext as Exclude>>, error, complete } as Partial>)\n : observerOrNext;\n\n return tapObserver\n ? operate((source, subscriber) => {\n tapObserver.subscribe?.();\n let isUnsub = true;\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n tapObserver.next?.(value);\n subscriber.next(value);\n },\n () => {\n isUnsub = false;\n tapObserver.complete?.();\n subscriber.complete();\n },\n (err) => {\n isUnsub = false;\n tapObserver.error?.(err);\n subscriber.error(err);\n },\n () => {\n if (isUnsub) {\n tapObserver.unsubscribe?.();\n }\n tapObserver.finalize?.();\n }\n )\n );\n })\n : // Tap was called with no valid tap observer or handler\n // (e.g. `tap(null, null, null)` or `tap(null)` or `tap()`)\n // so we're going to just mirror the source.\n identity;\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { MonoTypeOperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * If the source observable completes without emitting a value, it will emit\n * an error. The error will be created at that time by the optional\n * `errorFactory` argument, otherwise, the error will be {@link EmptyError}.\n *\n * ![](throwIfEmpty.png)\n *\n * ## Example\n *\n * Throw an error if the document wasn't clicked within 1 second\n *\n * ```ts\n * import { fromEvent, takeUntil, timer, throwIfEmpty } from 'rxjs';\n *\n * const click$ = fromEvent(document, 'click');\n *\n * click$.pipe(\n * takeUntil(timer(1000)),\n * throwIfEmpty(() => new Error('The document was not clicked within 1 second'))\n * )\n * .subscribe({\n * next() {\n * console.log('The document was clicked');\n * },\n * error(err) {\n * console.error(err.message);\n * }\n * });\n * ```\n *\n * @param errorFactory A factory function called to produce the\n * error to be thrown when the source observable completes without emitting a\n * value.\n * @return A function that returns an Observable that throws an error if the\n * source Observable completed without emitting.\n */\nexport function throwIfEmpty(errorFactory: () => any = defaultErrorFactory): MonoTypeOperatorFunction {\n return operate((source, subscriber) => {\n let hasValue = false;\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n hasValue = true;\n subscriber.next(value);\n },\n () => (hasValue ? subscriber.complete() : subscriber.error(errorFactory()))\n )\n );\n });\n}\n\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { MonoTypeOperatorFunction, SchedulerLike, OperatorFunction, ObservableInput, ObservedValueOf } from '../types';\nimport { isValidDate } from '../util/isDate';\nimport { Subscription } from '../Subscription';\nimport { operate } from '../util/lift';\nimport { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createErrorClass } from '../util/createErrorClass';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\n\nexport interface TimeoutConfig = ObservableInput, M = unknown> {\n /**\n * The time allowed between values from the source before timeout is triggered.\n */\n each?: number;\n\n /**\n * The relative time as a `number` in milliseconds, or a specific time as a `Date` object,\n * by which the first value must arrive from the source before timeout is triggered.\n */\n first?: number | Date;\n\n /**\n * The scheduler to use with time-related operations within this operator. Defaults to {@link asyncScheduler}\n */\n scheduler?: SchedulerLike;\n\n /**\n * A factory used to create observable to switch to when timeout occurs. Provides\n * a {@link TimeoutInfo} about the source observable's emissions and what delay or\n * exact time triggered the timeout.\n */\n with?: (info: TimeoutInfo) => O;\n\n /**\n * Optional additional metadata you can provide to code that handles\n * the timeout, will be provided through the {@link TimeoutError}.\n * This can be used to help identify the source of a timeout or pass along\n * other information related to the timeout.\n */\n meta?: M;\n}\n\nexport interface TimeoutInfo {\n /** Optional metadata that was provided to the timeout configuration. */\n readonly meta: M;\n /** The number of messages seen before the timeout */\n readonly seen: number;\n /** The last message seen */\n readonly lastValue: T | null;\n}\n\n/**\n * An error emitted when a timeout occurs.\n */\nexport interface TimeoutError extends Error {\n /**\n * The information provided to the error by the timeout\n * operation that created the error. Will be `null` if\n * used directly in non-RxJS code with an empty constructor.\n * (Note that using this constructor directly is not recommended,\n * you should create your own errors)\n */\n info: TimeoutInfo | null;\n}\n\nexport interface TimeoutErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (info?: TimeoutInfo): TimeoutError;\n}\n\n/**\n * An error thrown by the {@link timeout} operator.\n *\n * Provided so users can use as a type and do quality comparisons.\n * We recommend you do not subclass this or create instances of this class directly.\n * If you have need of a error representing a timeout, you should\n * create your own error class and use that.\n *\n * @see {@link timeout}\n *\n * @class TimeoutError\n */\nexport const TimeoutError: TimeoutErrorCtor = createErrorClass(\n (_super) =>\n function TimeoutErrorImpl(this: any, info: TimeoutInfo | null = null) {\n _super(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n this.info = info;\n }\n);\n\n/**\n * If `with` is provided, this will return an observable that will switch to a different observable if the source\n * does not push values within the specified time parameters.\n *\n * The most flexible option for creating a timeout behavior.\n *\n * The first thing to know about the configuration is if you do not provide a `with` property to the configuration,\n * when timeout conditions are met, this operator will emit a {@link TimeoutError}. Otherwise, it will use the factory\n * function provided by `with`, and switch your subscription to the result of that. Timeout conditions are provided by\n * the settings in `first` and `each`.\n *\n * The `first` property can be either a `Date` for a specific time, a `number` for a time period relative to the\n * point of subscription, or it can be skipped. This property is to check timeout conditions for the arrival of\n * the first value from the source _only_. The timings of all subsequent values from the source will be checked\n * against the time period provided by `each`, if it was provided.\n *\n * The `each` property can be either a `number` or skipped. If a value for `each` is provided, it represents the amount of\n * time the resulting observable will wait between the arrival of values from the source before timing out. Note that if\n * `first` is _not_ provided, the value from `each` will be used to check timeout conditions for the arrival of the first\n * value and all subsequent values. If `first` _is_ provided, `each` will only be use to check all values after the first.\n *\n * ## Examples\n *\n * Emit a custom error if there is too much time between values\n *\n * ```ts\n * import { interval, timeout, throwError } from 'rxjs';\n *\n * class CustomTimeoutError extends Error {\n * constructor() {\n * super('It was too slow');\n * this.name = 'CustomTimeoutError';\n * }\n * }\n *\n * const slow$ = interval(900);\n *\n * slow$.pipe(\n * timeout({\n * each: 1000,\n * with: () => throwError(() => new CustomTimeoutError())\n * })\n * )\n * .subscribe({\n * error: console.error\n * });\n * ```\n *\n * Switch to a faster observable if your source is slow.\n *\n * ```ts\n * import { interval, timeout } from 'rxjs';\n *\n * const slow$ = interval(900);\n * const fast$ = interval(500);\n *\n * slow$.pipe(\n * timeout({\n * each: 1000,\n * with: () => fast$,\n * })\n * )\n * .subscribe(console.log);\n * ```\n * @param config The configuration for the timeout.\n */\nexport function timeout, M = unknown>(\n config: TimeoutConfig & { with: (info: TimeoutInfo) => O }\n): OperatorFunction>;\n\n/**\n * Returns an observable that will error or switch to a different observable if the source does not push values\n * within the specified time parameters.\n *\n * The most flexible option for creating a timeout behavior.\n *\n * The first thing to know about the configuration is if you do not provide a `with` property to the configuration,\n * when timeout conditions are met, this operator will emit a {@link TimeoutError}. Otherwise, it will use the factory\n * function provided by `with`, and switch your subscription to the result of that. Timeout conditions are provided by\n * the settings in `first` and `each`.\n *\n * The `first` property can be either a `Date` for a specific time, a `number` for a time period relative to the\n * point of subscription, or it can be skipped. This property is to check timeout conditions for the arrival of\n * the first value from the source _only_. The timings of all subsequent values from the source will be checked\n * against the time period provided by `each`, if it was provided.\n *\n * The `each` property can be either a `number` or skipped. If a value for `each` is provided, it represents the amount of\n * time the resulting observable will wait between the arrival of values from the source before timing out. Note that if\n * `first` is _not_ provided, the value from `each` will be used to check timeout conditions for the arrival of the first\n * value and all subsequent values. If `first` _is_ provided, `each` will only be use to check all values after the first.\n *\n * ### Handling TimeoutErrors\n *\n * If no `with` property was provided, subscriptions to the resulting observable may emit an error of {@link TimeoutError}.\n * The timeout error provides useful information you can examine when you're handling the error. The most common way to handle\n * the error would be with {@link catchError}, although you could use {@link tap} or just the error handler in your `subscribe` call\n * directly, if your error handling is only a side effect (such as notifying the user, or logging).\n *\n * In this case, you would check the error for `instanceof TimeoutError` to validate that the error was indeed from `timeout`, and\n * not from some other source. If it's not from `timeout`, you should probably rethrow it if you're in a `catchError`.\n *\n * ## Examples\n *\n * Emit a {@link TimeoutError} if the first value, and _only_ the first value, does not arrive within 5 seconds\n *\n * ```ts\n * import { interval, timeout } from 'rxjs';\n *\n * // A random interval that lasts between 0 and 10 seconds per tick\n * const source$ = interval(Math.round(Math.random() * 10_000));\n *\n * source$.pipe(\n * timeout({ first: 5_000 })\n * )\n * .subscribe({\n * next: console.log,\n * error: console.error\n * });\n * ```\n *\n * Emit a {@link TimeoutError} if the source waits longer than 5 seconds between any two values or the first value\n * and subscription.\n *\n * ```ts\n * import { timer, timeout, expand } from 'rxjs';\n *\n * const getRandomTime = () => Math.round(Math.random() * 10_000);\n *\n * // An observable that waits a random amount of time between each delivered value\n * const source$ = timer(getRandomTime())\n * .pipe(expand(() => timer(getRandomTime())));\n *\n * source$\n * .pipe(timeout({ each: 5_000 }))\n * .subscribe({\n * next: console.log,\n * error: console.error\n * });\n * ```\n *\n * Emit a {@link TimeoutError} if the source does not emit before 7 seconds, _or_ if the source waits longer than\n * 5 seconds between any two values after the first.\n *\n * ```ts\n * import { timer, timeout, expand } from 'rxjs';\n *\n * const getRandomTime = () => Math.round(Math.random() * 10_000);\n *\n * // An observable that waits a random amount of time between each delivered value\n * const source$ = timer(getRandomTime())\n * .pipe(expand(() => timer(getRandomTime())));\n *\n * source$\n * .pipe(timeout({ first: 7_000, each: 5_000 }))\n * .subscribe({\n * next: console.log,\n * error: console.error\n * });\n * ```\n */\nexport function timeout(config: Omit, 'with'>): OperatorFunction;\n\n/**\n * Returns an observable that will error if the source does not push its first value before the specified time passed as a `Date`.\n * This is functionally the same as `timeout({ first: someDate })`.\n *\n * Errors if the first value doesn't show up before the given date and time\n *\n * ![](timeout.png)\n *\n * @param first The date to at which the resulting observable will timeout if the source observable\n * does not emit at least one value.\n * @param scheduler The scheduler to use. Defaults to {@link asyncScheduler}.\n */\nexport function timeout(first: Date, scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n\n/**\n * Returns an observable that will error if the source does not push a value within the specified time in milliseconds.\n * This is functionally the same as `timeout({ each: milliseconds })`.\n *\n * Errors if it waits too long between any value\n *\n * ![](timeout.png)\n *\n * @param each The time allowed between each pushed value from the source before the resulting observable\n * will timeout.\n * @param scheduler The scheduler to use. Defaults to {@link asyncScheduler}.\n */\nexport function timeout(each: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n\n/**\n *\n * Errors if Observable does not emit a value in given time span.\n *\n * Timeouts on Observable that doesn't emit values fast enough.\n *\n * ![](timeout.png)\n *\n * @see {@link timeoutWith}\n *\n * @return A function that returns an Observable that mirrors behaviour of the\n * source Observable, unless timeout happens when it throws an error.\n */\nexport function timeout, M>(\n config: number | Date | TimeoutConfig,\n schedulerArg?: SchedulerLike\n): OperatorFunction> {\n // Intentionally terse code.\n // If the first argument is a valid `Date`, then we use it as the `first` config.\n // Otherwise, if the first argument is a `number`, then we use it as the `each` config.\n // Otherwise, it can be assumed the first argument is the configuration object itself, and\n // we destructure that into what we're going to use, setting important defaults as we do.\n // NOTE: The default for `scheduler` will be the `scheduler` argument if it exists, or\n // it will default to the `asyncScheduler`.\n const {\n first,\n each,\n with: _with = timeoutErrorFactory,\n scheduler = schedulerArg ?? asyncScheduler,\n meta = null!,\n } = (isValidDate(config) ? { first: config } : typeof config === 'number' ? { each: config } : config) as TimeoutConfig;\n\n if (first == null && each == null) {\n // Ensure timeout was provided at runtime.\n throw new TypeError('No timeout provided.');\n }\n\n return operate((source, subscriber) => {\n // This subscription encapsulates our subscription to the\n // source for this operator. We're capturing it separately,\n // because if there is a `with` observable to fail over to,\n // we want to unsubscribe from our original subscription, and\n // hand of the subscription to that one.\n let originalSourceSubscription: Subscription;\n // The subscription for our timeout timer. This changes\n // every time we get a new value.\n let timerSubscription: Subscription;\n // A bit of state we pass to our with and error factories to\n // tell what the last value we saw was.\n let lastValue: T | null = null;\n // A bit of state we pass to the with and error factories to\n // tell how many values we have seen so far.\n let seen = 0;\n const startTimer = (delay: number) => {\n timerSubscription = executeSchedule(\n subscriber,\n scheduler,\n () => {\n try {\n originalSourceSubscription.unsubscribe();\n innerFrom(\n _with!({\n meta,\n lastValue,\n seen,\n })\n ).subscribe(subscriber);\n } catch (err) {\n subscriber.error(err);\n }\n },\n delay\n );\n };\n\n originalSourceSubscription = source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value: T) => {\n // clear the timer so we can emit and start another one.\n timerSubscription?.unsubscribe();\n seen++;\n // Emit\n subscriber.next((lastValue = value));\n // null | undefined are both < 0. Thanks, JavaScript.\n each! > 0 && startTimer(each!);\n },\n undefined,\n undefined,\n () => {\n if (!timerSubscription?.closed) {\n timerSubscription?.unsubscribe();\n }\n // Be sure not to hold the last value in memory after unsubscription\n // it could be quite large.\n lastValue = null;\n }\n )\n );\n\n // Intentionally terse code.\n // If we've `seen` a value, that means the \"first\" clause was met already, if it existed.\n // it also means that a timer was already started for \"each\" (in the next handler above).\n // If `first` was provided, and it's a number, then use it.\n // If `first` was provided and it's not a number, it's a Date, and we get the difference between it and \"now\".\n // If `first` was not provided at all, then our first timer will be the value from `each`.\n !seen && startTimer(first != null ? (typeof first === 'number' ? first : +first - scheduler!.now()) : each!);\n });\n}\n\n/**\n * The default function to use to emit an error when timeout occurs and a `with` function\n * is not specified.\n * @param info The information about the timeout to pass along to the error\n */\nfunction timeoutErrorFactory(info: TimeoutInfo): Observable {\n throw new TimeoutError(info);\n}\n","import { OperatorFunction, ObservableInputTuple } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { identity } from '../util/identity';\nimport { noop } from '../util/noop';\nimport { popResultSelector } from '../util/args';\n\nexport function withLatestFrom(...inputs: [...ObservableInputTuple]): OperatorFunction;\n\nexport function withLatestFrom(\n ...inputs: [...ObservableInputTuple, (...value: [T, ...O]) => R]\n): OperatorFunction;\n\n/**\n * Combines the source Observable with other Observables to create an Observable\n * whose values are calculated from the latest values of each, only when the\n * source emits.\n *\n * Whenever the source Observable emits a value, it\n * computes a formula using that value plus the latest values from other input\n * Observables, then emits the output of that formula.\n *\n * ![](withLatestFrom.png)\n *\n * `withLatestFrom` combines each value from the source Observable (the\n * instance) with the latest values from the other input Observables only when\n * the source emits a value, optionally using a `project` function to determine\n * the value to be emitted on the output Observable. All input Observables must\n * emit at least one value before the output Observable will emit a value.\n *\n * ## Example\n *\n * On every click event, emit an array with the latest timer event plus the click event\n *\n * ```ts\n * import { fromEvent, interval, withLatestFrom } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const timer = interval(1000);\n * const result = clicks.pipe(withLatestFrom(timer));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatest}\n *\n * @param {ObservableInput} other An input Observable to combine with the source\n * Observable. More than one input Observables may be given as argument.\n * @param {Function} [project] Projection function for combining values\n * together. Receives all values in order of the Observables passed, where the\n * first parameter is a value from the source Observable. (e.g.\n * `a.pipe(withLatestFrom(b, c), map(([a1, b1, c1]) => a1 + b1 + c1))`). If this is not\n * passed, arrays will be emitted on the output Observable.\n * @return A function that returns an Observable of projected values from the\n * most recent values from each input Observable, or an array of the most\n * recent values from each input Observable.\n */\nexport function withLatestFrom(...inputs: any[]): OperatorFunction {\n const project = popResultSelector(inputs) as ((...args: any[]) => R) | undefined;\n\n return operate((source, subscriber) => {\n const len = inputs.length;\n const otherValues = new Array(len);\n // An array of whether or not the other sources have emitted. Matched with them by index.\n // TODO: At somepoint, we should investigate the performance implications here, and look\n // into using a `Set()` and checking the `size` to see if we're ready.\n let hasValue = inputs.map(() => false);\n // Flipped true when we have at least one value from all other sources and\n // we are ready to start emitting values.\n let ready = false;\n\n // Other sources. Note that here we are not checking `subscriber.closed`,\n // this causes all inputs to be subscribed to, even if nothing can be emitted\n // from them. This is an important distinction because subscription constitutes\n // a side-effect.\n for (let i = 0; i < len; i++) {\n innerFrom(inputs[i]).subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n otherValues[i] = value;\n if (!ready && !hasValue[i]) {\n // If we're not ready yet, flag to show this observable has emitted.\n hasValue[i] = true;\n // Intentionally terse code.\n // If all of our other observables have emitted, set `ready` to `true`,\n // so we know we can start emitting values, then clean up the `hasValue` array,\n // because we don't need it anymore.\n (ready = hasValue.every(identity)) && (hasValue = null!);\n }\n },\n // Completing one of the other sources has\n // no bearing on the completion of our result.\n noop\n )\n );\n }\n\n // Source subscription\n source.subscribe(\n createOperatorSubscriber(subscriber, (value) => {\n if (ready) {\n // We have at least one value from the other sources. Go ahead and emit.\n const values = [value, ...otherValues];\n subscriber.next(project ? project(...values) : values);\n }\n })\n );\n });\n}\n","import { Scheduler } from '../Scheduler';\nimport { Subscription } from '../Subscription';\nimport { SchedulerAction } from '../types';\n\n/**\n * A unit of work to be executed in a `scheduler`. An action is typically\n * created from within a {@link SchedulerLike} and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action\n */\nexport class Action extends Subscription {\n constructor(scheduler: Scheduler, work: (this: SchedulerAction, state?: T) => void) {\n super();\n }\n /**\n * Schedules this action on its parent {@link SchedulerLike} for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n public schedule(state?: T, delay: number = 0): Subscription {\n return this;\n }\n}\n","import type { TimerHandle } from './timerHandle';\ntype SetIntervalFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearIntervalFunction = (handle: TimerHandle) => void;\n\ninterface IntervalProvider {\n setInterval: SetIntervalFunction;\n clearInterval: ClearIntervalFunction;\n delegate:\n | {\n setInterval: SetIntervalFunction;\n clearInterval: ClearIntervalFunction;\n }\n | undefined;\n}\n\nexport const intervalProvider: IntervalProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setInterval(handler: () => void, timeout?: number, ...args) {\n const { delegate } = intervalProvider;\n if (delegate?.setInterval) {\n return delegate.setInterval(handler, timeout, ...args);\n }\n return setInterval(handler, timeout, ...args);\n },\n clearInterval(handle) {\n const { delegate } = intervalProvider;\n return (delegate?.clearInterval || clearInterval)(handle as any);\n },\n delegate: undefined,\n};\n","import { Action } from './Action';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsyncAction extends Action {\n public id: TimerHandle | undefined;\n public state?: T;\n // @ts-ignore: Property has no initializer and is not definitely assigned\n public delay: number;\n protected pending: boolean = false;\n\n constructor(protected scheduler: AsyncScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (this.closed) {\n return this;\n }\n\n // Always replace the current state with the new state.\n this.state = state;\n\n const id = this.id;\n const scheduler = this.scheduler;\n\n //\n // Important implementation note:\n //\n // Actions only execute once by default, unless rescheduled from within the\n // scheduled callback. This allows us to implement single and repeat\n // actions via the same code path, without adding API surface area, as well\n // as mimic traditional recursion but across asynchronous boundaries.\n //\n // However, JS runtimes and timers distinguish between intervals achieved by\n // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n // serial `setTimeout` calls can be individually delayed, which delays\n // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n // guarantee the interval callback will be invoked more precisely to the\n // interval period, regardless of load.\n //\n // Therefore, we use `setInterval` to schedule single and repeat actions.\n // If the action reschedules itself with the same delay, the interval is not\n // canceled. If the action doesn't reschedule, or reschedules with a\n // different delay, the interval will be canceled after scheduled callback\n // execution.\n //\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n\n // Set the pending flag indicating that this action has been scheduled, or\n // has recursively rescheduled itself.\n this.pending = true;\n\n this.delay = delay;\n // If this action has already an async Id, don't request a new one.\n this.id = this.id ?? this.requestAsyncId(scheduler, this.id, delay);\n\n return this;\n }\n\n protected requestAsyncId(scheduler: AsyncScheduler, _id?: TimerHandle, delay: number = 0): TimerHandle {\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n\n protected recycleAsyncId(_scheduler: AsyncScheduler, id?: TimerHandle, delay: number | null = 0): TimerHandle | undefined {\n // If this action is rescheduled with the same delay time, don't clear the interval id.\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n // Otherwise, if the action's delay time is different from the current delay,\n // or the action has been rescheduled before it's executed, clear the interval id\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n\n return undefined;\n }\n\n /**\n * Immediately executes this action and the `work` it contains.\n * @return {any}\n */\n public execute(state: T, delay: number): any {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n } else if (this.pending === false && this.id != null) {\n // Dequeue if the action didn't reschedule itself. Don't call\n // unsubscribe(), because the action could reschedule later.\n // For example:\n // ```\n // scheduler.schedule(function doWork(counter) {\n // /* ... I'm a busy worker bee ... */\n // var originalAction = this;\n // /* wait 100ms before rescheduling the action */\n // setTimeout(function () {\n // originalAction.schedule(counter + 1);\n // }, 100);\n // }, 1000);\n // ```\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n\n protected _execute(state: T, _delay: number): any {\n let errored: boolean = false;\n let errorValue: any;\n try {\n this.work(state);\n } catch (e) {\n errored = true;\n // HACK: Since code elsewhere is relying on the \"truthiness\" of the\n // return here, we can't have it return \"\" or 0 or false.\n // TODO: Clean this up when we refactor schedulers mid-version-8 or so.\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n\n unsubscribe() {\n if (!this.closed) {\n const { id, scheduler } = this;\n const { actions } = scheduler;\n\n this.work = this.state = this.scheduler = null!;\n this.pending = false;\n\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n\n this.delay = null!;\n super.unsubscribe();\n }\n }\n}\n","import { Action } from './scheduler/Action';\nimport { Subscription } from './Subscription';\nimport { SchedulerLike, SchedulerAction } from './types';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an `Action`.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n * @deprecated Scheduler is an internal implementation detail of RxJS, and\n * should not be used directly. Rather, create your own class and implement\n * {@link SchedulerLike}. Will be made internal in v8.\n */\nexport class Scheduler implements SchedulerLike {\n public static now: () => number = dateTimestampProvider.now;\n\n constructor(private schedulerActionCtor: typeof Action, now: () => number = Scheduler.now) {\n this.now = now;\n }\n\n /**\n * A getter method that returns a number representing the current time\n * (at the time this function was called) according to the scheduler's own\n * internal clock.\n * @return {number} A number that represents the current time. May or may not\n * have a relation to wall-clock time. May or may not refer to a time unit\n * (e.g. milliseconds).\n */\n public now: () => number;\n\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n }\n}\n","import { Scheduler } from '../Scheduler';\nimport { Action } from './Action';\nimport { AsyncAction } from './AsyncAction';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsyncScheduler extends Scheduler {\n public actions: Array> = [];\n /**\n * A flag to indicate whether the Scheduler is currently executing a batch of\n * queued actions.\n * @type {boolean}\n * @internal\n */\n public _active: boolean = false;\n /**\n * An internal ID used to track the latest asynchronous task such as those\n * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n * others.\n * @type {any}\n * @internal\n */\n public _scheduled: TimerHandle | undefined;\n\n constructor(SchedulerAction: typeof Action, now: () => number = Scheduler.now) {\n super(SchedulerAction, now);\n }\n\n public flush(action: AsyncAction): void {\n const { actions } = this;\n\n if (this._active) {\n actions.push(action);\n return;\n }\n\n let error: any;\n this._active = true;\n\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()!)); // exhaust the scheduler queue\n\n this._active = false;\n\n if (error) {\n while ((action = actions.shift()!)) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { Subscription } from '../Subscription';\n\ninterface AnimationFrameProvider {\n schedule(callback: FrameRequestCallback): Subscription;\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n delegate:\n | {\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n }\n | undefined;\n}\n\nexport const animationFrameProvider: AnimationFrameProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n schedule(callback) {\n let request = requestAnimationFrame;\n let cancel: typeof cancelAnimationFrame | undefined = cancelAnimationFrame;\n const { delegate } = animationFrameProvider;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n const handle = request((timestamp) => {\n // Clear the cancel function. The request has been fulfilled, so\n // attempting to cancel the request upon unsubscription would be\n // pointless.\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription(() => cancel?.(handle));\n },\n requestAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return (delegate?.requestAnimationFrame || requestAnimationFrame)(...args);\n },\n cancelAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return (delegate?.cancelAnimationFrame || cancelAnimationFrame)(...args);\n },\n delegate: undefined,\n};\n","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\n\n/**\n *\n * Animation Frame Scheduler\n *\n * Perform task when `window.requestAnimationFrame` would fire\n *\n * When `animationFrame` scheduler is used with delay, it will fall back to {@link asyncScheduler} scheduler\n * behaviour.\n *\n * Without delay, `animationFrame` scheduler can be used to create smooth browser animations.\n * It makes sure scheduled task will happen just before next browser content repaint,\n * thus performing animations as efficiently as possible.\n *\n * ## Example\n * Schedule div height animation\n * ```ts\n * // html:
\n * import { animationFrameScheduler } from 'rxjs';\n *\n * const div = document.querySelector('div');\n *\n * animationFrameScheduler.schedule(function(height) {\n * div.style.height = height + \"px\";\n *\n * this.schedule(height + 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * }, 0, 0);\n *\n * // You will see a div element growing in height\n * ```\n */\n\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\n\n/**\n * @deprecated Renamed to {@link animationFrameScheduler}. Will be removed in v8.\n */\nexport const animationFrame = animationFrameScheduler;\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AnimationFrameScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n this._active = true;\n // The async id that effects a call to flush is stored in _scheduled.\n // Before executing an action, it's necessary to check the action's async\n // id to determine whether it's supposed to be executed in the current\n // flush.\n // Previous implementations of this method used a count to determine this,\n // but that was unsound, as actions that are unsubscribed - i.e. cancelled -\n // are removed from the actions array and that can shift actions that are\n // scheduled to be executed in a subsequent flush into positions at which\n // they are executed within the current flush.\n const flushId = this._scheduled;\n this._scheduled = undefined;\n\n const { actions } = this;\n let error: any;\n action = action || actions.shift()!;\n\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n\n this._active = false;\n\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nimport { SchedulerAction } from '../types';\nimport { animationFrameProvider } from './animationFrameProvider';\nimport { TimerHandle } from './timerHandle';\n\nexport class AnimationFrameAction extends AsyncAction {\n constructor(protected scheduler: AnimationFrameScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AnimationFrameScheduler, id?: TimerHandle, delay: number = 0): TimerHandle {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If an animation frame has already been requested, don't request another\n // one. If an animation frame hasn't been requested yet, request one. Return\n // the current animation frame request id.\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(() => scheduler.flush(undefined)));\n }\n\n protected recycleAsyncId(scheduler: AnimationFrameScheduler, id?: TimerHandle, delay: number = 0): TimerHandle | undefined {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if (delay != null ? delay > 0 : this.delay > 0) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue has no remaining actions with the same async id,\n // cancel the requested animation frame and set the scheduled flag to\n // undefined so the next AnimationFrameAction will request its own.\n const { actions } = scheduler;\n if (id != null && actions[actions.length - 1]?.id !== id) {\n animationFrameProvider.cancelAnimationFrame(id as number);\n scheduler._scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n","let nextHandle = 1;\n// The promise needs to be created lazily otherwise it won't be patched by Zones\nlet resolved: Promise;\nconst activeHandles: { [key: number]: any } = {};\n\n/**\n * Finds the handle in the list of active handles, and removes it.\n * Returns `true` if found, `false` otherwise. Used both to clear\n * Immediate scheduled tasks, and to identify if a task should be scheduled.\n */\nfunction findAndClearHandle(handle: number): boolean {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\n\n/**\n * Helper functions to schedule and unschedule microtasks.\n */\nexport const Immediate = {\n setImmediate(cb: () => void): number {\n const handle = nextHandle++;\n activeHandles[handle] = true;\n if (!resolved) {\n resolved = Promise.resolve();\n }\n resolved.then(() => findAndClearHandle(handle) && cb());\n return handle;\n },\n\n clearImmediate(handle: number): void {\n findAndClearHandle(handle);\n },\n};\n\n/**\n * Used for internal testing purposes only. Do not export from library.\n */\nexport const TestTools = {\n pending() {\n return Object.keys(activeHandles).length;\n }\n};\n","import { Immediate } from '../util/Immediate';\nimport type { TimerHandle } from './timerHandle';\nconst { setImmediate, clearImmediate } = Immediate;\n\ntype SetImmediateFunction = (handler: () => void, ...args: any[]) => TimerHandle;\ntype ClearImmediateFunction = (handle: TimerHandle) => void;\n\ninterface ImmediateProvider {\n setImmediate: SetImmediateFunction;\n clearImmediate: ClearImmediateFunction;\n delegate:\n | {\n setImmediate: SetImmediateFunction;\n clearImmediate: ClearImmediateFunction;\n }\n | undefined;\n}\n\nexport const immediateProvider: ImmediateProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setImmediate(...args) {\n const { delegate } = immediateProvider;\n return (delegate?.setImmediate || setImmediate)(...args);\n },\n clearImmediate(handle) {\n const { delegate } = immediateProvider;\n return (delegate?.clearImmediate || clearImmediate)(handle as any);\n },\n delegate: undefined,\n};\n","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\n\n/**\n *\n * Asap Scheduler\n *\n * Perform task as fast as it can be performed asynchronously\n *\n * `asap` scheduler behaves the same as {@link asyncScheduler} scheduler when you use it to delay task\n * in time. If however you set delay to `0`, `asap` will wait for current synchronously executing\n * code to end and then it will try to execute given task as fast as possible.\n *\n * `asap` scheduler will do its best to minimize time between end of currently executing code\n * and start of scheduled task. This makes it best candidate for performing so called \"deferring\".\n * Traditionally this was achieved by calling `setTimeout(deferredTask, 0)`, but that technique involves\n * some (although minimal) unwanted delay.\n *\n * Note that using `asap` scheduler does not necessarily mean that your task will be first to process\n * after currently executing code. In particular, if some task was also scheduled with `asap` before,\n * that task will execute first. That being said, if you need to schedule task asynchronously, but\n * as soon as possible, `asap` scheduler is your best bet.\n *\n * ## Example\n * Compare async and asap scheduler<\n * ```ts\n * import { asapScheduler, asyncScheduler } from 'rxjs';\n *\n * asyncScheduler.schedule(() => console.log('async')); // scheduling 'async' first...\n * asapScheduler.schedule(() => console.log('asap'));\n *\n * // Logs:\n * // \"asap\"\n * // \"async\"\n * // ... but 'asap' goes first!\n * ```\n */\n\nexport const asapScheduler = new AsapScheduler(AsapAction);\n\n/**\n * @deprecated Renamed to {@link asapScheduler}. Will be removed in v8.\n */\nexport const asap = asapScheduler;\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AsapScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n this._active = true;\n // The async id that effects a call to flush is stored in _scheduled.\n // Before executing an action, it's necessary to check the action's async\n // id to determine whether it's supposed to be executed in the current\n // flush.\n // Previous implementations of this method used a count to determine this,\n // but that was unsound, as actions that are unsubscribed - i.e. cancelled -\n // are removed from the actions array and that can shift actions that are\n // scheduled to be executed in a subsequent flush into positions at which\n // they are executed within the current flush.\n const flushId = this._scheduled;\n this._scheduled = undefined;\n\n const { actions } = this;\n let error: any;\n action = action || actions.shift()!;\n\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n\n this._active = false;\n\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsapScheduler } from './AsapScheduler';\nimport { SchedulerAction } from '../types';\nimport { immediateProvider } from './immediateProvider';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsapAction extends AsyncAction {\n constructor(protected scheduler: AsapScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AsapScheduler, id?: TimerHandle, delay: number = 0): TimerHandle {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If a microtask has already been scheduled, don't schedule another\n // one. If a microtask hasn't been scheduled yet, schedule one now. Return\n // the current scheduled microtask id.\n return scheduler._scheduled || (scheduler._scheduled = immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined)));\n }\n\n protected recycleAsyncId(scheduler: AsapScheduler, id?: TimerHandle, delay: number = 0): TimerHandle | undefined {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if (delay != null ? delay > 0 : this.delay > 0) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue has no remaining actions with the same async id,\n // cancel the requested microtask and set the scheduled flag to undefined\n // so the next AsapAction will request its own.\n const { actions } = scheduler;\n if (id != null && actions[actions.length - 1]?.id !== id) {\n immediateProvider.clearImmediate(id);\n if (scheduler._scheduled === id) {\n scheduler._scheduled = undefined;\n }\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n *\n * Async Scheduler\n *\n * Schedule task as if you used setTimeout(task, duration)\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asapScheduler} scheduler.\n *\n * ## Examples\n * Use async scheduler to delay task\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * const task = () => console.log('it works!');\n *\n * asyncScheduler.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n * ```\n *\n * Use async scheduler to repeat task in intervals\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * function task(state) {\n * console.log(state);\n * this.schedule(state + 1, 1000); // `this` references currently executing Action,\n * // which we reschedule with new state and delay\n * }\n *\n * asyncScheduler.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n * ```\n */\n\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\n\n/**\n * @deprecated Renamed to {@link asyncScheduler}. Will be removed in v8.\n */\nexport const async = asyncScheduler;\n","import { TimestampProvider } from '../types';\n\ninterface DateTimestampProvider extends TimestampProvider {\n delegate: TimestampProvider | undefined;\n}\n\nexport const dateTimestampProvider: DateTimestampProvider = {\n now() {\n // Use the variable rather than `this` so that the function can be called\n // without being bound to the provider.\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\n\n/**\n *\n * Queue Scheduler\n *\n * Put every next task on a queue, instead of executing it immediately\n *\n * `queue` scheduler, when used with delay, behaves the same as {@link asyncScheduler} scheduler.\n *\n * When used without delay, it schedules given task synchronously - executes it right when\n * it is scheduled. However when called recursively, that is when inside the scheduled task,\n * another task is scheduled with queue scheduler, instead of executing immediately as well,\n * that task will be put on a queue and wait for current one to finish.\n *\n * This means that when you execute task with `queue` scheduler, you are sure it will end\n * before any other task scheduled with that scheduler will start.\n *\n * ## Examples\n * Schedule recursively first, then do something\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(() => {\n * queueScheduler.schedule(() => console.log('second')); // will not happen now, but will be put on a queue\n *\n * console.log('first');\n * });\n *\n * // Logs:\n * // \"first\"\n * // \"second\"\n * ```\n *\n * Reschedule itself recursively\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(function(state) {\n * if (state !== 0) {\n * console.log('before', state);\n * this.schedule(state - 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * console.log('after', state);\n * }\n * }, 0, 3);\n *\n * // In scheduler that runs recursively, you would expect:\n * // \"before\", 3\n * // \"before\", 2\n * // \"before\", 1\n * // \"after\", 1\n * // \"after\", 2\n * // \"after\", 3\n *\n * // But with queue it logs:\n * // \"before\", 3\n * // \"after\", 3\n * // \"before\", 2\n * // \"after\", 2\n * // \"before\", 1\n * // \"after\", 1\n * ```\n */\n\nexport const queueScheduler = new QueueScheduler(QueueAction);\n\n/**\n * @deprecated Renamed to {@link queueScheduler}. Will be removed in v8.\n */\nexport const queue = queueScheduler;\n","import { AsyncScheduler } from './AsyncScheduler';\n\nexport class QueueScheduler extends AsyncScheduler {\n}\n","import { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { QueueScheduler } from './QueueScheduler';\nimport { SchedulerAction } from '../types';\nimport { TimerHandle } from './timerHandle';\n\nexport class QueueAction extends AsyncAction {\n constructor(protected scheduler: QueueScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (delay > 0) {\n return super.schedule(state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n }\n\n public execute(state: T, delay: number): any {\n return delay > 0 || this.closed ? super.execute(state, delay) : this._execute(state, delay);\n }\n\n protected requestAsyncId(scheduler: QueueScheduler, id?: TimerHandle, delay: number = 0): TimerHandle {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n\n // Otherwise flush the scheduler starting with this action.\n scheduler.flush(this);\n\n // HACK: In the past, this was returning `void`. However, `void` isn't a valid\n // `TimerHandle`, and generally the return value here isn't really used. So the\n // compromise is to return `0` which is both \"falsy\" and a valid `TimerHandle`,\n // as opposed to refactoring every other instanceo of `requestAsyncId`.\n return 0;\n }\n}\n","import type { TimerHandle } from './timerHandle';\ntype SetTimeoutFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearTimeoutFunction = (handle: TimerHandle) => void;\n\ninterface TimeoutProvider {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n delegate:\n | {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n }\n | undefined;\n}\n\nexport const timeoutProvider: TimeoutProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setTimeout(handler: () => void, timeout?: number, ...args) {\n const { delegate } = timeoutProvider;\n if (delegate?.setTimeout) {\n return delegate.setTimeout(handler, timeout, ...args);\n }\n return setTimeout(handler, timeout, ...args);\n },\n clearTimeout(handle) {\n const { delegate } = timeoutProvider;\n return (delegate?.clearTimeout || clearTimeout)(handle as any);\n },\n delegate: undefined,\n};\n","export function getSymbolIterator(): symbol {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator' as any;\n }\n\n return Symbol.iterator;\n}\n\nexport const iterator = getSymbolIterator();\n","/**\n * Symbol.observable or a string \"@@observable\". Used for interop\n *\n * @deprecated We will no longer be exporting this symbol in upcoming versions of RxJS.\n * Instead polyfill and use Symbol.observable directly *or* use https://www.npmjs.com/package/symbol-observable\n */\nexport const observable: string | symbol = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n","import { createErrorClass } from './createErrorClass';\n\nexport interface EmptyError extends Error {}\n\nexport interface EmptyErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (): EmptyError;\n}\n\n/**\n * An error thrown when an Observable or a sequence was queried but has no\n * elements.\n *\n * @see {@link first}\n * @see {@link last}\n * @see {@link single}\n * @see {@link firstValueFrom}\n * @see {@link lastValueFrom}\n *\n * @class EmptyError\n */\nexport const EmptyError: EmptyErrorCtor = createErrorClass((_super) => function EmptyErrorImpl(this: any) {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n});\n","import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\n\nfunction last(arr: T[]): T | undefined {\n return arr[arr.length - 1];\n}\n\nexport function popResultSelector(args: any[]): ((...args: unknown[]) => unknown) | undefined {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\n\nexport function popScheduler(args: any[]): SchedulerLike | undefined {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\n\nexport function popNumber(args: any[], defaultValue: number): number {\n return typeof last(args) === 'number' ? args.pop()! : defaultValue;\n}\n","const { isArray } = Array;\nconst { getPrototypeOf, prototype: objectProto, keys: getKeys } = Object;\n\n/**\n * Used in functions where either a list of arguments, a single array of arguments, or a\n * dictionary of arguments can be returned. Returns an object with an `args` property with\n * the arguments in an array, if it is a dictionary, it will also return the `keys` in another\n * property.\n */\nexport function argsArgArrayOrObject>(args: T[] | [O] | [T[]]): { args: T[]; keys: string[] | null } {\n if (args.length === 1) {\n const first = args[0];\n if (isArray(first)) {\n return { args: first, keys: null };\n }\n if (isPOJO(first)) {\n const keys = getKeys(first);\n return {\n args: keys.map((key) => first[key]),\n keys,\n };\n }\n }\n\n return { args: args as T[], keys: null };\n}\n\nfunction isPOJO(obj: any): obj is object {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n","const { isArray } = Array;\n\n/**\n * Used in operators and functions that accept either a list of arguments, or an array of arguments\n * as a single argument.\n */\nexport function argsOrArgArray(args: (T | T[])[]): T[] {\n return args.length === 1 && isArray(args[0]) ? args[0] : (args as T[]);\n}\n","/**\n * Removes an item from an array, mutating it.\n * @param arr The array to remove the item from\n * @param item The item to remove\n */\nexport function arrRemove(arr: T[] | undefined | null, item: T) {\n if (arr) {\n const index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n","/**\n * Used to create Error subclasses until the community moves away from ES5.\n *\n * This is because compiling from TypeScript down to ES5 has issues with subclassing Errors\n * as well as other built-in types: https://github.com/Microsoft/TypeScript/issues/12123\n *\n * @param createImpl A factory function to create the actual constructor implementation. The returned\n * function should be a named function that calls `_super` internally.\n */\nexport function createErrorClass(createImpl: (_super: any) => any): T {\n const _super = (instance: any) => {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n\n const ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n","export function createObject(keys: string[], values: any[]) {\n return keys.reduce((result, key, i) => ((result[key] = values[i]), result), {} as any);\n}\n","import { config } from '../config';\n\nlet context: { errorThrown: boolean; error: any } | null = null;\n\n/**\n * Handles dealing with errors for super-gross mode. Creates a context, in which\n * any synchronously thrown errors will be passed to {@link captureError}. Which\n * will record the error such that it will be rethrown after the call back is complete.\n * TODO: Remove in v8\n * @param cb An immediately executed function.\n */\nexport function errorContext(cb: () => void) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n const isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n const { errorThrown, error } = context!;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n } else {\n // This is the general non-deprecated path for everyone that\n // isn't crazy enough to use super-gross mode (useDeprecatedSynchronousErrorHandling)\n cb();\n }\n}\n\n/**\n * Captures errors only in super-gross mode.\n * @param err the error to capture\n */\nexport function captureError(err: any) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n","import { Subscription } from '../Subscription';\nimport { SchedulerAction, SchedulerLike } from '../types';\n\nexport function executeSchedule(\n parentSubscription: Subscription,\n scheduler: SchedulerLike,\n work: () => void,\n delay: number,\n repeat: true\n): void;\nexport function executeSchedule(\n parentSubscription: Subscription,\n scheduler: SchedulerLike,\n work: () => void,\n delay?: number,\n repeat?: false\n): Subscription;\n\nexport function executeSchedule(\n parentSubscription: Subscription,\n scheduler: SchedulerLike,\n work: () => void,\n delay = 0,\n repeat = false\n): Subscription | void {\n const scheduleSubscription = scheduler.schedule(function (this: SchedulerAction) {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n } else {\n this.unsubscribe();\n }\n }, delay);\n\n parentSubscription.add(scheduleSubscription);\n\n if (!repeat) {\n // Because user-land scheduler implementations are unlikely to properly reuse\n // Actions for repeat scheduling, we can't trust that the returned subscription\n // will control repeat subscription scenarios. So we're trying to avoid using them\n // incorrectly within this library.\n return scheduleSubscription;\n }\n}\n","/**\n * This function takes one parameter and just returns it. Simply put,\n * this is like `(x: T): T => x`.\n *\n * ## Examples\n *\n * This is useful in some cases when using things like `mergeMap`\n *\n * ```ts\n * import { interval, take, map, range, mergeMap, identity } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(5));\n *\n * const result$ = source$.pipe(\n * map(i => range(i)),\n * mergeMap(identity) // same as mergeMap(x => x)\n * );\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * Or when you want to selectively apply an operator\n *\n * ```ts\n * import { interval, take, identity } from 'rxjs';\n *\n * const shouldLimit = () => Math.random() < 0.5;\n *\n * const source$ = interval(1000);\n *\n * const result$ = source$.pipe(shouldLimit() ? take(5) : identity);\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * @param x Any value that is returned by this function\n * @returns The value passed as the first parameter to this function\n */\nexport function identity(x: T): T {\n return x;\n}\n","export const isArrayLike = ((x: any): x is ArrayLike => x && typeof x.length === 'number' && typeof x !== 'function');","import { isFunction } from './isFunction';\n\nexport function isAsyncIterable(obj: any): obj is AsyncIterable {\n return Symbol.asyncIterator && isFunction(obj?.[Symbol.asyncIterator]);\n}\n","/**\n * Checks to see if a value is not only a `Date` object,\n * but a *valid* `Date` object that can be converted to a\n * number. For example, `new Date('blah')` is indeed an\n * `instanceof Date`, however it cannot be converted to a\n * number.\n */\nexport function isValidDate(value: any): value is Date {\n return value instanceof Date && !isNaN(value as any);\n}\n","/**\n * Returns true if the object is a function.\n * @param value The value to check\n */\nexport function isFunction(value: any): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n","import { InteropObservable } from '../types';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being Observable (but not necessary an Rx Observable) */\nexport function isInteropObservable(input: any): input is InteropObservable {\n return isFunction(input[Symbol_observable]);\n}\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being an Iterable */\nexport function isIterable(input: any): input is Iterable {\n return isFunction(input?.[Symbol_iterator]);\n}\n","/** prettier */\nimport { Observable } from '../Observable';\nimport { isFunction } from './isFunction';\n\n/**\n * Tests to see if the object is an RxJS {@link Observable}\n * @param obj the object to test\n */\nexport function isObservable(obj: any): obj is Observable {\n // The !! is to ensure that this publicly exposed function returns\n // `false` if something like `null` or `0` is passed.\n return !!obj && (obj instanceof Observable || (isFunction(obj.lift) && isFunction(obj.subscribe)));\n}\n","import { isFunction } from \"./isFunction\";\n\n/**\n * Tests to see if the object is \"thennable\".\n * @param value the object to test\n */\nexport function isPromise(value: any): value is PromiseLike {\n return isFunction(value?.then);\n}\n","import { ReadableStreamLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport async function* readableStreamLikeToAsyncGenerator(readableStream: ReadableStreamLike): AsyncGenerator {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n return;\n }\n yield value!;\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nexport function isReadableStreamLike(obj: any): obj is ReadableStreamLike {\n // We don't want to use instanceof checks because they would return\n // false for instances from another Realm, like an