diff --git a/frontend/node_modules/.cache/.eslintcache b/frontend/node_modules/.cache/.eslintcache deleted file mode 100644 index 48afd1943..000000000 --- a/frontend/node_modules/.cache/.eslintcache +++ /dev/null @@ -1 +0,0 @@ -[{"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\index.js":"1","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\modules\\index.js":"2","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\App.js":"3","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\modules\\user.js":"4","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\lib\\api\\auth.js":"5","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\Register.js":"6","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\Login.js":"7","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\VoteResult.js":"8","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\Board.js":"9","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\MainPage.js":"10","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\VotePage.js":"11","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\VoteCreate.js":"12","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\lib\\createRequestSaga.js":"13","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Navigation.js":"14","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\modules\\loading.js":"15","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\containers\\auth\\LoginForm.js":"16","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\CafeList.js":"17","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Header.js":"18","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Content.js":"19","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Copy.js":"20","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Gate.js":"21","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Contents\\Insta.js":"22","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\auth\\AuthTemplate.js":"23","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Calendar\\containers\\Calendar.js":"24","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\common\\VotePostButton.js":"25","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\containers\\auth\\RegisterForm.js":"26","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\CafeItem.js":"27","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\common\\Button.js":"28","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Calendar\\containers\\Modal.js":"29","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\lib\\styles\\palette.js":"30","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\modules\\auth.js":"31","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\auth\\AuthForm.js":"32","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Calendar\\containers\\reducer\\CalendarReducer.js":"33","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Calendar\\module\\MakeCalendar.js":"34","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Calendar\\module\\Style.js":"35","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Calendar\\module\\CalcDate.js":"36","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Calendar\\containers\\reducer\\ModalReducer.js":"37","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Calendar\\module\\Schedule.js":"38","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Calendar\\component\\Picker.js":"39","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Calendar\\component\\voteButton.js":"40","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\modules\\writeComment.js":"41","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\modules\\post.js":"42","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\modules\\write.js":"43","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\lib\\api\\posts.js":"44","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\lib\\api\\client.js":"45","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\BoardList\\PostList.js":"46","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\BoardList\\Sidebar.js":"47","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\BoardList\\HeaderContainer.js":"48","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\BoardList\\PostListTemplate.js":"49","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\Search\\SearchHeaderTemplate.js":"50","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\BoardList\\SidebarItem.js":"51","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\common\\Header.js":"52","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\BoardList\\PostCard.js":"53","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\BoardList\\PostHeader.js":"54","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\Search\\SearchBarTemplate.js":"55","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\Search\\SearchButton.js":"56","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\common\\Responsive.js":"57","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\Search\\SearchBar.js":"58","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\common\\Input.js":"59","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\MyPage\\MyPage.js":"60","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\MyPage\\MyPageForm.js":"61","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\common\\HeaderTemplate.js":"62","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\MyPage\\MyPageTemplate.js":"63","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\MyPage\\LogoutBox.js":"64","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\common\\Shortcut.js":"65","C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\MyPage\\LogoutButton.js":"66"},{"size":1172,"mtime":1676796061293,"results":"67","hashOfConfig":"68"},{"size":737,"mtime":1676796282424,"results":"69","hashOfConfig":"68"},{"size":1111,"mtime":1676797661808,"results":"70","hashOfConfig":"68"},{"size":1860,"mtime":1676456306714,"results":"71","hashOfConfig":"68"},{"size":502,"mtime":1676796410997,"results":"72","hashOfConfig":"68"},{"size":267,"mtime":1676395202988,"results":"73","hashOfConfig":"68"},{"size":272,"mtime":1676395202988,"results":"74","hashOfConfig":"68"},{"size":1691,"mtime":1676794348841,"results":"75","hashOfConfig":"68"},{"size":160,"mtime":1676794348834,"results":"76","hashOfConfig":"68"},{"size":1832,"mtime":1676540083323,"results":"77","hashOfConfig":"68"},{"size":4116,"mtime":1676794348840,"results":"78","hashOfConfig":"68"},{"size":984,"mtime":1676794348838,"results":"79","hashOfConfig":"68"},{"size":950,"mtime":1676456306673,"results":"80","hashOfConfig":"68"},{"size":1412,"mtime":1676796329183,"results":"81","hashOfConfig":"68"},{"size":784,"mtime":1676796460788,"results":"82","hashOfConfig":"68"},{"size":1989,"mtime":1676797334794,"results":"83","hashOfConfig":"68"},{"size":911,"mtime":1676794348837,"results":"84","hashOfConfig":"68"},{"size":1945,"mtime":1676395202999,"results":"85","hashOfConfig":"68"},{"size":1818,"mtime":1676395202998,"results":"86","hashOfConfig":"68"},{"size":1393,"mtime":1676395202998,"results":"87","hashOfConfig":"68"},{"size":5148,"mtime":1676395202999,"results":"88","hashOfConfig":"68"},{"size":2131,"mtime":1676395202990,"results":"89","hashOfConfig":"68"},{"size":1038,"mtime":1676395202989,"results":"90","hashOfConfig":"68"},{"size":2869,"mtime":1676540412299,"results":"91","hashOfConfig":"68"},{"size":710,"mtime":1676794348845,"results":"92","hashOfConfig":"68"},{"size":1918,"mtime":1676817751227,"results":"93","hashOfConfig":"68"},{"size":1162,"mtime":1676794348836,"results":"94","hashOfConfig":"68"},{"size":921,"mtime":1676456306578,"results":"95","hashOfConfig":"68"},{"size":3414,"mtime":1676395202993,"results":"96","hashOfConfig":"68"},{"size":1010,"mtime":1676456306688,"results":"97","hashOfConfig":"68"},{"size":2643,"mtime":1676456306702,"results":"98","hashOfConfig":"68"},{"size":2649,"mtime":1676797398641,"results":"99","hashOfConfig":"68"},{"size":1706,"mtime":1676395202993,"results":"100","hashOfConfig":"68"},{"size":3593,"mtime":1676395202995,"results":"101","hashOfConfig":"68"},{"size":146,"mtime":1676395202996,"results":"102","hashOfConfig":"68"},{"size":1227,"mtime":1676395202995,"results":"103","hashOfConfig":"68"},{"size":764,"mtime":1676395202994,"results":"104","hashOfConfig":"68"},{"size":369,"mtime":1676395202995,"results":"105","hashOfConfig":"68"},{"size":482,"mtime":1676395202991,"results":"106","hashOfConfig":"68"},{"size":666,"mtime":1676395202992,"results":"107","hashOfConfig":"68"},{"size":1694,"mtime":1676456306737,"results":"108","hashOfConfig":"68"},{"size":1140,"mtime":1676456306710,"results":"109","hashOfConfig":"68"},{"size":2614,"mtime":1676456306717,"results":"110","hashOfConfig":"68"},{"size":1425,"mtime":1676791695861,"results":"111","hashOfConfig":"68"},{"size":610,"mtime":1676456306669,"results":"112","hashOfConfig":"68"},{"size":473,"mtime":1676670451485,"results":"113","hashOfConfig":"68"},{"size":1568,"mtime":1676670451486,"results":"114","hashOfConfig":"68"},{"size":570,"mtime":1676791695854,"results":"115","hashOfConfig":"68"},{"size":2303,"mtime":1676670865588,"results":"116","hashOfConfig":"68"},{"size":535,"mtime":1676670451490,"results":"117","hashOfConfig":"68"},{"size":188,"mtime":1676670451487,"results":"118","hashOfConfig":"68"},{"size":2367,"mtime":1676553032761,"results":"119","hashOfConfig":"68"},{"size":1475,"mtime":1676670451483,"results":"120","hashOfConfig":"68"},{"size":1928,"mtime":1676670451484,"results":"121","hashOfConfig":"68"},{"size":363,"mtime":1676670451489,"results":"122","hashOfConfig":"68"},{"size":835,"mtime":1676670451490,"results":"123","hashOfConfig":"68"},{"size":682,"mtime":1676456306596,"results":"124","hashOfConfig":"68"},{"size":1363,"mtime":1676799319114,"results":"125","hashOfConfig":"68"},{"size":558,"mtime":1676456306591,"results":"126","hashOfConfig":"68"},{"size":336,"mtime":1676670451475,"results":"127","hashOfConfig":"68"},{"size":3399,"mtime":1676670451476,"results":"128","hashOfConfig":"68"},{"size":1719,"mtime":1676483155055,"results":"129","hashOfConfig":"68"},{"size":761,"mtime":1676670451477,"results":"130","hashOfConfig":"68"},{"size":290,"mtime":1676670451473,"results":"131","hashOfConfig":"68"},{"size":401,"mtime":1676456306599,"results":"132","hashOfConfig":"68"},{"size":670,"mtime":1676670451474,"results":"133","hashOfConfig":"68"},{"filePath":"134","messages":"135","suppressedMessages":"136","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},"d1beuq",{"filePath":"138","messages":"139","suppressedMessages":"140","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"141","messages":"142","suppressedMessages":"143","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"144","messages":"145","suppressedMessages":"146","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"147","messages":"148","suppressedMessages":"149","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"150","messages":"151","suppressedMessages":"152","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"153","messages":"154","suppressedMessages":"155","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"156","messages":"157","suppressedMessages":"158","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"159","messages":"160","suppressedMessages":"161","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"162","messages":"163","suppressedMessages":"164","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"165","messages":"166","suppressedMessages":"167","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"168","messages":"169","suppressedMessages":"170","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"171","messages":"172","suppressedMessages":"173","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"174","messages":"175","suppressedMessages":"176","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"177","messages":"178","suppressedMessages":"179","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"180","messages":"181","suppressedMessages":"182","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"183","messages":"184","suppressedMessages":"185","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"186","messages":"187","suppressedMessages":"188","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"189","messages":"190","suppressedMessages":"191","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"192","messages":"193","suppressedMessages":"194","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"195","messages":"196","suppressedMessages":"197","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"198","messages":"199","suppressedMessages":"200","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"201","messages":"202","suppressedMessages":"203","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"204","messages":"205","suppressedMessages":"206","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"207","messages":"208","suppressedMessages":"209","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"210","messages":"211","suppressedMessages":"212","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"213","messages":"214","suppressedMessages":"215","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"216","messages":"217","suppressedMessages":"218","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"219","messages":"220","suppressedMessages":"221","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"222","messages":"223","suppressedMessages":"224","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"225","messages":"226","suppressedMessages":"227","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"228","messages":"229","suppressedMessages":"230","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"231","messages":"232","suppressedMessages":"233","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"234","messages":"235","suppressedMessages":"236","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"237","messages":"238","suppressedMessages":"239","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"240","messages":"241","suppressedMessages":"242","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"243","messages":"244","suppressedMessages":"245","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"246","messages":"247","suppressedMessages":"248","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"249","messages":"250","suppressedMessages":"251","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"252","messages":"253","suppressedMessages":"254","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"255","messages":"256","suppressedMessages":"257","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"258","messages":"259","suppressedMessages":"260","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"261","messages":"262","suppressedMessages":"263","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"264","messages":"265","suppressedMessages":"266","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"267","messages":"268","suppressedMessages":"269","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"270","messages":"271","suppressedMessages":"272","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"273","messages":"274","suppressedMessages":"275","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"276","messages":"277","suppressedMessages":"278","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"279","messages":"280","suppressedMessages":"281","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"282","messages":"283","suppressedMessages":"284","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"285","messages":"286","suppressedMessages":"287","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"288","messages":"289","suppressedMessages":"290","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"291","messages":"292","suppressedMessages":"293","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"294","messages":"295","suppressedMessages":"296","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"297","messages":"298","suppressedMessages":"299","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"300","messages":"301","suppressedMessages":"302","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"303","messages":"304","suppressedMessages":"305","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"306","messages":"307","suppressedMessages":"308","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"309","messages":"310","suppressedMessages":"311","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"312","messages":"313","suppressedMessages":"314","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"315","messages":"316","suppressedMessages":"317","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"318","messages":"319","suppressedMessages":"320","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"321","messages":"322","suppressedMessages":"323","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"324","messages":"325","suppressedMessages":"326","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"327","messages":"328","suppressedMessages":"329","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},{"filePath":"330","messages":"331","suppressedMessages":"332","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"137"},"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\index.js",[],[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\modules\\index.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\App.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\modules\\user.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\lib\\api\\auth.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\Register.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\Login.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\VoteResult.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\Board.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\MainPage.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\VotePage.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\VoteCreate.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\lib\\createRequestSaga.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Navigation.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\modules\\loading.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\containers\\auth\\LoginForm.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\CafeList.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Header.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Content.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Copy.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Gate.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Contents\\Insta.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\auth\\AuthTemplate.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Calendar\\containers\\Calendar.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\common\\VotePostButton.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\containers\\auth\\RegisterForm.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\CafeItem.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\common\\Button.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Calendar\\containers\\Modal.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\lib\\styles\\palette.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\modules\\auth.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\auth\\AuthForm.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Calendar\\containers\\reducer\\CalendarReducer.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Calendar\\module\\MakeCalendar.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Calendar\\module\\Style.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Calendar\\module\\CalcDate.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Calendar\\containers\\reducer\\ModalReducer.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Calendar\\module\\Schedule.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Calendar\\component\\Picker.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Layout\\Calendar\\component\\voteButton.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\modules\\writeComment.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\modules\\post.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\modules\\write.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\lib\\api\\posts.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\lib\\api\\client.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\BoardList\\PostList.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\BoardList\\Sidebar.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\BoardList\\HeaderContainer.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\BoardList\\PostListTemplate.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\Search\\SearchHeaderTemplate.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\BoardList\\SidebarItem.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\common\\Header.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\BoardList\\PostCard.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\BoardList\\PostHeader.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\Search\\SearchBarTemplate.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\Search\\SearchButton.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\common\\Responsive.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\PostPage\\Search\\SearchBar.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\common\\Input.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\MyPage\\MyPage.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\MyPage\\MyPageForm.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\common\\HeaderTemplate.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\MyPage\\MyPageTemplate.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\MyPage\\LogoutBox.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\common\\Shortcut.js",[],[],"C:\\Users\\hojin\\OneDrive\\바탕 화면\\코테이토5기 팀프로젝트\\cotato\\frontend\\src\\Components\\MyPage\\LogoutButton.js",[],[]] \ No newline at end of file diff --git a/frontend/node_modules/@babel/parser/lib/index.js b/frontend/node_modules/@babel/parser/lib/index.js deleted file mode 100644 index 86180f9c8..000000000 --- a/frontend/node_modules/@babel/parser/lib/index.js +++ /dev/null @@ -1,14320 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -function _objectWithoutPropertiesLoose(source, excluded) { - if (source == null) return {}; - var target = {}; - var sourceKeys = Object.keys(source); - var key, i; - for (i = 0; i < sourceKeys.length; i++) { - key = sourceKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - target[key] = source[key]; - } - return target; -} - -class Position { - constructor(line, col, index) { - this.line = void 0; - this.column = void 0; - this.index = void 0; - this.line = line; - this.column = col; - this.index = index; - } -} -class SourceLocation { - constructor(start, end) { - this.start = void 0; - this.end = void 0; - this.filename = void 0; - this.identifierName = void 0; - this.start = start; - this.end = end; - } -} -function createPositionWithColumnOffset(position, columnOffset) { - const { - line, - column, - index - } = position; - return new Position(line, column + columnOffset, index + columnOffset); -} - -var ParseErrorCode = { - SyntaxError: "BABEL_PARSER_SYNTAX_ERROR", - SourceTypeModuleError: "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED" -}; -const reflect = (keys, last = keys.length - 1) => ({ - get() { - return keys.reduce((object, key) => object[key], this); - }, - set(value) { - keys.reduce((item, key, i) => i === last ? item[key] = value : item[key], this); - } -}); -const instantiate = (constructor, properties, descriptors) => Object.keys(descriptors).map(key => [key, descriptors[key]]).filter(([, descriptor]) => !!descriptor).map(([key, descriptor]) => [key, typeof descriptor === "function" ? { - value: descriptor, - enumerable: false -} : typeof descriptor.reflect === "string" ? Object.assign({}, descriptor, reflect(descriptor.reflect.split("."))) : descriptor]).reduce((instance, [key, descriptor]) => Object.defineProperty(instance, key, Object.assign({ - configurable: true -}, descriptor)), Object.assign(new constructor(), properties)); - -var ModuleErrors = { - ImportMetaOutsideModule: { - message: `import.meta may appear only with 'sourceType: "module"'`, - code: ParseErrorCode.SourceTypeModuleError - }, - ImportOutsideModule: { - message: `'import' and 'export' may appear only with 'sourceType: "module"'`, - code: ParseErrorCode.SourceTypeModuleError - } -}; - -const NodeDescriptions = { - ArrayPattern: "array destructuring pattern", - AssignmentExpression: "assignment expression", - AssignmentPattern: "assignment expression", - ArrowFunctionExpression: "arrow function expression", - ConditionalExpression: "conditional expression", - CatchClause: "catch clause", - ForOfStatement: "for-of statement", - ForInStatement: "for-in statement", - ForStatement: "for-loop", - FormalParameters: "function parameter list", - Identifier: "identifier", - ImportSpecifier: "import specifier", - ImportDefaultSpecifier: "import default specifier", - ImportNamespaceSpecifier: "import namespace specifier", - ObjectPattern: "object destructuring pattern", - ParenthesizedExpression: "parenthesized expression", - RestElement: "rest element", - UpdateExpression: { - true: "prefix operation", - false: "postfix operation" - }, - VariableDeclarator: "variable declaration", - YieldExpression: "yield expression" -}; -const toNodeDescription = ({ - type, - prefix -}) => type === "UpdateExpression" ? NodeDescriptions.UpdateExpression[String(prefix)] : NodeDescriptions[type]; - -var StandardErrors = { - AccessorIsGenerator: ({ - kind - }) => `A ${kind}ter cannot be a generator.`, - ArgumentsInClass: "'arguments' is only allowed in functions and class methods.", - AsyncFunctionInSingleStatementContext: "Async functions can only be declared at the top level or inside a block.", - AwaitBindingIdentifier: "Can not use 'await' as identifier inside an async function.", - AwaitBindingIdentifierInStaticBlock: "Can not use 'await' as identifier inside a static block.", - AwaitExpressionFormalParameter: "'await' is not allowed in async function parameters.", - AwaitInUsingBinding: "'await' is not allowed to be used as a name in 'using' declarations.", - AwaitNotInAsyncContext: "'await' is only allowed within async functions and at the top levels of modules.", - AwaitNotInAsyncFunction: "'await' is only allowed within async functions.", - BadGetterArity: "A 'get' accessor must not have any formal parameters.", - BadSetterArity: "A 'set' accessor must have exactly one formal parameter.", - BadSetterRestParameter: "A 'set' accessor function argument must not be a rest parameter.", - ConstructorClassField: "Classes may not have a field named 'constructor'.", - ConstructorClassPrivateField: "Classes may not have a private field named '#constructor'.", - ConstructorIsAccessor: "Class constructor may not be an accessor.", - ConstructorIsAsync: "Constructor can't be an async function.", - ConstructorIsGenerator: "Constructor can't be a generator.", - DeclarationMissingInitializer: ({ - kind - }) => `Missing initializer in ${kind} declaration.`, - DecoratorArgumentsOutsideParentheses: "Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.", - DecoratorBeforeExport: "Decorators must be placed *before* the 'export' keyword. You can set the 'decoratorsBeforeExport' option to false to use the 'export @decorator class {}' syntax.", - DecoratorConstructor: "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?", - DecoratorExportClass: "Using the export keyword between a decorator and a class is not allowed. Please use `export @dec class` instead.", - DecoratorSemicolon: "Decorators must not be followed by a semicolon.", - DecoratorStaticBlock: "Decorators can't be used with a static block.", - DeletePrivateField: "Deleting a private field is not allowed.", - DestructureNamedImport: "ES2015 named imports do not destructure. Use another statement for destructuring after the import.", - DuplicateConstructor: "Duplicate constructor in the same class.", - DuplicateDefaultExport: "Only one default export allowed per module.", - DuplicateExport: ({ - exportName - }) => `\`${exportName}\` has already been exported. Exported identifiers must be unique.`, - DuplicateProto: "Redefinition of __proto__ property.", - DuplicateRegExpFlags: "Duplicate regular expression flag.", - ElementAfterRest: "Rest element must be last element.", - EscapedCharNotAnIdentifier: "Invalid Unicode escape.", - ExportBindingIsString: ({ - localName, - exportName - }) => `A string literal cannot be used as an exported binding without \`from\`.\n- Did you mean \`export { '${localName}' as '${exportName}' } from 'some-module'\`?`, - ExportDefaultFromAsIdentifier: "'from' is not allowed as an identifier after 'export default'.", - ForInOfLoopInitializer: ({ - type - }) => `'${type === "ForInStatement" ? "for-in" : "for-of"}' loop variable declaration may not have an initializer.`, - ForInUsing: "For-in loop may not start with 'using' declaration.", - ForOfAsync: "The left-hand side of a for-of loop may not be 'async'.", - ForOfLet: "The left-hand side of a for-of loop may not start with 'let'.", - GeneratorInSingleStatementContext: "Generators can only be declared at the top level or inside a block.", - IllegalBreakContinue: ({ - type - }) => `Unsyntactic ${type === "BreakStatement" ? "break" : "continue"}.`, - IllegalLanguageModeDirective: "Illegal 'use strict' directive in function with non-simple parameter list.", - IllegalReturn: "'return' outside of function.", - ImportBindingIsString: ({ - importName - }) => `A string literal cannot be used as an imported binding.\n- Did you mean \`import { "${importName}" as foo }\`?`, - ImportCallArgumentTrailingComma: "Trailing comma is disallowed inside import(...) arguments.", - ImportCallArity: ({ - maxArgumentCount - }) => `\`import()\` requires exactly ${maxArgumentCount === 1 ? "one argument" : "one or two arguments"}.`, - ImportCallNotNewExpression: "Cannot use new with import(...).", - ImportCallSpreadArgument: "`...` is not allowed in `import()`.", - ImportJSONBindingNotDefault: "A JSON module can only be imported with `default`.", - ImportReflectionHasAssertion: "`import module x` cannot have assertions.", - ImportReflectionNotBinding: 'Only `import module x from "./module"` is valid.', - IncompatibleRegExpUVFlags: "The 'u' and 'v' regular expression flags cannot be enabled at the same time.", - InvalidBigIntLiteral: "Invalid BigIntLiteral.", - InvalidCodePoint: "Code point out of bounds.", - InvalidCoverInitializedName: "Invalid shorthand property initializer.", - InvalidDecimal: "Invalid decimal.", - InvalidDigit: ({ - radix - }) => `Expected number in radix ${radix}.`, - InvalidEscapeSequence: "Bad character escape sequence.", - InvalidEscapeSequenceTemplate: "Invalid escape sequence in template.", - InvalidEscapedReservedWord: ({ - reservedWord - }) => `Escape sequence in keyword ${reservedWord}.`, - InvalidIdentifier: ({ - identifierName - }) => `Invalid identifier ${identifierName}.`, - InvalidLhs: ({ - ancestor - }) => `Invalid left-hand side in ${toNodeDescription(ancestor)}.`, - InvalidLhsBinding: ({ - ancestor - }) => `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`, - InvalidNumber: "Invalid number.", - InvalidOrMissingExponent: "Floating-point numbers require a valid exponent after the 'e'.", - InvalidOrUnexpectedToken: ({ - unexpected - }) => `Unexpected character '${unexpected}'.`, - InvalidParenthesizedAssignment: "Invalid parenthesized assignment pattern.", - InvalidPrivateFieldResolution: ({ - identifierName - }) => `Private name #${identifierName} is not defined.`, - InvalidPropertyBindingPattern: "Binding member expression.", - InvalidRecordProperty: "Only properties and spread elements are allowed in record definitions.", - InvalidRestAssignmentPattern: "Invalid rest operator's argument.", - LabelRedeclaration: ({ - labelName - }) => `Label '${labelName}' is already declared.`, - LetInLexicalBinding: "'let' is not allowed to be used as a name in 'let' or 'const' declarations.", - LineTerminatorBeforeArrow: "No line break is allowed before '=>'.", - MalformedRegExpFlags: "Invalid regular expression flag.", - MissingClassName: "A class name is required.", - MissingEqInAssignment: "Only '=' operator can be used for specifying default value.", - MissingSemicolon: "Missing semicolon.", - MissingPlugin: ({ - missingPlugin - }) => `This experimental syntax requires enabling the parser plugin: ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`, - MissingOneOfPlugins: ({ - missingPlugin - }) => `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`, - MissingUnicodeEscape: "Expecting Unicode escape sequence \\uXXXX.", - MixingCoalesceWithLogical: "Nullish coalescing operator(??) requires parens when mixing with logical operators.", - ModuleAttributeDifferentFromType: "The only accepted module attribute is `type`.", - ModuleAttributeInvalidValue: "Only string literals are allowed as module attribute values.", - ModuleAttributesWithDuplicateKeys: ({ - key - }) => `Duplicate key "${key}" is not allowed in module attributes.`, - ModuleExportNameHasLoneSurrogate: ({ - surrogateCharCode - }) => `An export name cannot include a lone surrogate, found '\\u${surrogateCharCode.toString(16)}'.`, - ModuleExportUndefined: ({ - localName - }) => `Export '${localName}' is not defined.`, - MultipleDefaultsInSwitch: "Multiple default clauses.", - NewlineAfterThrow: "Illegal newline after throw.", - NoCatchOrFinally: "Missing catch or finally clause.", - NumberIdentifier: "Identifier directly after number.", - NumericSeparatorInEscapeSequence: "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.", - ObsoleteAwaitStar: "'await*' has been removed from the async functions proposal. Use Promise.all() instead.", - OptionalChainingNoNew: "Constructors in/after an Optional Chain are not allowed.", - OptionalChainingNoTemplate: "Tagged Template Literals are not allowed in optionalChain.", - OverrideOnConstructor: "'override' modifier cannot appear on a constructor declaration.", - ParamDupe: "Argument name clash.", - PatternHasAccessor: "Object pattern can't contain getter or setter.", - PatternHasMethod: "Object pattern can't contain methods.", - PrivateInExpectedIn: ({ - identifierName - }) => `Private names are only allowed in property accesses (\`obj.#${identifierName}\`) or in \`in\` expressions (\`#${identifierName} in obj\`).`, - PrivateNameRedeclaration: ({ - identifierName - }) => `Duplicate private name #${identifierName}.`, - RecordExpressionBarIncorrectEndSyntaxType: "Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", - RecordExpressionBarIncorrectStartSyntaxType: "Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", - RecordExpressionHashIncorrectStartSyntaxType: "Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", - RecordNoProto: "'__proto__' is not allowed in Record expressions.", - RestTrailingComma: "Unexpected trailing comma after rest element.", - SloppyFunction: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.", - StaticPrototype: "Classes may not have static property named prototype.", - SuperNotAllowed: "`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?", - SuperPrivateField: "Private fields can't be accessed on super.", - TrailingDecorator: "Decorators must be attached to a class element.", - TupleExpressionBarIncorrectEndSyntaxType: "Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", - TupleExpressionBarIncorrectStartSyntaxType: "Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", - TupleExpressionHashIncorrectStartSyntaxType: "Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", - UnexpectedArgumentPlaceholder: "Unexpected argument placeholder.", - UnexpectedAwaitAfterPipelineBody: 'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.', - UnexpectedDigitAfterHash: "Unexpected digit after hash token.", - UnexpectedImportExport: "'import' and 'export' may only appear at the top level.", - UnexpectedKeyword: ({ - keyword - }) => `Unexpected keyword '${keyword}'.`, - UnexpectedLeadingDecorator: "Leading decorators must be attached to a class declaration.", - UnexpectedLexicalDeclaration: "Lexical declaration cannot appear in a single-statement context.", - UnexpectedNewTarget: "`new.target` can only be used in functions or class properties.", - UnexpectedNumericSeparator: "A numeric separator is only allowed between two digits.", - UnexpectedPrivateField: "Unexpected private name.", - UnexpectedReservedWord: ({ - reservedWord - }) => `Unexpected reserved word '${reservedWord}'.`, - UnexpectedSuper: "'super' is only allowed in object methods and classes.", - UnexpectedToken: ({ - expected, - unexpected - }) => `Unexpected token${unexpected ? ` '${unexpected}'.` : ""}${expected ? `, expected "${expected}"` : ""}`, - UnexpectedTokenUnaryExponentiation: "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.", - UnexpectedUsingDeclaration: "Using declaration cannot appear in the top level when source type is `script`.", - UnsupportedBind: "Binding should be performed on object property.", - UnsupportedDecoratorExport: "A decorated export must export a class declaration.", - UnsupportedDefaultExport: "Only expressions, functions or classes are allowed as the `default` export.", - UnsupportedImport: "`import` can only be used in `import()` or `import.meta`.", - UnsupportedMetaProperty: ({ - target, - onlyValidPropertyName - }) => `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`, - UnsupportedParameterDecorator: "Decorators cannot be used to decorate parameters.", - UnsupportedPropertyDecorator: "Decorators cannot be used to decorate object literal properties.", - UnsupportedSuper: "'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).", - UnterminatedComment: "Unterminated comment.", - UnterminatedRegExp: "Unterminated regular expression.", - UnterminatedString: "Unterminated string constant.", - UnterminatedTemplate: "Unterminated template.", - UsingDeclarationHasBindingPattern: "Using declaration cannot have destructuring patterns.", - VarRedeclaration: ({ - identifierName - }) => `Identifier '${identifierName}' has already been declared.`, - YieldBindingIdentifier: "Can not use 'yield' as identifier inside a generator.", - YieldInParameter: "Yield expression is not allowed in formal parameters.", - ZeroDigitNumericSeparator: "Numeric separator can not be used after leading 0." -}; - -var StrictModeErrors = { - StrictDelete: "Deleting local variable in strict mode.", - StrictEvalArguments: ({ - referenceName - }) => `Assigning to '${referenceName}' in strict mode.`, - StrictEvalArgumentsBinding: ({ - bindingName - }) => `Binding '${bindingName}' in strict mode.`, - StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block.", - StrictNumericEscape: "The only valid numeric escape in strict mode is '\\0'.", - StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode.", - StrictWith: "'with' in strict mode." -}; - -const UnparenthesizedPipeBodyDescriptions = new Set(["ArrowFunctionExpression", "AssignmentExpression", "ConditionalExpression", "YieldExpression"]); -var PipelineOperatorErrors = { - PipeBodyIsTighter: "Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.", - PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.', - PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.", - PipeTopicUnconfiguredToken: ({ - token - }) => `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "${token}" }.`, - PipeTopicUnused: "Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.", - PipeUnparenthesizedBody: ({ - type - }) => `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({ - type - })}; please wrap it in parentheses.`, - PipelineBodyNoArrow: 'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.', - PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.", - PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.", - PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.", - PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.", - PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.' -}; - -const _excluded$1 = ["toMessage"], - _excluded2$1 = ["message"]; -function toParseErrorConstructor(_ref) { - let { - toMessage - } = _ref, - properties = _objectWithoutPropertiesLoose(_ref, _excluded$1); - return function constructor({ - loc, - details - }) { - return instantiate(SyntaxError, Object.assign({}, properties, { - loc - }), { - clone(overrides = {}) { - const loc = overrides.loc || {}; - return constructor({ - loc: new Position("line" in loc ? loc.line : this.loc.line, "column" in loc ? loc.column : this.loc.column, "index" in loc ? loc.index : this.loc.index), - details: Object.assign({}, this.details, overrides.details) - }); - }, - details: { - value: details, - enumerable: false - }, - message: { - get() { - return `${toMessage(this.details)} (${this.loc.line}:${this.loc.column})`; - }, - set(value) { - Object.defineProperty(this, "message", { - value - }); - } - }, - pos: { - reflect: "loc.index", - enumerable: true - }, - missingPlugin: "missingPlugin" in details && { - reflect: "details.missingPlugin", - enumerable: true - } - }); - }; -} -function ParseErrorEnum(argument, syntaxPlugin) { - if (Array.isArray(argument)) { - return parseErrorTemplates => ParseErrorEnum(parseErrorTemplates, argument[0]); - } - const ParseErrorConstructors = {}; - for (const reasonCode of Object.keys(argument)) { - const template = argument[reasonCode]; - const _ref2 = typeof template === "string" ? { - message: () => template - } : typeof template === "function" ? { - message: template - } : template, - { - message - } = _ref2, - rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$1); - const toMessage = typeof message === "string" ? () => message : message; - ParseErrorConstructors[reasonCode] = toParseErrorConstructor(Object.assign({ - code: ParseErrorCode.SyntaxError, - reasonCode, - toMessage - }, syntaxPlugin ? { - syntaxPlugin - } : {}, rest)); - } - return ParseErrorConstructors; -} -const Errors = Object.assign({}, ParseErrorEnum(ModuleErrors), ParseErrorEnum(StandardErrors), ParseErrorEnum(StrictModeErrors), ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors)); - -const { - defineProperty -} = Object; -const toUnenumerable = (object, key) => defineProperty(object, key, { - enumerable: false, - value: object[key] -}); -function toESTreeLocation(node) { - node.loc.start && toUnenumerable(node.loc.start, "index"); - node.loc.end && toUnenumerable(node.loc.end, "index"); - return node; -} -var estree = (superClass => class ESTreeParserMixin extends superClass { - parse() { - const file = toESTreeLocation(super.parse()); - if (this.options.tokens) { - file.tokens = file.tokens.map(toESTreeLocation); - } - return file; - } - parseRegExpLiteral({ - pattern, - flags - }) { - let regex = null; - try { - regex = new RegExp(pattern, flags); - } catch (e) {} - const node = this.estreeParseLiteral(regex); - node.regex = { - pattern, - flags - }; - return node; - } - parseBigIntLiteral(value) { - let bigInt; - try { - bigInt = BigInt(value); - } catch (_unused) { - bigInt = null; - } - const node = this.estreeParseLiteral(bigInt); - node.bigint = String(node.value || value); - return node; - } - parseDecimalLiteral(value) { - const decimal = null; - const node = this.estreeParseLiteral(decimal); - node.decimal = String(node.value || value); - return node; - } - estreeParseLiteral(value) { - return this.parseLiteral(value, "Literal"); - } - parseStringLiteral(value) { - return this.estreeParseLiteral(value); - } - parseNumericLiteral(value) { - return this.estreeParseLiteral(value); - } - parseNullLiteral() { - return this.estreeParseLiteral(null); - } - parseBooleanLiteral(value) { - return this.estreeParseLiteral(value); - } - directiveToStmt(directive) { - const expression = directive.value; - delete directive.value; - expression.type = "Literal"; - expression.raw = expression.extra.raw; - expression.value = expression.extra.expressionValue; - const stmt = directive; - stmt.type = "ExpressionStatement"; - stmt.expression = expression; - stmt.directive = expression.extra.rawValue; - delete expression.extra; - return stmt; - } - initFunction(node, isAsync) { - super.initFunction(node, isAsync); - node.expression = false; - } - checkDeclaration(node) { - if (node != null && this.isObjectProperty(node)) { - this.checkDeclaration(node.value); - } else { - super.checkDeclaration(node); - } - } - getObjectOrClassMethodParams(method) { - return method.value.params; - } - isValidDirective(stmt) { - var _stmt$expression$extr; - return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized); - } - parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) { - super.parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse); - const directiveStatements = node.directives.map(d => this.directiveToStmt(d)); - node.body = directiveStatements.concat(node.body); - delete node.directives; - } - pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { - this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true); - if (method.typeParameters) { - method.value.typeParameters = method.typeParameters; - delete method.typeParameters; - } - classBody.body.push(method); - } - parsePrivateName() { - const node = super.parsePrivateName(); - { - if (!this.getPluginOption("estree", "classFeatures")) { - return node; - } - } - return this.convertPrivateNameToPrivateIdentifier(node); - } - convertPrivateNameToPrivateIdentifier(node) { - const name = super.getPrivateNameSV(node); - node = node; - delete node.id; - node.name = name; - node.type = "PrivateIdentifier"; - return node; - } - isPrivateName(node) { - { - if (!this.getPluginOption("estree", "classFeatures")) { - return super.isPrivateName(node); - } - } - return node.type === "PrivateIdentifier"; - } - getPrivateNameSV(node) { - { - if (!this.getPluginOption("estree", "classFeatures")) { - return super.getPrivateNameSV(node); - } - } - return node.name; - } - parseLiteral(value, type) { - const node = super.parseLiteral(value, type); - node.raw = node.extra.raw; - delete node.extra; - return node; - } - parseFunctionBody(node, allowExpression, isMethod = false) { - super.parseFunctionBody(node, allowExpression, isMethod); - node.expression = node.body.type !== "BlockStatement"; - } - parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { - let funcNode = this.startNode(); - funcNode.kind = node.kind; - funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope); - funcNode.type = "FunctionExpression"; - delete funcNode.kind; - node.value = funcNode; - if (type === "ClassPrivateMethod") { - node.computed = false; - } - return this.finishNode(node, "MethodDefinition"); - } - parseClassProperty(...args) { - const propertyNode = super.parseClassProperty(...args); - { - if (!this.getPluginOption("estree", "classFeatures")) { - return propertyNode; - } - } - propertyNode.type = "PropertyDefinition"; - return propertyNode; - } - parseClassPrivateProperty(...args) { - const propertyNode = super.parseClassPrivateProperty(...args); - { - if (!this.getPluginOption("estree", "classFeatures")) { - return propertyNode; - } - } - propertyNode.type = "PropertyDefinition"; - propertyNode.computed = false; - return propertyNode; - } - parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) { - const node = super.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor); - if (node) { - node.type = "Property"; - if (node.kind === "method") { - node.kind = "init"; - } - node.shorthand = false; - } - return node; - } - parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) { - const node = super.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors); - if (node) { - node.kind = "init"; - node.type = "Property"; - } - return node; - } - isValidLVal(type, isUnparenthesizedInAssign, binding) { - return type === "Property" ? "value" : super.isValidLVal(type, isUnparenthesizedInAssign, binding); - } - isAssignable(node, isBinding) { - if (node != null && this.isObjectProperty(node)) { - return this.isAssignable(node.value, isBinding); - } - return super.isAssignable(node, isBinding); - } - toAssignable(node, isLHS = false) { - if (node != null && this.isObjectProperty(node)) { - const { - key, - value - } = node; - if (this.isPrivateName(key)) { - this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start); - } - this.toAssignable(value, isLHS); - } else { - super.toAssignable(node, isLHS); - } - } - toAssignableObjectExpressionProp(prop, isLast, isLHS) { - if (prop.kind === "get" || prop.kind === "set") { - this.raise(Errors.PatternHasAccessor, { - at: prop.key - }); - } else if (prop.method) { - this.raise(Errors.PatternHasMethod, { - at: prop.key - }); - } else { - super.toAssignableObjectExpressionProp(prop, isLast, isLHS); - } - } - finishCallExpression(unfinished, optional) { - const node = super.finishCallExpression(unfinished, optional); - if (node.callee.type === "Import") { - node.type = "ImportExpression"; - node.source = node.arguments[0]; - if (this.hasPlugin("importAssertions")) { - var _node$arguments$; - node.attributes = (_node$arguments$ = node.arguments[1]) != null ? _node$arguments$ : null; - } - delete node.arguments; - delete node.callee; - } - return node; - } - toReferencedArguments(node) { - if (node.type === "ImportExpression") { - return; - } - super.toReferencedArguments(node); - } - parseExport(unfinished, decorators) { - const exportStartLoc = this.state.lastTokStartLoc; - const node = super.parseExport(unfinished, decorators); - switch (node.type) { - case "ExportAllDeclaration": - node.exported = null; - break; - case "ExportNamedDeclaration": - if (node.specifiers.length === 1 && node.specifiers[0].type === "ExportNamespaceSpecifier") { - node.type = "ExportAllDeclaration"; - node.exported = node.specifiers[0].exported; - delete node.specifiers; - } - case "ExportDefaultDeclaration": - { - var _declaration$decorato; - const { - declaration - } = node; - if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && ((_declaration$decorato = declaration.decorators) == null ? void 0 : _declaration$decorato.length) > 0 && declaration.start === node.start) { - this.resetStartLocation(node, exportStartLoc); - } - } - break; - } - return node; - } - parseSubscript(base, startLoc, noCalls, state) { - const node = super.parseSubscript(base, startLoc, noCalls, state); - if (state.optionalChainMember) { - if (node.type === "OptionalMemberExpression" || node.type === "OptionalCallExpression") { - node.type = node.type.substring(8); - } - if (state.stop) { - const chain = this.startNodeAtNode(node); - chain.expression = node; - return this.finishNode(chain, "ChainExpression"); - } - } else if (node.type === "MemberExpression" || node.type === "CallExpression") { - node.optional = false; - } - return node; - } - hasPropertyAsPrivateName(node) { - if (node.type === "ChainExpression") { - node = node.expression; - } - return super.hasPropertyAsPrivateName(node); - } - isOptionalChain(node) { - return node.type === "ChainExpression"; - } - isObjectProperty(node) { - return node.type === "Property" && node.kind === "init" && !node.method; - } - isObjectMethod(node) { - return node.method || node.kind === "get" || node.kind === "set"; - } - finishNodeAt(node, type, endLoc) { - return toESTreeLocation(super.finishNodeAt(node, type, endLoc)); - } - resetStartLocation(node, startLoc) { - super.resetStartLocation(node, startLoc); - toESTreeLocation(node); - } - resetEndLocation(node, endLoc = this.state.lastTokEndLoc) { - super.resetEndLocation(node, endLoc); - toESTreeLocation(node); - } -}); - -class TokContext { - constructor(token, preserveSpace) { - this.token = void 0; - this.preserveSpace = void 0; - this.token = token; - this.preserveSpace = !!preserveSpace; - } -} -const types = { - brace: new TokContext("{"), - j_oTag: new TokContext("...", true) -}; -{ - types.template = new TokContext("`", true); -} - -const beforeExpr = true; -const startsExpr = true; -const isLoop = true; -const isAssign = true; -const prefix = true; -const postfix = true; -class ExportedTokenType { - constructor(label, conf = {}) { - this.label = void 0; - this.keyword = void 0; - this.beforeExpr = void 0; - this.startsExpr = void 0; - this.rightAssociative = void 0; - this.isLoop = void 0; - this.isAssign = void 0; - this.prefix = void 0; - this.postfix = void 0; - this.binop = void 0; - this.label = label; - this.keyword = conf.keyword; - this.beforeExpr = !!conf.beforeExpr; - this.startsExpr = !!conf.startsExpr; - this.rightAssociative = !!conf.rightAssociative; - this.isLoop = !!conf.isLoop; - this.isAssign = !!conf.isAssign; - this.prefix = !!conf.prefix; - this.postfix = !!conf.postfix; - this.binop = conf.binop != null ? conf.binop : null; - { - this.updateContext = null; - } - } -} -const keywords$1 = new Map(); -function createKeyword(name, options = {}) { - options.keyword = name; - const token = createToken(name, options); - keywords$1.set(name, token); - return token; -} -function createBinop(name, binop) { - return createToken(name, { - beforeExpr, - binop - }); -} -let tokenTypeCounter = -1; -const tokenTypes = []; -const tokenLabels = []; -const tokenBinops = []; -const tokenBeforeExprs = []; -const tokenStartsExprs = []; -const tokenPrefixes = []; -function createToken(name, options = {}) { - var _options$binop, _options$beforeExpr, _options$startsExpr, _options$prefix; - ++tokenTypeCounter; - tokenLabels.push(name); - tokenBinops.push((_options$binop = options.binop) != null ? _options$binop : -1); - tokenBeforeExprs.push((_options$beforeExpr = options.beforeExpr) != null ? _options$beforeExpr : false); - tokenStartsExprs.push((_options$startsExpr = options.startsExpr) != null ? _options$startsExpr : false); - tokenPrefixes.push((_options$prefix = options.prefix) != null ? _options$prefix : false); - tokenTypes.push(new ExportedTokenType(name, options)); - return tokenTypeCounter; -} -function createKeywordLike(name, options = {}) { - var _options$binop2, _options$beforeExpr2, _options$startsExpr2, _options$prefix2; - ++tokenTypeCounter; - keywords$1.set(name, tokenTypeCounter); - tokenLabels.push(name); - tokenBinops.push((_options$binop2 = options.binop) != null ? _options$binop2 : -1); - tokenBeforeExprs.push((_options$beforeExpr2 = options.beforeExpr) != null ? _options$beforeExpr2 : false); - tokenStartsExprs.push((_options$startsExpr2 = options.startsExpr) != null ? _options$startsExpr2 : false); - tokenPrefixes.push((_options$prefix2 = options.prefix) != null ? _options$prefix2 : false); - tokenTypes.push(new ExportedTokenType("name", options)); - return tokenTypeCounter; -} -const tt = { - bracketL: createToken("[", { - beforeExpr, - startsExpr - }), - bracketHashL: createToken("#[", { - beforeExpr, - startsExpr - }), - bracketBarL: createToken("[|", { - beforeExpr, - startsExpr - }), - bracketR: createToken("]"), - bracketBarR: createToken("|]"), - braceL: createToken("{", { - beforeExpr, - startsExpr - }), - braceBarL: createToken("{|", { - beforeExpr, - startsExpr - }), - braceHashL: createToken("#{", { - beforeExpr, - startsExpr - }), - braceR: createToken("}"), - braceBarR: createToken("|}"), - parenL: createToken("(", { - beforeExpr, - startsExpr - }), - parenR: createToken(")"), - comma: createToken(",", { - beforeExpr - }), - semi: createToken(";", { - beforeExpr - }), - colon: createToken(":", { - beforeExpr - }), - doubleColon: createToken("::", { - beforeExpr - }), - dot: createToken("."), - question: createToken("?", { - beforeExpr - }), - questionDot: createToken("?."), - arrow: createToken("=>", { - beforeExpr - }), - template: createToken("template"), - ellipsis: createToken("...", { - beforeExpr - }), - backQuote: createToken("`", { - startsExpr - }), - dollarBraceL: createToken("${", { - beforeExpr, - startsExpr - }), - templateTail: createToken("...`", { - startsExpr - }), - templateNonTail: createToken("...${", { - beforeExpr, - startsExpr - }), - at: createToken("@"), - hash: createToken("#", { - startsExpr - }), - interpreterDirective: createToken("#!..."), - eq: createToken("=", { - beforeExpr, - isAssign - }), - assign: createToken("_=", { - beforeExpr, - isAssign - }), - slashAssign: createToken("_=", { - beforeExpr, - isAssign - }), - xorAssign: createToken("_=", { - beforeExpr, - isAssign - }), - moduloAssign: createToken("_=", { - beforeExpr, - isAssign - }), - incDec: createToken("++/--", { - prefix, - postfix, - startsExpr - }), - bang: createToken("!", { - beforeExpr, - prefix, - startsExpr - }), - tilde: createToken("~", { - beforeExpr, - prefix, - startsExpr - }), - doubleCaret: createToken("^^", { - startsExpr - }), - doubleAt: createToken("@@", { - startsExpr - }), - pipeline: createBinop("|>", 0), - nullishCoalescing: createBinop("??", 1), - logicalOR: createBinop("||", 1), - logicalAND: createBinop("&&", 2), - bitwiseOR: createBinop("|", 3), - bitwiseXOR: createBinop("^", 4), - bitwiseAND: createBinop("&", 5), - equality: createBinop("==/!=/===/!==", 6), - lt: createBinop("/<=/>=", 7), - gt: createBinop("/<=/>=", 7), - relational: createBinop("/<=/>=", 7), - bitShift: createBinop("<>/>>>", 8), - bitShiftL: createBinop("<>/>>>", 8), - bitShiftR: createBinop("<>/>>>", 8), - plusMin: createToken("+/-", { - beforeExpr, - binop: 9, - prefix, - startsExpr - }), - modulo: createToken("%", { - binop: 10, - startsExpr - }), - star: createToken("*", { - binop: 10 - }), - slash: createBinop("/", 10), - exponent: createToken("**", { - beforeExpr, - binop: 11, - rightAssociative: true - }), - _in: createKeyword("in", { - beforeExpr, - binop: 7 - }), - _instanceof: createKeyword("instanceof", { - beforeExpr, - binop: 7 - }), - _break: createKeyword("break"), - _case: createKeyword("case", { - beforeExpr - }), - _catch: createKeyword("catch"), - _continue: createKeyword("continue"), - _debugger: createKeyword("debugger"), - _default: createKeyword("default", { - beforeExpr - }), - _else: createKeyword("else", { - beforeExpr - }), - _finally: createKeyword("finally"), - _function: createKeyword("function", { - startsExpr - }), - _if: createKeyword("if"), - _return: createKeyword("return", { - beforeExpr - }), - _switch: createKeyword("switch"), - _throw: createKeyword("throw", { - beforeExpr, - prefix, - startsExpr - }), - _try: createKeyword("try"), - _var: createKeyword("var"), - _const: createKeyword("const"), - _with: createKeyword("with"), - _new: createKeyword("new", { - beforeExpr, - startsExpr - }), - _this: createKeyword("this", { - startsExpr - }), - _super: createKeyword("super", { - startsExpr - }), - _class: createKeyword("class", { - startsExpr - }), - _extends: createKeyword("extends", { - beforeExpr - }), - _export: createKeyword("export"), - _import: createKeyword("import", { - startsExpr - }), - _null: createKeyword("null", { - startsExpr - }), - _true: createKeyword("true", { - startsExpr - }), - _false: createKeyword("false", { - startsExpr - }), - _typeof: createKeyword("typeof", { - beforeExpr, - prefix, - startsExpr - }), - _void: createKeyword("void", { - beforeExpr, - prefix, - startsExpr - }), - _delete: createKeyword("delete", { - beforeExpr, - prefix, - startsExpr - }), - _do: createKeyword("do", { - isLoop, - beforeExpr - }), - _for: createKeyword("for", { - isLoop - }), - _while: createKeyword("while", { - isLoop - }), - _as: createKeywordLike("as", { - startsExpr - }), - _assert: createKeywordLike("assert", { - startsExpr - }), - _async: createKeywordLike("async", { - startsExpr - }), - _await: createKeywordLike("await", { - startsExpr - }), - _from: createKeywordLike("from", { - startsExpr - }), - _get: createKeywordLike("get", { - startsExpr - }), - _let: createKeywordLike("let", { - startsExpr - }), - _meta: createKeywordLike("meta", { - startsExpr - }), - _of: createKeywordLike("of", { - startsExpr - }), - _sent: createKeywordLike("sent", { - startsExpr - }), - _set: createKeywordLike("set", { - startsExpr - }), - _static: createKeywordLike("static", { - startsExpr - }), - _using: createKeywordLike("using", { - startsExpr - }), - _yield: createKeywordLike("yield", { - startsExpr - }), - _asserts: createKeywordLike("asserts", { - startsExpr - }), - _checks: createKeywordLike("checks", { - startsExpr - }), - _exports: createKeywordLike("exports", { - startsExpr - }), - _global: createKeywordLike("global", { - startsExpr - }), - _implements: createKeywordLike("implements", { - startsExpr - }), - _intrinsic: createKeywordLike("intrinsic", { - startsExpr - }), - _infer: createKeywordLike("infer", { - startsExpr - }), - _is: createKeywordLike("is", { - startsExpr - }), - _mixins: createKeywordLike("mixins", { - startsExpr - }), - _proto: createKeywordLike("proto", { - startsExpr - }), - _require: createKeywordLike("require", { - startsExpr - }), - _satisfies: createKeywordLike("satisfies", { - startsExpr - }), - _keyof: createKeywordLike("keyof", { - startsExpr - }), - _readonly: createKeywordLike("readonly", { - startsExpr - }), - _unique: createKeywordLike("unique", { - startsExpr - }), - _abstract: createKeywordLike("abstract", { - startsExpr - }), - _declare: createKeywordLike("declare", { - startsExpr - }), - _enum: createKeywordLike("enum", { - startsExpr - }), - _module: createKeywordLike("module", { - startsExpr - }), - _namespace: createKeywordLike("namespace", { - startsExpr - }), - _interface: createKeywordLike("interface", { - startsExpr - }), - _type: createKeywordLike("type", { - startsExpr - }), - _opaque: createKeywordLike("opaque", { - startsExpr - }), - name: createToken("name", { - startsExpr - }), - string: createToken("string", { - startsExpr - }), - num: createToken("num", { - startsExpr - }), - bigint: createToken("bigint", { - startsExpr - }), - decimal: createToken("decimal", { - startsExpr - }), - regexp: createToken("regexp", { - startsExpr - }), - privateName: createToken("#name", { - startsExpr - }), - eof: createToken("eof"), - jsxName: createToken("jsxName"), - jsxText: createToken("jsxText", { - beforeExpr: true - }), - jsxTagStart: createToken("jsxTagStart", { - startsExpr: true - }), - jsxTagEnd: createToken("jsxTagEnd"), - placeholder: createToken("%%", { - startsExpr: true - }) -}; -function tokenIsIdentifier(token) { - return token >= 93 && token <= 130; -} -function tokenKeywordOrIdentifierIsKeyword(token) { - return token <= 92; -} -function tokenIsKeywordOrIdentifier(token) { - return token >= 58 && token <= 130; -} -function tokenIsLiteralPropertyName(token) { - return token >= 58 && token <= 134; -} -function tokenComesBeforeExpression(token) { - return tokenBeforeExprs[token]; -} -function tokenCanStartExpression(token) { - return tokenStartsExprs[token]; -} -function tokenIsAssignment(token) { - return token >= 29 && token <= 33; -} -function tokenIsFlowInterfaceOrTypeOrOpaque(token) { - return token >= 127 && token <= 129; -} -function tokenIsLoop(token) { - return token >= 90 && token <= 92; -} -function tokenIsKeyword(token) { - return token >= 58 && token <= 92; -} -function tokenIsOperator(token) { - return token >= 39 && token <= 59; -} -function tokenIsPostfix(token) { - return token === 34; -} -function tokenIsPrefix(token) { - return tokenPrefixes[token]; -} -function tokenIsTSTypeOperator(token) { - return token >= 119 && token <= 121; -} -function tokenIsTSDeclarationStart(token) { - return token >= 122 && token <= 128; -} -function tokenLabelName(token) { - return tokenLabels[token]; -} -function tokenOperatorPrecedence(token) { - return tokenBinops[token]; -} -function tokenIsRightAssociative(token) { - return token === 57; -} -function tokenIsTemplate(token) { - return token >= 24 && token <= 25; -} -function getExportedToken(token) { - return tokenTypes[token]; -} -{ - tokenTypes[8].updateContext = context => { - context.pop(); - }; - tokenTypes[5].updateContext = tokenTypes[7].updateContext = tokenTypes[23].updateContext = context => { - context.push(types.brace); - }; - tokenTypes[22].updateContext = context => { - if (context[context.length - 1] === types.template) { - context.pop(); - } else { - context.push(types.template); - } - }; - tokenTypes[140].updateContext = context => { - context.push(types.j_expr, types.j_oTag); - }; -} - -let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; -let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; -const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); -const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); -nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; -const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 4026, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 757, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938, 6, 4191]; -const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 81, 2, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 9, 5351, 0, 7, 14, 13835, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 983, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; -function isInAstralSet(code, set) { - let pos = 0x10000; - for (let i = 0, length = set.length; i < length; i += 2) { - pos += set[i]; - if (pos > code) return false; - pos += set[i + 1]; - if (pos >= code) return true; - } - return false; -} -function isIdentifierStart(code) { - if (code < 65) return code === 36; - if (code <= 90) return true; - if (code < 97) return code === 95; - if (code <= 122) return true; - if (code <= 0xffff) { - return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)); - } - return isInAstralSet(code, astralIdentifierStartCodes); -} -function isIdentifierChar(code) { - if (code < 48) return code === 36; - if (code < 58) return true; - if (code < 65) return false; - if (code <= 90) return true; - if (code < 97) return code === 95; - if (code <= 122) return true; - if (code <= 0xffff) { - return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); - } - return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); -} - -const reservedWords = { - keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], - strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], - strictBind: ["eval", "arguments"] -}; -const keywords = new Set(reservedWords.keyword); -const reservedWordsStrictSet = new Set(reservedWords.strict); -const reservedWordsStrictBindSet = new Set(reservedWords.strictBind); -function isReservedWord(word, inModule) { - return inModule && word === "await" || word === "enum"; -} -function isStrictReservedWord(word, inModule) { - return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word); -} -function isStrictBindOnlyReservedWord(word) { - return reservedWordsStrictBindSet.has(word); -} -function isStrictBindReservedWord(word, inModule) { - return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word); -} -function isKeyword(word) { - return keywords.has(word); -} - -function isIteratorStart(current, next, next2) { - return current === 64 && next === 64 && isIdentifierStart(next2); -} -const reservedWordLikeSet = new Set(["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete", "implements", "interface", "let", "package", "private", "protected", "public", "static", "yield", "eval", "arguments", "enum", "await"]); -function canBeReservedWord(word) { - return reservedWordLikeSet.has(word); -} - -const SCOPE_OTHER = 0b000000000, - SCOPE_PROGRAM = 0b000000001, - SCOPE_FUNCTION = 0b000000010, - SCOPE_ARROW = 0b000000100, - SCOPE_SIMPLE_CATCH = 0b000001000, - SCOPE_SUPER = 0b000010000, - SCOPE_DIRECT_SUPER = 0b000100000, - SCOPE_CLASS = 0b001000000, - SCOPE_STATIC_BLOCK = 0b010000000, - SCOPE_TS_MODULE = 0b100000000, - SCOPE_VAR = SCOPE_PROGRAM | SCOPE_FUNCTION | SCOPE_STATIC_BLOCK | SCOPE_TS_MODULE; -const BIND_KIND_VALUE = 0b0000000000001, - BIND_KIND_TYPE = 0b0000000000010, - BIND_SCOPE_VAR = 0b0000000000100, - BIND_SCOPE_LEXICAL = 0b0000000001000, - BIND_SCOPE_FUNCTION = 0b0000000010000, - BIND_FLAGS_NONE = 0b00000001000000, - BIND_FLAGS_CLASS = 0b00000010000000, - BIND_FLAGS_TS_ENUM = 0b00000100000000, - BIND_FLAGS_TS_CONST_ENUM = 0b00001000000000, - BIND_FLAGS_TS_EXPORT_ONLY = 0b00010000000000, - BIND_FLAGS_FLOW_DECLARE_FN = 0b00100000000000, - BIND_FLAGS_TS_IMPORT = 0b01000000000000, - BIND_FLAGS_NO_LET_IN_LEXICAL = 0b10000000000000; -const BIND_CLASS = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_CLASS | BIND_FLAGS_NO_LET_IN_LEXICAL, - BIND_LEXICAL = BIND_KIND_VALUE | 0 | BIND_SCOPE_LEXICAL | BIND_FLAGS_NO_LET_IN_LEXICAL, - BIND_CATCH_PARAM = BIND_KIND_VALUE | 0 | BIND_SCOPE_LEXICAL | 0, - BIND_VAR = BIND_KIND_VALUE | 0 | BIND_SCOPE_VAR | 0, - BIND_FUNCTION = BIND_KIND_VALUE | 0 | BIND_SCOPE_FUNCTION | 0, - BIND_TS_INTERFACE = 0 | BIND_KIND_TYPE | 0 | BIND_FLAGS_CLASS, - BIND_TS_TYPE = 0 | BIND_KIND_TYPE | 0 | 0, - BIND_TS_ENUM = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_TS_ENUM | BIND_FLAGS_NO_LET_IN_LEXICAL, - BIND_TS_AMBIENT = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY, - BIND_NONE = 0 | 0 | 0 | BIND_FLAGS_NONE, - BIND_OUTSIDE = BIND_KIND_VALUE | 0 | 0 | BIND_FLAGS_NONE, - BIND_TS_CONST_ENUM = BIND_TS_ENUM | BIND_FLAGS_TS_CONST_ENUM, - BIND_TS_NAMESPACE = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY, - BIND_TS_TYPE_IMPORT = 0 | BIND_KIND_TYPE | 0 | BIND_FLAGS_TS_IMPORT, - BIND_FLOW_DECLARE_FN = BIND_FLAGS_FLOW_DECLARE_FN; -const CLASS_ELEMENT_FLAG_STATIC = 0b100, - CLASS_ELEMENT_KIND_GETTER = 0b010, - CLASS_ELEMENT_KIND_SETTER = 0b001, - CLASS_ELEMENT_KIND_ACCESSOR = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_KIND_SETTER; -const CLASS_ELEMENT_STATIC_GETTER = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_FLAG_STATIC, - CLASS_ELEMENT_STATIC_SETTER = CLASS_ELEMENT_KIND_SETTER | CLASS_ELEMENT_FLAG_STATIC, - CLASS_ELEMENT_INSTANCE_GETTER = CLASS_ELEMENT_KIND_GETTER, - CLASS_ELEMENT_INSTANCE_SETTER = CLASS_ELEMENT_KIND_SETTER, - CLASS_ELEMENT_OTHER = 0; - -class Scope { - constructor(flags) { - this.var = new Set(); - this.lexical = new Set(); - this.functions = new Set(); - this.flags = flags; - } -} -class ScopeHandler { - constructor(parser, inModule) { - this.parser = void 0; - this.scopeStack = []; - this.inModule = void 0; - this.undefinedExports = new Map(); - this.parser = parser; - this.inModule = inModule; - } - get inTopLevel() { - return (this.currentScope().flags & SCOPE_PROGRAM) > 0; - } - get inFunction() { - return (this.currentVarScopeFlags() & SCOPE_FUNCTION) > 0; - } - get allowSuper() { - return (this.currentThisScopeFlags() & SCOPE_SUPER) > 0; - } - get allowDirectSuper() { - return (this.currentThisScopeFlags() & SCOPE_DIRECT_SUPER) > 0; - } - get inClass() { - return (this.currentThisScopeFlags() & SCOPE_CLASS) > 0; - } - get inClassAndNotInNonArrowFunction() { - const flags = this.currentThisScopeFlags(); - return (flags & SCOPE_CLASS) > 0 && (flags & SCOPE_FUNCTION) === 0; - } - get inStaticBlock() { - for (let i = this.scopeStack.length - 1;; i--) { - const { - flags - } = this.scopeStack[i]; - if (flags & SCOPE_STATIC_BLOCK) { - return true; - } - if (flags & (SCOPE_VAR | SCOPE_CLASS)) { - return false; - } - } - } - get inNonArrowFunction() { - return (this.currentThisScopeFlags() & SCOPE_FUNCTION) > 0; - } - get treatFunctionsAsVar() { - return this.treatFunctionsAsVarInScope(this.currentScope()); - } - createScope(flags) { - return new Scope(flags); - } - enter(flags) { - this.scopeStack.push(this.createScope(flags)); - } - exit() { - const scope = this.scopeStack.pop(); - return scope.flags; - } - treatFunctionsAsVarInScope(scope) { - return !!(scope.flags & (SCOPE_FUNCTION | SCOPE_STATIC_BLOCK) || !this.parser.inModule && scope.flags & SCOPE_PROGRAM); - } - declareName(name, bindingType, loc) { - let scope = this.currentScope(); - if (bindingType & BIND_SCOPE_LEXICAL || bindingType & BIND_SCOPE_FUNCTION) { - this.checkRedeclarationInScope(scope, name, bindingType, loc); - if (bindingType & BIND_SCOPE_FUNCTION) { - scope.functions.add(name); - } else { - scope.lexical.add(name); - } - if (bindingType & BIND_SCOPE_LEXICAL) { - this.maybeExportDefined(scope, name); - } - } else if (bindingType & BIND_SCOPE_VAR) { - for (let i = this.scopeStack.length - 1; i >= 0; --i) { - scope = this.scopeStack[i]; - this.checkRedeclarationInScope(scope, name, bindingType, loc); - scope.var.add(name); - this.maybeExportDefined(scope, name); - if (scope.flags & SCOPE_VAR) break; - } - } - if (this.parser.inModule && scope.flags & SCOPE_PROGRAM) { - this.undefinedExports.delete(name); - } - } - maybeExportDefined(scope, name) { - if (this.parser.inModule && scope.flags & SCOPE_PROGRAM) { - this.undefinedExports.delete(name); - } - } - checkRedeclarationInScope(scope, name, bindingType, loc) { - if (this.isRedeclaredInScope(scope, name, bindingType)) { - this.parser.raise(Errors.VarRedeclaration, { - at: loc, - identifierName: name - }); - } - } - isRedeclaredInScope(scope, name, bindingType) { - if (!(bindingType & BIND_KIND_VALUE)) return false; - if (bindingType & BIND_SCOPE_LEXICAL) { - return scope.lexical.has(name) || scope.functions.has(name) || scope.var.has(name); - } - if (bindingType & BIND_SCOPE_FUNCTION) { - return scope.lexical.has(name) || !this.treatFunctionsAsVarInScope(scope) && scope.var.has(name); - } - return scope.lexical.has(name) && !(scope.flags & SCOPE_SIMPLE_CATCH && scope.lexical.values().next().value === name) || !this.treatFunctionsAsVarInScope(scope) && scope.functions.has(name); - } - checkLocalExport(id) { - const { - name - } = id; - const topLevelScope = this.scopeStack[0]; - if (!topLevelScope.lexical.has(name) && !topLevelScope.var.has(name) && !topLevelScope.functions.has(name)) { - this.undefinedExports.set(name, id.loc.start); - } - } - currentScope() { - return this.scopeStack[this.scopeStack.length - 1]; - } - currentVarScopeFlags() { - for (let i = this.scopeStack.length - 1;; i--) { - const { - flags - } = this.scopeStack[i]; - if (flags & SCOPE_VAR) { - return flags; - } - } - } - currentThisScopeFlags() { - for (let i = this.scopeStack.length - 1;; i--) { - const { - flags - } = this.scopeStack[i]; - if (flags & (SCOPE_VAR | SCOPE_CLASS) && !(flags & SCOPE_ARROW)) { - return flags; - } - } - } -} - -class FlowScope extends Scope { - constructor(...args) { - super(...args); - this.declareFunctions = new Set(); - } -} -class FlowScopeHandler extends ScopeHandler { - createScope(flags) { - return new FlowScope(flags); - } - declareName(name, bindingType, loc) { - const scope = this.currentScope(); - if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) { - this.checkRedeclarationInScope(scope, name, bindingType, loc); - this.maybeExportDefined(scope, name); - scope.declareFunctions.add(name); - return; - } - super.declareName(name, bindingType, loc); - } - isRedeclaredInScope(scope, name, bindingType) { - if (super.isRedeclaredInScope(scope, name, bindingType)) return true; - if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) { - return !scope.declareFunctions.has(name) && (scope.lexical.has(name) || scope.functions.has(name)); - } - return false; - } - checkLocalExport(id) { - if (!this.scopeStack[0].declareFunctions.has(id.name)) { - super.checkLocalExport(id); - } - } -} - -class BaseParser { - constructor() { - this.sawUnambiguousESM = false; - this.ambiguousScriptDifferentAst = false; - } - hasPlugin(pluginConfig) { - if (typeof pluginConfig === "string") { - return this.plugins.has(pluginConfig); - } else { - const [pluginName, pluginOptions] = pluginConfig; - if (!this.hasPlugin(pluginName)) { - return false; - } - const actualOptions = this.plugins.get(pluginName); - for (const key of Object.keys(pluginOptions)) { - if ((actualOptions == null ? void 0 : actualOptions[key]) !== pluginOptions[key]) { - return false; - } - } - return true; - } - } - getPluginOption(plugin, name) { - var _this$plugins$get; - return (_this$plugins$get = this.plugins.get(plugin)) == null ? void 0 : _this$plugins$get[name]; - } -} - -function setTrailingComments(node, comments) { - if (node.trailingComments === undefined) { - node.trailingComments = comments; - } else { - node.trailingComments.unshift(...comments); - } -} -function setLeadingComments(node, comments) { - if (node.leadingComments === undefined) { - node.leadingComments = comments; - } else { - node.leadingComments.unshift(...comments); - } -} -function setInnerComments(node, comments) { - if (node.innerComments === undefined) { - node.innerComments = comments; - } else { - node.innerComments.unshift(...comments); - } -} -function adjustInnerComments(node, elements, commentWS) { - let lastElement = null; - let i = elements.length; - while (lastElement === null && i > 0) { - lastElement = elements[--i]; - } - if (lastElement === null || lastElement.start > commentWS.start) { - setInnerComments(node, commentWS.comments); - } else { - setTrailingComments(lastElement, commentWS.comments); - } -} -class CommentsParser extends BaseParser { - addComment(comment) { - if (this.filename) comment.loc.filename = this.filename; - this.state.comments.push(comment); - } - processComment(node) { - const { - commentStack - } = this.state; - const commentStackLength = commentStack.length; - if (commentStackLength === 0) return; - let i = commentStackLength - 1; - const lastCommentWS = commentStack[i]; - if (lastCommentWS.start === node.end) { - lastCommentWS.leadingNode = node; - i--; - } - const { - start: nodeStart - } = node; - for (; i >= 0; i--) { - const commentWS = commentStack[i]; - const commentEnd = commentWS.end; - if (commentEnd > nodeStart) { - commentWS.containingNode = node; - this.finalizeComment(commentWS); - commentStack.splice(i, 1); - } else { - if (commentEnd === nodeStart) { - commentWS.trailingNode = node; - } - break; - } - } - } - finalizeComment(commentWS) { - const { - comments - } = commentWS; - if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) { - if (commentWS.leadingNode !== null) { - setTrailingComments(commentWS.leadingNode, comments); - } - if (commentWS.trailingNode !== null) { - setLeadingComments(commentWS.trailingNode, comments); - } - } else { - const { - containingNode: node, - start: commentStart - } = commentWS; - if (this.input.charCodeAt(commentStart - 1) === 44) { - switch (node.type) { - case "ObjectExpression": - case "ObjectPattern": - case "RecordExpression": - adjustInnerComments(node, node.properties, commentWS); - break; - case "CallExpression": - case "OptionalCallExpression": - adjustInnerComments(node, node.arguments, commentWS); - break; - case "FunctionDeclaration": - case "FunctionExpression": - case "ArrowFunctionExpression": - case "ObjectMethod": - case "ClassMethod": - case "ClassPrivateMethod": - adjustInnerComments(node, node.params, commentWS); - break; - case "ArrayExpression": - case "ArrayPattern": - case "TupleExpression": - adjustInnerComments(node, node.elements, commentWS); - break; - case "ExportNamedDeclaration": - case "ImportDeclaration": - adjustInnerComments(node, node.specifiers, commentWS); - break; - default: - { - setInnerComments(node, comments); - } - } - } else { - setInnerComments(node, comments); - } - } - } - finalizeRemainingComments() { - const { - commentStack - } = this.state; - for (let i = commentStack.length - 1; i >= 0; i--) { - this.finalizeComment(commentStack[i]); - } - this.state.commentStack = []; - } - resetPreviousNodeTrailingComments(node) { - const { - commentStack - } = this.state; - const { - length - } = commentStack; - if (length === 0) return; - const commentWS = commentStack[length - 1]; - if (commentWS.leadingNode === node) { - commentWS.leadingNode = null; - } - } - takeSurroundingComments(node, start, end) { - const { - commentStack - } = this.state; - const commentStackLength = commentStack.length; - if (commentStackLength === 0) return; - let i = commentStackLength - 1; - for (; i >= 0; i--) { - const commentWS = commentStack[i]; - const commentEnd = commentWS.end; - const commentStart = commentWS.start; - if (commentStart === end) { - commentWS.leadingNode = node; - } else if (commentEnd === start) { - commentWS.trailingNode = node; - } else if (commentEnd < start) { - break; - } - } - } -} - -const lineBreak = /\r\n?|[\n\u2028\u2029]/; -const lineBreakG = new RegExp(lineBreak.source, "g"); -function isNewLine(code) { - switch (code) { - case 10: - case 13: - case 8232: - case 8233: - return true; - default: - return false; - } -} -const skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g; -const skipWhiteSpaceInLine = /(?:[^\S\n\r\u2028\u2029]|\/\/.*|\/\*.*?\*\/)*/y; -const skipWhiteSpaceToLineBreak = new RegExp("(?=(" + skipWhiteSpaceInLine.source + "))\\1" + /(?=[\n\r\u2028\u2029]|\/\*(?!.*?\*\/)|$)/.source, "y"); -function isWhitespace(code) { - switch (code) { - case 0x0009: - case 0x000b: - case 0x000c: - case 32: - case 160: - case 5760: - case 0x2000: - case 0x2001: - case 0x2002: - case 0x2003: - case 0x2004: - case 0x2005: - case 0x2006: - case 0x2007: - case 0x2008: - case 0x2009: - case 0x200a: - case 0x202f: - case 0x205f: - case 0x3000: - case 0xfeff: - return true; - default: - return false; - } -} - -class State { - constructor() { - this.strict = void 0; - this.curLine = void 0; - this.lineStart = void 0; - this.startLoc = void 0; - this.endLoc = void 0; - this.errors = []; - this.potentialArrowAt = -1; - this.noArrowAt = []; - this.noArrowParamsConversionAt = []; - this.maybeInArrowParameters = false; - this.inType = false; - this.noAnonFunctionType = false; - this.hasFlowComment = false; - this.isAmbientContext = false; - this.inAbstractClass = false; - this.inDisallowConditionalTypesContext = false; - this.topicContext = { - maxNumOfResolvableTopics: 0, - maxTopicIndex: null - }; - this.soloAwait = false; - this.inFSharpPipelineDirectBody = false; - this.labels = []; - this.comments = []; - this.commentStack = []; - this.pos = 0; - this.type = 137; - this.value = null; - this.start = 0; - this.end = 0; - this.lastTokEndLoc = null; - this.lastTokStartLoc = null; - this.lastTokStart = 0; - this.context = [types.brace]; - this.canStartJSXElement = true; - this.containsEsc = false; - this.firstInvalidTemplateEscapePos = null; - this.strictErrors = new Map(); - this.tokensLength = 0; - } - init({ - strictMode, - sourceType, - startLine, - startColumn - }) { - this.strict = strictMode === false ? false : strictMode === true ? true : sourceType === "module"; - this.curLine = startLine; - this.lineStart = -startColumn; - this.startLoc = this.endLoc = new Position(startLine, startColumn, 0); - } - curPosition() { - return new Position(this.curLine, this.pos - this.lineStart, this.pos); - } - clone(skipArrays) { - const state = new State(); - const keys = Object.keys(this); - for (let i = 0, length = keys.length; i < length; i++) { - const key = keys[i]; - let val = this[key]; - if (!skipArrays && Array.isArray(val)) { - val = val.slice(); - } - state[key] = val; - } - return state; - } -} - -var _isDigit = function isDigit(code) { - return code >= 48 && code <= 57; -}; -const forbiddenNumericSeparatorSiblings = { - decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]), - hex: new Set([46, 88, 95, 120]) -}; -const isAllowedNumericSeparatorSibling = { - bin: ch => ch === 48 || ch === 49, - oct: ch => ch >= 48 && ch <= 55, - dec: ch => ch >= 48 && ch <= 57, - hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102 -}; -function readStringContents(type, input, pos, lineStart, curLine, errors) { - const initialPos = pos; - const initialLineStart = lineStart; - const initialCurLine = curLine; - let out = ""; - let firstInvalidLoc = null; - let chunkStart = pos; - const { - length - } = input; - for (;;) { - if (pos >= length) { - errors.unterminated(initialPos, initialLineStart, initialCurLine); - out += input.slice(chunkStart, pos); - break; - } - const ch = input.charCodeAt(pos); - if (isStringEnd(type, ch, input, pos)) { - out += input.slice(chunkStart, pos); - break; - } - if (ch === 92) { - out += input.slice(chunkStart, pos); - const res = readEscapedChar(input, pos, lineStart, curLine, type === "template", errors); - if (res.ch === null && !firstInvalidLoc) { - firstInvalidLoc = { - pos, - lineStart, - curLine - }; - } else { - out += res.ch; - } - ({ - pos, - lineStart, - curLine - } = res); - chunkStart = pos; - } else if (ch === 8232 || ch === 8233) { - ++pos; - ++curLine; - lineStart = pos; - } else if (ch === 10 || ch === 13) { - if (type === "template") { - out += input.slice(chunkStart, pos) + "\n"; - ++pos; - if (ch === 13 && input.charCodeAt(pos) === 10) { - ++pos; - } - ++curLine; - chunkStart = lineStart = pos; - } else { - errors.unterminated(initialPos, initialLineStart, initialCurLine); - } - } else { - ++pos; - } - } - return { - pos, - str: out, - firstInvalidLoc, - lineStart, - curLine, - containsInvalid: !!firstInvalidLoc - }; -} -function isStringEnd(type, ch, input, pos) { - if (type === "template") { - return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123; - } - return ch === (type === "double" ? 34 : 39); -} -function readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) { - const throwOnInvalid = !inTemplate; - pos++; - const res = ch => ({ - pos, - ch, - lineStart, - curLine - }); - const ch = input.charCodeAt(pos++); - switch (ch) { - case 110: - return res("\n"); - case 114: - return res("\r"); - case 120: - { - let code; - ({ - code, - pos - } = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors)); - return res(code === null ? null : String.fromCharCode(code)); - } - case 117: - { - let code; - ({ - code, - pos - } = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors)); - return res(code === null ? null : String.fromCodePoint(code)); - } - case 116: - return res("\t"); - case 98: - return res("\b"); - case 118: - return res("\u000b"); - case 102: - return res("\f"); - case 13: - if (input.charCodeAt(pos) === 10) { - ++pos; - } - case 10: - lineStart = pos; - ++curLine; - case 8232: - case 8233: - return res(""); - case 56: - case 57: - if (inTemplate) { - return res(null); - } else { - errors.strictNumericEscape(pos - 1, lineStart, curLine); - } - default: - if (ch >= 48 && ch <= 55) { - const startPos = pos - 1; - const match = input.slice(startPos, pos + 2).match(/^[0-7]+/); - let octalStr = match[0]; - let octal = parseInt(octalStr, 8); - if (octal > 255) { - octalStr = octalStr.slice(0, -1); - octal = parseInt(octalStr, 8); - } - pos += octalStr.length - 1; - const next = input.charCodeAt(pos); - if (octalStr !== "0" || next === 56 || next === 57) { - if (inTemplate) { - return res(null); - } else { - errors.strictNumericEscape(startPos, lineStart, curLine); - } - } - return res(String.fromCharCode(octal)); - } - return res(String.fromCharCode(ch)); - } -} -function readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) { - const initialPos = pos; - let n; - ({ - n, - pos - } = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid)); - if (n === null) { - if (throwOnInvalid) { - errors.invalidEscapeSequence(initialPos, lineStart, curLine); - } else { - pos = initialPos - 1; - } - } - return { - code: n, - pos - }; -} -function readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) { - const start = pos; - const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct; - const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin; - let invalid = false; - let total = 0; - for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) { - const code = input.charCodeAt(pos); - let val; - if (code === 95 && allowNumSeparator !== "bail") { - const prev = input.charCodeAt(pos - 1); - const next = input.charCodeAt(pos + 1); - if (!allowNumSeparator) { - if (bailOnError) return { - n: null, - pos - }; - errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine); - } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) { - if (bailOnError) return { - n: null, - pos - }; - errors.unexpectedNumericSeparator(pos, lineStart, curLine); - } - ++pos; - continue; - } - if (code >= 97) { - val = code - 97 + 10; - } else if (code >= 65) { - val = code - 65 + 10; - } else if (_isDigit(code)) { - val = code - 48; - } else { - val = Infinity; - } - if (val >= radix) { - if (val <= 9 && bailOnError) { - return { - n: null, - pos - }; - } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) { - val = 0; - } else if (forceLen) { - val = 0; - invalid = true; - } else { - break; - } - } - ++pos; - total = total * radix + val; - } - if (pos === start || len != null && pos - start !== len || invalid) { - return { - n: null, - pos - }; - } - return { - n: total, - pos - }; -} -function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) { - const ch = input.charCodeAt(pos); - let code; - if (ch === 123) { - ++pos; - ({ - code, - pos - } = readHexChar(input, pos, lineStart, curLine, input.indexOf("}", pos) - pos, true, throwOnInvalid, errors)); - ++pos; - if (code !== null && code > 0x10ffff) { - if (throwOnInvalid) { - errors.invalidCodePoint(pos, lineStart, curLine); - } else { - return { - code: null, - pos - }; - } - } - } else { - ({ - code, - pos - } = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors)); - } - return { - code, - pos - }; -} - -const _excluded = ["at"], - _excluded2 = ["at"]; -function buildPosition(pos, lineStart, curLine) { - return new Position(curLine, pos - lineStart, pos); -} -const VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100, 118]); -class Token { - constructor(state) { - this.type = state.type; - this.value = state.value; - this.start = state.start; - this.end = state.end; - this.loc = new SourceLocation(state.startLoc, state.endLoc); - } -} -class Tokenizer extends CommentsParser { - constructor(options, input) { - super(); - this.isLookahead = void 0; - this.tokens = []; - this.errorHandlers_readInt = { - invalidDigit: (pos, lineStart, curLine, radix) => { - if (!this.options.errorRecovery) return false; - this.raise(Errors.InvalidDigit, { - at: buildPosition(pos, lineStart, curLine), - radix - }); - return true; - }, - numericSeparatorInEscapeSequence: this.errorBuilder(Errors.NumericSeparatorInEscapeSequence), - unexpectedNumericSeparator: this.errorBuilder(Errors.UnexpectedNumericSeparator) - }; - this.errorHandlers_readCodePoint = Object.assign({}, this.errorHandlers_readInt, { - invalidEscapeSequence: this.errorBuilder(Errors.InvalidEscapeSequence), - invalidCodePoint: this.errorBuilder(Errors.InvalidCodePoint) - }); - this.errorHandlers_readStringContents_string = Object.assign({}, this.errorHandlers_readCodePoint, { - strictNumericEscape: (pos, lineStart, curLine) => { - this.recordStrictModeErrors(Errors.StrictNumericEscape, { - at: buildPosition(pos, lineStart, curLine) - }); - }, - unterminated: (pos, lineStart, curLine) => { - throw this.raise(Errors.UnterminatedString, { - at: buildPosition(pos - 1, lineStart, curLine) - }); - } - }); - this.errorHandlers_readStringContents_template = Object.assign({}, this.errorHandlers_readCodePoint, { - strictNumericEscape: this.errorBuilder(Errors.StrictNumericEscape), - unterminated: (pos, lineStart, curLine) => { - throw this.raise(Errors.UnterminatedTemplate, { - at: buildPosition(pos, lineStart, curLine) - }); - } - }); - this.state = new State(); - this.state.init(options); - this.input = input; - this.length = input.length; - this.isLookahead = false; - } - pushToken(token) { - this.tokens.length = this.state.tokensLength; - this.tokens.push(token); - ++this.state.tokensLength; - } - next() { - this.checkKeywordEscapes(); - if (this.options.tokens) { - this.pushToken(new Token(this.state)); - } - this.state.lastTokStart = this.state.start; - this.state.lastTokEndLoc = this.state.endLoc; - this.state.lastTokStartLoc = this.state.startLoc; - this.nextToken(); - } - eat(type) { - if (this.match(type)) { - this.next(); - return true; - } else { - return false; - } - } - match(type) { - return this.state.type === type; - } - createLookaheadState(state) { - return { - pos: state.pos, - value: null, - type: state.type, - start: state.start, - end: state.end, - context: [this.curContext()], - inType: state.inType, - startLoc: state.startLoc, - lastTokEndLoc: state.lastTokEndLoc, - curLine: state.curLine, - lineStart: state.lineStart, - curPosition: state.curPosition - }; - } - lookahead() { - const old = this.state; - this.state = this.createLookaheadState(old); - this.isLookahead = true; - this.nextToken(); - this.isLookahead = false; - const curr = this.state; - this.state = old; - return curr; - } - nextTokenStart() { - return this.nextTokenStartSince(this.state.pos); - } - nextTokenStartSince(pos) { - skipWhiteSpace.lastIndex = pos; - return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos; - } - lookaheadCharCode() { - return this.input.charCodeAt(this.nextTokenStart()); - } - codePointAtPos(pos) { - let cp = this.input.charCodeAt(pos); - if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) { - const trail = this.input.charCodeAt(pos); - if ((trail & 0xfc00) === 0xdc00) { - cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff); - } - } - return cp; - } - setStrict(strict) { - this.state.strict = strict; - if (strict) { - this.state.strictErrors.forEach(([toParseError, at]) => this.raise(toParseError, { - at - })); - this.state.strictErrors.clear(); - } - } - curContext() { - return this.state.context[this.state.context.length - 1]; - } - nextToken() { - this.skipSpace(); - this.state.start = this.state.pos; - if (!this.isLookahead) this.state.startLoc = this.state.curPosition(); - if (this.state.pos >= this.length) { - this.finishToken(137); - return; - } - this.getTokenFromCode(this.codePointAtPos(this.state.pos)); - } - skipBlockComment(commentEnd) { - let startLoc; - if (!this.isLookahead) startLoc = this.state.curPosition(); - const start = this.state.pos; - const end = this.input.indexOf(commentEnd, start + 2); - if (end === -1) { - throw this.raise(Errors.UnterminatedComment, { - at: this.state.curPosition() - }); - } - this.state.pos = end + commentEnd.length; - lineBreakG.lastIndex = start + 2; - while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) { - ++this.state.curLine; - this.state.lineStart = lineBreakG.lastIndex; - } - if (this.isLookahead) return; - const comment = { - type: "CommentBlock", - value: this.input.slice(start + 2, end), - start, - end: end + commentEnd.length, - loc: new SourceLocation(startLoc, this.state.curPosition()) - }; - if (this.options.tokens) this.pushToken(comment); - return comment; - } - skipLineComment(startSkip) { - const start = this.state.pos; - let startLoc; - if (!this.isLookahead) startLoc = this.state.curPosition(); - let ch = this.input.charCodeAt(this.state.pos += startSkip); - if (this.state.pos < this.length) { - while (!isNewLine(ch) && ++this.state.pos < this.length) { - ch = this.input.charCodeAt(this.state.pos); - } - } - if (this.isLookahead) return; - const end = this.state.pos; - const value = this.input.slice(start + startSkip, end); - const comment = { - type: "CommentLine", - value, - start, - end, - loc: new SourceLocation(startLoc, this.state.curPosition()) - }; - if (this.options.tokens) this.pushToken(comment); - return comment; - } - skipSpace() { - const spaceStart = this.state.pos; - const comments = []; - loop: while (this.state.pos < this.length) { - const ch = this.input.charCodeAt(this.state.pos); - switch (ch) { - case 32: - case 160: - case 9: - ++this.state.pos; - break; - case 13: - if (this.input.charCodeAt(this.state.pos + 1) === 10) { - ++this.state.pos; - } - case 10: - case 8232: - case 8233: - ++this.state.pos; - ++this.state.curLine; - this.state.lineStart = this.state.pos; - break; - case 47: - switch (this.input.charCodeAt(this.state.pos + 1)) { - case 42: - { - const comment = this.skipBlockComment("*/"); - if (comment !== undefined) { - this.addComment(comment); - if (this.options.attachComment) comments.push(comment); - } - break; - } - case 47: - { - const comment = this.skipLineComment(2); - if (comment !== undefined) { - this.addComment(comment); - if (this.options.attachComment) comments.push(comment); - } - break; - } - default: - break loop; - } - break; - default: - if (isWhitespace(ch)) { - ++this.state.pos; - } else if (ch === 45 && !this.inModule) { - const pos = this.state.pos; - if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) { - const comment = this.skipLineComment(3); - if (comment !== undefined) { - this.addComment(comment); - if (this.options.attachComment) comments.push(comment); - } - } else { - break loop; - } - } else if (ch === 60 && !this.inModule) { - const pos = this.state.pos; - if (this.input.charCodeAt(pos + 1) === 33 && this.input.charCodeAt(pos + 2) === 45 && this.input.charCodeAt(pos + 3) === 45) { - const comment = this.skipLineComment(4); - if (comment !== undefined) { - this.addComment(comment); - if (this.options.attachComment) comments.push(comment); - } - } else { - break loop; - } - } else { - break loop; - } - } - } - if (comments.length > 0) { - const end = this.state.pos; - const commentWhitespace = { - start: spaceStart, - end, - comments, - leadingNode: null, - trailingNode: null, - containingNode: null - }; - this.state.commentStack.push(commentWhitespace); - } - } - finishToken(type, val) { - this.state.end = this.state.pos; - this.state.endLoc = this.state.curPosition(); - const prevType = this.state.type; - this.state.type = type; - this.state.value = val; - if (!this.isLookahead) { - this.updateContext(prevType); - } - } - replaceToken(type) { - this.state.type = type; - this.updateContext(); - } - readToken_numberSign() { - if (this.state.pos === 0 && this.readToken_interpreter()) { - return; - } - const nextPos = this.state.pos + 1; - const next = this.codePointAtPos(nextPos); - if (next >= 48 && next <= 57) { - throw this.raise(Errors.UnexpectedDigitAfterHash, { - at: this.state.curPosition() - }); - } - if (next === 123 || next === 91 && this.hasPlugin("recordAndTuple")) { - this.expectPlugin("recordAndTuple"); - if (this.getPluginOption("recordAndTuple", "syntaxType") === "bar") { - throw this.raise(next === 123 ? Errors.RecordExpressionHashIncorrectStartSyntaxType : Errors.TupleExpressionHashIncorrectStartSyntaxType, { - at: this.state.curPosition() - }); - } - this.state.pos += 2; - if (next === 123) { - this.finishToken(7); - } else { - this.finishToken(1); - } - } else if (isIdentifierStart(next)) { - ++this.state.pos; - this.finishToken(136, this.readWord1(next)); - } else if (next === 92) { - ++this.state.pos; - this.finishToken(136, this.readWord1()); - } else { - this.finishOp(27, 1); - } - } - readToken_dot() { - const next = this.input.charCodeAt(this.state.pos + 1); - if (next >= 48 && next <= 57) { - this.readNumber(true); - return; - } - if (next === 46 && this.input.charCodeAt(this.state.pos + 2) === 46) { - this.state.pos += 3; - this.finishToken(21); - } else { - ++this.state.pos; - this.finishToken(16); - } - } - readToken_slash() { - const next = this.input.charCodeAt(this.state.pos + 1); - if (next === 61) { - this.finishOp(31, 2); - } else { - this.finishOp(56, 1); - } - } - readToken_interpreter() { - if (this.state.pos !== 0 || this.length < 2) return false; - let ch = this.input.charCodeAt(this.state.pos + 1); - if (ch !== 33) return false; - const start = this.state.pos; - this.state.pos += 1; - while (!isNewLine(ch) && ++this.state.pos < this.length) { - ch = this.input.charCodeAt(this.state.pos); - } - const value = this.input.slice(start + 2, this.state.pos); - this.finishToken(28, value); - return true; - } - readToken_mult_modulo(code) { - let type = code === 42 ? 55 : 54; - let width = 1; - let next = this.input.charCodeAt(this.state.pos + 1); - if (code === 42 && next === 42) { - width++; - next = this.input.charCodeAt(this.state.pos + 2); - type = 57; - } - if (next === 61 && !this.state.inType) { - width++; - type = code === 37 ? 33 : 30; - } - this.finishOp(type, width); - } - readToken_pipe_amp(code) { - const next = this.input.charCodeAt(this.state.pos + 1); - if (next === code) { - if (this.input.charCodeAt(this.state.pos + 2) === 61) { - this.finishOp(30, 3); - } else { - this.finishOp(code === 124 ? 41 : 42, 2); - } - return; - } - if (code === 124) { - if (next === 62) { - this.finishOp(39, 2); - return; - } - if (this.hasPlugin("recordAndTuple") && next === 125) { - if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { - throw this.raise(Errors.RecordExpressionBarIncorrectEndSyntaxType, { - at: this.state.curPosition() - }); - } - this.state.pos += 2; - this.finishToken(9); - return; - } - if (this.hasPlugin("recordAndTuple") && next === 93) { - if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { - throw this.raise(Errors.TupleExpressionBarIncorrectEndSyntaxType, { - at: this.state.curPosition() - }); - } - this.state.pos += 2; - this.finishToken(4); - return; - } - } - if (next === 61) { - this.finishOp(30, 2); - return; - } - this.finishOp(code === 124 ? 43 : 45, 1); - } - readToken_caret() { - const next = this.input.charCodeAt(this.state.pos + 1); - if (next === 61 && !this.state.inType) { - this.finishOp(32, 2); - } else if (next === 94 && this.hasPlugin(["pipelineOperator", { - proposal: "hack", - topicToken: "^^" - }])) { - this.finishOp(37, 2); - const lookaheadCh = this.input.codePointAt(this.state.pos); - if (lookaheadCh === 94) { - throw this.unexpected(); - } - } else { - this.finishOp(44, 1); - } - } - readToken_atSign() { - const next = this.input.charCodeAt(this.state.pos + 1); - if (next === 64 && this.hasPlugin(["pipelineOperator", { - proposal: "hack", - topicToken: "@@" - }])) { - this.finishOp(38, 2); - } else { - this.finishOp(26, 1); - } - } - readToken_plus_min(code) { - const next = this.input.charCodeAt(this.state.pos + 1); - if (next === code) { - this.finishOp(34, 2); - return; - } - if (next === 61) { - this.finishOp(30, 2); - } else { - this.finishOp(53, 1); - } - } - readToken_lt() { - const { - pos - } = this.state; - const next = this.input.charCodeAt(pos + 1); - if (next === 60) { - if (this.input.charCodeAt(pos + 2) === 61) { - this.finishOp(30, 3); - return; - } - this.finishOp(51, 2); - return; - } - if (next === 61) { - this.finishOp(49, 2); - return; - } - this.finishOp(47, 1); - } - readToken_gt() { - const { - pos - } = this.state; - const next = this.input.charCodeAt(pos + 1); - if (next === 62) { - const size = this.input.charCodeAt(pos + 2) === 62 ? 3 : 2; - if (this.input.charCodeAt(pos + size) === 61) { - this.finishOp(30, size + 1); - return; - } - this.finishOp(52, size); - return; - } - if (next === 61) { - this.finishOp(49, 2); - return; - } - this.finishOp(48, 1); - } - readToken_eq_excl(code) { - const next = this.input.charCodeAt(this.state.pos + 1); - if (next === 61) { - this.finishOp(46, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2); - return; - } - if (code === 61 && next === 62) { - this.state.pos += 2; - this.finishToken(19); - return; - } - this.finishOp(code === 61 ? 29 : 35, 1); - } - readToken_question() { - const next = this.input.charCodeAt(this.state.pos + 1); - const next2 = this.input.charCodeAt(this.state.pos + 2); - if (next === 63) { - if (next2 === 61) { - this.finishOp(30, 3); - } else { - this.finishOp(40, 2); - } - } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) { - this.state.pos += 2; - this.finishToken(18); - } else { - ++this.state.pos; - this.finishToken(17); - } - } - getTokenFromCode(code) { - switch (code) { - case 46: - this.readToken_dot(); - return; - case 40: - ++this.state.pos; - this.finishToken(10); - return; - case 41: - ++this.state.pos; - this.finishToken(11); - return; - case 59: - ++this.state.pos; - this.finishToken(13); - return; - case 44: - ++this.state.pos; - this.finishToken(12); - return; - case 91: - if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { - if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { - throw this.raise(Errors.TupleExpressionBarIncorrectStartSyntaxType, { - at: this.state.curPosition() - }); - } - this.state.pos += 2; - this.finishToken(2); - } else { - ++this.state.pos; - this.finishToken(0); - } - return; - case 93: - ++this.state.pos; - this.finishToken(3); - return; - case 123: - if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { - if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { - throw this.raise(Errors.RecordExpressionBarIncorrectStartSyntaxType, { - at: this.state.curPosition() - }); - } - this.state.pos += 2; - this.finishToken(6); - } else { - ++this.state.pos; - this.finishToken(5); - } - return; - case 125: - ++this.state.pos; - this.finishToken(8); - return; - case 58: - if (this.hasPlugin("functionBind") && this.input.charCodeAt(this.state.pos + 1) === 58) { - this.finishOp(15, 2); - } else { - ++this.state.pos; - this.finishToken(14); - } - return; - case 63: - this.readToken_question(); - return; - case 96: - this.readTemplateToken(); - return; - case 48: - { - const next = this.input.charCodeAt(this.state.pos + 1); - if (next === 120 || next === 88) { - this.readRadixNumber(16); - return; - } - if (next === 111 || next === 79) { - this.readRadixNumber(8); - return; - } - if (next === 98 || next === 66) { - this.readRadixNumber(2); - return; - } - } - case 49: - case 50: - case 51: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: - this.readNumber(false); - return; - case 34: - case 39: - this.readString(code); - return; - case 47: - this.readToken_slash(); - return; - case 37: - case 42: - this.readToken_mult_modulo(code); - return; - case 124: - case 38: - this.readToken_pipe_amp(code); - return; - case 94: - this.readToken_caret(); - return; - case 43: - case 45: - this.readToken_plus_min(code); - return; - case 60: - this.readToken_lt(); - return; - case 62: - this.readToken_gt(); - return; - case 61: - case 33: - this.readToken_eq_excl(code); - return; - case 126: - this.finishOp(36, 1); - return; - case 64: - this.readToken_atSign(); - return; - case 35: - this.readToken_numberSign(); - return; - case 92: - this.readWord(); - return; - default: - if (isIdentifierStart(code)) { - this.readWord(code); - return; - } - } - throw this.raise(Errors.InvalidOrUnexpectedToken, { - at: this.state.curPosition(), - unexpected: String.fromCodePoint(code) - }); - } - finishOp(type, size) { - const str = this.input.slice(this.state.pos, this.state.pos + size); - this.state.pos += size; - this.finishToken(type, str); - } - readRegexp() { - const startLoc = this.state.startLoc; - const start = this.state.start + 1; - let escaped, inClass; - let { - pos - } = this.state; - for (;; ++pos) { - if (pos >= this.length) { - throw this.raise(Errors.UnterminatedRegExp, { - at: createPositionWithColumnOffset(startLoc, 1) - }); - } - const ch = this.input.charCodeAt(pos); - if (isNewLine(ch)) { - throw this.raise(Errors.UnterminatedRegExp, { - at: createPositionWithColumnOffset(startLoc, 1) - }); - } - if (escaped) { - escaped = false; - } else { - if (ch === 91) { - inClass = true; - } else if (ch === 93 && inClass) { - inClass = false; - } else if (ch === 47 && !inClass) { - break; - } - escaped = ch === 92; - } - } - const content = this.input.slice(start, pos); - ++pos; - let mods = ""; - const nextPos = () => createPositionWithColumnOffset(startLoc, pos + 2 - start); - while (pos < this.length) { - const cp = this.codePointAtPos(pos); - const char = String.fromCharCode(cp); - if (VALID_REGEX_FLAGS.has(cp)) { - if (cp === 118) { - this.expectPlugin("regexpUnicodeSets", nextPos()); - if (mods.includes("u")) { - this.raise(Errors.IncompatibleRegExpUVFlags, { - at: nextPos() - }); - } - } else if (cp === 117) { - if (mods.includes("v")) { - this.raise(Errors.IncompatibleRegExpUVFlags, { - at: nextPos() - }); - } - } - if (mods.includes(char)) { - this.raise(Errors.DuplicateRegExpFlags, { - at: nextPos() - }); - } - } else if (isIdentifierChar(cp) || cp === 92) { - this.raise(Errors.MalformedRegExpFlags, { - at: nextPos() - }); - } else { - break; - } - ++pos; - mods += char; - } - this.state.pos = pos; - this.finishToken(135, { - pattern: content, - flags: mods - }); - } - readInt(radix, len, forceLen = false, allowNumSeparator = true) { - const { - n, - pos - } = readInt(this.input, this.state.pos, this.state.lineStart, this.state.curLine, radix, len, forceLen, allowNumSeparator, this.errorHandlers_readInt, false); - this.state.pos = pos; - return n; - } - readRadixNumber(radix) { - const startLoc = this.state.curPosition(); - let isBigInt = false; - this.state.pos += 2; - const val = this.readInt(radix); - if (val == null) { - this.raise(Errors.InvalidDigit, { - at: createPositionWithColumnOffset(startLoc, 2), - radix - }); - } - const next = this.input.charCodeAt(this.state.pos); - if (next === 110) { - ++this.state.pos; - isBigInt = true; - } else if (next === 109) { - throw this.raise(Errors.InvalidDecimal, { - at: startLoc - }); - } - if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { - throw this.raise(Errors.NumberIdentifier, { - at: this.state.curPosition() - }); - } - if (isBigInt) { - const str = this.input.slice(startLoc.index, this.state.pos).replace(/[_n]/g, ""); - this.finishToken(133, str); - return; - } - this.finishToken(132, val); - } - readNumber(startsWithDot) { - const start = this.state.pos; - const startLoc = this.state.curPosition(); - let isFloat = false; - let isBigInt = false; - let isDecimal = false; - let hasExponent = false; - let isOctal = false; - if (!startsWithDot && this.readInt(10) === null) { - this.raise(Errors.InvalidNumber, { - at: this.state.curPosition() - }); - } - const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48; - if (hasLeadingZero) { - const integer = this.input.slice(start, this.state.pos); - this.recordStrictModeErrors(Errors.StrictOctalLiteral, { - at: startLoc - }); - if (!this.state.strict) { - const underscorePos = integer.indexOf("_"); - if (underscorePos > 0) { - this.raise(Errors.ZeroDigitNumericSeparator, { - at: createPositionWithColumnOffset(startLoc, underscorePos) - }); - } - } - isOctal = hasLeadingZero && !/[89]/.test(integer); - } - let next = this.input.charCodeAt(this.state.pos); - if (next === 46 && !isOctal) { - ++this.state.pos; - this.readInt(10); - isFloat = true; - next = this.input.charCodeAt(this.state.pos); - } - if ((next === 69 || next === 101) && !isOctal) { - next = this.input.charCodeAt(++this.state.pos); - if (next === 43 || next === 45) { - ++this.state.pos; - } - if (this.readInt(10) === null) { - this.raise(Errors.InvalidOrMissingExponent, { - at: startLoc - }); - } - isFloat = true; - hasExponent = true; - next = this.input.charCodeAt(this.state.pos); - } - if (next === 110) { - if (isFloat || hasLeadingZero) { - this.raise(Errors.InvalidBigIntLiteral, { - at: startLoc - }); - } - ++this.state.pos; - isBigInt = true; - } - if (next === 109) { - this.expectPlugin("decimal", this.state.curPosition()); - if (hasExponent || hasLeadingZero) { - this.raise(Errors.InvalidDecimal, { - at: startLoc - }); - } - ++this.state.pos; - isDecimal = true; - } - if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { - throw this.raise(Errors.NumberIdentifier, { - at: this.state.curPosition() - }); - } - const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, ""); - if (isBigInt) { - this.finishToken(133, str); - return; - } - if (isDecimal) { - this.finishToken(134, str); - return; - } - const val = isOctal ? parseInt(str, 8) : parseFloat(str); - this.finishToken(132, val); - } - readCodePoint(throwOnInvalid) { - const { - code, - pos - } = readCodePoint(this.input, this.state.pos, this.state.lineStart, this.state.curLine, throwOnInvalid, this.errorHandlers_readCodePoint); - this.state.pos = pos; - return code; - } - readString(quote) { - const { - str, - pos, - curLine, - lineStart - } = readStringContents(quote === 34 ? "double" : "single", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_string); - this.state.pos = pos + 1; - this.state.lineStart = lineStart; - this.state.curLine = curLine; - this.finishToken(131, str); - } - readTemplateContinuation() { - if (!this.match(8)) { - this.unexpected(null, 8); - } - this.state.pos--; - this.readTemplateToken(); - } - readTemplateToken() { - const opening = this.input[this.state.pos]; - const { - str, - firstInvalidLoc, - pos, - curLine, - lineStart - } = readStringContents("template", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_template); - this.state.pos = pos + 1; - this.state.lineStart = lineStart; - this.state.curLine = curLine; - if (firstInvalidLoc) { - this.state.firstInvalidTemplateEscapePos = new Position(firstInvalidLoc.curLine, firstInvalidLoc.pos - firstInvalidLoc.lineStart, firstInvalidLoc.pos); - } - if (this.input.codePointAt(pos) === 96) { - this.finishToken(24, firstInvalidLoc ? null : opening + str + "`"); - } else { - this.state.pos++; - this.finishToken(25, firstInvalidLoc ? null : opening + str + "${"); - } - } - recordStrictModeErrors(toParseError, { - at - }) { - const index = at.index; - if (this.state.strict && !this.state.strictErrors.has(index)) { - this.raise(toParseError, { - at - }); - } else { - this.state.strictErrors.set(index, [toParseError, at]); - } - } - readWord1(firstCode) { - this.state.containsEsc = false; - let word = ""; - const start = this.state.pos; - let chunkStart = this.state.pos; - if (firstCode !== undefined) { - this.state.pos += firstCode <= 0xffff ? 1 : 2; - } - while (this.state.pos < this.length) { - const ch = this.codePointAtPos(this.state.pos); - if (isIdentifierChar(ch)) { - this.state.pos += ch <= 0xffff ? 1 : 2; - } else if (ch === 92) { - this.state.containsEsc = true; - word += this.input.slice(chunkStart, this.state.pos); - const escStart = this.state.curPosition(); - const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar; - if (this.input.charCodeAt(++this.state.pos) !== 117) { - this.raise(Errors.MissingUnicodeEscape, { - at: this.state.curPosition() - }); - chunkStart = this.state.pos - 1; - continue; - } - ++this.state.pos; - const esc = this.readCodePoint(true); - if (esc !== null) { - if (!identifierCheck(esc)) { - this.raise(Errors.EscapedCharNotAnIdentifier, { - at: escStart - }); - } - word += String.fromCodePoint(esc); - } - chunkStart = this.state.pos; - } else { - break; - } - } - return word + this.input.slice(chunkStart, this.state.pos); - } - readWord(firstCode) { - const word = this.readWord1(firstCode); - const type = keywords$1.get(word); - if (type !== undefined) { - this.finishToken(type, tokenLabelName(type)); - } else { - this.finishToken(130, word); - } - } - checkKeywordEscapes() { - const { - type - } = this.state; - if (tokenIsKeyword(type) && this.state.containsEsc) { - this.raise(Errors.InvalidEscapedReservedWord, { - at: this.state.startLoc, - reservedWord: tokenLabelName(type) - }); - } - } - raise(toParseError, raiseProperties) { - const { - at - } = raiseProperties, - details = _objectWithoutPropertiesLoose(raiseProperties, _excluded); - const loc = at instanceof Position ? at : at.loc.start; - const error = toParseError({ - loc, - details - }); - if (!this.options.errorRecovery) throw error; - if (!this.isLookahead) this.state.errors.push(error); - return error; - } - raiseOverwrite(toParseError, raiseProperties) { - const { - at - } = raiseProperties, - details = _objectWithoutPropertiesLoose(raiseProperties, _excluded2); - const loc = at instanceof Position ? at : at.loc.start; - const pos = loc.index; - const errors = this.state.errors; - for (let i = errors.length - 1; i >= 0; i--) { - const error = errors[i]; - if (error.loc.index === pos) { - return errors[i] = toParseError({ - loc, - details - }); - } - if (error.loc.index < pos) break; - } - return this.raise(toParseError, raiseProperties); - } - updateContext(prevType) {} - unexpected(loc, type) { - throw this.raise(Errors.UnexpectedToken, { - expected: type ? tokenLabelName(type) : null, - at: loc != null ? loc : this.state.startLoc - }); - } - expectPlugin(pluginName, loc) { - if (this.hasPlugin(pluginName)) { - return true; - } - throw this.raise(Errors.MissingPlugin, { - at: loc != null ? loc : this.state.startLoc, - missingPlugin: [pluginName] - }); - } - expectOnePlugin(pluginNames) { - if (!pluginNames.some(name => this.hasPlugin(name))) { - throw this.raise(Errors.MissingOneOfPlugins, { - at: this.state.startLoc, - missingPlugin: pluginNames - }); - } - } - errorBuilder(error) { - return (pos, lineStart, curLine) => { - this.raise(error, { - at: buildPosition(pos, lineStart, curLine) - }); - }; - } -} - -class ClassScope { - constructor() { - this.privateNames = new Set(); - this.loneAccessors = new Map(); - this.undefinedPrivateNames = new Map(); - } -} -class ClassScopeHandler { - constructor(parser) { - this.parser = void 0; - this.stack = []; - this.undefinedPrivateNames = new Map(); - this.parser = parser; - } - current() { - return this.stack[this.stack.length - 1]; - } - enter() { - this.stack.push(new ClassScope()); - } - exit() { - const oldClassScope = this.stack.pop(); - const current = this.current(); - for (const [name, loc] of Array.from(oldClassScope.undefinedPrivateNames)) { - if (current) { - if (!current.undefinedPrivateNames.has(name)) { - current.undefinedPrivateNames.set(name, loc); - } - } else { - this.parser.raise(Errors.InvalidPrivateFieldResolution, { - at: loc, - identifierName: name - }); - } - } - } - declarePrivateName(name, elementType, loc) { - const { - privateNames, - loneAccessors, - undefinedPrivateNames - } = this.current(); - let redefined = privateNames.has(name); - if (elementType & CLASS_ELEMENT_KIND_ACCESSOR) { - const accessor = redefined && loneAccessors.get(name); - if (accessor) { - const oldStatic = accessor & CLASS_ELEMENT_FLAG_STATIC; - const newStatic = elementType & CLASS_ELEMENT_FLAG_STATIC; - const oldKind = accessor & CLASS_ELEMENT_KIND_ACCESSOR; - const newKind = elementType & CLASS_ELEMENT_KIND_ACCESSOR; - redefined = oldKind === newKind || oldStatic !== newStatic; - if (!redefined) loneAccessors.delete(name); - } else if (!redefined) { - loneAccessors.set(name, elementType); - } - } - if (redefined) { - this.parser.raise(Errors.PrivateNameRedeclaration, { - at: loc, - identifierName: name - }); - } - privateNames.add(name); - undefinedPrivateNames.delete(name); - } - usePrivateName(name, loc) { - let classScope; - for (classScope of this.stack) { - if (classScope.privateNames.has(name)) return; - } - if (classScope) { - classScope.undefinedPrivateNames.set(name, loc); - } else { - this.parser.raise(Errors.InvalidPrivateFieldResolution, { - at: loc, - identifierName: name - }); - } - } -} - -const kExpression = 0, - kMaybeArrowParameterDeclaration = 1, - kMaybeAsyncArrowParameterDeclaration = 2, - kParameterDeclaration = 3; -class ExpressionScope { - constructor(type = kExpression) { - this.type = void 0; - this.type = type; - } - canBeArrowParameterDeclaration() { - return this.type === kMaybeAsyncArrowParameterDeclaration || this.type === kMaybeArrowParameterDeclaration; - } - isCertainlyParameterDeclaration() { - return this.type === kParameterDeclaration; - } -} -class ArrowHeadParsingScope extends ExpressionScope { - constructor(type) { - super(type); - this.declarationErrors = new Map(); - } - recordDeclarationError(ParsingErrorClass, { - at - }) { - const index = at.index; - this.declarationErrors.set(index, [ParsingErrorClass, at]); - } - clearDeclarationError(index) { - this.declarationErrors.delete(index); - } - iterateErrors(iterator) { - this.declarationErrors.forEach(iterator); - } -} -class ExpressionScopeHandler { - constructor(parser) { - this.parser = void 0; - this.stack = [new ExpressionScope()]; - this.parser = parser; - } - enter(scope) { - this.stack.push(scope); - } - exit() { - this.stack.pop(); - } - recordParameterInitializerError(toParseError, { - at: node - }) { - const origin = { - at: node.loc.start - }; - const { - stack - } = this; - let i = stack.length - 1; - let scope = stack[i]; - while (!scope.isCertainlyParameterDeclaration()) { - if (scope.canBeArrowParameterDeclaration()) { - scope.recordDeclarationError(toParseError, origin); - } else { - return; - } - scope = stack[--i]; - } - this.parser.raise(toParseError, origin); - } - recordArrowParameterBindingError(error, { - at: node - }) { - const { - stack - } = this; - const scope = stack[stack.length - 1]; - const origin = { - at: node.loc.start - }; - if (scope.isCertainlyParameterDeclaration()) { - this.parser.raise(error, origin); - } else if (scope.canBeArrowParameterDeclaration()) { - scope.recordDeclarationError(error, origin); - } else { - return; - } - } - recordAsyncArrowParametersError({ - at - }) { - const { - stack - } = this; - let i = stack.length - 1; - let scope = stack[i]; - while (scope.canBeArrowParameterDeclaration()) { - if (scope.type === kMaybeAsyncArrowParameterDeclaration) { - scope.recordDeclarationError(Errors.AwaitBindingIdentifier, { - at - }); - } - scope = stack[--i]; - } - } - validateAsPattern() { - const { - stack - } = this; - const currentScope = stack[stack.length - 1]; - if (!currentScope.canBeArrowParameterDeclaration()) return; - currentScope.iterateErrors(([toParseError, loc]) => { - this.parser.raise(toParseError, { - at: loc - }); - let i = stack.length - 2; - let scope = stack[i]; - while (scope.canBeArrowParameterDeclaration()) { - scope.clearDeclarationError(loc.index); - scope = stack[--i]; - } - }); - } -} -function newParameterDeclarationScope() { - return new ExpressionScope(kParameterDeclaration); -} -function newArrowHeadScope() { - return new ArrowHeadParsingScope(kMaybeArrowParameterDeclaration); -} -function newAsyncArrowScope() { - return new ArrowHeadParsingScope(kMaybeAsyncArrowParameterDeclaration); -} -function newExpressionScope() { - return new ExpressionScope(); -} - -const PARAM = 0b0000, - PARAM_YIELD = 0b0001, - PARAM_AWAIT = 0b0010, - PARAM_RETURN = 0b0100, - PARAM_IN = 0b1000; -class ProductionParameterHandler { - constructor() { - this.stacks = []; - } - enter(flags) { - this.stacks.push(flags); - } - exit() { - this.stacks.pop(); - } - currentFlags() { - return this.stacks[this.stacks.length - 1]; - } - get hasAwait() { - return (this.currentFlags() & PARAM_AWAIT) > 0; - } - get hasYield() { - return (this.currentFlags() & PARAM_YIELD) > 0; - } - get hasReturn() { - return (this.currentFlags() & PARAM_RETURN) > 0; - } - get hasIn() { - return (this.currentFlags() & PARAM_IN) > 0; - } -} -function functionFlags(isAsync, isGenerator) { - return (isAsync ? PARAM_AWAIT : 0) | (isGenerator ? PARAM_YIELD : 0); -} - -class UtilParser extends Tokenizer { - addExtra(node, key, value, enumerable = true) { - if (!node) return; - const extra = node.extra = node.extra || {}; - if (enumerable) { - extra[key] = value; - } else { - Object.defineProperty(extra, key, { - enumerable, - value - }); - } - } - isContextual(token) { - return this.state.type === token && !this.state.containsEsc; - } - isUnparsedContextual(nameStart, name) { - const nameEnd = nameStart + name.length; - if (this.input.slice(nameStart, nameEnd) === name) { - const nextCh = this.input.charCodeAt(nameEnd); - return !(isIdentifierChar(nextCh) || (nextCh & 0xfc00) === 0xd800); - } - return false; - } - isLookaheadContextual(name) { - const next = this.nextTokenStart(); - return this.isUnparsedContextual(next, name); - } - eatContextual(token) { - if (this.isContextual(token)) { - this.next(); - return true; - } - return false; - } - expectContextual(token, toParseError) { - if (!this.eatContextual(token)) { - if (toParseError != null) { - throw this.raise(toParseError, { - at: this.state.startLoc - }); - } - throw this.unexpected(null, token); - } - } - canInsertSemicolon() { - return this.match(137) || this.match(8) || this.hasPrecedingLineBreak(); - } - hasPrecedingLineBreak() { - return lineBreak.test(this.input.slice(this.state.lastTokEndLoc.index, this.state.start)); - } - hasFollowingLineBreak() { - skipWhiteSpaceToLineBreak.lastIndex = this.state.end; - return skipWhiteSpaceToLineBreak.test(this.input); - } - isLineTerminator() { - return this.eat(13) || this.canInsertSemicolon(); - } - semicolon(allowAsi = true) { - if (allowAsi ? this.isLineTerminator() : this.eat(13)) return; - this.raise(Errors.MissingSemicolon, { - at: this.state.lastTokEndLoc - }); - } - expect(type, loc) { - this.eat(type) || this.unexpected(loc, type); - } - tryParse(fn, oldState = this.state.clone()) { - const abortSignal = { - node: null - }; - try { - const node = fn((node = null) => { - abortSignal.node = node; - throw abortSignal; - }); - if (this.state.errors.length > oldState.errors.length) { - const failState = this.state; - this.state = oldState; - this.state.tokensLength = failState.tokensLength; - return { - node, - error: failState.errors[oldState.errors.length], - thrown: false, - aborted: false, - failState - }; - } - return { - node, - error: null, - thrown: false, - aborted: false, - failState: null - }; - } catch (error) { - const failState = this.state; - this.state = oldState; - if (error instanceof SyntaxError) { - return { - node: null, - error, - thrown: true, - aborted: false, - failState - }; - } - if (error === abortSignal) { - return { - node: abortSignal.node, - error: null, - thrown: false, - aborted: true, - failState - }; - } - throw error; - } - } - checkExpressionErrors(refExpressionErrors, andThrow) { - if (!refExpressionErrors) return false; - const { - shorthandAssignLoc, - doubleProtoLoc, - privateKeyLoc, - optionalParametersLoc - } = refExpressionErrors; - const hasErrors = !!shorthandAssignLoc || !!doubleProtoLoc || !!optionalParametersLoc || !!privateKeyLoc; - if (!andThrow) { - return hasErrors; - } - if (shorthandAssignLoc != null) { - this.raise(Errors.InvalidCoverInitializedName, { - at: shorthandAssignLoc - }); - } - if (doubleProtoLoc != null) { - this.raise(Errors.DuplicateProto, { - at: doubleProtoLoc - }); - } - if (privateKeyLoc != null) { - this.raise(Errors.UnexpectedPrivateField, { - at: privateKeyLoc - }); - } - if (optionalParametersLoc != null) { - this.unexpected(optionalParametersLoc); - } - } - isLiteralPropertyName() { - return tokenIsLiteralPropertyName(this.state.type); - } - isPrivateName(node) { - return node.type === "PrivateName"; - } - getPrivateNameSV(node) { - return node.id.name; - } - hasPropertyAsPrivateName(node) { - return (node.type === "MemberExpression" || node.type === "OptionalMemberExpression") && this.isPrivateName(node.property); - } - isOptionalChain(node) { - return node.type === "OptionalMemberExpression" || node.type === "OptionalCallExpression"; - } - isObjectProperty(node) { - return node.type === "ObjectProperty"; - } - isObjectMethod(node) { - return node.type === "ObjectMethod"; - } - initializeScopes(inModule = this.options.sourceType === "module") { - const oldLabels = this.state.labels; - this.state.labels = []; - const oldExportedIdentifiers = this.exportedIdentifiers; - this.exportedIdentifiers = new Set(); - const oldInModule = this.inModule; - this.inModule = inModule; - const oldScope = this.scope; - const ScopeHandler = this.getScopeHandler(); - this.scope = new ScopeHandler(this, inModule); - const oldProdParam = this.prodParam; - this.prodParam = new ProductionParameterHandler(); - const oldClassScope = this.classScope; - this.classScope = new ClassScopeHandler(this); - const oldExpressionScope = this.expressionScope; - this.expressionScope = new ExpressionScopeHandler(this); - return () => { - this.state.labels = oldLabels; - this.exportedIdentifiers = oldExportedIdentifiers; - this.inModule = oldInModule; - this.scope = oldScope; - this.prodParam = oldProdParam; - this.classScope = oldClassScope; - this.expressionScope = oldExpressionScope; - }; - } - enterInitialScopes() { - let paramFlags = PARAM; - if (this.inModule) { - paramFlags |= PARAM_AWAIT; - } - this.scope.enter(SCOPE_PROGRAM); - this.prodParam.enter(paramFlags); - } - checkDestructuringPrivate(refExpressionErrors) { - const { - privateKeyLoc - } = refExpressionErrors; - if (privateKeyLoc !== null) { - this.expectPlugin("destructuringPrivate", privateKeyLoc); - } - } -} -class ExpressionErrors { - constructor() { - this.shorthandAssignLoc = null; - this.doubleProtoLoc = null; - this.privateKeyLoc = null; - this.optionalParametersLoc = null; - } -} - -class Node { - constructor(parser, pos, loc) { - this.type = ""; - this.start = pos; - this.end = 0; - this.loc = new SourceLocation(loc); - if (parser != null && parser.options.ranges) this.range = [pos, 0]; - if (parser != null && parser.filename) this.loc.filename = parser.filename; - } -} -const NodePrototype = Node.prototype; -{ - NodePrototype.__clone = function () { - const newNode = new Node(undefined, this.start, this.loc.start); - const keys = Object.keys(this); - for (let i = 0, length = keys.length; i < length; i++) { - const key = keys[i]; - if (key !== "leadingComments" && key !== "trailingComments" && key !== "innerComments") { - newNode[key] = this[key]; - } - } - return newNode; - }; -} -function clonePlaceholder(node) { - return cloneIdentifier(node); -} -function cloneIdentifier(node) { - const { - type, - start, - end, - loc, - range, - extra, - name - } = node; - const cloned = Object.create(NodePrototype); - cloned.type = type; - cloned.start = start; - cloned.end = end; - cloned.loc = loc; - cloned.range = range; - cloned.extra = extra; - cloned.name = name; - if (type === "Placeholder") { - cloned.expectedNode = node.expectedNode; - } - return cloned; -} -function cloneStringLiteral(node) { - const { - type, - start, - end, - loc, - range, - extra - } = node; - if (type === "Placeholder") { - return clonePlaceholder(node); - } - const cloned = Object.create(NodePrototype); - cloned.type = type; - cloned.start = start; - cloned.end = end; - cloned.loc = loc; - cloned.range = range; - if (node.raw !== undefined) { - cloned.raw = node.raw; - } else { - cloned.extra = extra; - } - cloned.value = node.value; - return cloned; -} -class NodeUtils extends UtilParser { - startNode() { - return new Node(this, this.state.start, this.state.startLoc); - } - startNodeAt(loc) { - return new Node(this, loc.index, loc); - } - startNodeAtNode(type) { - return this.startNodeAt(type.loc.start); - } - finishNode(node, type) { - return this.finishNodeAt(node, type, this.state.lastTokEndLoc); - } - finishNodeAt(node, type, endLoc) { - node.type = type; - node.end = endLoc.index; - node.loc.end = endLoc; - if (this.options.ranges) node.range[1] = endLoc.index; - if (this.options.attachComment) this.processComment(node); - return node; - } - resetStartLocation(node, startLoc) { - node.start = startLoc.index; - node.loc.start = startLoc; - if (this.options.ranges) node.range[0] = startLoc.index; - } - resetEndLocation(node, endLoc = this.state.lastTokEndLoc) { - node.end = endLoc.index; - node.loc.end = endLoc; - if (this.options.ranges) node.range[1] = endLoc.index; - } - resetStartLocationFromNode(node, locationNode) { - this.resetStartLocation(node, locationNode.loc.start); - } -} - -const reservedTypes = new Set(["_", "any", "bool", "boolean", "empty", "extends", "false", "interface", "mixed", "null", "number", "static", "string", "true", "typeof", "void"]); -const FlowErrors = ParseErrorEnum`flow`({ - AmbiguousConditionalArrow: "Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.", - AmbiguousDeclareModuleKind: "Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.", - AssignReservedType: ({ - reservedType - }) => `Cannot overwrite reserved type ${reservedType}.`, - DeclareClassElement: "The `declare` modifier can only appear on class fields.", - DeclareClassFieldInitializer: "Initializers are not allowed in fields with the `declare` modifier.", - DuplicateDeclareModuleExports: "Duplicate `declare module.exports` statement.", - EnumBooleanMemberNotInitialized: ({ - memberName, - enumName - }) => `Boolean enum members need to be initialized. Use either \`${memberName} = true,\` or \`${memberName} = false,\` in enum \`${enumName}\`.`, - EnumDuplicateMemberName: ({ - memberName, - enumName - }) => `Enum member names need to be unique, but the name \`${memberName}\` has already been used before in enum \`${enumName}\`.`, - EnumInconsistentMemberValues: ({ - enumName - }) => `Enum \`${enumName}\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`, - EnumInvalidExplicitType: ({ - invalidEnumType, - enumName - }) => `Enum type \`${invalidEnumType}\` is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`, - EnumInvalidExplicitTypeUnknownSupplied: ({ - enumName - }) => `Supplied enum type is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`, - EnumInvalidMemberInitializerPrimaryType: ({ - enumName, - memberName, - explicitType - }) => `Enum \`${enumName}\` has type \`${explicitType}\`, so the initializer of \`${memberName}\` needs to be a ${explicitType} literal.`, - EnumInvalidMemberInitializerSymbolType: ({ - enumName, - memberName - }) => `Symbol enum members cannot be initialized. Use \`${memberName},\` in enum \`${enumName}\`.`, - EnumInvalidMemberInitializerUnknownType: ({ - enumName, - memberName - }) => `The enum member initializer for \`${memberName}\` needs to be a literal (either a boolean, number, or string) in enum \`${enumName}\`.`, - EnumInvalidMemberName: ({ - enumName, - memberName, - suggestion - }) => `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \`${memberName}\`, consider using \`${suggestion}\`, in enum \`${enumName}\`.`, - EnumNumberMemberNotInitialized: ({ - enumName, - memberName - }) => `Number enum members need to be initialized, e.g. \`${memberName} = 1\` in enum \`${enumName}\`.`, - EnumStringMemberInconsistentlyInitailized: ({ - enumName - }) => `String enum members need to consistently either all use initializers, or use no initializers, in enum \`${enumName}\`.`, - GetterMayNotHaveThisParam: "A getter cannot have a `this` parameter.", - ImportReflectionHasImportType: "An `import module` declaration can not use `type` or `typeof` keyword.", - ImportTypeShorthandOnlyInPureImport: "The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.", - InexactInsideExact: "Explicit inexact syntax cannot appear inside an explicit exact object type.", - InexactInsideNonObject: "Explicit inexact syntax cannot appear in class or interface definitions.", - InexactVariance: "Explicit inexact syntax cannot have variance.", - InvalidNonTypeImportInDeclareModule: "Imports within a `declare module` body must always be `import type` or `import typeof`.", - MissingTypeParamDefault: "Type parameter declaration needs a default, since a preceding type parameter declaration has a default.", - NestedDeclareModule: "`declare module` cannot be used inside another `declare module`.", - NestedFlowComment: "Cannot have a flow comment inside another flow comment.", - PatternIsOptional: Object.assign({ - message: "A binding pattern parameter cannot be optional in an implementation signature." - }, { - reasonCode: "OptionalBindingPattern" - }), - SetterMayNotHaveThisParam: "A setter cannot have a `this` parameter.", - SpreadVariance: "Spread properties cannot have variance.", - ThisParamAnnotationRequired: "A type annotation is required for the `this` parameter.", - ThisParamBannedInConstructor: "Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.", - ThisParamMayNotBeOptional: "The `this` parameter cannot be optional.", - ThisParamMustBeFirst: "The `this` parameter must be the first function parameter.", - ThisParamNoDefault: "The `this` parameter may not have a default value.", - TypeBeforeInitializer: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", - TypeCastInPattern: "The type cast expression is expected to be wrapped with parenthesis.", - UnexpectedExplicitInexactInObject: "Explicit inexact syntax must appear at the end of an inexact object.", - UnexpectedReservedType: ({ - reservedType - }) => `Unexpected reserved type ${reservedType}.`, - UnexpectedReservedUnderscore: "`_` is only allowed as a type argument to call or new.", - UnexpectedSpaceBetweenModuloChecks: "Spaces between `%` and `checks` are not allowed here.", - UnexpectedSpreadType: "Spread operator cannot appear in class or interface definitions.", - UnexpectedSubtractionOperand: 'Unexpected token, expected "number" or "bigint".', - UnexpectedTokenAfterTypeParameter: "Expected an arrow function after this type parameter declaration.", - UnexpectedTypeParameterBeforeAsyncArrowFunction: "Type parameters must come after the async keyword, e.g. instead of ` async () => {}`, use `async () => {}`.", - UnsupportedDeclareExportKind: ({ - unsupportedExportKind, - suggestion - }) => `\`declare export ${unsupportedExportKind}\` is not supported. Use \`${suggestion}\` instead.`, - UnsupportedStatementInDeclareModule: "Only declares and type imports are allowed inside declare module.", - UnterminatedFlowComment: "Unterminated flow-comment." -}); -function isEsModuleType(bodyElement) { - return bodyElement.type === "DeclareExportAllDeclaration" || bodyElement.type === "DeclareExportDeclaration" && (!bodyElement.declaration || bodyElement.declaration.type !== "TypeAlias" && bodyElement.declaration.type !== "InterfaceDeclaration"); -} -function hasTypeImportKind(node) { - return node.importKind === "type" || node.importKind === "typeof"; -} -function isMaybeDefaultImport(type) { - return tokenIsKeywordOrIdentifier(type) && type !== 97; -} -const exportSuggestions = { - const: "declare export var", - let: "declare export var", - type: "export type", - interface: "export interface" -}; -function partition(list, test) { - const list1 = []; - const list2 = []; - for (let i = 0; i < list.length; i++) { - (test(list[i], i, list) ? list1 : list2).push(list[i]); - } - return [list1, list2]; -} -const FLOW_PRAGMA_REGEX = /\*?\s*@((?:no)?flow)\b/; -var flow = (superClass => class FlowParserMixin extends superClass { - constructor(...args) { - super(...args); - this.flowPragma = undefined; - } - getScopeHandler() { - return FlowScopeHandler; - } - shouldParseTypes() { - return this.getPluginOption("flow", "all") || this.flowPragma === "flow"; - } - shouldParseEnums() { - return !!this.getPluginOption("flow", "enums"); - } - finishToken(type, val) { - if (type !== 131 && type !== 13 && type !== 28) { - if (this.flowPragma === undefined) { - this.flowPragma = null; - } - } - return super.finishToken(type, val); - } - addComment(comment) { - if (this.flowPragma === undefined) { - const matches = FLOW_PRAGMA_REGEX.exec(comment.value); - if (!matches) ; else if (matches[1] === "flow") { - this.flowPragma = "flow"; - } else if (matches[1] === "noflow") { - this.flowPragma = "noflow"; - } else { - throw new Error("Unexpected flow pragma"); - } - } - return super.addComment(comment); - } - flowParseTypeInitialiser(tok) { - const oldInType = this.state.inType; - this.state.inType = true; - this.expect(tok || 14); - const type = this.flowParseType(); - this.state.inType = oldInType; - return type; - } - flowParsePredicate() { - const node = this.startNode(); - const moduloLoc = this.state.startLoc; - this.next(); - this.expectContextual(108); - if (this.state.lastTokStart > moduloLoc.index + 1) { - this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, { - at: moduloLoc - }); - } - if (this.eat(10)) { - node.value = super.parseExpression(); - this.expect(11); - return this.finishNode(node, "DeclaredPredicate"); - } else { - return this.finishNode(node, "InferredPredicate"); - } - } - flowParseTypeAndPredicateInitialiser() { - const oldInType = this.state.inType; - this.state.inType = true; - this.expect(14); - let type = null; - let predicate = null; - if (this.match(54)) { - this.state.inType = oldInType; - predicate = this.flowParsePredicate(); - } else { - type = this.flowParseType(); - this.state.inType = oldInType; - if (this.match(54)) { - predicate = this.flowParsePredicate(); - } - } - return [type, predicate]; - } - flowParseDeclareClass(node) { - this.next(); - this.flowParseInterfaceish(node, true); - return this.finishNode(node, "DeclareClass"); - } - flowParseDeclareFunction(node) { - this.next(); - const id = node.id = this.parseIdentifier(); - const typeNode = this.startNode(); - const typeContainer = this.startNode(); - if (this.match(47)) { - typeNode.typeParameters = this.flowParseTypeParameterDeclaration(); - } else { - typeNode.typeParameters = null; - } - this.expect(10); - const tmp = this.flowParseFunctionTypeParams(); - typeNode.params = tmp.params; - typeNode.rest = tmp.rest; - typeNode.this = tmp._this; - this.expect(11); - [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); - typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation"); - id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation"); - this.resetEndLocation(id); - this.semicolon(); - this.scope.declareName(node.id.name, BIND_FLOW_DECLARE_FN, node.id.loc.start); - return this.finishNode(node, "DeclareFunction"); - } - flowParseDeclare(node, insideModule) { - if (this.match(80)) { - return this.flowParseDeclareClass(node); - } else if (this.match(68)) { - return this.flowParseDeclareFunction(node); - } else if (this.match(74)) { - return this.flowParseDeclareVariable(node); - } else if (this.eatContextual(125)) { - if (this.match(16)) { - return this.flowParseDeclareModuleExports(node); - } else { - if (insideModule) { - this.raise(FlowErrors.NestedDeclareModule, { - at: this.state.lastTokStartLoc - }); - } - return this.flowParseDeclareModule(node); - } - } else if (this.isContextual(128)) { - return this.flowParseDeclareTypeAlias(node); - } else if (this.isContextual(129)) { - return this.flowParseDeclareOpaqueType(node); - } else if (this.isContextual(127)) { - return this.flowParseDeclareInterface(node); - } else if (this.match(82)) { - return this.flowParseDeclareExportDeclaration(node, insideModule); - } else { - throw this.unexpected(); - } - } - flowParseDeclareVariable(node) { - this.next(); - node.id = this.flowParseTypeAnnotatableIdentifier(true); - this.scope.declareName(node.id.name, BIND_VAR, node.id.loc.start); - this.semicolon(); - return this.finishNode(node, "DeclareVariable"); - } - flowParseDeclareModule(node) { - this.scope.enter(SCOPE_OTHER); - if (this.match(131)) { - node.id = super.parseExprAtom(); - } else { - node.id = this.parseIdentifier(); - } - const bodyNode = node.body = this.startNode(); - const body = bodyNode.body = []; - this.expect(5); - while (!this.match(8)) { - let bodyNode = this.startNode(); - if (this.match(83)) { - this.next(); - if (!this.isContextual(128) && !this.match(87)) { - this.raise(FlowErrors.InvalidNonTypeImportInDeclareModule, { - at: this.state.lastTokStartLoc - }); - } - super.parseImport(bodyNode); - } else { - this.expectContextual(123, FlowErrors.UnsupportedStatementInDeclareModule); - bodyNode = this.flowParseDeclare(bodyNode, true); - } - body.push(bodyNode); - } - this.scope.exit(); - this.expect(8); - this.finishNode(bodyNode, "BlockStatement"); - let kind = null; - let hasModuleExport = false; - body.forEach(bodyElement => { - if (isEsModuleType(bodyElement)) { - if (kind === "CommonJS") { - this.raise(FlowErrors.AmbiguousDeclareModuleKind, { - at: bodyElement - }); - } - kind = "ES"; - } else if (bodyElement.type === "DeclareModuleExports") { - if (hasModuleExport) { - this.raise(FlowErrors.DuplicateDeclareModuleExports, { - at: bodyElement - }); - } - if (kind === "ES") { - this.raise(FlowErrors.AmbiguousDeclareModuleKind, { - at: bodyElement - }); - } - kind = "CommonJS"; - hasModuleExport = true; - } - }); - node.kind = kind || "CommonJS"; - return this.finishNode(node, "DeclareModule"); - } - flowParseDeclareExportDeclaration(node, insideModule) { - this.expect(82); - if (this.eat(65)) { - if (this.match(68) || this.match(80)) { - node.declaration = this.flowParseDeclare(this.startNode()); - } else { - node.declaration = this.flowParseType(); - this.semicolon(); - } - node.default = true; - return this.finishNode(node, "DeclareExportDeclaration"); - } else { - if (this.match(75) || this.isLet() || (this.isContextual(128) || this.isContextual(127)) && !insideModule) { - const label = this.state.value; - throw this.raise(FlowErrors.UnsupportedDeclareExportKind, { - at: this.state.startLoc, - unsupportedExportKind: label, - suggestion: exportSuggestions[label] - }); - } - if (this.match(74) || this.match(68) || this.match(80) || this.isContextual(129)) { - node.declaration = this.flowParseDeclare(this.startNode()); - node.default = false; - return this.finishNode(node, "DeclareExportDeclaration"); - } else if (this.match(55) || this.match(5) || this.isContextual(127) || this.isContextual(128) || this.isContextual(129)) { - node = this.parseExport(node, null); - if (node.type === "ExportNamedDeclaration") { - node.type = "ExportDeclaration"; - node.default = false; - delete node.exportKind; - } - node.type = "Declare" + node.type; - return node; - } - } - throw this.unexpected(); - } - flowParseDeclareModuleExports(node) { - this.next(); - this.expectContextual(109); - node.typeAnnotation = this.flowParseTypeAnnotation(); - this.semicolon(); - return this.finishNode(node, "DeclareModuleExports"); - } - flowParseDeclareTypeAlias(node) { - this.next(); - const finished = this.flowParseTypeAlias(node); - finished.type = "DeclareTypeAlias"; - return finished; - } - flowParseDeclareOpaqueType(node) { - this.next(); - const finished = this.flowParseOpaqueType(node, true); - finished.type = "DeclareOpaqueType"; - return finished; - } - flowParseDeclareInterface(node) { - this.next(); - this.flowParseInterfaceish(node); - return this.finishNode(node, "DeclareInterface"); - } - flowParseInterfaceish(node, isClass = false) { - node.id = this.flowParseRestrictedIdentifier(!isClass, true); - this.scope.declareName(node.id.name, isClass ? BIND_FUNCTION : BIND_LEXICAL, node.id.loc.start); - if (this.match(47)) { - node.typeParameters = this.flowParseTypeParameterDeclaration(); - } else { - node.typeParameters = null; - } - node.extends = []; - node.implements = []; - node.mixins = []; - if (this.eat(81)) { - do { - node.extends.push(this.flowParseInterfaceExtends()); - } while (!isClass && this.eat(12)); - } - if (this.isContextual(115)) { - this.next(); - do { - node.mixins.push(this.flowParseInterfaceExtends()); - } while (this.eat(12)); - } - if (this.isContextual(111)) { - this.next(); - do { - node.implements.push(this.flowParseInterfaceExtends()); - } while (this.eat(12)); - } - node.body = this.flowParseObjectType({ - allowStatic: isClass, - allowExact: false, - allowSpread: false, - allowProto: isClass, - allowInexact: false - }); - } - flowParseInterfaceExtends() { - const node = this.startNode(); - node.id = this.flowParseQualifiedTypeIdentifier(); - if (this.match(47)) { - node.typeParameters = this.flowParseTypeParameterInstantiation(); - } else { - node.typeParameters = null; - } - return this.finishNode(node, "InterfaceExtends"); - } - flowParseInterface(node) { - this.flowParseInterfaceish(node); - return this.finishNode(node, "InterfaceDeclaration"); - } - checkNotUnderscore(word) { - if (word === "_") { - this.raise(FlowErrors.UnexpectedReservedUnderscore, { - at: this.state.startLoc - }); - } - } - checkReservedType(word, startLoc, declaration) { - if (!reservedTypes.has(word)) return; - this.raise(declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, { - at: startLoc, - reservedType: word - }); - } - flowParseRestrictedIdentifier(liberal, declaration) { - this.checkReservedType(this.state.value, this.state.startLoc, declaration); - return this.parseIdentifier(liberal); - } - flowParseTypeAlias(node) { - node.id = this.flowParseRestrictedIdentifier(false, true); - this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.loc.start); - if (this.match(47)) { - node.typeParameters = this.flowParseTypeParameterDeclaration(); - } else { - node.typeParameters = null; - } - node.right = this.flowParseTypeInitialiser(29); - this.semicolon(); - return this.finishNode(node, "TypeAlias"); - } - flowParseOpaqueType(node, declare) { - this.expectContextual(128); - node.id = this.flowParseRestrictedIdentifier(true, true); - this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.loc.start); - if (this.match(47)) { - node.typeParameters = this.flowParseTypeParameterDeclaration(); - } else { - node.typeParameters = null; - } - node.supertype = null; - if (this.match(14)) { - node.supertype = this.flowParseTypeInitialiser(14); - } - node.impltype = null; - if (!declare) { - node.impltype = this.flowParseTypeInitialiser(29); - } - this.semicolon(); - return this.finishNode(node, "OpaqueType"); - } - flowParseTypeParameter(requireDefault = false) { - const nodeStartLoc = this.state.startLoc; - const node = this.startNode(); - const variance = this.flowParseVariance(); - const ident = this.flowParseTypeAnnotatableIdentifier(); - node.name = ident.name; - node.variance = variance; - node.bound = ident.typeAnnotation; - if (this.match(29)) { - this.eat(29); - node.default = this.flowParseType(); - } else { - if (requireDefault) { - this.raise(FlowErrors.MissingTypeParamDefault, { - at: nodeStartLoc - }); - } - } - return this.finishNode(node, "TypeParameter"); - } - flowParseTypeParameterDeclaration() { - const oldInType = this.state.inType; - const node = this.startNode(); - node.params = []; - this.state.inType = true; - if (this.match(47) || this.match(140)) { - this.next(); - } else { - this.unexpected(); - } - let defaultRequired = false; - do { - const typeParameter = this.flowParseTypeParameter(defaultRequired); - node.params.push(typeParameter); - if (typeParameter.default) { - defaultRequired = true; - } - if (!this.match(48)) { - this.expect(12); - } - } while (!this.match(48)); - this.expect(48); - this.state.inType = oldInType; - return this.finishNode(node, "TypeParameterDeclaration"); - } - flowParseTypeParameterInstantiation() { - const node = this.startNode(); - const oldInType = this.state.inType; - node.params = []; - this.state.inType = true; - this.expect(47); - const oldNoAnonFunctionType = this.state.noAnonFunctionType; - this.state.noAnonFunctionType = false; - while (!this.match(48)) { - node.params.push(this.flowParseType()); - if (!this.match(48)) { - this.expect(12); - } - } - this.state.noAnonFunctionType = oldNoAnonFunctionType; - this.expect(48); - this.state.inType = oldInType; - return this.finishNode(node, "TypeParameterInstantiation"); - } - flowParseTypeParameterInstantiationCallOrNew() { - const node = this.startNode(); - const oldInType = this.state.inType; - node.params = []; - this.state.inType = true; - this.expect(47); - while (!this.match(48)) { - node.params.push(this.flowParseTypeOrImplicitInstantiation()); - if (!this.match(48)) { - this.expect(12); - } - } - this.expect(48); - this.state.inType = oldInType; - return this.finishNode(node, "TypeParameterInstantiation"); - } - flowParseInterfaceType() { - const node = this.startNode(); - this.expectContextual(127); - node.extends = []; - if (this.eat(81)) { - do { - node.extends.push(this.flowParseInterfaceExtends()); - } while (this.eat(12)); - } - node.body = this.flowParseObjectType({ - allowStatic: false, - allowExact: false, - allowSpread: false, - allowProto: false, - allowInexact: false - }); - return this.finishNode(node, "InterfaceTypeAnnotation"); - } - flowParseObjectPropertyKey() { - return this.match(132) || this.match(131) ? super.parseExprAtom() : this.parseIdentifier(true); - } - flowParseObjectTypeIndexer(node, isStatic, variance) { - node.static = isStatic; - if (this.lookahead().type === 14) { - node.id = this.flowParseObjectPropertyKey(); - node.key = this.flowParseTypeInitialiser(); - } else { - node.id = null; - node.key = this.flowParseType(); - } - this.expect(3); - node.value = this.flowParseTypeInitialiser(); - node.variance = variance; - return this.finishNode(node, "ObjectTypeIndexer"); - } - flowParseObjectTypeInternalSlot(node, isStatic) { - node.static = isStatic; - node.id = this.flowParseObjectPropertyKey(); - this.expect(3); - this.expect(3); - if (this.match(47) || this.match(10)) { - node.method = true; - node.optional = false; - node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start)); - } else { - node.method = false; - if (this.eat(17)) { - node.optional = true; - } - node.value = this.flowParseTypeInitialiser(); - } - return this.finishNode(node, "ObjectTypeInternalSlot"); - } - flowParseObjectTypeMethodish(node) { - node.params = []; - node.rest = null; - node.typeParameters = null; - node.this = null; - if (this.match(47)) { - node.typeParameters = this.flowParseTypeParameterDeclaration(); - } - this.expect(10); - if (this.match(78)) { - node.this = this.flowParseFunctionTypeParam(true); - node.this.name = null; - if (!this.match(11)) { - this.expect(12); - } - } - while (!this.match(11) && !this.match(21)) { - node.params.push(this.flowParseFunctionTypeParam(false)); - if (!this.match(11)) { - this.expect(12); - } - } - if (this.eat(21)) { - node.rest = this.flowParseFunctionTypeParam(false); - } - this.expect(11); - node.returnType = this.flowParseTypeInitialiser(); - return this.finishNode(node, "FunctionTypeAnnotation"); - } - flowParseObjectTypeCallProperty(node, isStatic) { - const valueNode = this.startNode(); - node.static = isStatic; - node.value = this.flowParseObjectTypeMethodish(valueNode); - return this.finishNode(node, "ObjectTypeCallProperty"); - } - flowParseObjectType({ - allowStatic, - allowExact, - allowSpread, - allowProto, - allowInexact - }) { - const oldInType = this.state.inType; - this.state.inType = true; - const nodeStart = this.startNode(); - nodeStart.callProperties = []; - nodeStart.properties = []; - nodeStart.indexers = []; - nodeStart.internalSlots = []; - let endDelim; - let exact; - let inexact = false; - if (allowExact && this.match(6)) { - this.expect(6); - endDelim = 9; - exact = true; - } else { - this.expect(5); - endDelim = 8; - exact = false; - } - nodeStart.exact = exact; - while (!this.match(endDelim)) { - let isStatic = false; - let protoStartLoc = null; - let inexactStartLoc = null; - const node = this.startNode(); - if (allowProto && this.isContextual(116)) { - const lookahead = this.lookahead(); - if (lookahead.type !== 14 && lookahead.type !== 17) { - this.next(); - protoStartLoc = this.state.startLoc; - allowStatic = false; - } - } - if (allowStatic && this.isContextual(104)) { - const lookahead = this.lookahead(); - if (lookahead.type !== 14 && lookahead.type !== 17) { - this.next(); - isStatic = true; - } - } - const variance = this.flowParseVariance(); - if (this.eat(0)) { - if (protoStartLoc != null) { - this.unexpected(protoStartLoc); - } - if (this.eat(0)) { - if (variance) { - this.unexpected(variance.loc.start); - } - nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic)); - } else { - nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance)); - } - } else if (this.match(10) || this.match(47)) { - if (protoStartLoc != null) { - this.unexpected(protoStartLoc); - } - if (variance) { - this.unexpected(variance.loc.start); - } - nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic)); - } else { - let kind = "init"; - if (this.isContextual(98) || this.isContextual(103)) { - const lookahead = this.lookahead(); - if (tokenIsLiteralPropertyName(lookahead.type)) { - kind = this.state.value; - this.next(); - } - } - const propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact != null ? allowInexact : !exact); - if (propOrInexact === null) { - inexact = true; - inexactStartLoc = this.state.lastTokStartLoc; - } else { - nodeStart.properties.push(propOrInexact); - } - } - this.flowObjectTypeSemicolon(); - if (inexactStartLoc && !this.match(8) && !this.match(9)) { - this.raise(FlowErrors.UnexpectedExplicitInexactInObject, { - at: inexactStartLoc - }); - } - } - this.expect(endDelim); - if (allowSpread) { - nodeStart.inexact = inexact; - } - const out = this.finishNode(nodeStart, "ObjectTypeAnnotation"); - this.state.inType = oldInType; - return out; - } - flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact) { - if (this.eat(21)) { - const isInexactToken = this.match(12) || this.match(13) || this.match(8) || this.match(9); - if (isInexactToken) { - if (!allowSpread) { - this.raise(FlowErrors.InexactInsideNonObject, { - at: this.state.lastTokStartLoc - }); - } else if (!allowInexact) { - this.raise(FlowErrors.InexactInsideExact, { - at: this.state.lastTokStartLoc - }); - } - if (variance) { - this.raise(FlowErrors.InexactVariance, { - at: variance - }); - } - return null; - } - if (!allowSpread) { - this.raise(FlowErrors.UnexpectedSpreadType, { - at: this.state.lastTokStartLoc - }); - } - if (protoStartLoc != null) { - this.unexpected(protoStartLoc); - } - if (variance) { - this.raise(FlowErrors.SpreadVariance, { - at: variance - }); - } - node.argument = this.flowParseType(); - return this.finishNode(node, "ObjectTypeSpreadProperty"); - } else { - node.key = this.flowParseObjectPropertyKey(); - node.static = isStatic; - node.proto = protoStartLoc != null; - node.kind = kind; - let optional = false; - if (this.match(47) || this.match(10)) { - node.method = true; - if (protoStartLoc != null) { - this.unexpected(protoStartLoc); - } - if (variance) { - this.unexpected(variance.loc.start); - } - node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start)); - if (kind === "get" || kind === "set") { - this.flowCheckGetterSetterParams(node); - } - if (!allowSpread && node.key.name === "constructor" && node.value.this) { - this.raise(FlowErrors.ThisParamBannedInConstructor, { - at: node.value.this - }); - } - } else { - if (kind !== "init") this.unexpected(); - node.method = false; - if (this.eat(17)) { - optional = true; - } - node.value = this.flowParseTypeInitialiser(); - node.variance = variance; - } - node.optional = optional; - return this.finishNode(node, "ObjectTypeProperty"); - } - } - flowCheckGetterSetterParams(property) { - const paramCount = property.kind === "get" ? 0 : 1; - const length = property.value.params.length + (property.value.rest ? 1 : 0); - if (property.value.this) { - this.raise(property.kind === "get" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam, { - at: property.value.this - }); - } - if (length !== paramCount) { - this.raise(property.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, { - at: property - }); - } - if (property.kind === "set" && property.value.rest) { - this.raise(Errors.BadSetterRestParameter, { - at: property - }); - } - } - flowObjectTypeSemicolon() { - if (!this.eat(13) && !this.eat(12) && !this.match(8) && !this.match(9)) { - this.unexpected(); - } - } - flowParseQualifiedTypeIdentifier(startLoc, id) { - var _startLoc; - (_startLoc = startLoc) != null ? _startLoc : startLoc = this.state.startLoc; - let node = id || this.flowParseRestrictedIdentifier(true); - while (this.eat(16)) { - const node2 = this.startNodeAt(startLoc); - node2.qualification = node; - node2.id = this.flowParseRestrictedIdentifier(true); - node = this.finishNode(node2, "QualifiedTypeIdentifier"); - } - return node; - } - flowParseGenericType(startLoc, id) { - const node = this.startNodeAt(startLoc); - node.typeParameters = null; - node.id = this.flowParseQualifiedTypeIdentifier(startLoc, id); - if (this.match(47)) { - node.typeParameters = this.flowParseTypeParameterInstantiation(); - } - return this.finishNode(node, "GenericTypeAnnotation"); - } - flowParseTypeofType() { - const node = this.startNode(); - this.expect(87); - node.argument = this.flowParsePrimaryType(); - return this.finishNode(node, "TypeofTypeAnnotation"); - } - flowParseTupleType() { - const node = this.startNode(); - node.types = []; - this.expect(0); - while (this.state.pos < this.length && !this.match(3)) { - node.types.push(this.flowParseType()); - if (this.match(3)) break; - this.expect(12); - } - this.expect(3); - return this.finishNode(node, "TupleTypeAnnotation"); - } - flowParseFunctionTypeParam(first) { - let name = null; - let optional = false; - let typeAnnotation = null; - const node = this.startNode(); - const lh = this.lookahead(); - const isThis = this.state.type === 78; - if (lh.type === 14 || lh.type === 17) { - if (isThis && !first) { - this.raise(FlowErrors.ThisParamMustBeFirst, { - at: node - }); - } - name = this.parseIdentifier(isThis); - if (this.eat(17)) { - optional = true; - if (isThis) { - this.raise(FlowErrors.ThisParamMayNotBeOptional, { - at: node - }); - } - } - typeAnnotation = this.flowParseTypeInitialiser(); - } else { - typeAnnotation = this.flowParseType(); - } - node.name = name; - node.optional = optional; - node.typeAnnotation = typeAnnotation; - return this.finishNode(node, "FunctionTypeParam"); - } - reinterpretTypeAsFunctionTypeParam(type) { - const node = this.startNodeAt(type.loc.start); - node.name = null; - node.optional = false; - node.typeAnnotation = type; - return this.finishNode(node, "FunctionTypeParam"); - } - flowParseFunctionTypeParams(params = []) { - let rest = null; - let _this = null; - if (this.match(78)) { - _this = this.flowParseFunctionTypeParam(true); - _this.name = null; - if (!this.match(11)) { - this.expect(12); - } - } - while (!this.match(11) && !this.match(21)) { - params.push(this.flowParseFunctionTypeParam(false)); - if (!this.match(11)) { - this.expect(12); - } - } - if (this.eat(21)) { - rest = this.flowParseFunctionTypeParam(false); - } - return { - params, - rest, - _this - }; - } - flowIdentToTypeAnnotation(startLoc, node, id) { - switch (id.name) { - case "any": - return this.finishNode(node, "AnyTypeAnnotation"); - case "bool": - case "boolean": - return this.finishNode(node, "BooleanTypeAnnotation"); - case "mixed": - return this.finishNode(node, "MixedTypeAnnotation"); - case "empty": - return this.finishNode(node, "EmptyTypeAnnotation"); - case "number": - return this.finishNode(node, "NumberTypeAnnotation"); - case "string": - return this.finishNode(node, "StringTypeAnnotation"); - case "symbol": - return this.finishNode(node, "SymbolTypeAnnotation"); - default: - this.checkNotUnderscore(id.name); - return this.flowParseGenericType(startLoc, id); - } - } - flowParsePrimaryType() { - const startLoc = this.state.startLoc; - const node = this.startNode(); - let tmp; - let type; - let isGroupedType = false; - const oldNoAnonFunctionType = this.state.noAnonFunctionType; - switch (this.state.type) { - case 5: - return this.flowParseObjectType({ - allowStatic: false, - allowExact: false, - allowSpread: true, - allowProto: false, - allowInexact: true - }); - case 6: - return this.flowParseObjectType({ - allowStatic: false, - allowExact: true, - allowSpread: true, - allowProto: false, - allowInexact: false - }); - case 0: - this.state.noAnonFunctionType = false; - type = this.flowParseTupleType(); - this.state.noAnonFunctionType = oldNoAnonFunctionType; - return type; - case 47: - node.typeParameters = this.flowParseTypeParameterDeclaration(); - this.expect(10); - tmp = this.flowParseFunctionTypeParams(); - node.params = tmp.params; - node.rest = tmp.rest; - node.this = tmp._this; - this.expect(11); - this.expect(19); - node.returnType = this.flowParseType(); - return this.finishNode(node, "FunctionTypeAnnotation"); - case 10: - this.next(); - if (!this.match(11) && !this.match(21)) { - if (tokenIsIdentifier(this.state.type) || this.match(78)) { - const token = this.lookahead().type; - isGroupedType = token !== 17 && token !== 14; - } else { - isGroupedType = true; - } - } - if (isGroupedType) { - this.state.noAnonFunctionType = false; - type = this.flowParseType(); - this.state.noAnonFunctionType = oldNoAnonFunctionType; - if (this.state.noAnonFunctionType || !(this.match(12) || this.match(11) && this.lookahead().type === 19)) { - this.expect(11); - return type; - } else { - this.eat(12); - } - } - if (type) { - tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]); - } else { - tmp = this.flowParseFunctionTypeParams(); - } - node.params = tmp.params; - node.rest = tmp.rest; - node.this = tmp._this; - this.expect(11); - this.expect(19); - node.returnType = this.flowParseType(); - node.typeParameters = null; - return this.finishNode(node, "FunctionTypeAnnotation"); - case 131: - return this.parseLiteral(this.state.value, "StringLiteralTypeAnnotation"); - case 85: - case 86: - node.value = this.match(85); - this.next(); - return this.finishNode(node, "BooleanLiteralTypeAnnotation"); - case 53: - if (this.state.value === "-") { - this.next(); - if (this.match(132)) { - return this.parseLiteralAtNode(-this.state.value, "NumberLiteralTypeAnnotation", node); - } - if (this.match(133)) { - return this.parseLiteralAtNode(-this.state.value, "BigIntLiteralTypeAnnotation", node); - } - throw this.raise(FlowErrors.UnexpectedSubtractionOperand, { - at: this.state.startLoc - }); - } - throw this.unexpected(); - case 132: - return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation"); - case 133: - return this.parseLiteral(this.state.value, "BigIntLiteralTypeAnnotation"); - case 88: - this.next(); - return this.finishNode(node, "VoidTypeAnnotation"); - case 84: - this.next(); - return this.finishNode(node, "NullLiteralTypeAnnotation"); - case 78: - this.next(); - return this.finishNode(node, "ThisTypeAnnotation"); - case 55: - this.next(); - return this.finishNode(node, "ExistsTypeAnnotation"); - case 87: - return this.flowParseTypeofType(); - default: - if (tokenIsKeyword(this.state.type)) { - const label = tokenLabelName(this.state.type); - this.next(); - return super.createIdentifier(node, label); - } else if (tokenIsIdentifier(this.state.type)) { - if (this.isContextual(127)) { - return this.flowParseInterfaceType(); - } - return this.flowIdentToTypeAnnotation(startLoc, node, this.parseIdentifier()); - } - } - throw this.unexpected(); - } - flowParsePostfixType() { - const startLoc = this.state.startLoc; - let type = this.flowParsePrimaryType(); - let seenOptionalIndexedAccess = false; - while ((this.match(0) || this.match(18)) && !this.canInsertSemicolon()) { - const node = this.startNodeAt(startLoc); - const optional = this.eat(18); - seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional; - this.expect(0); - if (!optional && this.match(3)) { - node.elementType = type; - this.next(); - type = this.finishNode(node, "ArrayTypeAnnotation"); - } else { - node.objectType = type; - node.indexType = this.flowParseType(); - this.expect(3); - if (seenOptionalIndexedAccess) { - node.optional = optional; - type = this.finishNode(node, "OptionalIndexedAccessType"); - } else { - type = this.finishNode(node, "IndexedAccessType"); - } - } - } - return type; - } - flowParsePrefixType() { - const node = this.startNode(); - if (this.eat(17)) { - node.typeAnnotation = this.flowParsePrefixType(); - return this.finishNode(node, "NullableTypeAnnotation"); - } else { - return this.flowParsePostfixType(); - } - } - flowParseAnonFunctionWithoutParens() { - const param = this.flowParsePrefixType(); - if (!this.state.noAnonFunctionType && this.eat(19)) { - const node = this.startNodeAt(param.loc.start); - node.params = [this.reinterpretTypeAsFunctionTypeParam(param)]; - node.rest = null; - node.this = null; - node.returnType = this.flowParseType(); - node.typeParameters = null; - return this.finishNode(node, "FunctionTypeAnnotation"); - } - return param; - } - flowParseIntersectionType() { - const node = this.startNode(); - this.eat(45); - const type = this.flowParseAnonFunctionWithoutParens(); - node.types = [type]; - while (this.eat(45)) { - node.types.push(this.flowParseAnonFunctionWithoutParens()); - } - return node.types.length === 1 ? type : this.finishNode(node, "IntersectionTypeAnnotation"); - } - flowParseUnionType() { - const node = this.startNode(); - this.eat(43); - const type = this.flowParseIntersectionType(); - node.types = [type]; - while (this.eat(43)) { - node.types.push(this.flowParseIntersectionType()); - } - return node.types.length === 1 ? type : this.finishNode(node, "UnionTypeAnnotation"); - } - flowParseType() { - const oldInType = this.state.inType; - this.state.inType = true; - const type = this.flowParseUnionType(); - this.state.inType = oldInType; - return type; - } - flowParseTypeOrImplicitInstantiation() { - if (this.state.type === 130 && this.state.value === "_") { - const startLoc = this.state.startLoc; - const node = this.parseIdentifier(); - return this.flowParseGenericType(startLoc, node); - } else { - return this.flowParseType(); - } - } - flowParseTypeAnnotation() { - const node = this.startNode(); - node.typeAnnotation = this.flowParseTypeInitialiser(); - return this.finishNode(node, "TypeAnnotation"); - } - flowParseTypeAnnotatableIdentifier(allowPrimitiveOverride) { - const ident = allowPrimitiveOverride ? this.parseIdentifier() : this.flowParseRestrictedIdentifier(); - if (this.match(14)) { - ident.typeAnnotation = this.flowParseTypeAnnotation(); - this.resetEndLocation(ident); - } - return ident; - } - typeCastToParameter(node) { - node.expression.typeAnnotation = node.typeAnnotation; - this.resetEndLocation(node.expression, node.typeAnnotation.loc.end); - return node.expression; - } - flowParseVariance() { - let variance = null; - if (this.match(53)) { - variance = this.startNode(); - if (this.state.value === "+") { - variance.kind = "plus"; - } else { - variance.kind = "minus"; - } - this.next(); - return this.finishNode(variance, "Variance"); - } - return variance; - } - parseFunctionBody(node, allowExpressionBody, isMethod = false) { - if (allowExpressionBody) { - return this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod)); - } - return super.parseFunctionBody(node, false, isMethod); - } - parseFunctionBodyAndFinish(node, type, isMethod = false) { - if (this.match(14)) { - const typeNode = this.startNode(); - [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); - node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, "TypeAnnotation") : null; - } - return super.parseFunctionBodyAndFinish(node, type, isMethod); - } - parseStatementLike(flags) { - if (this.state.strict && this.isContextual(127)) { - const lookahead = this.lookahead(); - if (tokenIsKeywordOrIdentifier(lookahead.type)) { - const node = this.startNode(); - this.next(); - return this.flowParseInterface(node); - } - } else if (this.shouldParseEnums() && this.isContextual(124)) { - const node = this.startNode(); - this.next(); - return this.flowParseEnumDeclaration(node); - } - const stmt = super.parseStatementLike(flags); - if (this.flowPragma === undefined && !this.isValidDirective(stmt)) { - this.flowPragma = null; - } - return stmt; - } - parseExpressionStatement(node, expr, decorators) { - if (expr.type === "Identifier") { - if (expr.name === "declare") { - if (this.match(80) || tokenIsIdentifier(this.state.type) || this.match(68) || this.match(74) || this.match(82)) { - return this.flowParseDeclare(node); - } - } else if (tokenIsIdentifier(this.state.type)) { - if (expr.name === "interface") { - return this.flowParseInterface(node); - } else if (expr.name === "type") { - return this.flowParseTypeAlias(node); - } else if (expr.name === "opaque") { - return this.flowParseOpaqueType(node, false); - } - } - } - return super.parseExpressionStatement(node, expr, decorators); - } - shouldParseExportDeclaration() { - const { - type - } = this.state; - if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 124) { - return !this.state.containsEsc; - } - return super.shouldParseExportDeclaration(); - } - isExportDefaultSpecifier() { - const { - type - } = this.state; - if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 124) { - return this.state.containsEsc; - } - return super.isExportDefaultSpecifier(); - } - parseExportDefaultExpression() { - if (this.shouldParseEnums() && this.isContextual(124)) { - const node = this.startNode(); - this.next(); - return this.flowParseEnumDeclaration(node); - } - return super.parseExportDefaultExpression(); - } - parseConditional(expr, startLoc, refExpressionErrors) { - if (!this.match(17)) return expr; - if (this.state.maybeInArrowParameters) { - const nextCh = this.lookaheadCharCode(); - if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) { - this.setOptionalParametersError(refExpressionErrors); - return expr; - } - } - this.expect(17); - const state = this.state.clone(); - const originalNoArrowAt = this.state.noArrowAt; - const node = this.startNodeAt(startLoc); - let { - consequent, - failed - } = this.tryParseConditionalConsequent(); - let [valid, invalid] = this.getArrowLikeExpressions(consequent); - if (failed || invalid.length > 0) { - const noArrowAt = [...originalNoArrowAt]; - if (invalid.length > 0) { - this.state = state; - this.state.noArrowAt = noArrowAt; - for (let i = 0; i < invalid.length; i++) { - noArrowAt.push(invalid[i].start); - } - ({ - consequent, - failed - } = this.tryParseConditionalConsequent()); - [valid, invalid] = this.getArrowLikeExpressions(consequent); - } - if (failed && valid.length > 1) { - this.raise(FlowErrors.AmbiguousConditionalArrow, { - at: state.startLoc - }); - } - if (failed && valid.length === 1) { - this.state = state; - noArrowAt.push(valid[0].start); - this.state.noArrowAt = noArrowAt; - ({ - consequent, - failed - } = this.tryParseConditionalConsequent()); - } - } - this.getArrowLikeExpressions(consequent, true); - this.state.noArrowAt = originalNoArrowAt; - this.expect(14); - node.test = expr; - node.consequent = consequent; - node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(undefined, undefined)); - return this.finishNode(node, "ConditionalExpression"); - } - tryParseConditionalConsequent() { - this.state.noArrowParamsConversionAt.push(this.state.start); - const consequent = this.parseMaybeAssignAllowIn(); - const failed = !this.match(14); - this.state.noArrowParamsConversionAt.pop(); - return { - consequent, - failed - }; - } - getArrowLikeExpressions(node, disallowInvalid) { - const stack = [node]; - const arrows = []; - while (stack.length !== 0) { - const node = stack.pop(); - if (node.type === "ArrowFunctionExpression") { - if (node.typeParameters || !node.returnType) { - this.finishArrowValidation(node); - } else { - arrows.push(node); - } - stack.push(node.body); - } else if (node.type === "ConditionalExpression") { - stack.push(node.consequent); - stack.push(node.alternate); - } - } - if (disallowInvalid) { - arrows.forEach(node => this.finishArrowValidation(node)); - return [arrows, []]; - } - return partition(arrows, node => node.params.every(param => this.isAssignable(param, true))); - } - finishArrowValidation(node) { - var _node$extra; - this.toAssignableList(node.params, (_node$extra = node.extra) == null ? void 0 : _node$extra.trailingCommaLoc, false); - this.scope.enter(SCOPE_FUNCTION | SCOPE_ARROW); - super.checkParams(node, false, true); - this.scope.exit(); - } - forwardNoArrowParamsConversionAt(node, parse) { - let result; - if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) { - this.state.noArrowParamsConversionAt.push(this.state.start); - result = parse(); - this.state.noArrowParamsConversionAt.pop(); - } else { - result = parse(); - } - return result; - } - parseParenItem(node, startLoc) { - node = super.parseParenItem(node, startLoc); - if (this.eat(17)) { - node.optional = true; - this.resetEndLocation(node); - } - if (this.match(14)) { - const typeCastNode = this.startNodeAt(startLoc); - typeCastNode.expression = node; - typeCastNode.typeAnnotation = this.flowParseTypeAnnotation(); - return this.finishNode(typeCastNode, "TypeCastExpression"); - } - return node; - } - assertModuleNodeAllowed(node) { - if (node.type === "ImportDeclaration" && (node.importKind === "type" || node.importKind === "typeof") || node.type === "ExportNamedDeclaration" && node.exportKind === "type" || node.type === "ExportAllDeclaration" && node.exportKind === "type") { - return; - } - super.assertModuleNodeAllowed(node); - } - parseExport(node, decorators) { - const decl = super.parseExport(node, decorators); - if (decl.type === "ExportNamedDeclaration" || decl.type === "ExportAllDeclaration") { - decl.exportKind = decl.exportKind || "value"; - } - return decl; - } - parseExportDeclaration(node) { - if (this.isContextual(128)) { - node.exportKind = "type"; - const declarationNode = this.startNode(); - this.next(); - if (this.match(5)) { - node.specifiers = this.parseExportSpecifiers(true); - super.parseExportFrom(node); - return null; - } else { - return this.flowParseTypeAlias(declarationNode); - } - } else if (this.isContextual(129)) { - node.exportKind = "type"; - const declarationNode = this.startNode(); - this.next(); - return this.flowParseOpaqueType(declarationNode, false); - } else if (this.isContextual(127)) { - node.exportKind = "type"; - const declarationNode = this.startNode(); - this.next(); - return this.flowParseInterface(declarationNode); - } else if (this.shouldParseEnums() && this.isContextual(124)) { - node.exportKind = "value"; - const declarationNode = this.startNode(); - this.next(); - return this.flowParseEnumDeclaration(declarationNode); - } else { - return super.parseExportDeclaration(node); - } - } - eatExportStar(node) { - if (super.eatExportStar(node)) return true; - if (this.isContextual(128) && this.lookahead().type === 55) { - node.exportKind = "type"; - this.next(); - this.next(); - return true; - } - return false; - } - maybeParseExportNamespaceSpecifier(node) { - const { - startLoc - } = this.state; - const hasNamespace = super.maybeParseExportNamespaceSpecifier(node); - if (hasNamespace && node.exportKind === "type") { - this.unexpected(startLoc); - } - return hasNamespace; - } - parseClassId(node, isStatement, optionalId) { - super.parseClassId(node, isStatement, optionalId); - if (this.match(47)) { - node.typeParameters = this.flowParseTypeParameterDeclaration(); - } - } - parseClassMember(classBody, member, state) { - const { - startLoc - } = this.state; - if (this.isContextual(123)) { - if (super.parseClassMemberFromModifier(classBody, member)) { - return; - } - member.declare = true; - } - super.parseClassMember(classBody, member, state); - if (member.declare) { - if (member.type !== "ClassProperty" && member.type !== "ClassPrivateProperty" && member.type !== "PropertyDefinition") { - this.raise(FlowErrors.DeclareClassElement, { - at: startLoc - }); - } else if (member.value) { - this.raise(FlowErrors.DeclareClassFieldInitializer, { - at: member.value - }); - } - } - } - isIterator(word) { - return word === "iterator" || word === "asyncIterator"; - } - readIterator() { - const word = super.readWord1(); - const fullWord = "@@" + word; - if (!this.isIterator(word) || !this.state.inType) { - this.raise(Errors.InvalidIdentifier, { - at: this.state.curPosition(), - identifierName: fullWord - }); - } - this.finishToken(130, fullWord); - } - getTokenFromCode(code) { - const next = this.input.charCodeAt(this.state.pos + 1); - if (code === 123 && next === 124) { - return this.finishOp(6, 2); - } else if (this.state.inType && (code === 62 || code === 60)) { - return this.finishOp(code === 62 ? 48 : 47, 1); - } else if (this.state.inType && code === 63) { - if (next === 46) { - return this.finishOp(18, 2); - } - return this.finishOp(17, 1); - } else if (isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))) { - this.state.pos += 2; - return this.readIterator(); - } else { - return super.getTokenFromCode(code); - } - } - isAssignable(node, isBinding) { - if (node.type === "TypeCastExpression") { - return this.isAssignable(node.expression, isBinding); - } else { - return super.isAssignable(node, isBinding); - } - } - toAssignable(node, isLHS = false) { - if (!isLHS && node.type === "AssignmentExpression" && node.left.type === "TypeCastExpression") { - node.left = this.typeCastToParameter(node.left); - } - super.toAssignable(node, isLHS); - } - toAssignableList(exprList, trailingCommaLoc, isLHS) { - for (let i = 0; i < exprList.length; i++) { - const expr = exprList[i]; - if ((expr == null ? void 0 : expr.type) === "TypeCastExpression") { - exprList[i] = this.typeCastToParameter(expr); - } - } - super.toAssignableList(exprList, trailingCommaLoc, isLHS); - } - toReferencedList(exprList, isParenthesizedExpr) { - for (let i = 0; i < exprList.length; i++) { - var _expr$extra; - const expr = exprList[i]; - if (expr && expr.type === "TypeCastExpression" && !((_expr$extra = expr.extra) != null && _expr$extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) { - this.raise(FlowErrors.TypeCastInPattern, { - at: expr.typeAnnotation - }); - } - } - return exprList; - } - parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { - const node = super.parseArrayLike(close, canBePattern, isTuple, refExpressionErrors); - if (canBePattern && !this.state.maybeInArrowParameters) { - this.toReferencedList(node.elements); - } - return node; - } - isValidLVal(type, isParenthesized, binding) { - return type === "TypeCastExpression" || super.isValidLVal(type, isParenthesized, binding); - } - parseClassProperty(node) { - if (this.match(14)) { - node.typeAnnotation = this.flowParseTypeAnnotation(); - } - return super.parseClassProperty(node); - } - parseClassPrivateProperty(node) { - if (this.match(14)) { - node.typeAnnotation = this.flowParseTypeAnnotation(); - } - return super.parseClassPrivateProperty(node); - } - isClassMethod() { - return this.match(47) || super.isClassMethod(); - } - isClassProperty() { - return this.match(14) || super.isClassProperty(); - } - isNonstaticConstructor(method) { - return !this.match(14) && super.isNonstaticConstructor(method); - } - pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { - if (method.variance) { - this.unexpected(method.variance.loc.start); - } - delete method.variance; - if (this.match(47)) { - method.typeParameters = this.flowParseTypeParameterDeclaration(); - } - super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); - if (method.params && isConstructor) { - const params = method.params; - if (params.length > 0 && this.isThisParam(params[0])) { - this.raise(FlowErrors.ThisParamBannedInConstructor, { - at: method - }); - } - } else if (method.type === "MethodDefinition" && isConstructor && method.value.params) { - const params = method.value.params; - if (params.length > 0 && this.isThisParam(params[0])) { - this.raise(FlowErrors.ThisParamBannedInConstructor, { - at: method - }); - } - } - } - pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { - if (method.variance) { - this.unexpected(method.variance.loc.start); - } - delete method.variance; - if (this.match(47)) { - method.typeParameters = this.flowParseTypeParameterDeclaration(); - } - super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); - } - parseClassSuper(node) { - super.parseClassSuper(node); - if (node.superClass && this.match(47)) { - node.superTypeParameters = this.flowParseTypeParameterInstantiation(); - } - if (this.isContextual(111)) { - this.next(); - const implemented = node.implements = []; - do { - const node = this.startNode(); - node.id = this.flowParseRestrictedIdentifier(true); - if (this.match(47)) { - node.typeParameters = this.flowParseTypeParameterInstantiation(); - } else { - node.typeParameters = null; - } - implemented.push(this.finishNode(node, "ClassImplements")); - } while (this.eat(12)); - } - } - checkGetterSetterParams(method) { - super.checkGetterSetterParams(method); - const params = this.getObjectOrClassMethodParams(method); - if (params.length > 0) { - const param = params[0]; - if (this.isThisParam(param) && method.kind === "get") { - this.raise(FlowErrors.GetterMayNotHaveThisParam, { - at: param - }); - } else if (this.isThisParam(param)) { - this.raise(FlowErrors.SetterMayNotHaveThisParam, { - at: param - }); - } - } - } - parsePropertyNamePrefixOperator(node) { - node.variance = this.flowParseVariance(); - } - parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { - if (prop.variance) { - this.unexpected(prop.variance.loc.start); - } - delete prop.variance; - let typeParameters; - if (this.match(47) && !isAccessor) { - typeParameters = this.flowParseTypeParameterDeclaration(); - if (!this.match(10)) this.unexpected(); - } - const result = super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors); - if (typeParameters) { - (result.value || result).typeParameters = typeParameters; - } - return result; - } - parseAssignableListItemTypes(param) { - if (this.eat(17)) { - if (param.type !== "Identifier") { - this.raise(FlowErrors.PatternIsOptional, { - at: param - }); - } - if (this.isThisParam(param)) { - this.raise(FlowErrors.ThisParamMayNotBeOptional, { - at: param - }); - } - param.optional = true; - } - if (this.match(14)) { - param.typeAnnotation = this.flowParseTypeAnnotation(); - } else if (this.isThisParam(param)) { - this.raise(FlowErrors.ThisParamAnnotationRequired, { - at: param - }); - } - if (this.match(29) && this.isThisParam(param)) { - this.raise(FlowErrors.ThisParamNoDefault, { - at: param - }); - } - this.resetEndLocation(param); - return param; - } - parseMaybeDefault(startLoc, left) { - const node = super.parseMaybeDefault(startLoc, left); - if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { - this.raise(FlowErrors.TypeBeforeInitializer, { - at: node.typeAnnotation - }); - } - return node; - } - shouldParseDefaultImport(node) { - if (!hasTypeImportKind(node)) { - return super.shouldParseDefaultImport(node); - } - return isMaybeDefaultImport(this.state.type); - } - checkImportReflection(node) { - super.checkImportReflection(node); - if (node.module && node.importKind !== "value") { - this.raise(FlowErrors.ImportReflectionHasImportType, { - at: node.specifiers[0].loc.start - }); - } - } - parseImportSpecifierLocal(node, specifier, type) { - specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier(); - node.specifiers.push(this.finishImportSpecifier(specifier, type)); - } - maybeParseDefaultImportSpecifier(node) { - node.importKind = "value"; - let kind = null; - if (this.match(87)) { - kind = "typeof"; - } else if (this.isContextual(128)) { - kind = "type"; - } - if (kind) { - const lh = this.lookahead(); - const { - type - } = lh; - if (kind === "type" && type === 55) { - this.unexpected(null, lh.type); - } - if (isMaybeDefaultImport(type) || type === 5 || type === 55) { - this.next(); - node.importKind = kind; - } - } - return super.maybeParseDefaultImportSpecifier(node); - } - parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { - const firstIdent = specifier.imported; - let specifierTypeKind = null; - if (firstIdent.type === "Identifier") { - if (firstIdent.name === "type") { - specifierTypeKind = "type"; - } else if (firstIdent.name === "typeof") { - specifierTypeKind = "typeof"; - } - } - let isBinding = false; - if (this.isContextual(93) && !this.isLookaheadContextual("as")) { - const as_ident = this.parseIdentifier(true); - if (specifierTypeKind !== null && !tokenIsKeywordOrIdentifier(this.state.type)) { - specifier.imported = as_ident; - specifier.importKind = specifierTypeKind; - specifier.local = cloneIdentifier(as_ident); - } else { - specifier.imported = firstIdent; - specifier.importKind = null; - specifier.local = this.parseIdentifier(); - } - } else { - if (specifierTypeKind !== null && tokenIsKeywordOrIdentifier(this.state.type)) { - specifier.imported = this.parseIdentifier(true); - specifier.importKind = specifierTypeKind; - } else { - if (importedIsString) { - throw this.raise(Errors.ImportBindingIsString, { - at: specifier, - importName: firstIdent.value - }); - } - specifier.imported = firstIdent; - specifier.importKind = null; - } - if (this.eatContextual(93)) { - specifier.local = this.parseIdentifier(); - } else { - isBinding = true; - specifier.local = cloneIdentifier(specifier.imported); - } - } - const specifierIsTypeImport = hasTypeImportKind(specifier); - if (isInTypeOnlyImport && specifierIsTypeImport) { - this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, { - at: specifier - }); - } - if (isInTypeOnlyImport || specifierIsTypeImport) { - this.checkReservedType(specifier.local.name, specifier.local.loc.start, true); - } - if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) { - this.checkReservedWord(specifier.local.name, specifier.loc.start, true, true); - } - return this.finishImportSpecifier(specifier, "ImportSpecifier"); - } - parseBindingAtom() { - switch (this.state.type) { - case 78: - return this.parseIdentifier(true); - default: - return super.parseBindingAtom(); - } - } - parseFunctionParams(node, allowModifiers) { - const kind = node.kind; - if (kind !== "get" && kind !== "set" && this.match(47)) { - node.typeParameters = this.flowParseTypeParameterDeclaration(); - } - super.parseFunctionParams(node, allowModifiers); - } - parseVarId(decl, kind) { - super.parseVarId(decl, kind); - if (this.match(14)) { - decl.id.typeAnnotation = this.flowParseTypeAnnotation(); - this.resetEndLocation(decl.id); - } - } - parseAsyncArrowFromCallExpression(node, call) { - if (this.match(14)) { - const oldNoAnonFunctionType = this.state.noAnonFunctionType; - this.state.noAnonFunctionType = true; - node.returnType = this.flowParseTypeAnnotation(); - this.state.noAnonFunctionType = oldNoAnonFunctionType; - } - return super.parseAsyncArrowFromCallExpression(node, call); - } - shouldParseAsyncArrow() { - return this.match(14) || super.shouldParseAsyncArrow(); - } - parseMaybeAssign(refExpressionErrors, afterLeftParse) { - var _jsx; - let state = null; - let jsx; - if (this.hasPlugin("jsx") && (this.match(140) || this.match(47))) { - state = this.state.clone(); - jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); - if (!jsx.error) return jsx.node; - const { - context - } = this.state; - const currentContext = context[context.length - 1]; - if (currentContext === types.j_oTag || currentContext === types.j_expr) { - context.pop(); - } - } - if ((_jsx = jsx) != null && _jsx.error || this.match(47)) { - var _jsx2, _jsx3; - state = state || this.state.clone(); - let typeParameters; - const arrow = this.tryParse(abort => { - var _arrowExpression$extr; - typeParameters = this.flowParseTypeParameterDeclaration(); - const arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => { - const result = super.parseMaybeAssign(refExpressionErrors, afterLeftParse); - this.resetStartLocationFromNode(result, typeParameters); - return result; - }); - if ((_arrowExpression$extr = arrowExpression.extra) != null && _arrowExpression$extr.parenthesized) abort(); - const expr = this.maybeUnwrapTypeCastExpression(arrowExpression); - if (expr.type !== "ArrowFunctionExpression") abort(); - expr.typeParameters = typeParameters; - this.resetStartLocationFromNode(expr, typeParameters); - return arrowExpression; - }, state); - let arrowExpression = null; - if (arrow.node && this.maybeUnwrapTypeCastExpression(arrow.node).type === "ArrowFunctionExpression") { - if (!arrow.error && !arrow.aborted) { - if (arrow.node.async) { - this.raise(FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction, { - at: typeParameters - }); - } - return arrow.node; - } - arrowExpression = arrow.node; - } - if ((_jsx2 = jsx) != null && _jsx2.node) { - this.state = jsx.failState; - return jsx.node; - } - if (arrowExpression) { - this.state = arrow.failState; - return arrowExpression; - } - if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error; - if (arrow.thrown) throw arrow.error; - throw this.raise(FlowErrors.UnexpectedTokenAfterTypeParameter, { - at: typeParameters - }); - } - return super.parseMaybeAssign(refExpressionErrors, afterLeftParse); - } - parseArrow(node) { - if (this.match(14)) { - const result = this.tryParse(() => { - const oldNoAnonFunctionType = this.state.noAnonFunctionType; - this.state.noAnonFunctionType = true; - const typeNode = this.startNode(); - [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); - this.state.noAnonFunctionType = oldNoAnonFunctionType; - if (this.canInsertSemicolon()) this.unexpected(); - if (!this.match(19)) this.unexpected(); - return typeNode; - }); - if (result.thrown) return null; - if (result.error) this.state = result.failState; - node.returnType = result.node.typeAnnotation ? this.finishNode(result.node, "TypeAnnotation") : null; - } - return super.parseArrow(node); - } - shouldParseArrow(params) { - return this.match(14) || super.shouldParseArrow(params); - } - setArrowFunctionParameters(node, params) { - if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) { - node.params = params; - } else { - super.setArrowFunctionParameters(node, params); - } - } - checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) { - if (isArrowFunction && this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) { - return; - } - for (let i = 0; i < node.params.length; i++) { - if (this.isThisParam(node.params[i]) && i > 0) { - this.raise(FlowErrors.ThisParamMustBeFirst, { - at: node.params[i] - }); - } - } - return super.checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged); - } - parseParenAndDistinguishExpression(canBeArrow) { - return super.parseParenAndDistinguishExpression(canBeArrow && this.state.noArrowAt.indexOf(this.state.start) === -1); - } - parseSubscripts(base, startLoc, noCalls) { - if (base.type === "Identifier" && base.name === "async" && this.state.noArrowAt.indexOf(startLoc.index) !== -1) { - this.next(); - const node = this.startNodeAt(startLoc); - node.callee = base; - node.arguments = super.parseCallExpressionArguments(11, false); - base = this.finishNode(node, "CallExpression"); - } else if (base.type === "Identifier" && base.name === "async" && this.match(47)) { - const state = this.state.clone(); - const arrow = this.tryParse(abort => this.parseAsyncArrowWithTypeParameters(startLoc) || abort(), state); - if (!arrow.error && !arrow.aborted) return arrow.node; - const result = this.tryParse(() => super.parseSubscripts(base, startLoc, noCalls), state); - if (result.node && !result.error) return result.node; - if (arrow.node) { - this.state = arrow.failState; - return arrow.node; - } - if (result.node) { - this.state = result.failState; - return result.node; - } - throw arrow.error || result.error; - } - return super.parseSubscripts(base, startLoc, noCalls); - } - parseSubscript(base, startLoc, noCalls, subscriptState) { - if (this.match(18) && this.isLookaheadToken_lt()) { - subscriptState.optionalChainMember = true; - if (noCalls) { - subscriptState.stop = true; - return base; - } - this.next(); - const node = this.startNodeAt(startLoc); - node.callee = base; - node.typeArguments = this.flowParseTypeParameterInstantiation(); - this.expect(10); - node.arguments = this.parseCallExpressionArguments(11, false); - node.optional = true; - return this.finishCallExpression(node, true); - } else if (!noCalls && this.shouldParseTypes() && this.match(47)) { - const node = this.startNodeAt(startLoc); - node.callee = base; - const result = this.tryParse(() => { - node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew(); - this.expect(10); - node.arguments = super.parseCallExpressionArguments(11, false); - if (subscriptState.optionalChainMember) { - node.optional = false; - } - return this.finishCallExpression(node, subscriptState.optionalChainMember); - }); - if (result.node) { - if (result.error) this.state = result.failState; - return result.node; - } - } - return super.parseSubscript(base, startLoc, noCalls, subscriptState); - } - parseNewCallee(node) { - super.parseNewCallee(node); - let targs = null; - if (this.shouldParseTypes() && this.match(47)) { - targs = this.tryParse(() => this.flowParseTypeParameterInstantiationCallOrNew()).node; - } - node.typeArguments = targs; - } - parseAsyncArrowWithTypeParameters(startLoc) { - const node = this.startNodeAt(startLoc); - this.parseFunctionParams(node); - if (!this.parseArrow(node)) return; - return super.parseArrowExpression(node, undefined, true); - } - readToken_mult_modulo(code) { - const next = this.input.charCodeAt(this.state.pos + 1); - if (code === 42 && next === 47 && this.state.hasFlowComment) { - this.state.hasFlowComment = false; - this.state.pos += 2; - this.nextToken(); - return; - } - super.readToken_mult_modulo(code); - } - readToken_pipe_amp(code) { - const next = this.input.charCodeAt(this.state.pos + 1); - if (code === 124 && next === 125) { - this.finishOp(9, 2); - return; - } - super.readToken_pipe_amp(code); - } - parseTopLevel(file, program) { - const fileNode = super.parseTopLevel(file, program); - if (this.state.hasFlowComment) { - this.raise(FlowErrors.UnterminatedFlowComment, { - at: this.state.curPosition() - }); - } - return fileNode; - } - skipBlockComment() { - if (this.hasPlugin("flowComments") && this.skipFlowComment()) { - if (this.state.hasFlowComment) { - throw this.raise(FlowErrors.NestedFlowComment, { - at: this.state.startLoc - }); - } - this.hasFlowCommentCompletion(); - const commentSkip = this.skipFlowComment(); - if (commentSkip) { - this.state.pos += commentSkip; - this.state.hasFlowComment = true; - } - return; - } - return super.skipBlockComment(this.state.hasFlowComment ? "*-/" : "*/"); - } - skipFlowComment() { - const { - pos - } = this.state; - let shiftToFirstNonWhiteSpace = 2; - while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) { - shiftToFirstNonWhiteSpace++; - } - const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos); - const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1); - if (ch2 === 58 && ch3 === 58) { - return shiftToFirstNonWhiteSpace + 2; - } - if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === "flow-include") { - return shiftToFirstNonWhiteSpace + 12; - } - if (ch2 === 58 && ch3 !== 58) { - return shiftToFirstNonWhiteSpace; - } - return false; - } - hasFlowCommentCompletion() { - const end = this.input.indexOf("*/", this.state.pos); - if (end === -1) { - throw this.raise(Errors.UnterminatedComment, { - at: this.state.curPosition() - }); - } - } - flowEnumErrorBooleanMemberNotInitialized(loc, { - enumName, - memberName - }) { - this.raise(FlowErrors.EnumBooleanMemberNotInitialized, { - at: loc, - memberName, - enumName - }); - } - flowEnumErrorInvalidMemberInitializer(loc, enumContext) { - return this.raise(!enumContext.explicitType ? FlowErrors.EnumInvalidMemberInitializerUnknownType : enumContext.explicitType === "symbol" ? FlowErrors.EnumInvalidMemberInitializerSymbolType : FlowErrors.EnumInvalidMemberInitializerPrimaryType, Object.assign({ - at: loc - }, enumContext)); - } - flowEnumErrorNumberMemberNotInitialized(loc, { - enumName, - memberName - }) { - this.raise(FlowErrors.EnumNumberMemberNotInitialized, { - at: loc, - enumName, - memberName - }); - } - flowEnumErrorStringMemberInconsistentlyInitailized(node, { - enumName - }) { - this.raise(FlowErrors.EnumStringMemberInconsistentlyInitailized, { - at: node, - enumName - }); - } - flowEnumMemberInit() { - const startLoc = this.state.startLoc; - const endOfInit = () => this.match(12) || this.match(8); - switch (this.state.type) { - case 132: - { - const literal = this.parseNumericLiteral(this.state.value); - if (endOfInit()) { - return { - type: "number", - loc: literal.loc.start, - value: literal - }; - } - return { - type: "invalid", - loc: startLoc - }; - } - case 131: - { - const literal = this.parseStringLiteral(this.state.value); - if (endOfInit()) { - return { - type: "string", - loc: literal.loc.start, - value: literal - }; - } - return { - type: "invalid", - loc: startLoc - }; - } - case 85: - case 86: - { - const literal = this.parseBooleanLiteral(this.match(85)); - if (endOfInit()) { - return { - type: "boolean", - loc: literal.loc.start, - value: literal - }; - } - return { - type: "invalid", - loc: startLoc - }; - } - default: - return { - type: "invalid", - loc: startLoc - }; - } - } - flowEnumMemberRaw() { - const loc = this.state.startLoc; - const id = this.parseIdentifier(true); - const init = this.eat(29) ? this.flowEnumMemberInit() : { - type: "none", - loc - }; - return { - id, - init - }; - } - flowEnumCheckExplicitTypeMismatch(loc, context, expectedType) { - const { - explicitType - } = context; - if (explicitType === null) { - return; - } - if (explicitType !== expectedType) { - this.flowEnumErrorInvalidMemberInitializer(loc, context); - } - } - flowEnumMembers({ - enumName, - explicitType - }) { - const seenNames = new Set(); - const members = { - booleanMembers: [], - numberMembers: [], - stringMembers: [], - defaultedMembers: [] - }; - let hasUnknownMembers = false; - while (!this.match(8)) { - if (this.eat(21)) { - hasUnknownMembers = true; - break; - } - const memberNode = this.startNode(); - const { - id, - init - } = this.flowEnumMemberRaw(); - const memberName = id.name; - if (memberName === "") { - continue; - } - if (/^[a-z]/.test(memberName)) { - this.raise(FlowErrors.EnumInvalidMemberName, { - at: id, - memberName, - suggestion: memberName[0].toUpperCase() + memberName.slice(1), - enumName - }); - } - if (seenNames.has(memberName)) { - this.raise(FlowErrors.EnumDuplicateMemberName, { - at: id, - memberName, - enumName - }); - } - seenNames.add(memberName); - const context = { - enumName, - explicitType, - memberName - }; - memberNode.id = id; - switch (init.type) { - case "boolean": - { - this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "boolean"); - memberNode.init = init.value; - members.booleanMembers.push(this.finishNode(memberNode, "EnumBooleanMember")); - break; - } - case "number": - { - this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "number"); - memberNode.init = init.value; - members.numberMembers.push(this.finishNode(memberNode, "EnumNumberMember")); - break; - } - case "string": - { - this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "string"); - memberNode.init = init.value; - members.stringMembers.push(this.finishNode(memberNode, "EnumStringMember")); - break; - } - case "invalid": - { - throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context); - } - case "none": - { - switch (explicitType) { - case "boolean": - this.flowEnumErrorBooleanMemberNotInitialized(init.loc, context); - break; - case "number": - this.flowEnumErrorNumberMemberNotInitialized(init.loc, context); - break; - default: - members.defaultedMembers.push(this.finishNode(memberNode, "EnumDefaultedMember")); - } - } - } - if (!this.match(8)) { - this.expect(12); - } - } - return { - members, - hasUnknownMembers - }; - } - flowEnumStringMembers(initializedMembers, defaultedMembers, { - enumName - }) { - if (initializedMembers.length === 0) { - return defaultedMembers; - } else if (defaultedMembers.length === 0) { - return initializedMembers; - } else if (defaultedMembers.length > initializedMembers.length) { - for (const member of initializedMembers) { - this.flowEnumErrorStringMemberInconsistentlyInitailized(member, { - enumName - }); - } - return defaultedMembers; - } else { - for (const member of defaultedMembers) { - this.flowEnumErrorStringMemberInconsistentlyInitailized(member, { - enumName - }); - } - return initializedMembers; - } - } - flowEnumParseExplicitType({ - enumName - }) { - if (!this.eatContextual(101)) return null; - if (!tokenIsIdentifier(this.state.type)) { - throw this.raise(FlowErrors.EnumInvalidExplicitTypeUnknownSupplied, { - at: this.state.startLoc, - enumName - }); - } - const { - value - } = this.state; - this.next(); - if (value !== "boolean" && value !== "number" && value !== "string" && value !== "symbol") { - this.raise(FlowErrors.EnumInvalidExplicitType, { - at: this.state.startLoc, - enumName, - invalidEnumType: value - }); - } - return value; - } - flowEnumBody(node, id) { - const enumName = id.name; - const nameLoc = id.loc.start; - const explicitType = this.flowEnumParseExplicitType({ - enumName - }); - this.expect(5); - const { - members, - hasUnknownMembers - } = this.flowEnumMembers({ - enumName, - explicitType - }); - node.hasUnknownMembers = hasUnknownMembers; - switch (explicitType) { - case "boolean": - node.explicitType = true; - node.members = members.booleanMembers; - this.expect(8); - return this.finishNode(node, "EnumBooleanBody"); - case "number": - node.explicitType = true; - node.members = members.numberMembers; - this.expect(8); - return this.finishNode(node, "EnumNumberBody"); - case "string": - node.explicitType = true; - node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, { - enumName - }); - this.expect(8); - return this.finishNode(node, "EnumStringBody"); - case "symbol": - node.members = members.defaultedMembers; - this.expect(8); - return this.finishNode(node, "EnumSymbolBody"); - default: - { - const empty = () => { - node.members = []; - this.expect(8); - return this.finishNode(node, "EnumStringBody"); - }; - node.explicitType = false; - const boolsLen = members.booleanMembers.length; - const numsLen = members.numberMembers.length; - const strsLen = members.stringMembers.length; - const defaultedLen = members.defaultedMembers.length; - if (!boolsLen && !numsLen && !strsLen && !defaultedLen) { - return empty(); - } else if (!boolsLen && !numsLen) { - node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, { - enumName - }); - this.expect(8); - return this.finishNode(node, "EnumStringBody"); - } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) { - for (const member of members.defaultedMembers) { - this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, { - enumName, - memberName: member.id.name - }); - } - node.members = members.booleanMembers; - this.expect(8); - return this.finishNode(node, "EnumBooleanBody"); - } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) { - for (const member of members.defaultedMembers) { - this.flowEnumErrorNumberMemberNotInitialized(member.loc.start, { - enumName, - memberName: member.id.name - }); - } - node.members = members.numberMembers; - this.expect(8); - return this.finishNode(node, "EnumNumberBody"); - } else { - this.raise(FlowErrors.EnumInconsistentMemberValues, { - at: nameLoc, - enumName - }); - return empty(); - } - } - } - } - flowParseEnumDeclaration(node) { - const id = this.parseIdentifier(); - node.id = id; - node.body = this.flowEnumBody(this.startNode(), id); - return this.finishNode(node, "EnumDeclaration"); - } - isLookaheadToken_lt() { - const next = this.nextTokenStart(); - if (this.input.charCodeAt(next) === 60) { - const afterNext = this.input.charCodeAt(next + 1); - return afterNext !== 60 && afterNext !== 61; - } - return false; - } - maybeUnwrapTypeCastExpression(node) { - return node.type === "TypeCastExpression" ? node.expression : node; - } -}); - -const entities = { - __proto__: null, - quot: "\u0022", - amp: "&", - apos: "\u0027", - lt: "<", - gt: ">", - nbsp: "\u00A0", - iexcl: "\u00A1", - cent: "\u00A2", - pound: "\u00A3", - curren: "\u00A4", - yen: "\u00A5", - brvbar: "\u00A6", - sect: "\u00A7", - uml: "\u00A8", - copy: "\u00A9", - ordf: "\u00AA", - laquo: "\u00AB", - not: "\u00AC", - shy: "\u00AD", - reg: "\u00AE", - macr: "\u00AF", - deg: "\u00B0", - plusmn: "\u00B1", - sup2: "\u00B2", - sup3: "\u00B3", - acute: "\u00B4", - micro: "\u00B5", - para: "\u00B6", - middot: "\u00B7", - cedil: "\u00B8", - sup1: "\u00B9", - ordm: "\u00BA", - raquo: "\u00BB", - frac14: "\u00BC", - frac12: "\u00BD", - frac34: "\u00BE", - iquest: "\u00BF", - Agrave: "\u00C0", - Aacute: "\u00C1", - Acirc: "\u00C2", - Atilde: "\u00C3", - Auml: "\u00C4", - Aring: "\u00C5", - AElig: "\u00C6", - Ccedil: "\u00C7", - Egrave: "\u00C8", - Eacute: "\u00C9", - Ecirc: "\u00CA", - Euml: "\u00CB", - Igrave: "\u00CC", - Iacute: "\u00CD", - Icirc: "\u00CE", - Iuml: "\u00CF", - ETH: "\u00D0", - Ntilde: "\u00D1", - Ograve: "\u00D2", - Oacute: "\u00D3", - Ocirc: "\u00D4", - Otilde: "\u00D5", - Ouml: "\u00D6", - times: "\u00D7", - Oslash: "\u00D8", - Ugrave: "\u00D9", - Uacute: "\u00DA", - Ucirc: "\u00DB", - Uuml: "\u00DC", - Yacute: "\u00DD", - THORN: "\u00DE", - szlig: "\u00DF", - agrave: "\u00E0", - aacute: "\u00E1", - acirc: "\u00E2", - atilde: "\u00E3", - auml: "\u00E4", - aring: "\u00E5", - aelig: "\u00E6", - ccedil: "\u00E7", - egrave: "\u00E8", - eacute: "\u00E9", - ecirc: "\u00EA", - euml: "\u00EB", - igrave: "\u00EC", - iacute: "\u00ED", - icirc: "\u00EE", - iuml: "\u00EF", - eth: "\u00F0", - ntilde: "\u00F1", - ograve: "\u00F2", - oacute: "\u00F3", - ocirc: "\u00F4", - otilde: "\u00F5", - ouml: "\u00F6", - divide: "\u00F7", - oslash: "\u00F8", - ugrave: "\u00F9", - uacute: "\u00FA", - ucirc: "\u00FB", - uuml: "\u00FC", - yacute: "\u00FD", - thorn: "\u00FE", - yuml: "\u00FF", - OElig: "\u0152", - oelig: "\u0153", - Scaron: "\u0160", - scaron: "\u0161", - Yuml: "\u0178", - fnof: "\u0192", - circ: "\u02C6", - tilde: "\u02DC", - Alpha: "\u0391", - Beta: "\u0392", - Gamma: "\u0393", - Delta: "\u0394", - Epsilon: "\u0395", - Zeta: "\u0396", - Eta: "\u0397", - Theta: "\u0398", - Iota: "\u0399", - Kappa: "\u039A", - Lambda: "\u039B", - Mu: "\u039C", - Nu: "\u039D", - Xi: "\u039E", - Omicron: "\u039F", - Pi: "\u03A0", - Rho: "\u03A1", - Sigma: "\u03A3", - Tau: "\u03A4", - Upsilon: "\u03A5", - Phi: "\u03A6", - Chi: "\u03A7", - Psi: "\u03A8", - Omega: "\u03A9", - alpha: "\u03B1", - beta: "\u03B2", - gamma: "\u03B3", - delta: "\u03B4", - epsilon: "\u03B5", - zeta: "\u03B6", - eta: "\u03B7", - theta: "\u03B8", - iota: "\u03B9", - kappa: "\u03BA", - lambda: "\u03BB", - mu: "\u03BC", - nu: "\u03BD", - xi: "\u03BE", - omicron: "\u03BF", - pi: "\u03C0", - rho: "\u03C1", - sigmaf: "\u03C2", - sigma: "\u03C3", - tau: "\u03C4", - upsilon: "\u03C5", - phi: "\u03C6", - chi: "\u03C7", - psi: "\u03C8", - omega: "\u03C9", - thetasym: "\u03D1", - upsih: "\u03D2", - piv: "\u03D6", - ensp: "\u2002", - emsp: "\u2003", - thinsp: "\u2009", - zwnj: "\u200C", - zwj: "\u200D", - lrm: "\u200E", - rlm: "\u200F", - ndash: "\u2013", - mdash: "\u2014", - lsquo: "\u2018", - rsquo: "\u2019", - sbquo: "\u201A", - ldquo: "\u201C", - rdquo: "\u201D", - bdquo: "\u201E", - dagger: "\u2020", - Dagger: "\u2021", - bull: "\u2022", - hellip: "\u2026", - permil: "\u2030", - prime: "\u2032", - Prime: "\u2033", - lsaquo: "\u2039", - rsaquo: "\u203A", - oline: "\u203E", - frasl: "\u2044", - euro: "\u20AC", - image: "\u2111", - weierp: "\u2118", - real: "\u211C", - trade: "\u2122", - alefsym: "\u2135", - larr: "\u2190", - uarr: "\u2191", - rarr: "\u2192", - darr: "\u2193", - harr: "\u2194", - crarr: "\u21B5", - lArr: "\u21D0", - uArr: "\u21D1", - rArr: "\u21D2", - dArr: "\u21D3", - hArr: "\u21D4", - forall: "\u2200", - part: "\u2202", - exist: "\u2203", - empty: "\u2205", - nabla: "\u2207", - isin: "\u2208", - notin: "\u2209", - ni: "\u220B", - prod: "\u220F", - sum: "\u2211", - minus: "\u2212", - lowast: "\u2217", - radic: "\u221A", - prop: "\u221D", - infin: "\u221E", - ang: "\u2220", - and: "\u2227", - or: "\u2228", - cap: "\u2229", - cup: "\u222A", - int: "\u222B", - there4: "\u2234", - sim: "\u223C", - cong: "\u2245", - asymp: "\u2248", - ne: "\u2260", - equiv: "\u2261", - le: "\u2264", - ge: "\u2265", - sub: "\u2282", - sup: "\u2283", - nsub: "\u2284", - sube: "\u2286", - supe: "\u2287", - oplus: "\u2295", - otimes: "\u2297", - perp: "\u22A5", - sdot: "\u22C5", - lceil: "\u2308", - rceil: "\u2309", - lfloor: "\u230A", - rfloor: "\u230B", - lang: "\u2329", - rang: "\u232A", - loz: "\u25CA", - spades: "\u2660", - clubs: "\u2663", - hearts: "\u2665", - diams: "\u2666" -}; - -const JsxErrors = ParseErrorEnum`jsx`({ - AttributeIsEmpty: "JSX attributes must only be assigned a non-empty expression.", - MissingClosingTagElement: ({ - openingTagName - }) => `Expected corresponding JSX closing tag for <${openingTagName}>.`, - MissingClosingTagFragment: "Expected corresponding JSX closing tag for <>.", - UnexpectedSequenceExpression: "Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?", - UnexpectedToken: ({ - unexpected, - HTMLEntity - }) => `Unexpected token \`${unexpected}\`. Did you mean \`${HTMLEntity}\` or \`{'${unexpected}'}\`?`, - UnsupportedJsxValue: "JSX value should be either an expression or a quoted JSX text.", - UnterminatedJsxContent: "Unterminated JSX contents.", - UnwrappedAdjacentJSXElements: "Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...?" -}); -function isFragment(object) { - return object ? object.type === "JSXOpeningFragment" || object.type === "JSXClosingFragment" : false; -} -function getQualifiedJSXName(object) { - if (object.type === "JSXIdentifier") { - return object.name; - } - if (object.type === "JSXNamespacedName") { - return object.namespace.name + ":" + object.name.name; - } - if (object.type === "JSXMemberExpression") { - return getQualifiedJSXName(object.object) + "." + getQualifiedJSXName(object.property); - } - throw new Error("Node had unexpected type: " + object.type); -} -var jsx = (superClass => class JSXParserMixin extends superClass { - jsxReadToken() { - let out = ""; - let chunkStart = this.state.pos; - for (;;) { - if (this.state.pos >= this.length) { - throw this.raise(JsxErrors.UnterminatedJsxContent, { - at: this.state.startLoc - }); - } - const ch = this.input.charCodeAt(this.state.pos); - switch (ch) { - case 60: - case 123: - if (this.state.pos === this.state.start) { - if (ch === 60 && this.state.canStartJSXElement) { - ++this.state.pos; - return this.finishToken(140); - } - return super.getTokenFromCode(ch); - } - out += this.input.slice(chunkStart, this.state.pos); - return this.finishToken(139, out); - case 38: - out += this.input.slice(chunkStart, this.state.pos); - out += this.jsxReadEntity(); - chunkStart = this.state.pos; - break; - case 62: - case 125: - default: - if (isNewLine(ch)) { - out += this.input.slice(chunkStart, this.state.pos); - out += this.jsxReadNewLine(true); - chunkStart = this.state.pos; - } else { - ++this.state.pos; - } - } - } - } - jsxReadNewLine(normalizeCRLF) { - const ch = this.input.charCodeAt(this.state.pos); - let out; - ++this.state.pos; - if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) { - ++this.state.pos; - out = normalizeCRLF ? "\n" : "\r\n"; - } else { - out = String.fromCharCode(ch); - } - ++this.state.curLine; - this.state.lineStart = this.state.pos; - return out; - } - jsxReadString(quote) { - let out = ""; - let chunkStart = ++this.state.pos; - for (;;) { - if (this.state.pos >= this.length) { - throw this.raise(Errors.UnterminatedString, { - at: this.state.startLoc - }); - } - const ch = this.input.charCodeAt(this.state.pos); - if (ch === quote) break; - if (ch === 38) { - out += this.input.slice(chunkStart, this.state.pos); - out += this.jsxReadEntity(); - chunkStart = this.state.pos; - } else if (isNewLine(ch)) { - out += this.input.slice(chunkStart, this.state.pos); - out += this.jsxReadNewLine(false); - chunkStart = this.state.pos; - } else { - ++this.state.pos; - } - } - out += this.input.slice(chunkStart, this.state.pos++); - return this.finishToken(131, out); - } - jsxReadEntity() { - const startPos = ++this.state.pos; - if (this.codePointAtPos(this.state.pos) === 35) { - ++this.state.pos; - let radix = 10; - if (this.codePointAtPos(this.state.pos) === 120) { - radix = 16; - ++this.state.pos; - } - const codePoint = this.readInt(radix, undefined, false, "bail"); - if (codePoint !== null && this.codePointAtPos(this.state.pos) === 59) { - ++this.state.pos; - return String.fromCodePoint(codePoint); - } - } else { - let count = 0; - let semi = false; - while (count++ < 10 && this.state.pos < this.length && !(semi = this.codePointAtPos(this.state.pos) == 59)) { - ++this.state.pos; - } - if (semi) { - const desc = this.input.slice(startPos, this.state.pos); - const entity = entities[desc]; - ++this.state.pos; - if (entity) { - return entity; - } - } - } - this.state.pos = startPos; - return "&"; - } - jsxReadWord() { - let ch; - const start = this.state.pos; - do { - ch = this.input.charCodeAt(++this.state.pos); - } while (isIdentifierChar(ch) || ch === 45); - return this.finishToken(138, this.input.slice(start, this.state.pos)); - } - jsxParseIdentifier() { - const node = this.startNode(); - if (this.match(138)) { - node.name = this.state.value; - } else if (tokenIsKeyword(this.state.type)) { - node.name = tokenLabelName(this.state.type); - } else { - this.unexpected(); - } - this.next(); - return this.finishNode(node, "JSXIdentifier"); - } - jsxParseNamespacedName() { - const startLoc = this.state.startLoc; - const name = this.jsxParseIdentifier(); - if (!this.eat(14)) return name; - const node = this.startNodeAt(startLoc); - node.namespace = name; - node.name = this.jsxParseIdentifier(); - return this.finishNode(node, "JSXNamespacedName"); - } - jsxParseElementName() { - const startLoc = this.state.startLoc; - let node = this.jsxParseNamespacedName(); - if (node.type === "JSXNamespacedName") { - return node; - } - while (this.eat(16)) { - const newNode = this.startNodeAt(startLoc); - newNode.object = node; - newNode.property = this.jsxParseIdentifier(); - node = this.finishNode(newNode, "JSXMemberExpression"); - } - return node; - } - jsxParseAttributeValue() { - let node; - switch (this.state.type) { - case 5: - node = this.startNode(); - this.setContext(types.brace); - this.next(); - node = this.jsxParseExpressionContainer(node, types.j_oTag); - if (node.expression.type === "JSXEmptyExpression") { - this.raise(JsxErrors.AttributeIsEmpty, { - at: node - }); - } - return node; - case 140: - case 131: - return this.parseExprAtom(); - default: - throw this.raise(JsxErrors.UnsupportedJsxValue, { - at: this.state.startLoc - }); - } - } - jsxParseEmptyExpression() { - const node = this.startNodeAt(this.state.lastTokEndLoc); - return this.finishNodeAt(node, "JSXEmptyExpression", this.state.startLoc); - } - jsxParseSpreadChild(node) { - this.next(); - node.expression = this.parseExpression(); - this.setContext(types.j_expr); - this.state.canStartJSXElement = true; - this.expect(8); - return this.finishNode(node, "JSXSpreadChild"); - } - jsxParseExpressionContainer(node, previousContext) { - if (this.match(8)) { - node.expression = this.jsxParseEmptyExpression(); - } else { - const expression = this.parseExpression(); - node.expression = expression; - } - this.setContext(previousContext); - this.state.canStartJSXElement = true; - this.expect(8); - return this.finishNode(node, "JSXExpressionContainer"); - } - jsxParseAttribute() { - const node = this.startNode(); - if (this.match(5)) { - this.setContext(types.brace); - this.next(); - this.expect(21); - node.argument = this.parseMaybeAssignAllowIn(); - this.setContext(types.j_oTag); - this.state.canStartJSXElement = true; - this.expect(8); - return this.finishNode(node, "JSXSpreadAttribute"); - } - node.name = this.jsxParseNamespacedName(); - node.value = this.eat(29) ? this.jsxParseAttributeValue() : null; - return this.finishNode(node, "JSXAttribute"); - } - jsxParseOpeningElementAt(startLoc) { - const node = this.startNodeAt(startLoc); - if (this.eat(141)) { - return this.finishNode(node, "JSXOpeningFragment"); - } - node.name = this.jsxParseElementName(); - return this.jsxParseOpeningElementAfterName(node); - } - jsxParseOpeningElementAfterName(node) { - const attributes = []; - while (!this.match(56) && !this.match(141)) { - attributes.push(this.jsxParseAttribute()); - } - node.attributes = attributes; - node.selfClosing = this.eat(56); - this.expect(141); - return this.finishNode(node, "JSXOpeningElement"); - } - jsxParseClosingElementAt(startLoc) { - const node = this.startNodeAt(startLoc); - if (this.eat(141)) { - return this.finishNode(node, "JSXClosingFragment"); - } - node.name = this.jsxParseElementName(); - this.expect(141); - return this.finishNode(node, "JSXClosingElement"); - } - jsxParseElementAt(startLoc) { - const node = this.startNodeAt(startLoc); - const children = []; - const openingElement = this.jsxParseOpeningElementAt(startLoc); - let closingElement = null; - if (!openingElement.selfClosing) { - contents: for (;;) { - switch (this.state.type) { - case 140: - startLoc = this.state.startLoc; - this.next(); - if (this.eat(56)) { - closingElement = this.jsxParseClosingElementAt(startLoc); - break contents; - } - children.push(this.jsxParseElementAt(startLoc)); - break; - case 139: - children.push(this.parseExprAtom()); - break; - case 5: - { - const node = this.startNode(); - this.setContext(types.brace); - this.next(); - if (this.match(21)) { - children.push(this.jsxParseSpreadChild(node)); - } else { - children.push(this.jsxParseExpressionContainer(node, types.j_expr)); - } - break; - } - default: - throw this.unexpected(); - } - } - if (isFragment(openingElement) && !isFragment(closingElement) && closingElement !== null) { - this.raise(JsxErrors.MissingClosingTagFragment, { - at: closingElement - }); - } else if (!isFragment(openingElement) && isFragment(closingElement)) { - this.raise(JsxErrors.MissingClosingTagElement, { - at: closingElement, - openingTagName: getQualifiedJSXName(openingElement.name) - }); - } else if (!isFragment(openingElement) && !isFragment(closingElement)) { - if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) { - this.raise(JsxErrors.MissingClosingTagElement, { - at: closingElement, - openingTagName: getQualifiedJSXName(openingElement.name) - }); - } - } - } - if (isFragment(openingElement)) { - node.openingFragment = openingElement; - node.closingFragment = closingElement; - } else { - node.openingElement = openingElement; - node.closingElement = closingElement; - } - node.children = children; - if (this.match(47)) { - throw this.raise(JsxErrors.UnwrappedAdjacentJSXElements, { - at: this.state.startLoc - }); - } - return isFragment(openingElement) ? this.finishNode(node, "JSXFragment") : this.finishNode(node, "JSXElement"); - } - jsxParseElement() { - const startLoc = this.state.startLoc; - this.next(); - return this.jsxParseElementAt(startLoc); - } - setContext(newContext) { - const { - context - } = this.state; - context[context.length - 1] = newContext; - } - parseExprAtom(refExpressionErrors) { - if (this.match(139)) { - return this.parseLiteral(this.state.value, "JSXText"); - } else if (this.match(140)) { - return this.jsxParseElement(); - } else if (this.match(47) && this.input.charCodeAt(this.state.pos) !== 33) { - this.replaceToken(140); - return this.jsxParseElement(); - } else { - return super.parseExprAtom(refExpressionErrors); - } - } - skipSpace() { - const curContext = this.curContext(); - if (!curContext.preserveSpace) super.skipSpace(); - } - getTokenFromCode(code) { - const context = this.curContext(); - if (context === types.j_expr) { - return this.jsxReadToken(); - } - if (context === types.j_oTag || context === types.j_cTag) { - if (isIdentifierStart(code)) { - return this.jsxReadWord(); - } - if (code === 62) { - ++this.state.pos; - return this.finishToken(141); - } - if ((code === 34 || code === 39) && context === types.j_oTag) { - return this.jsxReadString(code); - } - } - if (code === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33) { - ++this.state.pos; - return this.finishToken(140); - } - return super.getTokenFromCode(code); - } - updateContext(prevType) { - const { - context, - type - } = this.state; - if (type === 56 && prevType === 140) { - context.splice(-2, 2, types.j_cTag); - this.state.canStartJSXElement = false; - } else if (type === 140) { - context.push(types.j_oTag); - } else if (type === 141) { - const out = context[context.length - 1]; - if (out === types.j_oTag && prevType === 56 || out === types.j_cTag) { - context.pop(); - this.state.canStartJSXElement = context[context.length - 1] === types.j_expr; - } else { - this.setContext(types.j_expr); - this.state.canStartJSXElement = true; - } - } else { - this.state.canStartJSXElement = tokenComesBeforeExpression(type); - } - } -}); - -class TypeScriptScope extends Scope { - constructor(...args) { - super(...args); - this.types = new Set(); - this.enums = new Set(); - this.constEnums = new Set(); - this.classes = new Set(); - this.exportOnlyBindings = new Set(); - } -} -class TypeScriptScopeHandler extends ScopeHandler { - constructor(...args) { - super(...args); - this.importsStack = []; - } - createScope(flags) { - this.importsStack.push(new Set()); - return new TypeScriptScope(flags); - } - enter(flags) { - if (flags == SCOPE_TS_MODULE) { - this.importsStack.push(new Set()); - } - super.enter(flags); - } - exit() { - const flags = super.exit(); - if (flags == SCOPE_TS_MODULE) { - this.importsStack.pop(); - } - return flags; - } - hasImport(name, allowShadow) { - const len = this.importsStack.length; - if (this.importsStack[len - 1].has(name)) { - return true; - } - if (!allowShadow && len > 1) { - for (let i = 0; i < len - 1; i++) { - if (this.importsStack[i].has(name)) return true; - } - } - return false; - } - declareName(name, bindingType, loc) { - if (bindingType & BIND_FLAGS_TS_IMPORT) { - if (this.hasImport(name, true)) { - this.parser.raise(Errors.VarRedeclaration, { - at: loc, - identifierName: name - }); - } - this.importsStack[this.importsStack.length - 1].add(name); - return; - } - const scope = this.currentScope(); - if (bindingType & BIND_FLAGS_TS_EXPORT_ONLY) { - this.maybeExportDefined(scope, name); - scope.exportOnlyBindings.add(name); - return; - } - super.declareName(name, bindingType, loc); - if (bindingType & BIND_KIND_TYPE) { - if (!(bindingType & BIND_KIND_VALUE)) { - this.checkRedeclarationInScope(scope, name, bindingType, loc); - this.maybeExportDefined(scope, name); - } - scope.types.add(name); - } - if (bindingType & BIND_FLAGS_TS_ENUM) scope.enums.add(name); - if (bindingType & BIND_FLAGS_TS_CONST_ENUM) scope.constEnums.add(name); - if (bindingType & BIND_FLAGS_CLASS) scope.classes.add(name); - } - isRedeclaredInScope(scope, name, bindingType) { - if (scope.enums.has(name)) { - if (bindingType & BIND_FLAGS_TS_ENUM) { - const isConst = !!(bindingType & BIND_FLAGS_TS_CONST_ENUM); - const wasConst = scope.constEnums.has(name); - return isConst !== wasConst; - } - return true; - } - if (bindingType & BIND_FLAGS_CLASS && scope.classes.has(name)) { - if (scope.lexical.has(name)) { - return !!(bindingType & BIND_KIND_VALUE); - } else { - return false; - } - } - if (bindingType & BIND_KIND_TYPE && scope.types.has(name)) { - return true; - } - return super.isRedeclaredInScope(scope, name, bindingType); - } - checkLocalExport(id) { - const { - name - } = id; - if (this.hasImport(name)) return; - const len = this.scopeStack.length; - for (let i = len - 1; i >= 0; i--) { - const scope = this.scopeStack[i]; - if (scope.types.has(name) || scope.exportOnlyBindings.has(name)) return; - } - super.checkLocalExport(id); - } -} - -const getOwn$1 = (object, key) => Object.hasOwnProperty.call(object, key) && object[key]; -function nonNull(x) { - if (x == null) { - throw new Error(`Unexpected ${x} value.`); - } - return x; -} -function assert(x) { - if (!x) { - throw new Error("Assert fail"); - } -} -const TSErrors = ParseErrorEnum`typescript`({ - AbstractMethodHasImplementation: ({ - methodName - }) => `Method '${methodName}' cannot have an implementation because it is marked abstract.`, - AbstractPropertyHasInitializer: ({ - propertyName - }) => `Property '${propertyName}' cannot have an initializer because it is marked abstract.`, - AccesorCannotDeclareThisParameter: "'get' and 'set' accessors cannot declare 'this' parameters.", - AccesorCannotHaveTypeParameters: "An accessor cannot have type parameters.", - AccessorCannotBeOptional: "An 'accessor' property cannot be declared optional.", - ClassMethodHasDeclare: "Class methods cannot have the 'declare' modifier.", - ClassMethodHasReadonly: "Class methods cannot have the 'readonly' modifier.", - ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference: "A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.", - ConstructorHasTypeParameters: "Type parameters cannot appear on a constructor declaration.", - DeclareAccessor: ({ - kind - }) => `'declare' is not allowed in ${kind}ters.`, - DeclareClassFieldHasInitializer: "Initializers are not allowed in ambient contexts.", - DeclareFunctionHasImplementation: "An implementation cannot be declared in ambient contexts.", - DuplicateAccessibilityModifier: ({ - modifier - }) => `Accessibility modifier already seen.`, - DuplicateModifier: ({ - modifier - }) => `Duplicate modifier: '${modifier}'.`, - EmptyHeritageClauseType: ({ - token - }) => `'${token}' list cannot be empty.`, - EmptyTypeArguments: "Type argument list cannot be empty.", - EmptyTypeParameters: "Type parameter list cannot be empty.", - ExpectedAmbientAfterExportDeclare: "'export declare' must be followed by an ambient declaration.", - ImportAliasHasImportType: "An import alias can not use 'import type'.", - ImportReflectionHasImportType: "An `import module` declaration can not use `type` modifier", - IncompatibleModifiers: ({ - modifiers - }) => `'${modifiers[0]}' modifier cannot be used with '${modifiers[1]}' modifier.`, - IndexSignatureHasAbstract: "Index signatures cannot have the 'abstract' modifier.", - IndexSignatureHasAccessibility: ({ - modifier - }) => `Index signatures cannot have an accessibility modifier ('${modifier}').`, - IndexSignatureHasDeclare: "Index signatures cannot have the 'declare' modifier.", - IndexSignatureHasOverride: "'override' modifier cannot appear on an index signature.", - IndexSignatureHasStatic: "Index signatures cannot have the 'static' modifier.", - InitializerNotAllowedInAmbientContext: "Initializers are not allowed in ambient contexts.", - InvalidModifierOnTypeMember: ({ - modifier - }) => `'${modifier}' modifier cannot appear on a type member.`, - InvalidModifierOnTypeParameter: ({ - modifier - }) => `'${modifier}' modifier cannot appear on a type parameter.`, - InvalidModifierOnTypeParameterPositions: ({ - modifier - }) => `'${modifier}' modifier can only appear on a type parameter of a class, interface or type alias.`, - InvalidModifiersOrder: ({ - orderedModifiers - }) => `'${orderedModifiers[0]}' modifier must precede '${orderedModifiers[1]}' modifier.`, - InvalidPropertyAccessAfterInstantiationExpression: "Invalid property access after an instantiation expression. " + "You can either wrap the instantiation expression in parentheses, or delete the type arguments.", - InvalidTupleMemberLabel: "Tuple members must be labeled with a simple identifier.", - MissingInterfaceName: "'interface' declarations must be followed by an identifier.", - MixedLabeledAndUnlabeledElements: "Tuple members must all have names or all not have names.", - NonAbstractClassHasAbstractMethod: "Abstract methods can only appear within an abstract class.", - NonClassMethodPropertyHasAbstractModifer: "'abstract' modifier can only appear on a class, method, or property declaration.", - OptionalTypeBeforeRequired: "A required element cannot follow an optional element.", - OverrideNotInSubClass: "This member cannot have an 'override' modifier because its containing class does not extend another class.", - PatternIsOptional: "A binding pattern parameter cannot be optional in an implementation signature.", - PrivateElementHasAbstract: "Private elements cannot have the 'abstract' modifier.", - PrivateElementHasAccessibility: ({ - modifier - }) => `Private elements cannot have an accessibility modifier ('${modifier}').`, - ReadonlyForMethodSignature: "'readonly' modifier can only appear on a property declaration or index signature.", - ReservedArrowTypeParam: "This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `() => ...`.", - ReservedTypeAssertion: "This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.", - SetAccesorCannotHaveOptionalParameter: "A 'set' accessor cannot have an optional parameter.", - SetAccesorCannotHaveRestParameter: "A 'set' accessor cannot have rest parameter.", - SetAccesorCannotHaveReturnType: "A 'set' accessor cannot have a return type annotation.", - SingleTypeParameterWithoutTrailingComma: ({ - typeParameterName - }) => `Single type parameter ${typeParameterName} should have a trailing comma. Example usage: <${typeParameterName},>.`, - StaticBlockCannotHaveModifier: "Static class blocks cannot have any modifier.", - TypeAnnotationAfterAssign: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", - TypeImportCannotSpecifyDefaultAndNamed: "A type-only import can specify a default import or named bindings, but not both.", - TypeModifierIsUsedInTypeExports: "The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.", - TypeModifierIsUsedInTypeImports: "The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.", - UnexpectedParameterModifier: "A parameter property is only allowed in a constructor implementation.", - UnexpectedReadonly: "'readonly' type modifier is only permitted on array and tuple literal types.", - UnexpectedTypeAnnotation: "Did not expect a type annotation here.", - UnexpectedTypeCastInParameter: "Unexpected type cast in parameter position.", - UnsupportedImportTypeArgument: "Argument in a type import must be a string literal.", - UnsupportedParameterPropertyKind: "A parameter property may not be declared using a binding pattern.", - UnsupportedSignatureParameterKind: ({ - type - }) => `Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${type}.` -}); -function keywordTypeFromName(value) { - switch (value) { - case "any": - return "TSAnyKeyword"; - case "boolean": - return "TSBooleanKeyword"; - case "bigint": - return "TSBigIntKeyword"; - case "never": - return "TSNeverKeyword"; - case "number": - return "TSNumberKeyword"; - case "object": - return "TSObjectKeyword"; - case "string": - return "TSStringKeyword"; - case "symbol": - return "TSSymbolKeyword"; - case "undefined": - return "TSUndefinedKeyword"; - case "unknown": - return "TSUnknownKeyword"; - default: - return undefined; - } -} -function tsIsAccessModifier(modifier) { - return modifier === "private" || modifier === "public" || modifier === "protected"; -} -function tsIsVarianceAnnotations(modifier) { - return modifier === "in" || modifier === "out"; -} -var typescript = (superClass => class TypeScriptParserMixin extends superClass { - getScopeHandler() { - return TypeScriptScopeHandler; - } - tsIsIdentifier() { - return tokenIsIdentifier(this.state.type); - } - tsTokenCanFollowModifier() { - return (this.match(0) || this.match(5) || this.match(55) || this.match(21) || this.match(136) || this.isLiteralPropertyName()) && !this.hasPrecedingLineBreak(); - } - tsNextTokenCanFollowModifier() { - this.next(); - return this.tsTokenCanFollowModifier(); - } - tsParseModifier(allowedModifiers, stopOnStartOfClassStaticBlock) { - if (!tokenIsIdentifier(this.state.type) && this.state.type !== 58) { - return undefined; - } - const modifier = this.state.value; - if (allowedModifiers.indexOf(modifier) !== -1) { - if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) { - return undefined; - } - if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) { - return modifier; - } - } - return undefined; - } - tsParseModifiers({ - modified, - allowedModifiers, - disallowedModifiers, - stopOnStartOfClassStaticBlock, - errorTemplate = TSErrors.InvalidModifierOnTypeMember - }) { - const enforceOrder = (loc, modifier, before, after) => { - if (modifier === before && modified[after]) { - this.raise(TSErrors.InvalidModifiersOrder, { - at: loc, - orderedModifiers: [before, after] - }); - } - }; - const incompatible = (loc, modifier, mod1, mod2) => { - if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) { - this.raise(TSErrors.IncompatibleModifiers, { - at: loc, - modifiers: [mod1, mod2] - }); - } - }; - for (;;) { - const { - startLoc - } = this.state; - const modifier = this.tsParseModifier(allowedModifiers.concat(disallowedModifiers != null ? disallowedModifiers : []), stopOnStartOfClassStaticBlock); - if (!modifier) break; - if (tsIsAccessModifier(modifier)) { - if (modified.accessibility) { - this.raise(TSErrors.DuplicateAccessibilityModifier, { - at: startLoc, - modifier - }); - } else { - enforceOrder(startLoc, modifier, modifier, "override"); - enforceOrder(startLoc, modifier, modifier, "static"); - enforceOrder(startLoc, modifier, modifier, "readonly"); - modified.accessibility = modifier; - } - } else if (tsIsVarianceAnnotations(modifier)) { - if (modified[modifier]) { - this.raise(TSErrors.DuplicateModifier, { - at: startLoc, - modifier - }); - } - modified[modifier] = true; - enforceOrder(startLoc, modifier, "in", "out"); - } else { - if (Object.hasOwnProperty.call(modified, modifier)) { - this.raise(TSErrors.DuplicateModifier, { - at: startLoc, - modifier - }); - } else { - enforceOrder(startLoc, modifier, "static", "readonly"); - enforceOrder(startLoc, modifier, "static", "override"); - enforceOrder(startLoc, modifier, "override", "readonly"); - enforceOrder(startLoc, modifier, "abstract", "override"); - incompatible(startLoc, modifier, "declare", "override"); - incompatible(startLoc, modifier, "static", "abstract"); - } - modified[modifier] = true; - } - if (disallowedModifiers != null && disallowedModifiers.includes(modifier)) { - this.raise(errorTemplate, { - at: startLoc, - modifier - }); - } - } - } - tsIsListTerminator(kind) { - switch (kind) { - case "EnumMembers": - case "TypeMembers": - return this.match(8); - case "HeritageClauseElement": - return this.match(5); - case "TupleElementTypes": - return this.match(3); - case "TypeParametersOrArguments": - return this.match(48); - } - throw new Error("Unreachable"); - } - tsParseList(kind, parseElement) { - const result = []; - while (!this.tsIsListTerminator(kind)) { - result.push(parseElement()); - } - return result; - } - tsParseDelimitedList(kind, parseElement, refTrailingCommaPos) { - return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true, refTrailingCommaPos)); - } - tsParseDelimitedListWorker(kind, parseElement, expectSuccess, refTrailingCommaPos) { - const result = []; - let trailingCommaPos = -1; - for (;;) { - if (this.tsIsListTerminator(kind)) { - break; - } - trailingCommaPos = -1; - const element = parseElement(); - if (element == null) { - return undefined; - } - result.push(element); - if (this.eat(12)) { - trailingCommaPos = this.state.lastTokStart; - continue; - } - if (this.tsIsListTerminator(kind)) { - break; - } - if (expectSuccess) { - this.expect(12); - } - return undefined; - } - if (refTrailingCommaPos) { - refTrailingCommaPos.value = trailingCommaPos; - } - return result; - } - tsParseBracketedList(kind, parseElement, bracket, skipFirstToken, refTrailingCommaPos) { - if (!skipFirstToken) { - if (bracket) { - this.expect(0); - } else { - this.expect(47); - } - } - const result = this.tsParseDelimitedList(kind, parseElement, refTrailingCommaPos); - if (bracket) { - this.expect(3); - } else { - this.expect(48); - } - return result; - } - tsParseImportType() { - const node = this.startNode(); - this.expect(83); - this.expect(10); - if (!this.match(131)) { - this.raise(TSErrors.UnsupportedImportTypeArgument, { - at: this.state.startLoc - }); - } - node.argument = super.parseExprAtom(); - this.expect(11); - if (this.eat(16)) { - node.qualifier = this.tsParseEntityName(); - } - if (this.match(47)) { - node.typeParameters = this.tsParseTypeArguments(); - } - return this.finishNode(node, "TSImportType"); - } - tsParseEntityName(allowReservedWords = true) { - let entity = this.parseIdentifier(allowReservedWords); - while (this.eat(16)) { - const node = this.startNodeAtNode(entity); - node.left = entity; - node.right = this.parseIdentifier(allowReservedWords); - entity = this.finishNode(node, "TSQualifiedName"); - } - return entity; - } - tsParseTypeReference() { - const node = this.startNode(); - node.typeName = this.tsParseEntityName(); - if (!this.hasPrecedingLineBreak() && this.match(47)) { - node.typeParameters = this.tsParseTypeArguments(); - } - return this.finishNode(node, "TSTypeReference"); - } - tsParseThisTypePredicate(lhs) { - this.next(); - const node = this.startNodeAtNode(lhs); - node.parameterName = lhs; - node.typeAnnotation = this.tsParseTypeAnnotation(false); - node.asserts = false; - return this.finishNode(node, "TSTypePredicate"); - } - tsParseThisTypeNode() { - const node = this.startNode(); - this.next(); - return this.finishNode(node, "TSThisType"); - } - tsParseTypeQuery() { - const node = this.startNode(); - this.expect(87); - if (this.match(83)) { - node.exprName = this.tsParseImportType(); - } else { - node.exprName = this.tsParseEntityName(); - } - if (!this.hasPrecedingLineBreak() && this.match(47)) { - node.typeParameters = this.tsParseTypeArguments(); - } - return this.finishNode(node, "TSTypeQuery"); - } - tsParseInOutModifiers(node) { - this.tsParseModifiers({ - modified: node, - allowedModifiers: ["in", "out"], - disallowedModifiers: ["public", "private", "protected", "readonly", "declare", "abstract", "override"], - errorTemplate: TSErrors.InvalidModifierOnTypeParameter - }); - } - tsParseNoneModifiers(node) { - this.tsParseModifiers({ - modified: node, - allowedModifiers: [], - disallowedModifiers: ["in", "out"], - errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions - }); - } - tsParseTypeParameter(parseModifiers = this.tsParseNoneModifiers.bind(this)) { - const node = this.startNode(); - parseModifiers(node); - node.name = this.tsParseTypeParameterName(); - node.constraint = this.tsEatThenParseType(81); - node.default = this.tsEatThenParseType(29); - return this.finishNode(node, "TSTypeParameter"); - } - tsTryParseTypeParameters(parseModifiers) { - if (this.match(47)) { - return this.tsParseTypeParameters(parseModifiers); - } - } - tsParseTypeParameters(parseModifiers) { - const node = this.startNode(); - if (this.match(47) || this.match(140)) { - this.next(); - } else { - this.unexpected(); - } - const refTrailingCommaPos = { - value: -1 - }; - node.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this, parseModifiers), false, true, refTrailingCommaPos); - if (node.params.length === 0) { - this.raise(TSErrors.EmptyTypeParameters, { - at: node - }); - } - if (refTrailingCommaPos.value !== -1) { - this.addExtra(node, "trailingComma", refTrailingCommaPos.value); - } - return this.finishNode(node, "TSTypeParameterDeclaration"); - } - tsFillSignature(returnToken, signature) { - const returnTokenRequired = returnToken === 19; - const paramsKey = "parameters"; - const returnTypeKey = "typeAnnotation"; - signature.typeParameters = this.tsTryParseTypeParameters(); - this.expect(10); - signature[paramsKey] = this.tsParseBindingListForSignature(); - if (returnTokenRequired) { - signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken); - } else if (this.match(returnToken)) { - signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken); - } - } - tsParseBindingListForSignature() { - return super.parseBindingList(11, 41).map(pattern => { - if (pattern.type !== "Identifier" && pattern.type !== "RestElement" && pattern.type !== "ObjectPattern" && pattern.type !== "ArrayPattern") { - this.raise(TSErrors.UnsupportedSignatureParameterKind, { - at: pattern, - type: pattern.type - }); - } - return pattern; - }); - } - tsParseTypeMemberSemicolon() { - if (!this.eat(12) && !this.isLineTerminator()) { - this.expect(13); - } - } - tsParseSignatureMember(kind, node) { - this.tsFillSignature(14, node); - this.tsParseTypeMemberSemicolon(); - return this.finishNode(node, kind); - } - tsIsUnambiguouslyIndexSignature() { - this.next(); - if (tokenIsIdentifier(this.state.type)) { - this.next(); - return this.match(14); - } - return false; - } - tsTryParseIndexSignature(node) { - if (!(this.match(0) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) { - return undefined; - } - this.expect(0); - const id = this.parseIdentifier(); - id.typeAnnotation = this.tsParseTypeAnnotation(); - this.resetEndLocation(id); - this.expect(3); - node.parameters = [id]; - const type = this.tsTryParseTypeAnnotation(); - if (type) node.typeAnnotation = type; - this.tsParseTypeMemberSemicolon(); - return this.finishNode(node, "TSIndexSignature"); - } - tsParsePropertyOrMethodSignature(node, readonly) { - if (this.eat(17)) node.optional = true; - const nodeAny = node; - if (this.match(10) || this.match(47)) { - if (readonly) { - this.raise(TSErrors.ReadonlyForMethodSignature, { - at: node - }); - } - const method = nodeAny; - if (method.kind && this.match(47)) { - this.raise(TSErrors.AccesorCannotHaveTypeParameters, { - at: this.state.curPosition() - }); - } - this.tsFillSignature(14, method); - this.tsParseTypeMemberSemicolon(); - const paramsKey = "parameters"; - const returnTypeKey = "typeAnnotation"; - if (method.kind === "get") { - if (method[paramsKey].length > 0) { - this.raise(Errors.BadGetterArity, { - at: this.state.curPosition() - }); - if (this.isThisParam(method[paramsKey][0])) { - this.raise(TSErrors.AccesorCannotDeclareThisParameter, { - at: this.state.curPosition() - }); - } - } - } else if (method.kind === "set") { - if (method[paramsKey].length !== 1) { - this.raise(Errors.BadSetterArity, { - at: this.state.curPosition() - }); - } else { - const firstParameter = method[paramsKey][0]; - if (this.isThisParam(firstParameter)) { - this.raise(TSErrors.AccesorCannotDeclareThisParameter, { - at: this.state.curPosition() - }); - } - if (firstParameter.type === "Identifier" && firstParameter.optional) { - this.raise(TSErrors.SetAccesorCannotHaveOptionalParameter, { - at: this.state.curPosition() - }); - } - if (firstParameter.type === "RestElement") { - this.raise(TSErrors.SetAccesorCannotHaveRestParameter, { - at: this.state.curPosition() - }); - } - } - if (method[returnTypeKey]) { - this.raise(TSErrors.SetAccesorCannotHaveReturnType, { - at: method[returnTypeKey] - }); - } - } else { - method.kind = "method"; - } - return this.finishNode(method, "TSMethodSignature"); - } else { - const property = nodeAny; - if (readonly) property.readonly = true; - const type = this.tsTryParseTypeAnnotation(); - if (type) property.typeAnnotation = type; - this.tsParseTypeMemberSemicolon(); - return this.finishNode(property, "TSPropertySignature"); - } - } - tsParseTypeMember() { - const node = this.startNode(); - if (this.match(10) || this.match(47)) { - return this.tsParseSignatureMember("TSCallSignatureDeclaration", node); - } - if (this.match(77)) { - const id = this.startNode(); - this.next(); - if (this.match(10) || this.match(47)) { - return this.tsParseSignatureMember("TSConstructSignatureDeclaration", node); - } else { - node.key = this.createIdentifier(id, "new"); - return this.tsParsePropertyOrMethodSignature(node, false); - } - } - this.tsParseModifiers({ - modified: node, - allowedModifiers: ["readonly"], - disallowedModifiers: ["declare", "abstract", "private", "protected", "public", "static", "override"] - }); - const idx = this.tsTryParseIndexSignature(node); - if (idx) { - return idx; - } - super.parsePropertyName(node); - if (!node.computed && node.key.type === "Identifier" && (node.key.name === "get" || node.key.name === "set") && this.tsTokenCanFollowModifier()) { - node.kind = node.key.name; - super.parsePropertyName(node); - } - return this.tsParsePropertyOrMethodSignature(node, !!node.readonly); - } - tsParseTypeLiteral() { - const node = this.startNode(); - node.members = this.tsParseObjectTypeMembers(); - return this.finishNode(node, "TSTypeLiteral"); - } - tsParseObjectTypeMembers() { - this.expect(5); - const members = this.tsParseList("TypeMembers", this.tsParseTypeMember.bind(this)); - this.expect(8); - return members; - } - tsIsStartOfMappedType() { - this.next(); - if (this.eat(53)) { - return this.isContextual(120); - } - if (this.isContextual(120)) { - this.next(); - } - if (!this.match(0)) { - return false; - } - this.next(); - if (!this.tsIsIdentifier()) { - return false; - } - this.next(); - return this.match(58); - } - tsParseMappedTypeParameter() { - const node = this.startNode(); - node.name = this.tsParseTypeParameterName(); - node.constraint = this.tsExpectThenParseType(58); - return this.finishNode(node, "TSTypeParameter"); - } - tsParseMappedType() { - const node = this.startNode(); - this.expect(5); - if (this.match(53)) { - node.readonly = this.state.value; - this.next(); - this.expectContextual(120); - } else if (this.eatContextual(120)) { - node.readonly = true; - } - this.expect(0); - node.typeParameter = this.tsParseMappedTypeParameter(); - node.nameType = this.eatContextual(93) ? this.tsParseType() : null; - this.expect(3); - if (this.match(53)) { - node.optional = this.state.value; - this.next(); - this.expect(17); - } else if (this.eat(17)) { - node.optional = true; - } - node.typeAnnotation = this.tsTryParseType(); - this.semicolon(); - this.expect(8); - return this.finishNode(node, "TSMappedType"); - } - tsParseTupleType() { - const node = this.startNode(); - node.elementTypes = this.tsParseBracketedList("TupleElementTypes", this.tsParseTupleElementType.bind(this), true, false); - let seenOptionalElement = false; - let labeledElements = null; - node.elementTypes.forEach(elementNode => { - var _labeledElements; - const { - type - } = elementNode; - if (seenOptionalElement && type !== "TSRestType" && type !== "TSOptionalType" && !(type === "TSNamedTupleMember" && elementNode.optional)) { - this.raise(TSErrors.OptionalTypeBeforeRequired, { - at: elementNode - }); - } - seenOptionalElement || (seenOptionalElement = type === "TSNamedTupleMember" && elementNode.optional || type === "TSOptionalType"); - let checkType = type; - if (type === "TSRestType") { - elementNode = elementNode.typeAnnotation; - checkType = elementNode.type; - } - const isLabeled = checkType === "TSNamedTupleMember"; - (_labeledElements = labeledElements) != null ? _labeledElements : labeledElements = isLabeled; - if (labeledElements !== isLabeled) { - this.raise(TSErrors.MixedLabeledAndUnlabeledElements, { - at: elementNode - }); - } - }); - return this.finishNode(node, "TSTupleType"); - } - tsParseTupleElementType() { - const { - startLoc - } = this.state; - const rest = this.eat(21); - let type = this.tsParseType(); - const optional = this.eat(17); - const labeled = this.eat(14); - if (labeled) { - const labeledNode = this.startNodeAtNode(type); - labeledNode.optional = optional; - if (type.type === "TSTypeReference" && !type.typeParameters && type.typeName.type === "Identifier") { - labeledNode.label = type.typeName; - } else { - this.raise(TSErrors.InvalidTupleMemberLabel, { - at: type - }); - labeledNode.label = type; - } - labeledNode.elementType = this.tsParseType(); - type = this.finishNode(labeledNode, "TSNamedTupleMember"); - } else if (optional) { - const optionalTypeNode = this.startNodeAtNode(type); - optionalTypeNode.typeAnnotation = type; - type = this.finishNode(optionalTypeNode, "TSOptionalType"); - } - if (rest) { - const restNode = this.startNodeAt(startLoc); - restNode.typeAnnotation = type; - type = this.finishNode(restNode, "TSRestType"); - } - return type; - } - tsParseParenthesizedType() { - const node = this.startNode(); - this.expect(10); - node.typeAnnotation = this.tsParseType(); - this.expect(11); - return this.finishNode(node, "TSParenthesizedType"); - } - tsParseFunctionOrConstructorType(type, abstract) { - const node = this.startNode(); - if (type === "TSConstructorType") { - node.abstract = !!abstract; - if (abstract) this.next(); - this.next(); - } - this.tsInAllowConditionalTypesContext(() => this.tsFillSignature(19, node)); - return this.finishNode(node, type); - } - tsParseLiteralTypeNode() { - const node = this.startNode(); - node.literal = (() => { - switch (this.state.type) { - case 132: - case 133: - case 131: - case 85: - case 86: - return super.parseExprAtom(); - default: - throw this.unexpected(); - } - })(); - return this.finishNode(node, "TSLiteralType"); - } - tsParseTemplateLiteralType() { - const node = this.startNode(); - node.literal = super.parseTemplate(false); - return this.finishNode(node, "TSLiteralType"); - } - parseTemplateSubstitution() { - if (this.state.inType) return this.tsParseType(); - return super.parseTemplateSubstitution(); - } - tsParseThisTypeOrThisTypePredicate() { - const thisKeyword = this.tsParseThisTypeNode(); - if (this.isContextual(114) && !this.hasPrecedingLineBreak()) { - return this.tsParseThisTypePredicate(thisKeyword); - } else { - return thisKeyword; - } - } - tsParseNonArrayType() { - switch (this.state.type) { - case 131: - case 132: - case 133: - case 85: - case 86: - return this.tsParseLiteralTypeNode(); - case 53: - if (this.state.value === "-") { - const node = this.startNode(); - const nextToken = this.lookahead(); - if (nextToken.type !== 132 && nextToken.type !== 133) { - throw this.unexpected(); - } - node.literal = this.parseMaybeUnary(); - return this.finishNode(node, "TSLiteralType"); - } - break; - case 78: - return this.tsParseThisTypeOrThisTypePredicate(); - case 87: - return this.tsParseTypeQuery(); - case 83: - return this.tsParseImportType(); - case 5: - return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral(); - case 0: - return this.tsParseTupleType(); - case 10: - return this.tsParseParenthesizedType(); - case 25: - case 24: - return this.tsParseTemplateLiteralType(); - default: - { - const { - type - } = this.state; - if (tokenIsIdentifier(type) || type === 88 || type === 84) { - const nodeType = type === 88 ? "TSVoidKeyword" : type === 84 ? "TSNullKeyword" : keywordTypeFromName(this.state.value); - if (nodeType !== undefined && this.lookaheadCharCode() !== 46) { - const node = this.startNode(); - this.next(); - return this.finishNode(node, nodeType); - } - return this.tsParseTypeReference(); - } - } - } - throw this.unexpected(); - } - tsParseArrayTypeOrHigher() { - let type = this.tsParseNonArrayType(); - while (!this.hasPrecedingLineBreak() && this.eat(0)) { - if (this.match(3)) { - const node = this.startNodeAtNode(type); - node.elementType = type; - this.expect(3); - type = this.finishNode(node, "TSArrayType"); - } else { - const node = this.startNodeAtNode(type); - node.objectType = type; - node.indexType = this.tsParseType(); - this.expect(3); - type = this.finishNode(node, "TSIndexedAccessType"); - } - } - return type; - } - tsParseTypeOperator() { - const node = this.startNode(); - const operator = this.state.value; - this.next(); - node.operator = operator; - node.typeAnnotation = this.tsParseTypeOperatorOrHigher(); - if (operator === "readonly") { - this.tsCheckTypeAnnotationForReadOnly(node); - } - return this.finishNode(node, "TSTypeOperator"); - } - tsCheckTypeAnnotationForReadOnly(node) { - switch (node.typeAnnotation.type) { - case "TSTupleType": - case "TSArrayType": - return; - default: - this.raise(TSErrors.UnexpectedReadonly, { - at: node - }); - } - } - tsParseInferType() { - const node = this.startNode(); - this.expectContextual(113); - const typeParameter = this.startNode(); - typeParameter.name = this.tsParseTypeParameterName(); - typeParameter.constraint = this.tsTryParse(() => this.tsParseConstraintForInferType()); - node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter"); - return this.finishNode(node, "TSInferType"); - } - tsParseConstraintForInferType() { - if (this.eat(81)) { - const constraint = this.tsInDisallowConditionalTypesContext(() => this.tsParseType()); - if (this.state.inDisallowConditionalTypesContext || !this.match(17)) { - return constraint; - } - } - } - tsParseTypeOperatorOrHigher() { - const isTypeOperator = tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc; - return isTypeOperator ? this.tsParseTypeOperator() : this.isContextual(113) ? this.tsParseInferType() : this.tsInAllowConditionalTypesContext(() => this.tsParseArrayTypeOrHigher()); - } - tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) { - const node = this.startNode(); - const hasLeadingOperator = this.eat(operator); - const types = []; - do { - types.push(parseConstituentType()); - } while (this.eat(operator)); - if (types.length === 1 && !hasLeadingOperator) { - return types[0]; - } - node.types = types; - return this.finishNode(node, kind); - } - tsParseIntersectionTypeOrHigher() { - return this.tsParseUnionOrIntersectionType("TSIntersectionType", this.tsParseTypeOperatorOrHigher.bind(this), 45); - } - tsParseUnionTypeOrHigher() { - return this.tsParseUnionOrIntersectionType("TSUnionType", this.tsParseIntersectionTypeOrHigher.bind(this), 43); - } - tsIsStartOfFunctionType() { - if (this.match(47)) { - return true; - } - return this.match(10) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this)); - } - tsSkipParameterStart() { - if (tokenIsIdentifier(this.state.type) || this.match(78)) { - this.next(); - return true; - } - if (this.match(5)) { - const { - errors - } = this.state; - const previousErrorCount = errors.length; - try { - this.parseObjectLike(8, true); - return errors.length === previousErrorCount; - } catch (_unused) { - return false; - } - } - if (this.match(0)) { - this.next(); - const { - errors - } = this.state; - const previousErrorCount = errors.length; - try { - super.parseBindingList(3, 93, true); - return errors.length === previousErrorCount; - } catch (_unused2) { - return false; - } - } - return false; - } - tsIsUnambiguouslyStartOfFunctionType() { - this.next(); - if (this.match(11) || this.match(21)) { - return true; - } - if (this.tsSkipParameterStart()) { - if (this.match(14) || this.match(12) || this.match(17) || this.match(29)) { - return true; - } - if (this.match(11)) { - this.next(); - if (this.match(19)) { - return true; - } - } - } - return false; - } - tsParseTypeOrTypePredicateAnnotation(returnToken) { - return this.tsInType(() => { - const t = this.startNode(); - this.expect(returnToken); - const node = this.startNode(); - const asserts = !!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this)); - if (asserts && this.match(78)) { - let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate(); - if (thisTypePredicate.type === "TSThisType") { - node.parameterName = thisTypePredicate; - node.asserts = true; - node.typeAnnotation = null; - thisTypePredicate = this.finishNode(node, "TSTypePredicate"); - } else { - this.resetStartLocationFromNode(thisTypePredicate, node); - thisTypePredicate.asserts = true; - } - t.typeAnnotation = thisTypePredicate; - return this.finishNode(t, "TSTypeAnnotation"); - } - const typePredicateVariable = this.tsIsIdentifier() && this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this)); - if (!typePredicateVariable) { - if (!asserts) { - return this.tsParseTypeAnnotation(false, t); - } - node.parameterName = this.parseIdentifier(); - node.asserts = asserts; - node.typeAnnotation = null; - t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); - return this.finishNode(t, "TSTypeAnnotation"); - } - const type = this.tsParseTypeAnnotation(false); - node.parameterName = typePredicateVariable; - node.typeAnnotation = type; - node.asserts = asserts; - t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); - return this.finishNode(t, "TSTypeAnnotation"); - }); - } - tsTryParseTypeOrTypePredicateAnnotation() { - return this.match(14) ? this.tsParseTypeOrTypePredicateAnnotation(14) : undefined; - } - tsTryParseTypeAnnotation() { - return this.match(14) ? this.tsParseTypeAnnotation() : undefined; - } - tsTryParseType() { - return this.tsEatThenParseType(14); - } - tsParseTypePredicatePrefix() { - const id = this.parseIdentifier(); - if (this.isContextual(114) && !this.hasPrecedingLineBreak()) { - this.next(); - return id; - } - } - tsParseTypePredicateAsserts() { - if (this.state.type !== 107) { - return false; - } - const containsEsc = this.state.containsEsc; - this.next(); - if (!tokenIsIdentifier(this.state.type) && !this.match(78)) { - return false; - } - if (containsEsc) { - this.raise(Errors.InvalidEscapedReservedWord, { - at: this.state.lastTokStartLoc, - reservedWord: "asserts" - }); - } - return true; - } - tsParseTypeAnnotation(eatColon = true, t = this.startNode()) { - this.tsInType(() => { - if (eatColon) this.expect(14); - t.typeAnnotation = this.tsParseType(); - }); - return this.finishNode(t, "TSTypeAnnotation"); - } - tsParseType() { - assert(this.state.inType); - const type = this.tsParseNonConditionalType(); - if (this.state.inDisallowConditionalTypesContext || this.hasPrecedingLineBreak() || !this.eat(81)) { - return type; - } - const node = this.startNodeAtNode(type); - node.checkType = type; - node.extendsType = this.tsInDisallowConditionalTypesContext(() => this.tsParseNonConditionalType()); - this.expect(17); - node.trueType = this.tsInAllowConditionalTypesContext(() => this.tsParseType()); - this.expect(14); - node.falseType = this.tsInAllowConditionalTypesContext(() => this.tsParseType()); - return this.finishNode(node, "TSConditionalType"); - } - isAbstractConstructorSignature() { - return this.isContextual(122) && this.lookahead().type === 77; - } - tsParseNonConditionalType() { - if (this.tsIsStartOfFunctionType()) { - return this.tsParseFunctionOrConstructorType("TSFunctionType"); - } - if (this.match(77)) { - return this.tsParseFunctionOrConstructorType("TSConstructorType"); - } else if (this.isAbstractConstructorSignature()) { - return this.tsParseFunctionOrConstructorType("TSConstructorType", true); - } - return this.tsParseUnionTypeOrHigher(); - } - tsParseTypeAssertion() { - if (this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) { - this.raise(TSErrors.ReservedTypeAssertion, { - at: this.state.startLoc - }); - } - const node = this.startNode(); - node.typeAnnotation = this.tsInType(() => { - this.next(); - return this.match(75) ? this.tsParseTypeReference() : this.tsParseType(); - }); - this.expect(48); - node.expression = this.parseMaybeUnary(); - return this.finishNode(node, "TSTypeAssertion"); - } - tsParseHeritageClause(token) { - const originalStartLoc = this.state.startLoc; - const delimitedList = this.tsParseDelimitedList("HeritageClauseElement", () => { - const node = this.startNode(); - node.expression = this.tsParseEntityName(); - if (this.match(47)) { - node.typeParameters = this.tsParseTypeArguments(); - } - return this.finishNode(node, "TSExpressionWithTypeArguments"); - }); - if (!delimitedList.length) { - this.raise(TSErrors.EmptyHeritageClauseType, { - at: originalStartLoc, - token - }); - } - return delimitedList; - } - tsParseInterfaceDeclaration(node, properties = {}) { - if (this.hasFollowingLineBreak()) return null; - this.expectContextual(127); - if (properties.declare) node.declare = true; - if (tokenIsIdentifier(this.state.type)) { - node.id = this.parseIdentifier(); - this.checkIdentifier(node.id, BIND_TS_INTERFACE); - } else { - node.id = null; - this.raise(TSErrors.MissingInterfaceName, { - at: this.state.startLoc - }); - } - node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers.bind(this)); - if (this.eat(81)) { - node.extends = this.tsParseHeritageClause("extends"); - } - const body = this.startNode(); - body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this)); - node.body = this.finishNode(body, "TSInterfaceBody"); - return this.finishNode(node, "TSInterfaceDeclaration"); - } - tsParseTypeAliasDeclaration(node) { - node.id = this.parseIdentifier(); - this.checkIdentifier(node.id, BIND_TS_TYPE); - node.typeAnnotation = this.tsInType(() => { - node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers.bind(this)); - this.expect(29); - if (this.isContextual(112) && this.lookahead().type !== 16) { - const node = this.startNode(); - this.next(); - return this.finishNode(node, "TSIntrinsicKeyword"); - } - return this.tsParseType(); - }); - this.semicolon(); - return this.finishNode(node, "TSTypeAliasDeclaration"); - } - tsInNoContext(cb) { - const oldContext = this.state.context; - this.state.context = [oldContext[0]]; - try { - return cb(); - } finally { - this.state.context = oldContext; - } - } - tsInType(cb) { - const oldInType = this.state.inType; - this.state.inType = true; - try { - return cb(); - } finally { - this.state.inType = oldInType; - } - } - tsInDisallowConditionalTypesContext(cb) { - const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext; - this.state.inDisallowConditionalTypesContext = true; - try { - return cb(); - } finally { - this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext; - } - } - tsInAllowConditionalTypesContext(cb) { - const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext; - this.state.inDisallowConditionalTypesContext = false; - try { - return cb(); - } finally { - this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext; - } - } - tsEatThenParseType(token) { - return !this.match(token) ? undefined : this.tsNextThenParseType(); - } - tsExpectThenParseType(token) { - return this.tsDoThenParseType(() => this.expect(token)); - } - tsNextThenParseType() { - return this.tsDoThenParseType(() => this.next()); - } - tsDoThenParseType(cb) { - return this.tsInType(() => { - cb(); - return this.tsParseType(); - }); - } - tsParseEnumMember() { - const node = this.startNode(); - node.id = this.match(131) ? super.parseStringLiteral(this.state.value) : this.parseIdentifier(true); - if (this.eat(29)) { - node.initializer = super.parseMaybeAssignAllowIn(); - } - return this.finishNode(node, "TSEnumMember"); - } - tsParseEnumDeclaration(node, properties = {}) { - if (properties.const) node.const = true; - if (properties.declare) node.declare = true; - this.expectContextual(124); - node.id = this.parseIdentifier(); - this.checkIdentifier(node.id, node.const ? BIND_TS_CONST_ENUM : BIND_TS_ENUM); - this.expect(5); - node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this)); - this.expect(8); - return this.finishNode(node, "TSEnumDeclaration"); - } - tsParseModuleBlock() { - const node = this.startNode(); - this.scope.enter(SCOPE_OTHER); - this.expect(5); - super.parseBlockOrModuleBlockBody(node.body = [], undefined, true, 8); - this.scope.exit(); - return this.finishNode(node, "TSModuleBlock"); - } - tsParseModuleOrNamespaceDeclaration(node, nested = false) { - node.id = this.parseIdentifier(); - if (!nested) { - this.checkIdentifier(node.id, BIND_TS_NAMESPACE); - } - if (this.eat(16)) { - const inner = this.startNode(); - this.tsParseModuleOrNamespaceDeclaration(inner, true); - node.body = inner; - } else { - this.scope.enter(SCOPE_TS_MODULE); - this.prodParam.enter(PARAM); - node.body = this.tsParseModuleBlock(); - this.prodParam.exit(); - this.scope.exit(); - } - return this.finishNode(node, "TSModuleDeclaration"); - } - tsParseAmbientExternalModuleDeclaration(node) { - if (this.isContextual(110)) { - node.global = true; - node.id = this.parseIdentifier(); - } else if (this.match(131)) { - node.id = super.parseStringLiteral(this.state.value); - } else { - this.unexpected(); - } - if (this.match(5)) { - this.scope.enter(SCOPE_TS_MODULE); - this.prodParam.enter(PARAM); - node.body = this.tsParseModuleBlock(); - this.prodParam.exit(); - this.scope.exit(); - } else { - this.semicolon(); - } - return this.finishNode(node, "TSModuleDeclaration"); - } - tsParseImportEqualsDeclaration(node, isExport) { - node.isExport = isExport || false; - node.id = this.parseIdentifier(); - this.checkIdentifier(node.id, BIND_FLAGS_TS_IMPORT); - this.expect(29); - const moduleReference = this.tsParseModuleReference(); - if (node.importKind === "type" && moduleReference.type !== "TSExternalModuleReference") { - this.raise(TSErrors.ImportAliasHasImportType, { - at: moduleReference - }); - } - node.moduleReference = moduleReference; - this.semicolon(); - return this.finishNode(node, "TSImportEqualsDeclaration"); - } - tsIsExternalModuleReference() { - return this.isContextual(117) && this.lookaheadCharCode() === 40; - } - tsParseModuleReference() { - return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(false); - } - tsParseExternalModuleReference() { - const node = this.startNode(); - this.expectContextual(117); - this.expect(10); - if (!this.match(131)) { - throw this.unexpected(); - } - node.expression = super.parseExprAtom(); - this.expect(11); - return this.finishNode(node, "TSExternalModuleReference"); - } - tsLookAhead(f) { - const state = this.state.clone(); - const res = f(); - this.state = state; - return res; - } - tsTryParseAndCatch(f) { - const result = this.tryParse(abort => f() || abort()); - if (result.aborted || !result.node) return undefined; - if (result.error) this.state = result.failState; - return result.node; - } - tsTryParse(f) { - const state = this.state.clone(); - const result = f(); - if (result !== undefined && result !== false) { - return result; - } else { - this.state = state; - return undefined; - } - } - tsTryParseDeclare(nany) { - if (this.isLineTerminator()) { - return; - } - let starttype = this.state.type; - let kind; - if (this.isContextual(99)) { - starttype = 74; - kind = "let"; - } - return this.tsInAmbientContext(() => { - if (starttype === 68) { - nany.declare = true; - return super.parseFunctionStatement(nany, false, false); - } - if (starttype === 80) { - nany.declare = true; - return this.parseClass(nany, true, false); - } - if (starttype === 124) { - return this.tsParseEnumDeclaration(nany, { - declare: true - }); - } - if (starttype === 110) { - return this.tsParseAmbientExternalModuleDeclaration(nany); - } - if (starttype === 75 || starttype === 74) { - if (!this.match(75) || !this.isLookaheadContextual("enum")) { - nany.declare = true; - return this.parseVarStatement(nany, kind || this.state.value, true); - } - this.expect(75); - return this.tsParseEnumDeclaration(nany, { - const: true, - declare: true - }); - } - if (starttype === 127) { - const result = this.tsParseInterfaceDeclaration(nany, { - declare: true - }); - if (result) return result; - } - if (tokenIsIdentifier(starttype)) { - return this.tsParseDeclaration(nany, this.state.value, true, null); - } - }); - } - tsTryParseExportDeclaration() { - return this.tsParseDeclaration(this.startNode(), this.state.value, true, null); - } - tsParseExpressionStatement(node, expr, decorators) { - switch (expr.name) { - case "declare": - { - const declaration = this.tsTryParseDeclare(node); - if (declaration) { - declaration.declare = true; - return declaration; - } - break; - } - case "global": - if (this.match(5)) { - this.scope.enter(SCOPE_TS_MODULE); - this.prodParam.enter(PARAM); - const mod = node; - mod.global = true; - mod.id = expr; - mod.body = this.tsParseModuleBlock(); - this.scope.exit(); - this.prodParam.exit(); - return this.finishNode(mod, "TSModuleDeclaration"); - } - break; - default: - return this.tsParseDeclaration(node, expr.name, false, decorators); - } - } - tsParseDeclaration(node, value, next, decorators) { - switch (value) { - case "abstract": - if (this.tsCheckLineTerminator(next) && (this.match(80) || tokenIsIdentifier(this.state.type))) { - return this.tsParseAbstractDeclaration(node, decorators); - } - break; - case "module": - if (this.tsCheckLineTerminator(next)) { - if (this.match(131)) { - return this.tsParseAmbientExternalModuleDeclaration(node); - } else if (tokenIsIdentifier(this.state.type)) { - return this.tsParseModuleOrNamespaceDeclaration(node); - } - } - break; - case "namespace": - if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) { - return this.tsParseModuleOrNamespaceDeclaration(node); - } - break; - case "type": - if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) { - return this.tsParseTypeAliasDeclaration(node); - } - break; - } - } - tsCheckLineTerminator(next) { - if (next) { - if (this.hasFollowingLineBreak()) return false; - this.next(); - return true; - } - return !this.isLineTerminator(); - } - tsTryParseGenericAsyncArrowFunction(startLoc) { - if (!this.match(47)) { - return undefined; - } - const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; - this.state.maybeInArrowParameters = true; - const res = this.tsTryParseAndCatch(() => { - const node = this.startNodeAt(startLoc); - node.typeParameters = this.tsParseTypeParameters(); - super.parseFunctionParams(node); - node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation(); - this.expect(19); - return node; - }); - this.state.maybeInArrowParameters = oldMaybeInArrowParameters; - if (!res) { - return undefined; - } - return super.parseArrowExpression(res, null, true); - } - tsParseTypeArgumentsInExpression() { - if (this.reScan_lt() !== 47) { - return undefined; - } - return this.tsParseTypeArguments(); - } - tsParseTypeArguments() { - const node = this.startNode(); - node.params = this.tsInType(() => this.tsInNoContext(() => { - this.expect(47); - return this.tsParseDelimitedList("TypeParametersOrArguments", this.tsParseType.bind(this)); - })); - if (node.params.length === 0) { - this.raise(TSErrors.EmptyTypeArguments, { - at: node - }); - } - this.expect(48); - return this.finishNode(node, "TSTypeParameterInstantiation"); - } - tsIsDeclarationStart() { - return tokenIsTSDeclarationStart(this.state.type); - } - isExportDefaultSpecifier() { - if (this.tsIsDeclarationStart()) return false; - return super.isExportDefaultSpecifier(); - } - parseAssignableListItem(allowModifiers, decorators) { - const startLoc = this.state.startLoc; - let accessibility; - let readonly = false; - let override = false; - if (allowModifiers !== undefined) { - const modified = {}; - this.tsParseModifiers({ - modified, - allowedModifiers: ["public", "private", "protected", "override", "readonly"] - }); - accessibility = modified.accessibility; - override = modified.override; - readonly = modified.readonly; - if (allowModifiers === false && (accessibility || readonly || override)) { - this.raise(TSErrors.UnexpectedParameterModifier, { - at: startLoc - }); - } - } - const left = this.parseMaybeDefault(); - this.parseAssignableListItemTypes(left); - const elt = this.parseMaybeDefault(left.loc.start, left); - if (accessibility || readonly || override) { - const pp = this.startNodeAt(startLoc); - if (decorators.length) { - pp.decorators = decorators; - } - if (accessibility) pp.accessibility = accessibility; - if (readonly) pp.readonly = readonly; - if (override) pp.override = override; - if (elt.type !== "Identifier" && elt.type !== "AssignmentPattern") { - this.raise(TSErrors.UnsupportedParameterPropertyKind, { - at: pp - }); - } - pp.parameter = elt; - return this.finishNode(pp, "TSParameterProperty"); - } - if (decorators.length) { - left.decorators = decorators; - } - return elt; - } - isSimpleParameter(node) { - return node.type === "TSParameterProperty" && super.isSimpleParameter(node.parameter) || super.isSimpleParameter(node); - } - parseFunctionBodyAndFinish(node, type, isMethod = false) { - if (this.match(14)) { - node.returnType = this.tsParseTypeOrTypePredicateAnnotation(14); - } - const bodilessType = type === "FunctionDeclaration" ? "TSDeclareFunction" : type === "ClassMethod" || type === "ClassPrivateMethod" ? "TSDeclareMethod" : undefined; - if (bodilessType && !this.match(5) && this.isLineTerminator()) { - return this.finishNode(node, bodilessType); - } - if (bodilessType === "TSDeclareFunction" && this.state.isAmbientContext) { - this.raise(TSErrors.DeclareFunctionHasImplementation, { - at: node - }); - if (node.declare) { - return super.parseFunctionBodyAndFinish(node, bodilessType, isMethod); - } - } - return super.parseFunctionBodyAndFinish(node, type, isMethod); - } - registerFunctionStatementId(node) { - if (!node.body && node.id) { - this.checkIdentifier(node.id, BIND_TS_AMBIENT); - } else { - super.registerFunctionStatementId(node); - } - } - tsCheckForInvalidTypeCasts(items) { - items.forEach(node => { - if ((node == null ? void 0 : node.type) === "TSTypeCastExpression") { - this.raise(TSErrors.UnexpectedTypeAnnotation, { - at: node.typeAnnotation - }); - } - }); - } - toReferencedList(exprList, isInParens) { - this.tsCheckForInvalidTypeCasts(exprList); - return exprList; - } - parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { - const node = super.parseArrayLike(close, canBePattern, isTuple, refExpressionErrors); - if (node.type === "ArrayExpression") { - this.tsCheckForInvalidTypeCasts(node.elements); - } - return node; - } - parseSubscript(base, startLoc, noCalls, state) { - if (!this.hasPrecedingLineBreak() && this.match(35)) { - this.state.canStartJSXElement = false; - this.next(); - const nonNullExpression = this.startNodeAt(startLoc); - nonNullExpression.expression = base; - return this.finishNode(nonNullExpression, "TSNonNullExpression"); - } - let isOptionalCall = false; - if (this.match(18) && this.lookaheadCharCode() === 60) { - if (noCalls) { - state.stop = true; - return base; - } - state.optionalChainMember = isOptionalCall = true; - this.next(); - } - if (this.match(47) || this.match(51)) { - let missingParenErrorLoc; - const result = this.tsTryParseAndCatch(() => { - if (!noCalls && this.atPossibleAsyncArrow(base)) { - const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(startLoc); - if (asyncArrowFn) { - return asyncArrowFn; - } - } - const typeArguments = this.tsParseTypeArgumentsInExpression(); - if (!typeArguments) return; - if (isOptionalCall && !this.match(10)) { - missingParenErrorLoc = this.state.curPosition(); - return; - } - if (tokenIsTemplate(this.state.type)) { - const result = super.parseTaggedTemplateExpression(base, startLoc, state); - result.typeParameters = typeArguments; - return result; - } - if (!noCalls && this.eat(10)) { - const node = this.startNodeAt(startLoc); - node.callee = base; - node.arguments = this.parseCallExpressionArguments(11, false); - this.tsCheckForInvalidTypeCasts(node.arguments); - node.typeParameters = typeArguments; - if (state.optionalChainMember) { - node.optional = isOptionalCall; - } - return this.finishCallExpression(node, state.optionalChainMember); - } - const tokenType = this.state.type; - if (tokenType === 48 || tokenType === 52 || tokenType !== 10 && tokenCanStartExpression(tokenType) && !this.hasPrecedingLineBreak()) { - return; - } - const node = this.startNodeAt(startLoc); - node.expression = base; - node.typeParameters = typeArguments; - return this.finishNode(node, "TSInstantiationExpression"); - }); - if (missingParenErrorLoc) { - this.unexpected(missingParenErrorLoc, 10); - } - if (result) { - if (result.type === "TSInstantiationExpression" && (this.match(16) || this.match(18) && this.lookaheadCharCode() !== 40)) { - this.raise(TSErrors.InvalidPropertyAccessAfterInstantiationExpression, { - at: this.state.startLoc - }); - } - return result; - } - } - return super.parseSubscript(base, startLoc, noCalls, state); - } - parseNewCallee(node) { - var _callee$extra; - super.parseNewCallee(node); - const { - callee - } = node; - if (callee.type === "TSInstantiationExpression" && !((_callee$extra = callee.extra) != null && _callee$extra.parenthesized)) { - node.typeParameters = callee.typeParameters; - node.callee = callee.expression; - } - } - parseExprOp(left, leftStartLoc, minPrec) { - let isSatisfies; - if (tokenOperatorPrecedence(58) > minPrec && !this.hasPrecedingLineBreak() && (this.isContextual(93) || (isSatisfies = this.isContextual(118)))) { - const node = this.startNodeAt(leftStartLoc); - node.expression = left; - node.typeAnnotation = this.tsInType(() => { - this.next(); - if (this.match(75)) { - if (isSatisfies) { - this.raise(Errors.UnexpectedKeyword, { - at: this.state.startLoc, - keyword: "const" - }); - } - return this.tsParseTypeReference(); - } - return this.tsParseType(); - }); - this.finishNode(node, isSatisfies ? "TSSatisfiesExpression" : "TSAsExpression"); - this.reScan_lt_gt(); - return this.parseExprOp(node, leftStartLoc, minPrec); - } - return super.parseExprOp(left, leftStartLoc, minPrec); - } - checkReservedWord(word, startLoc, checkKeywords, isBinding) { - if (!this.state.isAmbientContext) { - super.checkReservedWord(word, startLoc, checkKeywords, isBinding); - } - } - checkImportReflection(node) { - super.checkImportReflection(node); - if (node.module && node.importKind !== "value") { - this.raise(TSErrors.ImportReflectionHasImportType, { - at: node.specifiers[0].loc.start - }); - } - } - checkDuplicateExports() {} - parseImport(node) { - node.importKind = "value"; - if (tokenIsIdentifier(this.state.type) || this.match(55) || this.match(5)) { - let ahead = this.lookahead(); - if (this.isContextual(128) && ahead.type !== 12 && ahead.type !== 97 && ahead.type !== 29) { - node.importKind = "type"; - this.next(); - ahead = this.lookahead(); - } - if (tokenIsIdentifier(this.state.type) && ahead.type === 29) { - return this.tsParseImportEqualsDeclaration(node); - } - } - const importNode = super.parseImport(node); - if (importNode.importKind === "type" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === "ImportDefaultSpecifier") { - this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, { - at: importNode - }); - } - return importNode; - } - parseExport(node, decorators) { - if (this.match(83)) { - this.next(); - if (this.isContextual(128) && this.lookaheadCharCode() !== 61) { - node.importKind = "type"; - this.next(); - } else { - node.importKind = "value"; - } - return this.tsParseImportEqualsDeclaration(node, true); - } else if (this.eat(29)) { - const assign = node; - assign.expression = super.parseExpression(); - this.semicolon(); - return this.finishNode(assign, "TSExportAssignment"); - } else if (this.eatContextual(93)) { - const decl = node; - this.expectContextual(126); - decl.id = this.parseIdentifier(); - this.semicolon(); - return this.finishNode(decl, "TSNamespaceExportDeclaration"); - } else { - if (this.isContextual(128) && this.lookahead().type === 5) { - this.next(); - node.exportKind = "type"; - } else { - node.exportKind = "value"; - } - return super.parseExport(node, decorators); - } - } - isAbstractClass() { - return this.isContextual(122) && this.lookahead().type === 80; - } - parseExportDefaultExpression() { - if (this.isAbstractClass()) { - const cls = this.startNode(); - this.next(); - cls.abstract = true; - return this.parseClass(cls, true, true); - } - if (this.match(127)) { - const result = this.tsParseInterfaceDeclaration(this.startNode()); - if (result) return result; - } - return super.parseExportDefaultExpression(); - } - parseVarStatement(node, kind, allowMissingInitializer = false) { - const { - isAmbientContext - } = this.state; - const declaration = super.parseVarStatement(node, kind, allowMissingInitializer || isAmbientContext); - if (!isAmbientContext) return declaration; - for (const { - id, - init - } of declaration.declarations) { - if (!init) continue; - if (kind !== "const" || !!id.typeAnnotation) { - this.raise(TSErrors.InitializerNotAllowedInAmbientContext, { - at: init - }); - } else if (!isValidAmbientConstInitializer(init, this.hasPlugin("estree"))) { - this.raise(TSErrors.ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference, { - at: init - }); - } - } - return declaration; - } - parseStatementContent(flags, decorators) { - if (this.match(75) && this.isLookaheadContextual("enum")) { - const node = this.startNode(); - this.expect(75); - return this.tsParseEnumDeclaration(node, { - const: true - }); - } - if (this.isContextual(124)) { - return this.tsParseEnumDeclaration(this.startNode()); - } - if (this.isContextual(127)) { - const result = this.tsParseInterfaceDeclaration(this.startNode()); - if (result) return result; - } - return super.parseStatementContent(flags, decorators); - } - parseAccessModifier() { - return this.tsParseModifier(["public", "protected", "private"]); - } - tsHasSomeModifiers(member, modifiers) { - return modifiers.some(modifier => { - if (tsIsAccessModifier(modifier)) { - return member.accessibility === modifier; - } - return !!member[modifier]; - }); - } - tsIsStartOfStaticBlocks() { - return this.isContextual(104) && this.lookaheadCharCode() === 123; - } - parseClassMember(classBody, member, state) { - const modifiers = ["declare", "private", "public", "protected", "override", "abstract", "readonly", "static"]; - this.tsParseModifiers({ - modified: member, - allowedModifiers: modifiers, - disallowedModifiers: ["in", "out"], - stopOnStartOfClassStaticBlock: true, - errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions - }); - const callParseClassMemberWithIsStatic = () => { - if (this.tsIsStartOfStaticBlocks()) { - this.next(); - this.next(); - if (this.tsHasSomeModifiers(member, modifiers)) { - this.raise(TSErrors.StaticBlockCannotHaveModifier, { - at: this.state.curPosition() - }); - } - super.parseClassStaticBlock(classBody, member); - } else { - this.parseClassMemberWithIsStatic(classBody, member, state, !!member.static); - } - }; - if (member.declare) { - this.tsInAmbientContext(callParseClassMemberWithIsStatic); - } else { - callParseClassMemberWithIsStatic(); - } - } - parseClassMemberWithIsStatic(classBody, member, state, isStatic) { - const idx = this.tsTryParseIndexSignature(member); - if (idx) { - classBody.body.push(idx); - if (member.abstract) { - this.raise(TSErrors.IndexSignatureHasAbstract, { - at: member - }); - } - if (member.accessibility) { - this.raise(TSErrors.IndexSignatureHasAccessibility, { - at: member, - modifier: member.accessibility - }); - } - if (member.declare) { - this.raise(TSErrors.IndexSignatureHasDeclare, { - at: member - }); - } - if (member.override) { - this.raise(TSErrors.IndexSignatureHasOverride, { - at: member - }); - } - return; - } - if (!this.state.inAbstractClass && member.abstract) { - this.raise(TSErrors.NonAbstractClassHasAbstractMethod, { - at: member - }); - } - if (member.override) { - if (!state.hadSuperClass) { - this.raise(TSErrors.OverrideNotInSubClass, { - at: member - }); - } - } - super.parseClassMemberWithIsStatic(classBody, member, state, isStatic); - } - parsePostMemberNameModifiers(methodOrProp) { - const optional = this.eat(17); - if (optional) methodOrProp.optional = true; - if (methodOrProp.readonly && this.match(10)) { - this.raise(TSErrors.ClassMethodHasReadonly, { - at: methodOrProp - }); - } - if (methodOrProp.declare && this.match(10)) { - this.raise(TSErrors.ClassMethodHasDeclare, { - at: methodOrProp - }); - } - } - parseExpressionStatement(node, expr, decorators) { - const decl = expr.type === "Identifier" ? this.tsParseExpressionStatement(node, expr, decorators) : undefined; - return decl || super.parseExpressionStatement(node, expr, decorators); - } - shouldParseExportDeclaration() { - if (this.tsIsDeclarationStart()) return true; - return super.shouldParseExportDeclaration(); - } - parseConditional(expr, startLoc, refExpressionErrors) { - if (!this.state.maybeInArrowParameters || !this.match(17)) { - return super.parseConditional(expr, startLoc, refExpressionErrors); - } - const result = this.tryParse(() => super.parseConditional(expr, startLoc)); - if (!result.node) { - if (result.error) { - super.setOptionalParametersError(refExpressionErrors, result.error); - } - return expr; - } - if (result.error) this.state = result.failState; - return result.node; - } - parseParenItem(node, startLoc) { - node = super.parseParenItem(node, startLoc); - if (this.eat(17)) { - node.optional = true; - this.resetEndLocation(node); - } - if (this.match(14)) { - const typeCastNode = this.startNodeAt(startLoc); - typeCastNode.expression = node; - typeCastNode.typeAnnotation = this.tsParseTypeAnnotation(); - return this.finishNode(typeCastNode, "TSTypeCastExpression"); - } - return node; - } - parseExportDeclaration(node) { - if (!this.state.isAmbientContext && this.isContextual(123)) { - return this.tsInAmbientContext(() => this.parseExportDeclaration(node)); - } - const startLoc = this.state.startLoc; - const isDeclare = this.eatContextual(123); - if (isDeclare && (this.isContextual(123) || !this.shouldParseExportDeclaration())) { - throw this.raise(TSErrors.ExpectedAmbientAfterExportDeclare, { - at: this.state.startLoc - }); - } - const isIdentifier = tokenIsIdentifier(this.state.type); - const declaration = isIdentifier && this.tsTryParseExportDeclaration() || super.parseExportDeclaration(node); - if (!declaration) return null; - if (declaration.type === "TSInterfaceDeclaration" || declaration.type === "TSTypeAliasDeclaration" || isDeclare) { - node.exportKind = "type"; - } - if (isDeclare) { - this.resetStartLocation(declaration, startLoc); - declaration.declare = true; - } - return declaration; - } - parseClassId(node, isStatement, optionalId, bindingType) { - if ((!isStatement || optionalId) && this.isContextual(111)) { - return; - } - super.parseClassId(node, isStatement, optionalId, node.declare ? BIND_TS_AMBIENT : BIND_CLASS); - const typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers.bind(this)); - if (typeParameters) node.typeParameters = typeParameters; - } - parseClassPropertyAnnotation(node) { - if (!node.optional) { - if (this.eat(35)) { - node.definite = true; - } else if (this.eat(17)) { - node.optional = true; - } - } - const type = this.tsTryParseTypeAnnotation(); - if (type) node.typeAnnotation = type; - } - parseClassProperty(node) { - this.parseClassPropertyAnnotation(node); - if (this.state.isAmbientContext && !(node.readonly && !node.typeAnnotation) && this.match(29)) { - this.raise(TSErrors.DeclareClassFieldHasInitializer, { - at: this.state.startLoc - }); - } - if (node.abstract && this.match(29)) { - const { - key - } = node; - this.raise(TSErrors.AbstractPropertyHasInitializer, { - at: this.state.startLoc, - propertyName: key.type === "Identifier" && !node.computed ? key.name : `[${this.input.slice(key.start, key.end)}]` - }); - } - return super.parseClassProperty(node); - } - parseClassPrivateProperty(node) { - if (node.abstract) { - this.raise(TSErrors.PrivateElementHasAbstract, { - at: node - }); - } - if (node.accessibility) { - this.raise(TSErrors.PrivateElementHasAccessibility, { - at: node, - modifier: node.accessibility - }); - } - this.parseClassPropertyAnnotation(node); - return super.parseClassPrivateProperty(node); - } - parseClassAccessorProperty(node) { - this.parseClassPropertyAnnotation(node); - if (node.optional) { - this.raise(TSErrors.AccessorCannotBeOptional, { - at: node - }); - } - return super.parseClassAccessorProperty(node); - } - pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { - const typeParameters = this.tsTryParseTypeParameters(); - if (typeParameters && isConstructor) { - this.raise(TSErrors.ConstructorHasTypeParameters, { - at: typeParameters - }); - } - const { - declare = false, - kind - } = method; - if (declare && (kind === "get" || kind === "set")) { - this.raise(TSErrors.DeclareAccessor, { - at: method, - kind - }); - } - if (typeParameters) method.typeParameters = typeParameters; - super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); - } - pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { - const typeParameters = this.tsTryParseTypeParameters(); - if (typeParameters) method.typeParameters = typeParameters; - super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); - } - declareClassPrivateMethodInScope(node, kind) { - if (node.type === "TSDeclareMethod") return; - if (node.type === "MethodDefinition" && !node.value.body) return; - super.declareClassPrivateMethodInScope(node, kind); - } - parseClassSuper(node) { - super.parseClassSuper(node); - if (node.superClass && (this.match(47) || this.match(51))) { - node.superTypeParameters = this.tsParseTypeArgumentsInExpression(); - } - if (this.eatContextual(111)) { - node.implements = this.tsParseHeritageClause("implements"); - } - } - parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { - const typeParameters = this.tsTryParseTypeParameters(); - if (typeParameters) prop.typeParameters = typeParameters; - return super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors); - } - parseFunctionParams(node, allowModifiers) { - const typeParameters = this.tsTryParseTypeParameters(); - if (typeParameters) node.typeParameters = typeParameters; - super.parseFunctionParams(node, allowModifiers); - } - parseVarId(decl, kind) { - super.parseVarId(decl, kind); - if (decl.id.type === "Identifier" && !this.hasPrecedingLineBreak() && this.eat(35)) { - decl.definite = true; - } - const type = this.tsTryParseTypeAnnotation(); - if (type) { - decl.id.typeAnnotation = type; - this.resetEndLocation(decl.id); - } - } - parseAsyncArrowFromCallExpression(node, call) { - if (this.match(14)) { - node.returnType = this.tsParseTypeAnnotation(); - } - return super.parseAsyncArrowFromCallExpression(node, call); - } - parseMaybeAssign(refExpressionErrors, afterLeftParse) { - var _jsx, _jsx2, _typeCast, _jsx3, _typeCast2, _jsx4, _typeCast3; - let state; - let jsx; - let typeCast; - if (this.hasPlugin("jsx") && (this.match(140) || this.match(47))) { - state = this.state.clone(); - jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); - if (!jsx.error) return jsx.node; - const { - context - } = this.state; - const currentContext = context[context.length - 1]; - if (currentContext === types.j_oTag || currentContext === types.j_expr) { - context.pop(); - } - } - if (!((_jsx = jsx) != null && _jsx.error) && !this.match(47)) { - return super.parseMaybeAssign(refExpressionErrors, afterLeftParse); - } - if (!state || state === this.state) state = this.state.clone(); - let typeParameters; - const arrow = this.tryParse(abort => { - var _expr$extra, _typeParameters; - typeParameters = this.tsParseTypeParameters(); - const expr = super.parseMaybeAssign(refExpressionErrors, afterLeftParse); - if (expr.type !== "ArrowFunctionExpression" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) { - abort(); - } - if (((_typeParameters = typeParameters) == null ? void 0 : _typeParameters.params.length) !== 0) { - this.resetStartLocationFromNode(expr, typeParameters); - } - expr.typeParameters = typeParameters; - return expr; - }, state); - if (!arrow.error && !arrow.aborted) { - if (typeParameters) this.reportReservedArrowTypeParam(typeParameters); - return arrow.node; - } - if (!jsx) { - assert(!this.hasPlugin("jsx")); - typeCast = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); - if (!typeCast.error) return typeCast.node; - } - if ((_jsx2 = jsx) != null && _jsx2.node) { - this.state = jsx.failState; - return jsx.node; - } - if (arrow.node) { - this.state = arrow.failState; - if (typeParameters) this.reportReservedArrowTypeParam(typeParameters); - return arrow.node; - } - if ((_typeCast = typeCast) != null && _typeCast.node) { - this.state = typeCast.failState; - return typeCast.node; - } - if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error; - if (arrow.thrown) throw arrow.error; - if ((_typeCast2 = typeCast) != null && _typeCast2.thrown) throw typeCast.error; - throw ((_jsx4 = jsx) == null ? void 0 : _jsx4.error) || arrow.error || ((_typeCast3 = typeCast) == null ? void 0 : _typeCast3.error); - } - reportReservedArrowTypeParam(node) { - var _node$extra; - if (node.params.length === 1 && !((_node$extra = node.extra) != null && _node$extra.trailingComma) && this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) { - this.raise(TSErrors.ReservedArrowTypeParam, { - at: node - }); - } - } - parseMaybeUnary(refExpressionErrors, sawUnary) { - if (!this.hasPlugin("jsx") && this.match(47)) { - return this.tsParseTypeAssertion(); - } else { - return super.parseMaybeUnary(refExpressionErrors, sawUnary); - } - } - parseArrow(node) { - if (this.match(14)) { - const result = this.tryParse(abort => { - const returnType = this.tsParseTypeOrTypePredicateAnnotation(14); - if (this.canInsertSemicolon() || !this.match(19)) abort(); - return returnType; - }); - if (result.aborted) return; - if (!result.thrown) { - if (result.error) this.state = result.failState; - node.returnType = result.node; - } - } - return super.parseArrow(node); - } - parseAssignableListItemTypes(param) { - if (this.eat(17)) { - if (param.type !== "Identifier" && !this.state.isAmbientContext && !this.state.inType) { - this.raise(TSErrors.PatternIsOptional, { - at: param - }); - } - param.optional = true; - } - const type = this.tsTryParseTypeAnnotation(); - if (type) param.typeAnnotation = type; - this.resetEndLocation(param); - return param; - } - isAssignable(node, isBinding) { - switch (node.type) { - case "TSTypeCastExpression": - return this.isAssignable(node.expression, isBinding); - case "TSParameterProperty": - return true; - default: - return super.isAssignable(node, isBinding); - } - } - toAssignable(node, isLHS = false) { - switch (node.type) { - case "ParenthesizedExpression": - this.toAssignableParenthesizedExpression(node, isLHS); - break; - case "TSAsExpression": - case "TSSatisfiesExpression": - case "TSNonNullExpression": - case "TSTypeAssertion": - if (isLHS) { - this.expressionScope.recordArrowParameterBindingError(TSErrors.UnexpectedTypeCastInParameter, { - at: node - }); - } else { - this.raise(TSErrors.UnexpectedTypeCastInParameter, { - at: node - }); - } - this.toAssignable(node.expression, isLHS); - break; - case "AssignmentExpression": - if (!isLHS && node.left.type === "TSTypeCastExpression") { - node.left = this.typeCastToParameter(node.left); - } - default: - super.toAssignable(node, isLHS); - } - } - toAssignableParenthesizedExpression(node, isLHS) { - switch (node.expression.type) { - case "TSAsExpression": - case "TSSatisfiesExpression": - case "TSNonNullExpression": - case "TSTypeAssertion": - case "ParenthesizedExpression": - this.toAssignable(node.expression, isLHS); - break; - default: - super.toAssignable(node, isLHS); - } - } - checkToRestConversion(node, allowPattern) { - switch (node.type) { - case "TSAsExpression": - case "TSSatisfiesExpression": - case "TSTypeAssertion": - case "TSNonNullExpression": - this.checkToRestConversion(node.expression, false); - break; - default: - super.checkToRestConversion(node, allowPattern); - } - } - isValidLVal(type, isUnparenthesizedInAssign, binding) { - return getOwn$1({ - TSTypeCastExpression: true, - TSParameterProperty: "parameter", - TSNonNullExpression: "expression", - TSAsExpression: (binding !== BIND_NONE || !isUnparenthesizedInAssign) && ["expression", true], - TSSatisfiesExpression: (binding !== BIND_NONE || !isUnparenthesizedInAssign) && ["expression", true], - TSTypeAssertion: (binding !== BIND_NONE || !isUnparenthesizedInAssign) && ["expression", true] - }, type) || super.isValidLVal(type, isUnparenthesizedInAssign, binding); - } - parseBindingAtom() { - switch (this.state.type) { - case 78: - return this.parseIdentifier(true); - default: - return super.parseBindingAtom(); - } - } - parseMaybeDecoratorArguments(expr) { - if (this.match(47) || this.match(51)) { - const typeArguments = this.tsParseTypeArgumentsInExpression(); - if (this.match(10)) { - const call = super.parseMaybeDecoratorArguments(expr); - call.typeParameters = typeArguments; - return call; - } - this.unexpected(null, 10); - } - return super.parseMaybeDecoratorArguments(expr); - } - checkCommaAfterRest(close) { - if (this.state.isAmbientContext && this.match(12) && this.lookaheadCharCode() === close) { - this.next(); - return false; - } else { - return super.checkCommaAfterRest(close); - } - } - isClassMethod() { - return this.match(47) || super.isClassMethod(); - } - isClassProperty() { - return this.match(35) || this.match(14) || super.isClassProperty(); - } - parseMaybeDefault(startLoc, left) { - const node = super.parseMaybeDefault(startLoc, left); - if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { - this.raise(TSErrors.TypeAnnotationAfterAssign, { - at: node.typeAnnotation - }); - } - return node; - } - getTokenFromCode(code) { - if (this.state.inType) { - if (code === 62) { - return this.finishOp(48, 1); - } - if (code === 60) { - return this.finishOp(47, 1); - } - } - return super.getTokenFromCode(code); - } - reScan_lt_gt() { - const { - type - } = this.state; - if (type === 47) { - this.state.pos -= 1; - this.readToken_lt(); - } else if (type === 48) { - this.state.pos -= 1; - this.readToken_gt(); - } - } - reScan_lt() { - const { - type - } = this.state; - if (type === 51) { - this.state.pos -= 2; - this.finishOp(47, 1); - return 47; - } - return type; - } - toAssignableList(exprList, trailingCommaLoc, isLHS) { - for (let i = 0; i < exprList.length; i++) { - const expr = exprList[i]; - if ((expr == null ? void 0 : expr.type) === "TSTypeCastExpression") { - exprList[i] = this.typeCastToParameter(expr); - } - } - super.toAssignableList(exprList, trailingCommaLoc, isLHS); - } - typeCastToParameter(node) { - node.expression.typeAnnotation = node.typeAnnotation; - this.resetEndLocation(node.expression, node.typeAnnotation.loc.end); - return node.expression; - } - shouldParseArrow(params) { - if (this.match(14)) { - return params.every(expr => this.isAssignable(expr, true)); - } - return super.shouldParseArrow(params); - } - shouldParseAsyncArrow() { - return this.match(14) || super.shouldParseAsyncArrow(); - } - canHaveLeadingDecorator() { - return super.canHaveLeadingDecorator() || this.isAbstractClass(); - } - jsxParseOpeningElementAfterName(node) { - if (this.match(47) || this.match(51)) { - const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArgumentsInExpression()); - if (typeArguments) node.typeParameters = typeArguments; - } - return super.jsxParseOpeningElementAfterName(node); - } - getGetterSetterExpectedParamCount(method) { - const baseCount = super.getGetterSetterExpectedParamCount(method); - const params = this.getObjectOrClassMethodParams(method); - const firstParam = params[0]; - const hasContextParam = firstParam && this.isThisParam(firstParam); - return hasContextParam ? baseCount + 1 : baseCount; - } - parseCatchClauseParam() { - const param = super.parseCatchClauseParam(); - const type = this.tsTryParseTypeAnnotation(); - if (type) { - param.typeAnnotation = type; - this.resetEndLocation(param); - } - return param; - } - tsInAmbientContext(cb) { - const oldIsAmbientContext = this.state.isAmbientContext; - this.state.isAmbientContext = true; - try { - return cb(); - } finally { - this.state.isAmbientContext = oldIsAmbientContext; - } - } - parseClass(node, isStatement, optionalId) { - const oldInAbstractClass = this.state.inAbstractClass; - this.state.inAbstractClass = !!node.abstract; - try { - return super.parseClass(node, isStatement, optionalId); - } finally { - this.state.inAbstractClass = oldInAbstractClass; - } - } - tsParseAbstractDeclaration(node, decorators) { - if (this.match(80)) { - node.abstract = true; - return this.maybeTakeDecorators(decorators, this.parseClass(node, true, false)); - } else if (this.isContextual(127)) { - if (!this.hasFollowingLineBreak()) { - node.abstract = true; - this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifer, { - at: node - }); - return this.tsParseInterfaceDeclaration(node); - } - } else { - this.unexpected(null, 80); - } - } - parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope) { - const method = super.parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope); - if (method.abstract) { - const hasBody = this.hasPlugin("estree") ? !!method.value.body : !!method.body; - if (hasBody) { - const { - key - } = method; - this.raise(TSErrors.AbstractMethodHasImplementation, { - at: method, - methodName: key.type === "Identifier" && !method.computed ? key.name : `[${this.input.slice(key.start, key.end)}]` - }); - } - } - return method; - } - tsParseTypeParameterName() { - const typeName = this.parseIdentifier(); - return typeName.name; - } - shouldParseAsAmbientContext() { - return !!this.getPluginOption("typescript", "dts"); - } - parse() { - if (this.shouldParseAsAmbientContext()) { - this.state.isAmbientContext = true; - } - return super.parse(); - } - getExpression() { - if (this.shouldParseAsAmbientContext()) { - this.state.isAmbientContext = true; - } - return super.getExpression(); - } - parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) { - if (!isString && isMaybeTypeOnly) { - this.parseTypeOnlyImportExportSpecifier(node, false, isInTypeExport); - return this.finishNode(node, "ExportSpecifier"); - } - node.exportKind = "value"; - return super.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly); - } - parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { - if (!importedIsString && isMaybeTypeOnly) { - this.parseTypeOnlyImportExportSpecifier(specifier, true, isInTypeOnlyImport); - return this.finishNode(specifier, "ImportSpecifier"); - } - specifier.importKind = "value"; - return super.parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, isInTypeOnlyImport ? BIND_TS_TYPE_IMPORT : BIND_FLAGS_TS_IMPORT); - } - parseTypeOnlyImportExportSpecifier(node, isImport, isInTypeOnlyImportExport) { - const leftOfAsKey = isImport ? "imported" : "local"; - const rightOfAsKey = isImport ? "local" : "exported"; - let leftOfAs = node[leftOfAsKey]; - let rightOfAs; - let hasTypeSpecifier = false; - let canParseAsKeyword = true; - const loc = leftOfAs.loc.start; - if (this.isContextual(93)) { - const firstAs = this.parseIdentifier(); - if (this.isContextual(93)) { - const secondAs = this.parseIdentifier(); - if (tokenIsKeywordOrIdentifier(this.state.type)) { - hasTypeSpecifier = true; - leftOfAs = firstAs; - rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName(); - canParseAsKeyword = false; - } else { - rightOfAs = secondAs; - canParseAsKeyword = false; - } - } else if (tokenIsKeywordOrIdentifier(this.state.type)) { - canParseAsKeyword = false; - rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName(); - } else { - hasTypeSpecifier = true; - leftOfAs = firstAs; - } - } else if (tokenIsKeywordOrIdentifier(this.state.type)) { - hasTypeSpecifier = true; - if (isImport) { - leftOfAs = this.parseIdentifier(true); - if (!this.isContextual(93)) { - this.checkReservedWord(leftOfAs.name, leftOfAs.loc.start, true, true); - } - } else { - leftOfAs = this.parseModuleExportName(); - } - } - if (hasTypeSpecifier && isInTypeOnlyImportExport) { - this.raise(isImport ? TSErrors.TypeModifierIsUsedInTypeImports : TSErrors.TypeModifierIsUsedInTypeExports, { - at: loc - }); - } - node[leftOfAsKey] = leftOfAs; - node[rightOfAsKey] = rightOfAs; - const kindKey = isImport ? "importKind" : "exportKind"; - node[kindKey] = hasTypeSpecifier ? "type" : "value"; - if (canParseAsKeyword && this.eatContextual(93)) { - node[rightOfAsKey] = isImport ? this.parseIdentifier() : this.parseModuleExportName(); - } - if (!node[rightOfAsKey]) { - node[rightOfAsKey] = cloneIdentifier(node[leftOfAsKey]); - } - if (isImport) { - this.checkIdentifier(node[rightOfAsKey], hasTypeSpecifier ? BIND_TS_TYPE_IMPORT : BIND_FLAGS_TS_IMPORT); - } - } -}); -function isPossiblyLiteralEnum(expression) { - if (expression.type !== "MemberExpression") return false; - const { - computed, - property - } = expression; - if (computed && property.type !== "StringLiteral" && (property.type !== "TemplateLiteral" || property.expressions.length > 0)) { - return false; - } - return isUncomputedMemberExpressionChain(expression.object); -} -function isValidAmbientConstInitializer(expression, estree) { - var _expression$extra; - const { - type - } = expression; - if ((_expression$extra = expression.extra) != null && _expression$extra.parenthesized) { - return false; - } - if (estree) { - if (type === "Literal") { - const { - value - } = expression; - if (typeof value === "string" || typeof value === "boolean") { - return true; - } - } - } else { - if (type === "StringLiteral" || type === "BooleanLiteral") { - return true; - } - } - if (isNumber(expression, estree) || isNegativeNumber(expression, estree)) { - return true; - } - if (type === "TemplateLiteral" && expression.expressions.length === 0) { - return true; - } - if (isPossiblyLiteralEnum(expression)) { - return true; - } - return false; -} -function isNumber(expression, estree) { - if (estree) { - return expression.type === "Literal" && (typeof expression.value === "number" || "bigint" in expression); - } else { - return expression.type === "NumericLiteral" || expression.type === "BigIntLiteral"; - } -} -function isNegativeNumber(expression, estree) { - if (expression.type === "UnaryExpression") { - const { - operator, - argument - } = expression; - if (operator === "-" && isNumber(argument, estree)) { - return true; - } - } - return false; -} -function isUncomputedMemberExpressionChain(expression) { - if (expression.type === "Identifier") return true; - if (expression.type !== "MemberExpression") return false; - if (expression.computed) return false; - return isUncomputedMemberExpressionChain(expression.object); -} - -const PlaceholderErrors = ParseErrorEnum`placeholders`({ - ClassNameIsRequired: "A class name is required.", - UnexpectedSpace: "Unexpected space in placeholder." -}); -var placeholders = (superClass => class PlaceholdersParserMixin extends superClass { - parsePlaceholder(expectedNode) { - if (this.match(142)) { - const node = this.startNode(); - this.next(); - this.assertNoSpace(); - node.name = super.parseIdentifier(true); - this.assertNoSpace(); - this.expect(142); - return this.finishPlaceholder(node, expectedNode); - } - } - finishPlaceholder(node, expectedNode) { - const isFinished = !!(node.expectedNode && node.type === "Placeholder"); - node.expectedNode = expectedNode; - return isFinished ? node : this.finishNode(node, "Placeholder"); - } - getTokenFromCode(code) { - if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) { - return this.finishOp(142, 2); - } - return super.getTokenFromCode(code); - } - parseExprAtom(refExpressionErrors) { - return this.parsePlaceholder("Expression") || super.parseExprAtom(refExpressionErrors); - } - parseIdentifier(liberal) { - return this.parsePlaceholder("Identifier") || super.parseIdentifier(liberal); - } - checkReservedWord(word, startLoc, checkKeywords, isBinding) { - if (word !== undefined) { - super.checkReservedWord(word, startLoc, checkKeywords, isBinding); - } - } - parseBindingAtom() { - return this.parsePlaceholder("Pattern") || super.parseBindingAtom(); - } - isValidLVal(type, isParenthesized, binding) { - return type === "Placeholder" || super.isValidLVal(type, isParenthesized, binding); - } - toAssignable(node, isLHS) { - if (node && node.type === "Placeholder" && node.expectedNode === "Expression") { - node.expectedNode = "Pattern"; - } else { - super.toAssignable(node, isLHS); - } - } - chStartsBindingIdentifier(ch, pos) { - if (super.chStartsBindingIdentifier(ch, pos)) { - return true; - } - const nextToken = this.lookahead(); - if (nextToken.type === 142) { - return true; - } - return false; - } - verifyBreakContinue(node, isBreak) { - if (node.label && node.label.type === "Placeholder") return; - super.verifyBreakContinue(node, isBreak); - } - parseExpressionStatement(node, expr) { - if (expr.type !== "Placeholder" || expr.extra && expr.extra.parenthesized) { - return super.parseExpressionStatement(node, expr); - } - if (this.match(14)) { - const stmt = node; - stmt.label = this.finishPlaceholder(expr, "Identifier"); - this.next(); - stmt.body = super.parseStatementOrFunctionDeclaration(false); - return this.finishNode(stmt, "LabeledStatement"); - } - this.semicolon(); - node.name = expr.name; - return this.finishPlaceholder(node, "Statement"); - } - parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse) { - return this.parsePlaceholder("BlockStatement") || super.parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse); - } - parseFunctionId(requireId) { - return this.parsePlaceholder("Identifier") || super.parseFunctionId(requireId); - } - parseClass(node, isStatement, optionalId) { - const type = isStatement ? "ClassDeclaration" : "ClassExpression"; - this.next(); - const oldStrict = this.state.strict; - const placeholder = this.parsePlaceholder("Identifier"); - if (placeholder) { - if (this.match(81) || this.match(142) || this.match(5)) { - node.id = placeholder; - } else if (optionalId || !isStatement) { - node.id = null; - node.body = this.finishPlaceholder(placeholder, "ClassBody"); - return this.finishNode(node, type); - } else { - throw this.raise(PlaceholderErrors.ClassNameIsRequired, { - at: this.state.startLoc - }); - } - } else { - this.parseClassId(node, isStatement, optionalId); - } - super.parseClassSuper(node); - node.body = this.parsePlaceholder("ClassBody") || super.parseClassBody(!!node.superClass, oldStrict); - return this.finishNode(node, type); - } - parseExport(node, decorators) { - const placeholder = this.parsePlaceholder("Identifier"); - if (!placeholder) return super.parseExport(node, decorators); - if (!this.isContextual(97) && !this.match(12)) { - node.specifiers = []; - node.source = null; - node.declaration = this.finishPlaceholder(placeholder, "Declaration"); - return this.finishNode(node, "ExportNamedDeclaration"); - } - this.expectPlugin("exportDefaultFrom"); - const specifier = this.startNode(); - specifier.exported = placeholder; - node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; - return super.parseExport(node, decorators); - } - isExportDefaultSpecifier() { - if (this.match(65)) { - const next = this.nextTokenStart(); - if (this.isUnparsedContextual(next, "from")) { - if (this.input.startsWith(tokenLabelName(142), this.nextTokenStartSince(next + 4))) { - return true; - } - } - } - return super.isExportDefaultSpecifier(); - } - maybeParseExportDefaultSpecifier(node) { - if (node.specifiers && node.specifiers.length > 0) { - return true; - } - return super.maybeParseExportDefaultSpecifier(node); - } - checkExport(node) { - const { - specifiers - } = node; - if (specifiers != null && specifiers.length) { - node.specifiers = specifiers.filter(node => node.exported.type === "Placeholder"); - } - super.checkExport(node); - node.specifiers = specifiers; - } - parseImport(node) { - const placeholder = this.parsePlaceholder("Identifier"); - if (!placeholder) return super.parseImport(node); - node.specifiers = []; - if (!this.isContextual(97) && !this.match(12)) { - node.source = this.finishPlaceholder(placeholder, "StringLiteral"); - this.semicolon(); - return this.finishNode(node, "ImportDeclaration"); - } - const specifier = this.startNodeAtNode(placeholder); - specifier.local = placeholder; - node.specifiers.push(this.finishNode(specifier, "ImportDefaultSpecifier")); - if (this.eat(12)) { - const hasStarImport = this.maybeParseStarImportSpecifier(node); - if (!hasStarImport) this.parseNamedImportSpecifiers(node); - } - this.expectContextual(97); - node.source = this.parseImportSource(); - this.semicolon(); - return this.finishNode(node, "ImportDeclaration"); - } - parseImportSource() { - return this.parsePlaceholder("StringLiteral") || super.parseImportSource(); - } - assertNoSpace() { - if (this.state.start > this.state.lastTokEndLoc.index) { - this.raise(PlaceholderErrors.UnexpectedSpace, { - at: this.state.lastTokEndLoc - }); - } - } -}); - -var v8intrinsic = (superClass => class V8IntrinsicMixin extends superClass { - parseV8Intrinsic() { - if (this.match(54)) { - const v8IntrinsicStartLoc = this.state.startLoc; - const node = this.startNode(); - this.next(); - if (tokenIsIdentifier(this.state.type)) { - const name = this.parseIdentifierName(); - const identifier = this.createIdentifier(node, name); - identifier.type = "V8IntrinsicIdentifier"; - if (this.match(10)) { - return identifier; - } - } - this.unexpected(v8IntrinsicStartLoc); - } - } - parseExprAtom(refExpressionErrors) { - return this.parseV8Intrinsic() || super.parseExprAtom(refExpressionErrors); - } -}); - -function hasPlugin(plugins, expectedConfig) { - const [expectedName, expectedOptions] = typeof expectedConfig === "string" ? [expectedConfig, {}] : expectedConfig; - const expectedKeys = Object.keys(expectedOptions); - const expectedOptionsIsEmpty = expectedKeys.length === 0; - return plugins.some(p => { - if (typeof p === "string") { - return expectedOptionsIsEmpty && p === expectedName; - } else { - const [pluginName, pluginOptions] = p; - if (pluginName !== expectedName) { - return false; - } - for (const key of expectedKeys) { - if (pluginOptions[key] !== expectedOptions[key]) { - return false; - } - } - return true; - } - }); -} -function getPluginOption(plugins, name, option) { - const plugin = plugins.find(plugin => { - if (Array.isArray(plugin)) { - return plugin[0] === name; - } else { - return plugin === name; - } - }); - if (plugin && Array.isArray(plugin) && plugin.length > 1) { - return plugin[1][option]; - } - return null; -} -const PIPELINE_PROPOSALS = ["minimal", "fsharp", "hack", "smart"]; -const TOPIC_TOKENS = ["^^", "@@", "^", "%", "#"]; -const RECORD_AND_TUPLE_SYNTAX_TYPES = ["hash", "bar"]; -function validatePlugins(plugins) { - if (hasPlugin(plugins, "decorators")) { - if (hasPlugin(plugins, "decorators-legacy")) { - throw new Error("Cannot use the decorators and decorators-legacy plugin together"); - } - const decoratorsBeforeExport = getPluginOption(plugins, "decorators", "decoratorsBeforeExport"); - if (decoratorsBeforeExport != null && typeof decoratorsBeforeExport !== "boolean") { - throw new Error("'decoratorsBeforeExport' must be a boolean."); - } - const allowCallParenthesized = getPluginOption(plugins, "decorators", "allowCallParenthesized"); - if (allowCallParenthesized != null && typeof allowCallParenthesized !== "boolean") { - throw new Error("'allowCallParenthesized' must be a boolean."); - } - } - if (hasPlugin(plugins, "flow") && hasPlugin(plugins, "typescript")) { - throw new Error("Cannot combine flow and typescript plugins."); - } - if (hasPlugin(plugins, "placeholders") && hasPlugin(plugins, "v8intrinsic")) { - throw new Error("Cannot combine placeholders and v8intrinsic plugins."); - } - if (hasPlugin(plugins, "pipelineOperator")) { - const proposal = getPluginOption(plugins, "pipelineOperator", "proposal"); - if (!PIPELINE_PROPOSALS.includes(proposal)) { - const proposalList = PIPELINE_PROPOSALS.map(p => `"${p}"`).join(", "); - throw new Error(`"pipelineOperator" requires "proposal" option whose value must be one of: ${proposalList}.`); - } - const tupleSyntaxIsHash = hasPlugin(plugins, ["recordAndTuple", { - syntaxType: "hash" - }]); - if (proposal === "hack") { - if (hasPlugin(plugins, "placeholders")) { - throw new Error("Cannot combine placeholders plugin and Hack-style pipes."); - } - if (hasPlugin(plugins, "v8intrinsic")) { - throw new Error("Cannot combine v8intrinsic plugin and Hack-style pipes."); - } - const topicToken = getPluginOption(plugins, "pipelineOperator", "topicToken"); - if (!TOPIC_TOKENS.includes(topicToken)) { - const tokenList = TOPIC_TOKENS.map(t => `"${t}"`).join(", "); - throw new Error(`"pipelineOperator" in "proposal": "hack" mode also requires a "topicToken" option whose value must be one of: ${tokenList}.`); - } - if (topicToken === "#" && tupleSyntaxIsHash) { - throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "hack", topicToken: "#" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.'); - } - } else if (proposal === "smart" && tupleSyntaxIsHash) { - throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "smart" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.'); - } - } - if (hasPlugin(plugins, "moduleAttributes")) { - { - if (hasPlugin(plugins, "importAssertions")) { - throw new Error("Cannot combine importAssertions and moduleAttributes plugins."); - } - const moduleAttributesVersionPluginOption = getPluginOption(plugins, "moduleAttributes", "version"); - if (moduleAttributesVersionPluginOption !== "may-2020") { - throw new Error("The 'moduleAttributes' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is 'may-2020'."); - } - } - } - if (hasPlugin(plugins, "recordAndTuple") && getPluginOption(plugins, "recordAndTuple", "syntaxType") != null && !RECORD_AND_TUPLE_SYNTAX_TYPES.includes(getPluginOption(plugins, "recordAndTuple", "syntaxType"))) { - throw new Error("The 'syntaxType' option of the 'recordAndTuple' plugin must be one of: " + RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(", ")); - } - if (hasPlugin(plugins, "asyncDoExpressions") && !hasPlugin(plugins, "doExpressions")) { - const error = new Error("'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins."); - error.missingPlugins = "doExpressions"; - throw error; - } -} -const mixinPlugins = { - estree, - jsx, - flow, - typescript, - v8intrinsic, - placeholders -}; -const mixinPluginNames = Object.keys(mixinPlugins); - -const defaultOptions = { - sourceType: "script", - sourceFilename: undefined, - startColumn: 0, - startLine: 1, - allowAwaitOutsideFunction: false, - allowReturnOutsideFunction: false, - allowImportExportEverywhere: false, - allowSuperOutsideMethod: false, - allowUndeclaredExports: false, - plugins: [], - strictMode: null, - ranges: false, - tokens: false, - createParenthesizedExpressions: false, - errorRecovery: false, - attachComment: true -}; -function getOptions(opts) { - const options = {}; - for (const key of Object.keys(defaultOptions)) { - options[key] = opts && opts[key] != null ? opts[key] : defaultOptions[key]; - } - return options; -} - -const getOwn = (object, key) => Object.hasOwnProperty.call(object, key) && object[key]; -const unwrapParenthesizedExpression = node => { - return node.type === "ParenthesizedExpression" ? unwrapParenthesizedExpression(node.expression) : node; -}; -class LValParser extends NodeUtils { - toAssignable(node, isLHS = false) { - var _node$extra, _node$extra3; - let parenthesized = undefined; - if (node.type === "ParenthesizedExpression" || (_node$extra = node.extra) != null && _node$extra.parenthesized) { - parenthesized = unwrapParenthesizedExpression(node); - if (isLHS) { - if (parenthesized.type === "Identifier") { - this.expressionScope.recordArrowParameterBindingError(Errors.InvalidParenthesizedAssignment, { - at: node - }); - } else if (parenthesized.type !== "MemberExpression") { - this.raise(Errors.InvalidParenthesizedAssignment, { - at: node - }); - } - } else { - this.raise(Errors.InvalidParenthesizedAssignment, { - at: node - }); - } - } - switch (node.type) { - case "Identifier": - case "ObjectPattern": - case "ArrayPattern": - case "AssignmentPattern": - case "RestElement": - break; - case "ObjectExpression": - node.type = "ObjectPattern"; - for (let i = 0, length = node.properties.length, last = length - 1; i < length; i++) { - var _node$extra2; - const prop = node.properties[i]; - const isLast = i === last; - this.toAssignableObjectExpressionProp(prop, isLast, isLHS); - if (isLast && prop.type === "RestElement" && (_node$extra2 = node.extra) != null && _node$extra2.trailingCommaLoc) { - this.raise(Errors.RestTrailingComma, { - at: node.extra.trailingCommaLoc - }); - } - } - break; - case "ObjectProperty": - { - const { - key, - value - } = node; - if (this.isPrivateName(key)) { - this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start); - } - this.toAssignable(value, isLHS); - break; - } - case "SpreadElement": - { - throw new Error("Internal @babel/parser error (this is a bug, please report it)." + " SpreadElement should be converted by .toAssignable's caller."); - } - case "ArrayExpression": - node.type = "ArrayPattern"; - this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingCommaLoc, isLHS); - break; - case "AssignmentExpression": - if (node.operator !== "=") { - this.raise(Errors.MissingEqInAssignment, { - at: node.left.loc.end - }); - } - node.type = "AssignmentPattern"; - delete node.operator; - this.toAssignable(node.left, isLHS); - break; - case "ParenthesizedExpression": - this.toAssignable(parenthesized, isLHS); - break; - } - } - toAssignableObjectExpressionProp(prop, isLast, isLHS) { - if (prop.type === "ObjectMethod") { - this.raise(prop.kind === "get" || prop.kind === "set" ? Errors.PatternHasAccessor : Errors.PatternHasMethod, { - at: prop.key - }); - } else if (prop.type === "SpreadElement") { - prop.type = "RestElement"; - const arg = prop.argument; - this.checkToRestConversion(arg, false); - this.toAssignable(arg, isLHS); - if (!isLast) { - this.raise(Errors.RestTrailingComma, { - at: prop - }); - } - } else { - this.toAssignable(prop, isLHS); - } - } - toAssignableList(exprList, trailingCommaLoc, isLHS) { - const end = exprList.length - 1; - for (let i = 0; i <= end; i++) { - const elt = exprList[i]; - if (!elt) continue; - if (elt.type === "SpreadElement") { - elt.type = "RestElement"; - const arg = elt.argument; - this.checkToRestConversion(arg, true); - this.toAssignable(arg, isLHS); - } else { - this.toAssignable(elt, isLHS); - } - if (elt.type === "RestElement") { - if (i < end) { - this.raise(Errors.RestTrailingComma, { - at: elt - }); - } else if (trailingCommaLoc) { - this.raise(Errors.RestTrailingComma, { - at: trailingCommaLoc - }); - } - } - } - } - isAssignable(node, isBinding) { - switch (node.type) { - case "Identifier": - case "ObjectPattern": - case "ArrayPattern": - case "AssignmentPattern": - case "RestElement": - return true; - case "ObjectExpression": - { - const last = node.properties.length - 1; - return node.properties.every((prop, i) => { - return prop.type !== "ObjectMethod" && (i === last || prop.type !== "SpreadElement") && this.isAssignable(prop); - }); - } - case "ObjectProperty": - return this.isAssignable(node.value); - case "SpreadElement": - return this.isAssignable(node.argument); - case "ArrayExpression": - return node.elements.every(element => element === null || this.isAssignable(element)); - case "AssignmentExpression": - return node.operator === "="; - case "ParenthesizedExpression": - return this.isAssignable(node.expression); - case "MemberExpression": - case "OptionalMemberExpression": - return !isBinding; - default: - return false; - } - } - toReferencedList(exprList, isParenthesizedExpr) { - return exprList; - } - toReferencedListDeep(exprList, isParenthesizedExpr) { - this.toReferencedList(exprList, isParenthesizedExpr); - for (const expr of exprList) { - if ((expr == null ? void 0 : expr.type) === "ArrayExpression") { - this.toReferencedListDeep(expr.elements); - } - } - } - parseSpread(refExpressionErrors) { - const node = this.startNode(); - this.next(); - node.argument = this.parseMaybeAssignAllowIn(refExpressionErrors, undefined); - return this.finishNode(node, "SpreadElement"); - } - parseRestBinding() { - const node = this.startNode(); - this.next(); - node.argument = this.parseBindingAtom(); - return this.finishNode(node, "RestElement"); - } - parseBindingAtom() { - switch (this.state.type) { - case 0: - { - const node = this.startNode(); - this.next(); - node.elements = this.parseBindingList(3, 93, true); - return this.finishNode(node, "ArrayPattern"); - } - case 5: - return this.parseObjectLike(8, true); - } - return this.parseIdentifier(); - } - parseBindingList(close, closeCharCode, allowEmpty, allowModifiers) { - const elts = []; - let first = true; - while (!this.eat(close)) { - if (first) { - first = false; - } else { - this.expect(12); - } - if (allowEmpty && this.match(12)) { - elts.push(null); - } else if (this.eat(close)) { - break; - } else if (this.match(21)) { - elts.push(this.parseAssignableListItemTypes(this.parseRestBinding())); - if (!this.checkCommaAfterRest(closeCharCode)) { - this.expect(close); - break; - } - } else { - const decorators = []; - if (this.match(26) && this.hasPlugin("decorators")) { - this.raise(Errors.UnsupportedParameterDecorator, { - at: this.state.startLoc - }); - } - while (this.match(26)) { - decorators.push(this.parseDecorator()); - } - elts.push(this.parseAssignableListItem(allowModifiers, decorators)); - } - } - return elts; - } - parseBindingRestProperty(prop) { - this.next(); - prop.argument = this.parseIdentifier(); - this.checkCommaAfterRest(125); - return this.finishNode(prop, "RestElement"); - } - parseBindingProperty() { - const prop = this.startNode(); - const { - type, - startLoc - } = this.state; - if (type === 21) { - return this.parseBindingRestProperty(prop); - } else if (type === 136) { - this.expectPlugin("destructuringPrivate", startLoc); - this.classScope.usePrivateName(this.state.value, startLoc); - prop.key = this.parsePrivateName(); - } else { - this.parsePropertyName(prop); - } - prop.method = false; - return this.parseObjPropValue(prop, startLoc, false, false, true, false); - } - parseAssignableListItem(allowModifiers, decorators) { - const left = this.parseMaybeDefault(); - this.parseAssignableListItemTypes(left); - const elt = this.parseMaybeDefault(left.loc.start, left); - if (decorators.length) { - left.decorators = decorators; - } - return elt; - } - parseAssignableListItemTypes(param) { - return param; - } - parseMaybeDefault(startLoc, left) { - var _startLoc, _left; - (_startLoc = startLoc) != null ? _startLoc : startLoc = this.state.startLoc; - left = (_left = left) != null ? _left : this.parseBindingAtom(); - if (!this.eat(29)) return left; - const node = this.startNodeAt(startLoc); - node.left = left; - node.right = this.parseMaybeAssignAllowIn(); - return this.finishNode(node, "AssignmentPattern"); - } - isValidLVal(type, isUnparenthesizedInAssign, binding) { - return getOwn({ - AssignmentPattern: "left", - RestElement: "argument", - ObjectProperty: "value", - ParenthesizedExpression: "expression", - ArrayPattern: "elements", - ObjectPattern: "properties" - }, type); - } - checkLVal(expression, { - in: ancestor, - binding = BIND_NONE, - checkClashes = false, - strictModeChanged = false, - hasParenthesizedAncestor = false - }) { - var _expression$extra; - const type = expression.type; - if (this.isObjectMethod(expression)) return; - if (type === "MemberExpression") { - if (binding !== BIND_NONE) { - this.raise(Errors.InvalidPropertyBindingPattern, { - at: expression - }); - } - return; - } - if (type === "Identifier") { - this.checkIdentifier(expression, binding, strictModeChanged); - const { - name - } = expression; - if (checkClashes) { - if (checkClashes.has(name)) { - this.raise(Errors.ParamDupe, { - at: expression - }); - } else { - checkClashes.add(name); - } - } - return; - } - const validity = this.isValidLVal(type, !(hasParenthesizedAncestor || (_expression$extra = expression.extra) != null && _expression$extra.parenthesized) && ancestor.type === "AssignmentExpression", binding); - if (validity === true) return; - if (validity === false) { - const ParseErrorClass = binding === BIND_NONE ? Errors.InvalidLhs : Errors.InvalidLhsBinding; - this.raise(ParseErrorClass, { - at: expression, - ancestor - }); - return; - } - const [key, isParenthesizedExpression] = Array.isArray(validity) ? validity : [validity, type === "ParenthesizedExpression"]; - const nextAncestor = type === "ArrayPattern" || type === "ObjectPattern" || type === "ParenthesizedExpression" ? { - type - } : ancestor; - for (const child of [].concat(expression[key])) { - if (child) { - this.checkLVal(child, { - in: nextAncestor, - binding, - checkClashes, - strictModeChanged, - hasParenthesizedAncestor: isParenthesizedExpression - }); - } - } - } - checkIdentifier(at, bindingType, strictModeChanged = false) { - if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(at.name, this.inModule) : isStrictBindOnlyReservedWord(at.name))) { - if (bindingType === BIND_NONE) { - this.raise(Errors.StrictEvalArguments, { - at, - referenceName: at.name - }); - } else { - this.raise(Errors.StrictEvalArgumentsBinding, { - at, - bindingName: at.name - }); - } - } - if (bindingType & BIND_FLAGS_NO_LET_IN_LEXICAL && at.name === "let") { - this.raise(Errors.LetInLexicalBinding, { - at - }); - } - if (!(bindingType & BIND_NONE)) { - this.declareNameFromIdentifier(at, bindingType); - } - } - declareNameFromIdentifier(identifier, binding) { - this.scope.declareName(identifier.name, binding, identifier.loc.start); - } - checkToRestConversion(node, allowPattern) { - switch (node.type) { - case "ParenthesizedExpression": - this.checkToRestConversion(node.expression, allowPattern); - break; - case "Identifier": - case "MemberExpression": - break; - case "ArrayExpression": - case "ObjectExpression": - if (allowPattern) break; - default: - this.raise(Errors.InvalidRestAssignmentPattern, { - at: node - }); - } - } - checkCommaAfterRest(close) { - if (!this.match(12)) { - return false; - } - this.raise(this.lookaheadCharCode() === close ? Errors.RestTrailingComma : Errors.ElementAfterRest, { - at: this.state.startLoc - }); - return true; - } -} - -class ExpressionParser extends LValParser { - checkProto(prop, isRecord, protoRef, refExpressionErrors) { - if (prop.type === "SpreadElement" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) { - return; - } - const key = prop.key; - const name = key.type === "Identifier" ? key.name : key.value; - if (name === "__proto__") { - if (isRecord) { - this.raise(Errors.RecordNoProto, { - at: key - }); - return; - } - if (protoRef.used) { - if (refExpressionErrors) { - if (refExpressionErrors.doubleProtoLoc === null) { - refExpressionErrors.doubleProtoLoc = key.loc.start; - } - } else { - this.raise(Errors.DuplicateProto, { - at: key - }); - } - } - protoRef.used = true; - } - } - shouldExitDescending(expr, potentialArrowAt) { - return expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt; - } - getExpression() { - this.enterInitialScopes(); - this.nextToken(); - const expr = this.parseExpression(); - if (!this.match(137)) { - this.unexpected(); - } - this.finalizeRemainingComments(); - expr.comments = this.state.comments; - expr.errors = this.state.errors; - if (this.options.tokens) { - expr.tokens = this.tokens; - } - return expr; - } - parseExpression(disallowIn, refExpressionErrors) { - if (disallowIn) { - return this.disallowInAnd(() => this.parseExpressionBase(refExpressionErrors)); - } - return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors)); - } - parseExpressionBase(refExpressionErrors) { - const startLoc = this.state.startLoc; - const expr = this.parseMaybeAssign(refExpressionErrors); - if (this.match(12)) { - const node = this.startNodeAt(startLoc); - node.expressions = [expr]; - while (this.eat(12)) { - node.expressions.push(this.parseMaybeAssign(refExpressionErrors)); - } - this.toReferencedList(node.expressions); - return this.finishNode(node, "SequenceExpression"); - } - return expr; - } - parseMaybeAssignDisallowIn(refExpressionErrors, afterLeftParse) { - return this.disallowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse)); - } - parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) { - return this.allowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse)); - } - setOptionalParametersError(refExpressionErrors, resultError) { - var _resultError$loc; - refExpressionErrors.optionalParametersLoc = (_resultError$loc = resultError == null ? void 0 : resultError.loc) != null ? _resultError$loc : this.state.startLoc; - } - parseMaybeAssign(refExpressionErrors, afterLeftParse) { - const startLoc = this.state.startLoc; - if (this.isContextual(106)) { - if (this.prodParam.hasYield) { - let left = this.parseYield(); - if (afterLeftParse) { - left = afterLeftParse.call(this, left, startLoc); - } - return left; - } - } - let ownExpressionErrors; - if (refExpressionErrors) { - ownExpressionErrors = false; - } else { - refExpressionErrors = new ExpressionErrors(); - ownExpressionErrors = true; - } - const { - type - } = this.state; - if (type === 10 || tokenIsIdentifier(type)) { - this.state.potentialArrowAt = this.state.start; - } - let left = this.parseMaybeConditional(refExpressionErrors); - if (afterLeftParse) { - left = afterLeftParse.call(this, left, startLoc); - } - if (tokenIsAssignment(this.state.type)) { - const node = this.startNodeAt(startLoc); - const operator = this.state.value; - node.operator = operator; - if (this.match(29)) { - this.toAssignable(left, true); - node.left = left; - const startIndex = startLoc.index; - if (refExpressionErrors.doubleProtoLoc != null && refExpressionErrors.doubleProtoLoc.index >= startIndex) { - refExpressionErrors.doubleProtoLoc = null; - } - if (refExpressionErrors.shorthandAssignLoc != null && refExpressionErrors.shorthandAssignLoc.index >= startIndex) { - refExpressionErrors.shorthandAssignLoc = null; - } - if (refExpressionErrors.privateKeyLoc != null && refExpressionErrors.privateKeyLoc.index >= startIndex) { - this.checkDestructuringPrivate(refExpressionErrors); - refExpressionErrors.privateKeyLoc = null; - } - } else { - node.left = left; - } - this.next(); - node.right = this.parseMaybeAssign(); - this.checkLVal(left, { - in: this.finishNode(node, "AssignmentExpression") - }); - return node; - } else if (ownExpressionErrors) { - this.checkExpressionErrors(refExpressionErrors, true); - } - return left; - } - parseMaybeConditional(refExpressionErrors) { - const startLoc = this.state.startLoc; - const potentialArrowAt = this.state.potentialArrowAt; - const expr = this.parseExprOps(refExpressionErrors); - if (this.shouldExitDescending(expr, potentialArrowAt)) { - return expr; - } - return this.parseConditional(expr, startLoc, refExpressionErrors); - } - parseConditional(expr, startLoc, refExpressionErrors) { - if (this.eat(17)) { - const node = this.startNodeAt(startLoc); - node.test = expr; - node.consequent = this.parseMaybeAssignAllowIn(); - this.expect(14); - node.alternate = this.parseMaybeAssign(); - return this.finishNode(node, "ConditionalExpression"); - } - return expr; - } - parseMaybeUnaryOrPrivate(refExpressionErrors) { - return this.match(136) ? this.parsePrivateName() : this.parseMaybeUnary(refExpressionErrors); - } - parseExprOps(refExpressionErrors) { - const startLoc = this.state.startLoc; - const potentialArrowAt = this.state.potentialArrowAt; - const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors); - if (this.shouldExitDescending(expr, potentialArrowAt)) { - return expr; - } - return this.parseExprOp(expr, startLoc, -1); - } - parseExprOp(left, leftStartLoc, minPrec) { - if (this.isPrivateName(left)) { - const value = this.getPrivateNameSV(left); - if (minPrec >= tokenOperatorPrecedence(58) || !this.prodParam.hasIn || !this.match(58)) { - this.raise(Errors.PrivateInExpectedIn, { - at: left, - identifierName: value - }); - } - this.classScope.usePrivateName(value, left.loc.start); - } - const op = this.state.type; - if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(58))) { - let prec = tokenOperatorPrecedence(op); - if (prec > minPrec) { - if (op === 39) { - this.expectPlugin("pipelineOperator"); - if (this.state.inFSharpPipelineDirectBody) { - return left; - } - this.checkPipelineAtInfixOperator(left, leftStartLoc); - } - const node = this.startNodeAt(leftStartLoc); - node.left = left; - node.operator = this.state.value; - const logical = op === 41 || op === 42; - const coalesce = op === 40; - if (coalesce) { - prec = tokenOperatorPrecedence(42); - } - this.next(); - if (op === 39 && this.hasPlugin(["pipelineOperator", { - proposal: "minimal" - }])) { - if (this.state.type === 96 && this.prodParam.hasAwait) { - throw this.raise(Errors.UnexpectedAwaitAfterPipelineBody, { - at: this.state.startLoc - }); - } - } - node.right = this.parseExprOpRightExpr(op, prec); - const finishedNode = this.finishNode(node, logical || coalesce ? "LogicalExpression" : "BinaryExpression"); - const nextOp = this.state.type; - if (coalesce && (nextOp === 41 || nextOp === 42) || logical && nextOp === 40) { - throw this.raise(Errors.MixingCoalesceWithLogical, { - at: this.state.startLoc - }); - } - return this.parseExprOp(finishedNode, leftStartLoc, minPrec); - } - } - return left; - } - parseExprOpRightExpr(op, prec) { - const startLoc = this.state.startLoc; - switch (op) { - case 39: - switch (this.getPluginOption("pipelineOperator", "proposal")) { - case "hack": - return this.withTopicBindingContext(() => { - return this.parseHackPipeBody(); - }); - case "smart": - return this.withTopicBindingContext(() => { - if (this.prodParam.hasYield && this.isContextual(106)) { - throw this.raise(Errors.PipeBodyIsTighter, { - at: this.state.startLoc - }); - } - return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(op, prec), startLoc); - }); - case "fsharp": - return this.withSoloAwaitPermittingContext(() => { - return this.parseFSharpPipelineBody(prec); - }); - } - default: - return this.parseExprOpBaseRightExpr(op, prec); - } - } - parseExprOpBaseRightExpr(op, prec) { - const startLoc = this.state.startLoc; - return this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, tokenIsRightAssociative(op) ? prec - 1 : prec); - } - parseHackPipeBody() { - var _body$extra; - const { - startLoc - } = this.state; - const body = this.parseMaybeAssign(); - const requiredParentheses = UnparenthesizedPipeBodyDescriptions.has(body.type); - if (requiredParentheses && !((_body$extra = body.extra) != null && _body$extra.parenthesized)) { - this.raise(Errors.PipeUnparenthesizedBody, { - at: startLoc, - type: body.type - }); - } - if (!this.topicReferenceWasUsedInCurrentContext()) { - this.raise(Errors.PipeTopicUnused, { - at: startLoc - }); - } - return body; - } - checkExponentialAfterUnary(node) { - if (this.match(57)) { - this.raise(Errors.UnexpectedTokenUnaryExponentiation, { - at: node.argument - }); - } - } - parseMaybeUnary(refExpressionErrors, sawUnary) { - const startLoc = this.state.startLoc; - const isAwait = this.isContextual(96); - if (isAwait && this.isAwaitAllowed()) { - this.next(); - const expr = this.parseAwait(startLoc); - if (!sawUnary) this.checkExponentialAfterUnary(expr); - return expr; - } - const update = this.match(34); - const node = this.startNode(); - if (tokenIsPrefix(this.state.type)) { - node.operator = this.state.value; - node.prefix = true; - if (this.match(72)) { - this.expectPlugin("throwExpressions"); - } - const isDelete = this.match(89); - this.next(); - node.argument = this.parseMaybeUnary(null, true); - this.checkExpressionErrors(refExpressionErrors, true); - if (this.state.strict && isDelete) { - const arg = node.argument; - if (arg.type === "Identifier") { - this.raise(Errors.StrictDelete, { - at: node - }); - } else if (this.hasPropertyAsPrivateName(arg)) { - this.raise(Errors.DeletePrivateField, { - at: node - }); - } - } - if (!update) { - if (!sawUnary) { - this.checkExponentialAfterUnary(node); - } - return this.finishNode(node, "UnaryExpression"); - } - } - const expr = this.parseUpdate(node, update, refExpressionErrors); - if (isAwait) { - const { - type - } = this.state; - const startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54); - if (startsExpr && !this.isAmbiguousAwait()) { - this.raiseOverwrite(Errors.AwaitNotInAsyncContext, { - at: startLoc - }); - return this.parseAwait(startLoc); - } - } - return expr; - } - parseUpdate(node, update, refExpressionErrors) { - if (update) { - const updateExpressionNode = node; - this.checkLVal(updateExpressionNode.argument, { - in: this.finishNode(updateExpressionNode, "UpdateExpression") - }); - return node; - } - const startLoc = this.state.startLoc; - let expr = this.parseExprSubscripts(refExpressionErrors); - if (this.checkExpressionErrors(refExpressionErrors, false)) return expr; - while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) { - const node = this.startNodeAt(startLoc); - node.operator = this.state.value; - node.prefix = false; - node.argument = expr; - this.next(); - this.checkLVal(expr, { - in: expr = this.finishNode(node, "UpdateExpression") - }); - } - return expr; - } - parseExprSubscripts(refExpressionErrors) { - const startLoc = this.state.startLoc; - const potentialArrowAt = this.state.potentialArrowAt; - const expr = this.parseExprAtom(refExpressionErrors); - if (this.shouldExitDescending(expr, potentialArrowAt)) { - return expr; - } - return this.parseSubscripts(expr, startLoc); - } - parseSubscripts(base, startLoc, noCalls) { - const state = { - optionalChainMember: false, - maybeAsyncArrow: this.atPossibleAsyncArrow(base), - stop: false - }; - do { - base = this.parseSubscript(base, startLoc, noCalls, state); - state.maybeAsyncArrow = false; - } while (!state.stop); - return base; - } - parseSubscript(base, startLoc, noCalls, state) { - const { - type - } = this.state; - if (!noCalls && type === 15) { - return this.parseBind(base, startLoc, noCalls, state); - } else if (tokenIsTemplate(type)) { - return this.parseTaggedTemplateExpression(base, startLoc, state); - } - let optional = false; - if (type === 18) { - if (noCalls && this.lookaheadCharCode() === 40) { - state.stop = true; - return base; - } - state.optionalChainMember = optional = true; - this.next(); - } - if (!noCalls && this.match(10)) { - return this.parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional); - } else { - const computed = this.eat(0); - if (computed || optional || this.eat(16)) { - return this.parseMember(base, startLoc, state, computed, optional); - } else { - state.stop = true; - return base; - } - } - } - parseMember(base, startLoc, state, computed, optional) { - const node = this.startNodeAt(startLoc); - node.object = base; - node.computed = computed; - if (computed) { - node.property = this.parseExpression(); - this.expect(3); - } else if (this.match(136)) { - if (base.type === "Super") { - this.raise(Errors.SuperPrivateField, { - at: startLoc - }); - } - this.classScope.usePrivateName(this.state.value, this.state.startLoc); - node.property = this.parsePrivateName(); - } else { - node.property = this.parseIdentifier(true); - } - if (state.optionalChainMember) { - node.optional = optional; - return this.finishNode(node, "OptionalMemberExpression"); - } else { - return this.finishNode(node, "MemberExpression"); - } - } - parseBind(base, startLoc, noCalls, state) { - const node = this.startNodeAt(startLoc); - node.object = base; - this.next(); - node.callee = this.parseNoCallExpr(); - state.stop = true; - return this.parseSubscripts(this.finishNode(node, "BindExpression"), startLoc, noCalls); - } - parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional) { - const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; - let refExpressionErrors = null; - this.state.maybeInArrowParameters = true; - this.next(); - const node = this.startNodeAt(startLoc); - node.callee = base; - const { - maybeAsyncArrow, - optionalChainMember - } = state; - if (maybeAsyncArrow) { - this.expressionScope.enter(newAsyncArrowScope()); - refExpressionErrors = new ExpressionErrors(); - } - if (optionalChainMember) { - node.optional = optional; - } - if (optional) { - node.arguments = this.parseCallExpressionArguments(11); - } else { - node.arguments = this.parseCallExpressionArguments(11, base.type === "Import", base.type !== "Super", node, refExpressionErrors); - } - let finishedNode = this.finishCallExpression(node, optionalChainMember); - if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) { - state.stop = true; - this.checkDestructuringPrivate(refExpressionErrors); - this.expressionScope.validateAsPattern(); - this.expressionScope.exit(); - finishedNode = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startLoc), finishedNode); - } else { - if (maybeAsyncArrow) { - this.checkExpressionErrors(refExpressionErrors, true); - this.expressionScope.exit(); - } - this.toReferencedArguments(finishedNode); - } - this.state.maybeInArrowParameters = oldMaybeInArrowParameters; - return finishedNode; - } - toReferencedArguments(node, isParenthesizedExpr) { - this.toReferencedListDeep(node.arguments, isParenthesizedExpr); - } - parseTaggedTemplateExpression(base, startLoc, state) { - const node = this.startNodeAt(startLoc); - node.tag = base; - node.quasi = this.parseTemplate(true); - if (state.optionalChainMember) { - this.raise(Errors.OptionalChainingNoTemplate, { - at: startLoc - }); - } - return this.finishNode(node, "TaggedTemplateExpression"); - } - atPossibleAsyncArrow(base) { - return base.type === "Identifier" && base.name === "async" && this.state.lastTokEndLoc.index === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && base.start === this.state.potentialArrowAt; - } - finishCallExpression(node, optional) { - if (node.callee.type === "Import") { - if (node.arguments.length === 2) { - { - if (!this.hasPlugin("moduleAttributes")) { - this.expectPlugin("importAssertions"); - } - } - } - if (node.arguments.length === 0 || node.arguments.length > 2) { - this.raise(Errors.ImportCallArity, { - at: node, - maxArgumentCount: this.hasPlugin("importAssertions") || this.hasPlugin("moduleAttributes") ? 2 : 1 - }); - } else { - for (const arg of node.arguments) { - if (arg.type === "SpreadElement") { - this.raise(Errors.ImportCallSpreadArgument, { - at: arg - }); - } - } - } - } - return this.finishNode(node, optional ? "OptionalCallExpression" : "CallExpression"); - } - parseCallExpressionArguments(close, dynamicImport, allowPlaceholder, nodeForExtra, refExpressionErrors) { - const elts = []; - let first = true; - const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; - this.state.inFSharpPipelineDirectBody = false; - while (!this.eat(close)) { - if (first) { - first = false; - } else { - this.expect(12); - if (this.match(close)) { - if (dynamicImport && !this.hasPlugin("importAssertions") && !this.hasPlugin("moduleAttributes")) { - this.raise(Errors.ImportCallArgumentTrailingComma, { - at: this.state.lastTokStartLoc - }); - } - if (nodeForExtra) { - this.addTrailingCommaExtraToNode(nodeForExtra); - } - this.next(); - break; - } - } - elts.push(this.parseExprListItem(false, refExpressionErrors, allowPlaceholder)); - } - this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; - return elts; - } - shouldParseAsyncArrow() { - return this.match(19) && !this.canInsertSemicolon(); - } - parseAsyncArrowFromCallExpression(node, call) { - var _call$extra; - this.resetPreviousNodeTrailingComments(call); - this.expect(19); - this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingCommaLoc); - if (call.innerComments) { - setInnerComments(node, call.innerComments); - } - if (call.callee.trailingComments) { - setInnerComments(node, call.callee.trailingComments); - } - return node; - } - parseNoCallExpr() { - const startLoc = this.state.startLoc; - return this.parseSubscripts(this.parseExprAtom(), startLoc, true); - } - parseExprAtom(refExpressionErrors) { - let node; - let decorators = null; - const { - type - } = this.state; - switch (type) { - case 79: - return this.parseSuper(); - case 83: - node = this.startNode(); - this.next(); - if (this.match(16)) { - return this.parseImportMetaProperty(node); - } - if (!this.match(10)) { - this.raise(Errors.UnsupportedImport, { - at: this.state.lastTokStartLoc - }); - } - return this.finishNode(node, "Import"); - case 78: - node = this.startNode(); - this.next(); - return this.finishNode(node, "ThisExpression"); - case 90: - { - return this.parseDo(this.startNode(), false); - } - case 56: - case 31: - { - this.readRegexp(); - return this.parseRegExpLiteral(this.state.value); - } - case 132: - return this.parseNumericLiteral(this.state.value); - case 133: - return this.parseBigIntLiteral(this.state.value); - case 134: - return this.parseDecimalLiteral(this.state.value); - case 131: - return this.parseStringLiteral(this.state.value); - case 84: - return this.parseNullLiteral(); - case 85: - return this.parseBooleanLiteral(true); - case 86: - return this.parseBooleanLiteral(false); - case 10: - { - const canBeArrow = this.state.potentialArrowAt === this.state.start; - return this.parseParenAndDistinguishExpression(canBeArrow); - } - case 2: - case 1: - { - return this.parseArrayLike(this.state.type === 2 ? 4 : 3, false, true); - } - case 0: - { - return this.parseArrayLike(3, true, false, refExpressionErrors); - } - case 6: - case 7: - { - return this.parseObjectLike(this.state.type === 6 ? 9 : 8, false, true); - } - case 5: - { - return this.parseObjectLike(8, false, false, refExpressionErrors); - } - case 68: - return this.parseFunctionOrFunctionSent(); - case 26: - decorators = this.parseDecorators(); - case 80: - return this.parseClass(this.maybeTakeDecorators(decorators, this.startNode()), false); - case 77: - return this.parseNewOrNewTarget(); - case 25: - case 24: - return this.parseTemplate(false); - case 15: - { - node = this.startNode(); - this.next(); - node.object = null; - const callee = node.callee = this.parseNoCallExpr(); - if (callee.type === "MemberExpression") { - return this.finishNode(node, "BindExpression"); - } else { - throw this.raise(Errors.UnsupportedBind, { - at: callee - }); - } - } - case 136: - { - this.raise(Errors.PrivateInExpectedIn, { - at: this.state.startLoc, - identifierName: this.state.value - }); - return this.parsePrivateName(); - } - case 33: - { - return this.parseTopicReferenceThenEqualsSign(54, "%"); - } - case 32: - { - return this.parseTopicReferenceThenEqualsSign(44, "^"); - } - case 37: - case 38: - { - return this.parseTopicReference("hack"); - } - case 44: - case 54: - case 27: - { - const pipeProposal = this.getPluginOption("pipelineOperator", "proposal"); - if (pipeProposal) { - return this.parseTopicReference(pipeProposal); - } else { - throw this.unexpected(); - } - } - case 47: - { - const lookaheadCh = this.input.codePointAt(this.nextTokenStart()); - if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) { - this.expectOnePlugin(["jsx", "flow", "typescript"]); - break; - } else { - throw this.unexpected(); - } - } - default: - if (tokenIsIdentifier(type)) { - if (this.isContextual(125) && this.lookaheadCharCode() === 123 && !this.hasFollowingLineBreak()) { - return this.parseModuleExpression(); - } - const canBeArrow = this.state.potentialArrowAt === this.state.start; - const containsEsc = this.state.containsEsc; - const id = this.parseIdentifier(); - if (!containsEsc && id.name === "async" && !this.canInsertSemicolon()) { - const { - type - } = this.state; - if (type === 68) { - this.resetPreviousNodeTrailingComments(id); - this.next(); - return this.parseAsyncFunctionExpression(this.startNodeAtNode(id)); - } else if (tokenIsIdentifier(type)) { - if (this.lookaheadCharCode() === 61) { - return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id)); - } else { - return id; - } - } else if (type === 90) { - this.resetPreviousNodeTrailingComments(id); - return this.parseDo(this.startNodeAtNode(id), true); - } - } - if (canBeArrow && this.match(19) && !this.canInsertSemicolon()) { - this.next(); - return this.parseArrowExpression(this.startNodeAtNode(id), [id], false); - } - return id; - } else { - throw this.unexpected(); - } - } - } - parseTopicReferenceThenEqualsSign(topicTokenType, topicTokenValue) { - const pipeProposal = this.getPluginOption("pipelineOperator", "proposal"); - if (pipeProposal) { - this.state.type = topicTokenType; - this.state.value = topicTokenValue; - this.state.pos--; - this.state.end--; - this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1); - return this.parseTopicReference(pipeProposal); - } else { - throw this.unexpected(); - } - } - parseTopicReference(pipeProposal) { - const node = this.startNode(); - const startLoc = this.state.startLoc; - const tokenType = this.state.type; - this.next(); - return this.finishTopicReference(node, startLoc, pipeProposal, tokenType); - } - finishTopicReference(node, startLoc, pipeProposal, tokenType) { - if (this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)) { - const nodeType = pipeProposal === "smart" ? "PipelinePrimaryTopicReference" : "TopicReference"; - if (!this.topicReferenceIsAllowedInCurrentContext()) { - this.raise(pipeProposal === "smart" ? Errors.PrimaryTopicNotAllowed : Errors.PipeTopicUnbound, { - at: startLoc - }); - } - this.registerTopicReference(); - return this.finishNode(node, nodeType); - } else { - throw this.raise(Errors.PipeTopicUnconfiguredToken, { - at: startLoc, - token: tokenLabelName(tokenType) - }); - } - } - testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType) { - switch (pipeProposal) { - case "hack": - { - return this.hasPlugin(["pipelineOperator", { - topicToken: tokenLabelName(tokenType) - }]); - } - case "smart": - return tokenType === 27; - default: - throw this.raise(Errors.PipeTopicRequiresHackPipes, { - at: startLoc - }); - } - } - parseAsyncArrowUnaryFunction(node) { - this.prodParam.enter(functionFlags(true, this.prodParam.hasYield)); - const params = [this.parseIdentifier()]; - this.prodParam.exit(); - if (this.hasPrecedingLineBreak()) { - this.raise(Errors.LineTerminatorBeforeArrow, { - at: this.state.curPosition() - }); - } - this.expect(19); - return this.parseArrowExpression(node, params, true); - } - parseDo(node, isAsync) { - this.expectPlugin("doExpressions"); - if (isAsync) { - this.expectPlugin("asyncDoExpressions"); - } - node.async = isAsync; - this.next(); - const oldLabels = this.state.labels; - this.state.labels = []; - if (isAsync) { - this.prodParam.enter(PARAM_AWAIT); - node.body = this.parseBlock(); - this.prodParam.exit(); - } else { - node.body = this.parseBlock(); - } - this.state.labels = oldLabels; - return this.finishNode(node, "DoExpression"); - } - parseSuper() { - const node = this.startNode(); - this.next(); - if (this.match(10) && !this.scope.allowDirectSuper && !this.options.allowSuperOutsideMethod) { - this.raise(Errors.SuperNotAllowed, { - at: node - }); - } else if (!this.scope.allowSuper && !this.options.allowSuperOutsideMethod) { - this.raise(Errors.UnexpectedSuper, { - at: node - }); - } - if (!this.match(10) && !this.match(0) && !this.match(16)) { - this.raise(Errors.UnsupportedSuper, { - at: node - }); - } - return this.finishNode(node, "Super"); - } - parsePrivateName() { - const node = this.startNode(); - const id = this.startNodeAt(createPositionWithColumnOffset(this.state.startLoc, 1)); - const name = this.state.value; - this.next(); - node.id = this.createIdentifier(id, name); - return this.finishNode(node, "PrivateName"); - } - parseFunctionOrFunctionSent() { - const node = this.startNode(); - this.next(); - if (this.prodParam.hasYield && this.match(16)) { - const meta = this.createIdentifier(this.startNodeAtNode(node), "function"); - this.next(); - if (this.match(102)) { - this.expectPlugin("functionSent"); - } else if (!this.hasPlugin("functionSent")) { - this.unexpected(); - } - return this.parseMetaProperty(node, meta, "sent"); - } - return this.parseFunction(node); - } - parseMetaProperty(node, meta, propertyName) { - node.meta = meta; - const containsEsc = this.state.containsEsc; - node.property = this.parseIdentifier(true); - if (node.property.name !== propertyName || containsEsc) { - this.raise(Errors.UnsupportedMetaProperty, { - at: node.property, - target: meta.name, - onlyValidPropertyName: propertyName - }); - } - return this.finishNode(node, "MetaProperty"); - } - parseImportMetaProperty(node) { - const id = this.createIdentifier(this.startNodeAtNode(node), "import"); - this.next(); - if (this.isContextual(100)) { - if (!this.inModule) { - this.raise(Errors.ImportMetaOutsideModule, { - at: id - }); - } - this.sawUnambiguousESM = true; - } - return this.parseMetaProperty(node, id, "meta"); - } - parseLiteralAtNode(value, type, node) { - this.addExtra(node, "rawValue", value); - this.addExtra(node, "raw", this.input.slice(node.start, this.state.end)); - node.value = value; - this.next(); - return this.finishNode(node, type); - } - parseLiteral(value, type) { - const node = this.startNode(); - return this.parseLiteralAtNode(value, type, node); - } - parseStringLiteral(value) { - return this.parseLiteral(value, "StringLiteral"); - } - parseNumericLiteral(value) { - return this.parseLiteral(value, "NumericLiteral"); - } - parseBigIntLiteral(value) { - return this.parseLiteral(value, "BigIntLiteral"); - } - parseDecimalLiteral(value) { - return this.parseLiteral(value, "DecimalLiteral"); - } - parseRegExpLiteral(value) { - const node = this.parseLiteral(value.value, "RegExpLiteral"); - node.pattern = value.pattern; - node.flags = value.flags; - return node; - } - parseBooleanLiteral(value) { - const node = this.startNode(); - node.value = value; - this.next(); - return this.finishNode(node, "BooleanLiteral"); - } - parseNullLiteral() { - const node = this.startNode(); - this.next(); - return this.finishNode(node, "NullLiteral"); - } - parseParenAndDistinguishExpression(canBeArrow) { - const startLoc = this.state.startLoc; - let val; - this.next(); - this.expressionScope.enter(newArrowHeadScope()); - const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; - const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; - this.state.maybeInArrowParameters = true; - this.state.inFSharpPipelineDirectBody = false; - const innerStartLoc = this.state.startLoc; - const exprList = []; - const refExpressionErrors = new ExpressionErrors(); - let first = true; - let spreadStartLoc; - let optionalCommaStartLoc; - while (!this.match(11)) { - if (first) { - first = false; - } else { - this.expect(12, refExpressionErrors.optionalParametersLoc === null ? null : refExpressionErrors.optionalParametersLoc); - if (this.match(11)) { - optionalCommaStartLoc = this.state.startLoc; - break; - } - } - if (this.match(21)) { - const spreadNodeStartLoc = this.state.startLoc; - spreadStartLoc = this.state.startLoc; - exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartLoc)); - if (!this.checkCommaAfterRest(41)) { - break; - } - } else { - exprList.push(this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem)); - } - } - const innerEndLoc = this.state.lastTokEndLoc; - this.expect(11); - this.state.maybeInArrowParameters = oldMaybeInArrowParameters; - this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; - let arrowNode = this.startNodeAt(startLoc); - if (canBeArrow && this.shouldParseArrow(exprList) && (arrowNode = this.parseArrow(arrowNode))) { - this.checkDestructuringPrivate(refExpressionErrors); - this.expressionScope.validateAsPattern(); - this.expressionScope.exit(); - this.parseArrowExpression(arrowNode, exprList, false); - return arrowNode; - } - this.expressionScope.exit(); - if (!exprList.length) { - this.unexpected(this.state.lastTokStartLoc); - } - if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc); - if (spreadStartLoc) this.unexpected(spreadStartLoc); - this.checkExpressionErrors(refExpressionErrors, true); - this.toReferencedListDeep(exprList, true); - if (exprList.length > 1) { - val = this.startNodeAt(innerStartLoc); - val.expressions = exprList; - this.finishNode(val, "SequenceExpression"); - this.resetEndLocation(val, innerEndLoc); - } else { - val = exprList[0]; - } - return this.wrapParenthesis(startLoc, val); - } - wrapParenthesis(startLoc, expression) { - if (!this.options.createParenthesizedExpressions) { - this.addExtra(expression, "parenthesized", true); - this.addExtra(expression, "parenStart", startLoc.index); - this.takeSurroundingComments(expression, startLoc.index, this.state.lastTokEndLoc.index); - return expression; - } - const parenExpression = this.startNodeAt(startLoc); - parenExpression.expression = expression; - return this.finishNode(parenExpression, "ParenthesizedExpression"); - } - shouldParseArrow(params) { - return !this.canInsertSemicolon(); - } - parseArrow(node) { - if (this.eat(19)) { - return node; - } - } - parseParenItem(node, startLoc) { - return node; - } - parseNewOrNewTarget() { - const node = this.startNode(); - this.next(); - if (this.match(16)) { - const meta = this.createIdentifier(this.startNodeAtNode(node), "new"); - this.next(); - const metaProp = this.parseMetaProperty(node, meta, "target"); - if (!this.scope.inNonArrowFunction && !this.scope.inClass) { - this.raise(Errors.UnexpectedNewTarget, { - at: metaProp - }); - } - return metaProp; - } - return this.parseNew(node); - } - parseNew(node) { - this.parseNewCallee(node); - if (this.eat(10)) { - const args = this.parseExprList(11); - this.toReferencedList(args); - node.arguments = args; - } else { - node.arguments = []; - } - return this.finishNode(node, "NewExpression"); - } - parseNewCallee(node) { - var _node$callee$extra; - node.callee = this.parseNoCallExpr(); - if (node.callee.type === "Import") { - this.raise(Errors.ImportCallNotNewExpression, { - at: node.callee - }); - } else if (this.isOptionalChain(node.callee) && !((_node$callee$extra = node.callee.extra) != null && _node$callee$extra.parenthesized)) { - this.raise(Errors.OptionalChainingNoNew, { - at: this.state.lastTokEndLoc - }); - } else if (this.eat(18)) { - this.raise(Errors.OptionalChainingNoNew, { - at: this.state.startLoc - }); - } - } - parseTemplateElement(isTagged) { - const { - start, - startLoc, - end, - value - } = this.state; - const elemStart = start + 1; - const elem = this.startNodeAt(createPositionWithColumnOffset(startLoc, 1)); - if (value === null) { - if (!isTagged) { - this.raise(Errors.InvalidEscapeSequenceTemplate, { - at: createPositionWithColumnOffset(this.state.firstInvalidTemplateEscapePos, 1) - }); - } - } - const isTail = this.match(24); - const endOffset = isTail ? -1 : -2; - const elemEnd = end + endOffset; - elem.value = { - raw: this.input.slice(elemStart, elemEnd).replace(/\r\n?/g, "\n"), - cooked: value === null ? null : value.slice(1, endOffset) - }; - elem.tail = isTail; - this.next(); - const finishedNode = this.finishNode(elem, "TemplateElement"); - this.resetEndLocation(finishedNode, createPositionWithColumnOffset(this.state.lastTokEndLoc, endOffset)); - return finishedNode; - } - parseTemplate(isTagged) { - const node = this.startNode(); - node.expressions = []; - let curElt = this.parseTemplateElement(isTagged); - node.quasis = [curElt]; - while (!curElt.tail) { - node.expressions.push(this.parseTemplateSubstitution()); - this.readTemplateContinuation(); - node.quasis.push(curElt = this.parseTemplateElement(isTagged)); - } - return this.finishNode(node, "TemplateLiteral"); - } - parseTemplateSubstitution() { - return this.parseExpression(); - } - parseObjectLike(close, isPattern, isRecord, refExpressionErrors) { - if (isRecord) { - this.expectPlugin("recordAndTuple"); - } - const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; - this.state.inFSharpPipelineDirectBody = false; - const propHash = Object.create(null); - let first = true; - const node = this.startNode(); - node.properties = []; - this.next(); - while (!this.match(close)) { - if (first) { - first = false; - } else { - this.expect(12); - if (this.match(close)) { - this.addTrailingCommaExtraToNode(node); - break; - } - } - let prop; - if (isPattern) { - prop = this.parseBindingProperty(); - } else { - prop = this.parsePropertyDefinition(refExpressionErrors); - this.checkProto(prop, isRecord, propHash, refExpressionErrors); - } - if (isRecord && !this.isObjectProperty(prop) && prop.type !== "SpreadElement") { - this.raise(Errors.InvalidRecordProperty, { - at: prop - }); - } - if (prop.shorthand) { - this.addExtra(prop, "shorthand", true); - } - node.properties.push(prop); - } - this.next(); - this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; - let type = "ObjectExpression"; - if (isPattern) { - type = "ObjectPattern"; - } else if (isRecord) { - type = "RecordExpression"; - } - return this.finishNode(node, type); - } - addTrailingCommaExtraToNode(node) { - this.addExtra(node, "trailingComma", this.state.lastTokStart); - this.addExtra(node, "trailingCommaLoc", this.state.lastTokStartLoc, false); - } - maybeAsyncOrAccessorProp(prop) { - return !prop.computed && prop.key.type === "Identifier" && (this.isLiteralPropertyName() || this.match(0) || this.match(55)); - } - parsePropertyDefinition(refExpressionErrors) { - let decorators = []; - if (this.match(26)) { - if (this.hasPlugin("decorators")) { - this.raise(Errors.UnsupportedPropertyDecorator, { - at: this.state.startLoc - }); - } - while (this.match(26)) { - decorators.push(this.parseDecorator()); - } - } - const prop = this.startNode(); - let isAsync = false; - let isAccessor = false; - let startLoc; - if (this.match(21)) { - if (decorators.length) this.unexpected(); - return this.parseSpread(); - } - if (decorators.length) { - prop.decorators = decorators; - decorators = []; - } - prop.method = false; - if (refExpressionErrors) { - startLoc = this.state.startLoc; - } - let isGenerator = this.eat(55); - this.parsePropertyNamePrefixOperator(prop); - const containsEsc = this.state.containsEsc; - const key = this.parsePropertyName(prop, refExpressionErrors); - if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) { - const keyName = key.name; - if (keyName === "async" && !this.hasPrecedingLineBreak()) { - isAsync = true; - this.resetPreviousNodeTrailingComments(key); - isGenerator = this.eat(55); - this.parsePropertyName(prop); - } - if (keyName === "get" || keyName === "set") { - isAccessor = true; - this.resetPreviousNodeTrailingComments(key); - prop.kind = keyName; - if (this.match(55)) { - isGenerator = true; - this.raise(Errors.AccessorIsGenerator, { - at: this.state.curPosition(), - kind: keyName - }); - this.next(); - } - this.parsePropertyName(prop); - } - } - return this.parseObjPropValue(prop, startLoc, isGenerator, isAsync, false, isAccessor, refExpressionErrors); - } - getGetterSetterExpectedParamCount(method) { - return method.kind === "get" ? 0 : 1; - } - getObjectOrClassMethodParams(method) { - return method.params; - } - checkGetterSetterParams(method) { - var _params; - const paramCount = this.getGetterSetterExpectedParamCount(method); - const params = this.getObjectOrClassMethodParams(method); - if (params.length !== paramCount) { - this.raise(method.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, { - at: method - }); - } - if (method.kind === "set" && ((_params = params[params.length - 1]) == null ? void 0 : _params.type) === "RestElement") { - this.raise(Errors.BadSetterRestParameter, { - at: method - }); - } - } - parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) { - if (isAccessor) { - const finishedProp = this.parseMethod(prop, isGenerator, false, false, false, "ObjectMethod"); - this.checkGetterSetterParams(finishedProp); - return finishedProp; - } - if (isAsync || isGenerator || this.match(10)) { - if (isPattern) this.unexpected(); - prop.kind = "method"; - prop.method = true; - return this.parseMethod(prop, isGenerator, isAsync, false, false, "ObjectMethod"); - } - } - parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) { - prop.shorthand = false; - if (this.eat(14)) { - prop.value = isPattern ? this.parseMaybeDefault(this.state.startLoc) : this.parseMaybeAssignAllowIn(refExpressionErrors); - return this.finishNode(prop, "ObjectProperty"); - } - if (!prop.computed && prop.key.type === "Identifier") { - this.checkReservedWord(prop.key.name, prop.key.loc.start, true, false); - if (isPattern) { - prop.value = this.parseMaybeDefault(startLoc, cloneIdentifier(prop.key)); - } else if (this.match(29)) { - const shorthandAssignLoc = this.state.startLoc; - if (refExpressionErrors != null) { - if (refExpressionErrors.shorthandAssignLoc === null) { - refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc; - } - } else { - this.raise(Errors.InvalidCoverInitializedName, { - at: shorthandAssignLoc - }); - } - prop.value = this.parseMaybeDefault(startLoc, cloneIdentifier(prop.key)); - } else { - prop.value = cloneIdentifier(prop.key); - } - prop.shorthand = true; - return this.finishNode(prop, "ObjectProperty"); - } - } - parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { - const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) || this.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors); - if (!node) this.unexpected(); - return node; - } - parsePropertyName(prop, refExpressionErrors) { - if (this.eat(0)) { - prop.computed = true; - prop.key = this.parseMaybeAssignAllowIn(); - this.expect(3); - } else { - const { - type, - value - } = this.state; - let key; - if (tokenIsKeywordOrIdentifier(type)) { - key = this.parseIdentifier(true); - } else { - switch (type) { - case 132: - key = this.parseNumericLiteral(value); - break; - case 131: - key = this.parseStringLiteral(value); - break; - case 133: - key = this.parseBigIntLiteral(value); - break; - case 134: - key = this.parseDecimalLiteral(value); - break; - case 136: - { - const privateKeyLoc = this.state.startLoc; - if (refExpressionErrors != null) { - if (refExpressionErrors.privateKeyLoc === null) { - refExpressionErrors.privateKeyLoc = privateKeyLoc; - } - } else { - this.raise(Errors.UnexpectedPrivateField, { - at: privateKeyLoc - }); - } - key = this.parsePrivateName(); - break; - } - default: - throw this.unexpected(); - } - } - prop.key = key; - if (type !== 136) { - prop.computed = false; - } - } - return prop.key; - } - initFunction(node, isAsync) { - node.id = null; - node.generator = false; - node.async = isAsync; - } - parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { - this.initFunction(node, isAsync); - node.generator = isGenerator; - const allowModifiers = isConstructor; - this.scope.enter(SCOPE_FUNCTION | SCOPE_SUPER | (inClassScope ? SCOPE_CLASS : 0) | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0)); - this.prodParam.enter(functionFlags(isAsync, node.generator)); - this.parseFunctionParams(node, allowModifiers); - const finishedNode = this.parseFunctionBodyAndFinish(node, type, true); - this.prodParam.exit(); - this.scope.exit(); - return finishedNode; - } - parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { - if (isTuple) { - this.expectPlugin("recordAndTuple"); - } - const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; - this.state.inFSharpPipelineDirectBody = false; - const node = this.startNode(); - this.next(); - node.elements = this.parseExprList(close, !isTuple, refExpressionErrors, node); - this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; - return this.finishNode(node, isTuple ? "TupleExpression" : "ArrayExpression"); - } - parseArrowExpression(node, params, isAsync, trailingCommaLoc) { - this.scope.enter(SCOPE_FUNCTION | SCOPE_ARROW); - let flags = functionFlags(isAsync, false); - if (!this.match(5) && this.prodParam.hasIn) { - flags |= PARAM_IN; - } - this.prodParam.enter(flags); - this.initFunction(node, isAsync); - const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; - if (params) { - this.state.maybeInArrowParameters = true; - this.setArrowFunctionParameters(node, params, trailingCommaLoc); - } - this.state.maybeInArrowParameters = false; - this.parseFunctionBody(node, true); - this.prodParam.exit(); - this.scope.exit(); - this.state.maybeInArrowParameters = oldMaybeInArrowParameters; - return this.finishNode(node, "ArrowFunctionExpression"); - } - setArrowFunctionParameters(node, params, trailingCommaLoc) { - this.toAssignableList(params, trailingCommaLoc, false); - node.params = params; - } - parseFunctionBodyAndFinish(node, type, isMethod = false) { - this.parseFunctionBody(node, false, isMethod); - return this.finishNode(node, type); - } - parseFunctionBody(node, allowExpression, isMethod = false) { - const isExpression = allowExpression && !this.match(5); - this.expressionScope.enter(newExpressionScope()); - if (isExpression) { - node.body = this.parseMaybeAssign(); - this.checkParams(node, false, allowExpression, false); - } else { - const oldStrict = this.state.strict; - const oldLabels = this.state.labels; - this.state.labels = []; - this.prodParam.enter(this.prodParam.currentFlags() | PARAM_RETURN); - node.body = this.parseBlock(true, false, hasStrictModeDirective => { - const nonSimple = !this.isSimpleParamList(node.params); - if (hasStrictModeDirective && nonSimple) { - this.raise(Errors.IllegalLanguageModeDirective, { - at: (node.kind === "method" || node.kind === "constructor") && !!node.key ? node.key.loc.end : node - }); - } - const strictModeChanged = !oldStrict && this.state.strict; - this.checkParams(node, !this.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged); - if (this.state.strict && node.id) { - this.checkIdentifier(node.id, BIND_OUTSIDE, strictModeChanged); - } - }); - this.prodParam.exit(); - this.state.labels = oldLabels; - } - this.expressionScope.exit(); - } - isSimpleParameter(node) { - return node.type === "Identifier"; - } - isSimpleParamList(params) { - for (let i = 0, len = params.length; i < len; i++) { - if (!this.isSimpleParameter(params[i])) return false; - } - return true; - } - checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) { - const checkClashes = !allowDuplicates && new Set(); - const formalParameters = { - type: "FormalParameters" - }; - for (const param of node.params) { - this.checkLVal(param, { - in: formalParameters, - binding: BIND_VAR, - checkClashes, - strictModeChanged - }); - } - } - parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) { - const elts = []; - let first = true; - while (!this.eat(close)) { - if (first) { - first = false; - } else { - this.expect(12); - if (this.match(close)) { - if (nodeForExtra) { - this.addTrailingCommaExtraToNode(nodeForExtra); - } - this.next(); - break; - } - } - elts.push(this.parseExprListItem(allowEmpty, refExpressionErrors)); - } - return elts; - } - parseExprListItem(allowEmpty, refExpressionErrors, allowPlaceholder) { - let elt; - if (this.match(12)) { - if (!allowEmpty) { - this.raise(Errors.UnexpectedToken, { - at: this.state.curPosition(), - unexpected: "," - }); - } - elt = null; - } else if (this.match(21)) { - const spreadNodeStartLoc = this.state.startLoc; - elt = this.parseParenItem(this.parseSpread(refExpressionErrors), spreadNodeStartLoc); - } else if (this.match(17)) { - this.expectPlugin("partialApplication"); - if (!allowPlaceholder) { - this.raise(Errors.UnexpectedArgumentPlaceholder, { - at: this.state.startLoc - }); - } - const node = this.startNode(); - this.next(); - elt = this.finishNode(node, "ArgumentPlaceholder"); - } else { - elt = this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem); - } - return elt; - } - parseIdentifier(liberal) { - const node = this.startNode(); - const name = this.parseIdentifierName(liberal); - return this.createIdentifier(node, name); - } - createIdentifier(node, name) { - node.name = name; - node.loc.identifierName = name; - return this.finishNode(node, "Identifier"); - } - parseIdentifierName(liberal) { - let name; - const { - startLoc, - type - } = this.state; - if (tokenIsKeywordOrIdentifier(type)) { - name = this.state.value; - } else { - throw this.unexpected(); - } - const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type); - if (liberal) { - if (tokenIsKeyword) { - this.replaceToken(130); - } - } else { - this.checkReservedWord(name, startLoc, tokenIsKeyword, false); - } - this.next(); - return name; - } - checkReservedWord(word, startLoc, checkKeywords, isBinding) { - if (word.length > 10) { - return; - } - if (!canBeReservedWord(word)) { - return; - } - if (word === "yield") { - if (this.prodParam.hasYield) { - this.raise(Errors.YieldBindingIdentifier, { - at: startLoc - }); - return; - } - } else if (word === "await") { - if (this.prodParam.hasAwait) { - this.raise(Errors.AwaitBindingIdentifier, { - at: startLoc - }); - return; - } - if (this.scope.inStaticBlock) { - this.raise(Errors.AwaitBindingIdentifierInStaticBlock, { - at: startLoc - }); - return; - } - this.expressionScope.recordAsyncArrowParametersError({ - at: startLoc - }); - } else if (word === "arguments") { - if (this.scope.inClassAndNotInNonArrowFunction) { - this.raise(Errors.ArgumentsInClass, { - at: startLoc - }); - return; - } - } - if (checkKeywords && isKeyword(word)) { - this.raise(Errors.UnexpectedKeyword, { - at: startLoc, - keyword: word - }); - return; - } - const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord; - if (reservedTest(word, this.inModule)) { - this.raise(Errors.UnexpectedReservedWord, { - at: startLoc, - reservedWord: word - }); - } - } - isAwaitAllowed() { - if (this.prodParam.hasAwait) return true; - if (this.options.allowAwaitOutsideFunction && !this.scope.inFunction) { - return true; - } - return false; - } - parseAwait(startLoc) { - const node = this.startNodeAt(startLoc); - this.expressionScope.recordParameterInitializerError(Errors.AwaitExpressionFormalParameter, { - at: node - }); - if (this.eat(55)) { - this.raise(Errors.ObsoleteAwaitStar, { - at: node - }); - } - if (!this.scope.inFunction && !this.options.allowAwaitOutsideFunction) { - if (this.isAmbiguousAwait()) { - this.ambiguousScriptDifferentAst = true; - } else { - this.sawUnambiguousESM = true; - } - } - if (!this.state.soloAwait) { - node.argument = this.parseMaybeUnary(null, true); - } - return this.finishNode(node, "AwaitExpression"); - } - isAmbiguousAwait() { - if (this.hasPrecedingLineBreak()) return true; - const { - type - } = this.state; - return type === 53 || type === 10 || type === 0 || tokenIsTemplate(type) || type === 101 && !this.state.containsEsc || type === 135 || type === 56 || this.hasPlugin("v8intrinsic") && type === 54; - } - parseYield() { - const node = this.startNode(); - this.expressionScope.recordParameterInitializerError(Errors.YieldInParameter, { - at: node - }); - this.next(); - let delegating = false; - let argument = null; - if (!this.hasPrecedingLineBreak()) { - delegating = this.eat(55); - switch (this.state.type) { - case 13: - case 137: - case 8: - case 11: - case 3: - case 9: - case 14: - case 12: - if (!delegating) break; - default: - argument = this.parseMaybeAssign(); - } - } - node.delegate = delegating; - node.argument = argument; - return this.finishNode(node, "YieldExpression"); - } - checkPipelineAtInfixOperator(left, leftStartLoc) { - if (this.hasPlugin(["pipelineOperator", { - proposal: "smart" - }])) { - if (left.type === "SequenceExpression") { - this.raise(Errors.PipelineHeadSequenceExpression, { - at: leftStartLoc - }); - } - } - } - parseSmartPipelineBodyInStyle(childExpr, startLoc) { - if (this.isSimpleReference(childExpr)) { - const bodyNode = this.startNodeAt(startLoc); - bodyNode.callee = childExpr; - return this.finishNode(bodyNode, "PipelineBareFunction"); - } else { - const bodyNode = this.startNodeAt(startLoc); - this.checkSmartPipeTopicBodyEarlyErrors(startLoc); - bodyNode.expression = childExpr; - return this.finishNode(bodyNode, "PipelineTopicExpression"); - } - } - isSimpleReference(expression) { - switch (expression.type) { - case "MemberExpression": - return !expression.computed && this.isSimpleReference(expression.object); - case "Identifier": - return true; - default: - return false; - } - } - checkSmartPipeTopicBodyEarlyErrors(startLoc) { - if (this.match(19)) { - throw this.raise(Errors.PipelineBodyNoArrow, { - at: this.state.startLoc - }); - } - if (!this.topicReferenceWasUsedInCurrentContext()) { - this.raise(Errors.PipelineTopicUnused, { - at: startLoc - }); - } - } - withTopicBindingContext(callback) { - const outerContextTopicState = this.state.topicContext; - this.state.topicContext = { - maxNumOfResolvableTopics: 1, - maxTopicIndex: null - }; - try { - return callback(); - } finally { - this.state.topicContext = outerContextTopicState; - } - } - withSmartMixTopicForbiddingContext(callback) { - if (this.hasPlugin(["pipelineOperator", { - proposal: "smart" - }])) { - const outerContextTopicState = this.state.topicContext; - this.state.topicContext = { - maxNumOfResolvableTopics: 0, - maxTopicIndex: null - }; - try { - return callback(); - } finally { - this.state.topicContext = outerContextTopicState; - } - } else { - return callback(); - } - } - withSoloAwaitPermittingContext(callback) { - const outerContextSoloAwaitState = this.state.soloAwait; - this.state.soloAwait = true; - try { - return callback(); - } finally { - this.state.soloAwait = outerContextSoloAwaitState; - } - } - allowInAnd(callback) { - const flags = this.prodParam.currentFlags(); - const prodParamToSet = PARAM_IN & ~flags; - if (prodParamToSet) { - this.prodParam.enter(flags | PARAM_IN); - try { - return callback(); - } finally { - this.prodParam.exit(); - } - } - return callback(); - } - disallowInAnd(callback) { - const flags = this.prodParam.currentFlags(); - const prodParamToClear = PARAM_IN & flags; - if (prodParamToClear) { - this.prodParam.enter(flags & ~PARAM_IN); - try { - return callback(); - } finally { - this.prodParam.exit(); - } - } - return callback(); - } - registerTopicReference() { - this.state.topicContext.maxTopicIndex = 0; - } - topicReferenceIsAllowedInCurrentContext() { - return this.state.topicContext.maxNumOfResolvableTopics >= 1; - } - topicReferenceWasUsedInCurrentContext() { - return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0; - } - parseFSharpPipelineBody(prec) { - const startLoc = this.state.startLoc; - this.state.potentialArrowAt = this.state.start; - const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; - this.state.inFSharpPipelineDirectBody = true; - const ret = this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, prec); - this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; - return ret; - } - parseModuleExpression() { - this.expectPlugin("moduleBlocks"); - const node = this.startNode(); - this.next(); - if (!this.match(5)) { - this.unexpected(null, 5); - } - const program = this.startNodeAt(this.state.endLoc); - this.next(); - const revertScopes = this.initializeScopes(true); - this.enterInitialScopes(); - try { - node.body = this.parseProgram(program, 8, "module"); - } finally { - revertScopes(); - } - return this.finishNode(node, "ModuleExpression"); - } - parsePropertyNamePrefixOperator(prop) {} -} - -const loopLabel = { - kind: "loop" - }, - switchLabel = { - kind: "switch" - }; -var ParseFunctionFlag = { - Expression: 0, - Declaration: 1, - HangingDeclaration: 2, - NullableId: 4, - Async: 8 -}; -var ParseStatementFlag = { - StatementOnly: 0, - AllowImportExport: 1, - AllowDeclaration: 2, - AllowFunctionDeclaration: 4, - AllowLabeledFunction: 8 -}; -const loneSurrogate = /[\uD800-\uDFFF]/u; -const keywordRelationalOperator = /in(?:stanceof)?/y; -function babel7CompatTokens(tokens, input) { - for (let i = 0; i < tokens.length; i++) { - const token = tokens[i]; - const { - type - } = token; - if (typeof type === "number") { - { - if (type === 136) { - const { - loc, - start, - value, - end - } = token; - const hashEndPos = start + 1; - const hashEndLoc = createPositionWithColumnOffset(loc.start, 1); - tokens.splice(i, 1, new Token({ - type: getExportedToken(27), - value: "#", - start: start, - end: hashEndPos, - startLoc: loc.start, - endLoc: hashEndLoc - }), new Token({ - type: getExportedToken(130), - value: value, - start: hashEndPos, - end: end, - startLoc: hashEndLoc, - endLoc: loc.end - })); - i++; - continue; - } - if (tokenIsTemplate(type)) { - const { - loc, - start, - value, - end - } = token; - const backquoteEnd = start + 1; - const backquoteEndLoc = createPositionWithColumnOffset(loc.start, 1); - let startToken; - if (input.charCodeAt(start) === 96) { - startToken = new Token({ - type: getExportedToken(22), - value: "`", - start: start, - end: backquoteEnd, - startLoc: loc.start, - endLoc: backquoteEndLoc - }); - } else { - startToken = new Token({ - type: getExportedToken(8), - value: "}", - start: start, - end: backquoteEnd, - startLoc: loc.start, - endLoc: backquoteEndLoc - }); - } - let templateValue, templateElementEnd, templateElementEndLoc, endToken; - if (type === 24) { - templateElementEnd = end - 1; - templateElementEndLoc = createPositionWithColumnOffset(loc.end, -1); - templateValue = value === null ? null : value.slice(1, -1); - endToken = new Token({ - type: getExportedToken(22), - value: "`", - start: templateElementEnd, - end: end, - startLoc: templateElementEndLoc, - endLoc: loc.end - }); - } else { - templateElementEnd = end - 2; - templateElementEndLoc = createPositionWithColumnOffset(loc.end, -2); - templateValue = value === null ? null : value.slice(1, -2); - endToken = new Token({ - type: getExportedToken(23), - value: "${", - start: templateElementEnd, - end: end, - startLoc: templateElementEndLoc, - endLoc: loc.end - }); - } - tokens.splice(i, 1, startToken, new Token({ - type: getExportedToken(20), - value: templateValue, - start: backquoteEnd, - end: templateElementEnd, - startLoc: backquoteEndLoc, - endLoc: templateElementEndLoc - }), endToken); - i += 2; - continue; - } - } - token.type = getExportedToken(type); - } - } - return tokens; -} -class StatementParser extends ExpressionParser { - parseTopLevel(file, program) { - file.program = this.parseProgram(program); - file.comments = this.state.comments; - if (this.options.tokens) { - file.tokens = babel7CompatTokens(this.tokens, this.input); - } - return this.finishNode(file, "File"); - } - parseProgram(program, end = 137, sourceType = this.options.sourceType) { - program.sourceType = sourceType; - program.interpreter = this.parseInterpreterDirective(); - this.parseBlockBody(program, true, true, end); - if (this.inModule && !this.options.allowUndeclaredExports && this.scope.undefinedExports.size > 0) { - for (const [localName, at] of Array.from(this.scope.undefinedExports)) { - this.raise(Errors.ModuleExportUndefined, { - at, - localName - }); - } - } - let finishedProgram; - if (end === 137) { - finishedProgram = this.finishNode(program, "Program"); - } else { - finishedProgram = this.finishNodeAt(program, "Program", createPositionWithColumnOffset(this.state.startLoc, -1)); - } - return finishedProgram; - } - stmtToDirective(stmt) { - const directive = stmt; - directive.type = "Directive"; - directive.value = directive.expression; - delete directive.expression; - const directiveLiteral = directive.value; - const expressionValue = directiveLiteral.value; - const raw = this.input.slice(directiveLiteral.start, directiveLiteral.end); - const val = directiveLiteral.value = raw.slice(1, -1); - this.addExtra(directiveLiteral, "raw", raw); - this.addExtra(directiveLiteral, "rawValue", val); - this.addExtra(directiveLiteral, "expressionValue", expressionValue); - directiveLiteral.type = "DirectiveLiteral"; - return directive; - } - parseInterpreterDirective() { - if (!this.match(28)) { - return null; - } - const node = this.startNode(); - node.value = this.state.value; - this.next(); - return this.finishNode(node, "InterpreterDirective"); - } - isLet() { - if (!this.isContextual(99)) { - return false; - } - return this.hasFollowingBindingAtom(); - } - chStartsBindingIdentifier(ch, pos) { - if (isIdentifierStart(ch)) { - keywordRelationalOperator.lastIndex = pos; - if (keywordRelationalOperator.test(this.input)) { - const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex); - if (!isIdentifierChar(endCh) && endCh !== 92) { - return false; - } - } - return true; - } else if (ch === 92) { - return true; - } else { - return false; - } - } - chStartsBindingPattern(ch) { - return ch === 91 || ch === 123; - } - hasFollowingBindingAtom() { - const next = this.nextTokenStart(); - const nextCh = this.codePointAtPos(next); - return this.chStartsBindingPattern(nextCh) || this.chStartsBindingIdentifier(nextCh, next); - } - hasFollowingBindingIdentifier() { - const next = this.nextTokenStart(); - const nextCh = this.codePointAtPos(next); - return this.chStartsBindingIdentifier(nextCh, next); - } - startsUsingForOf() { - const lookahead = this.lookahead(); - if (lookahead.type === 101 && !lookahead.containsEsc) { - return false; - } else { - this.expectPlugin("explicitResourceManagement"); - return true; - } - } - parseModuleItem() { - return this.parseStatementLike(ParseStatementFlag.AllowImportExport | ParseStatementFlag.AllowDeclaration | ParseStatementFlag.AllowFunctionDeclaration | ParseStatementFlag.AllowLabeledFunction); - } - parseStatementListItem() { - return this.parseStatementLike(ParseStatementFlag.AllowDeclaration | ParseStatementFlag.AllowFunctionDeclaration | ParseStatementFlag.AllowLabeledFunction); - } - parseStatementOrFunctionDeclaration(disallowLabeledFunction) { - return this.parseStatementLike(ParseStatementFlag.AllowFunctionDeclaration | (disallowLabeledFunction ? 0 : ParseStatementFlag.AllowLabeledFunction)); - } - parseStatement() { - return this.parseStatementLike(ParseStatementFlag.StatementOnly); - } - parseStatementLike(flags) { - let decorators = null; - if (this.match(26)) { - decorators = this.parseDecorators(true); - } - return this.parseStatementContent(flags, decorators); - } - parseStatementContent(flags, decorators) { - const starttype = this.state.type; - const node = this.startNode(); - const allowDeclaration = !!(flags & ParseStatementFlag.AllowDeclaration); - const allowFunctionDeclaration = !!(flags & ParseStatementFlag.AllowFunctionDeclaration); - const topLevel = flags & ParseStatementFlag.AllowImportExport; - switch (starttype) { - case 60: - return this.parseBreakContinueStatement(node, true); - case 63: - return this.parseBreakContinueStatement(node, false); - case 64: - return this.parseDebuggerStatement(node); - case 90: - return this.parseDoWhileStatement(node); - case 91: - return this.parseForStatement(node); - case 68: - if (this.lookaheadCharCode() === 46) break; - if (!allowDeclaration) { - if (this.state.strict) { - this.raise(Errors.StrictFunction, { - at: this.state.startLoc - }); - } else if (!allowFunctionDeclaration) { - this.raise(Errors.SloppyFunction, { - at: this.state.startLoc - }); - } - } - return this.parseFunctionStatement(node, false, !allowDeclaration && allowFunctionDeclaration); - case 80: - if (!allowDeclaration) this.unexpected(); - return this.parseClass(this.maybeTakeDecorators(decorators, node), true); - case 69: - return this.parseIfStatement(node); - case 70: - return this.parseReturnStatement(node); - case 71: - return this.parseSwitchStatement(node); - case 72: - return this.parseThrowStatement(node); - case 73: - return this.parseTryStatement(node); - case 105: - if (this.hasFollowingLineBreak() || this.state.containsEsc || !this.hasFollowingBindingIdentifier()) { - break; - } - this.expectPlugin("explicitResourceManagement"); - if (!this.scope.inModule && this.scope.inTopLevel) { - this.raise(Errors.UnexpectedUsingDeclaration, { - at: this.state.startLoc - }); - } else if (!allowDeclaration) { - this.raise(Errors.UnexpectedLexicalDeclaration, { - at: this.state.startLoc - }); - } - return this.parseVarStatement(node, "using"); - case 99: - { - if (this.state.containsEsc) { - break; - } - const next = this.nextTokenStart(); - const nextCh = this.codePointAtPos(next); - if (nextCh !== 91) { - if (!allowDeclaration && this.hasFollowingLineBreak()) break; - if (!this.chStartsBindingIdentifier(nextCh, next) && nextCh !== 123) { - break; - } - } - } - case 75: - { - if (!allowDeclaration) { - this.raise(Errors.UnexpectedLexicalDeclaration, { - at: this.state.startLoc - }); - } - } - case 74: - { - const kind = this.state.value; - return this.parseVarStatement(node, kind); - } - case 92: - return this.parseWhileStatement(node); - case 76: - return this.parseWithStatement(node); - case 5: - return this.parseBlock(); - case 13: - return this.parseEmptyStatement(node); - case 83: - { - const nextTokenCharCode = this.lookaheadCharCode(); - if (nextTokenCharCode === 40 || nextTokenCharCode === 46) { - break; - } - } - case 82: - { - if (!this.options.allowImportExportEverywhere && !topLevel) { - this.raise(Errors.UnexpectedImportExport, { - at: this.state.startLoc - }); - } - this.next(); - let result; - if (starttype === 83) { - result = this.parseImport(node); - if (result.type === "ImportDeclaration" && (!result.importKind || result.importKind === "value")) { - this.sawUnambiguousESM = true; - } - } else { - result = this.parseExport(node, decorators); - if (result.type === "ExportNamedDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportAllDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportDefaultDeclaration") { - this.sawUnambiguousESM = true; - } - } - this.assertModuleNodeAllowed(result); - return result; - } - default: - { - if (this.isAsyncFunction()) { - if (!allowDeclaration) { - this.raise(Errors.AsyncFunctionInSingleStatementContext, { - at: this.state.startLoc - }); - } - this.next(); - return this.parseFunctionStatement(node, true, !allowDeclaration && allowFunctionDeclaration); - } - } - } - const maybeName = this.state.value; - const expr = this.parseExpression(); - if (tokenIsIdentifier(starttype) && expr.type === "Identifier" && this.eat(14)) { - return this.parseLabeledStatement(node, maybeName, expr, flags); - } else { - return this.parseExpressionStatement(node, expr, decorators); - } - } - assertModuleNodeAllowed(node) { - if (!this.options.allowImportExportEverywhere && !this.inModule) { - this.raise(Errors.ImportOutsideModule, { - at: node - }); - } - } - decoratorsEnabledBeforeExport() { - if (this.hasPlugin("decorators-legacy")) return true; - return this.hasPlugin("decorators") && !!this.getPluginOption("decorators", "decoratorsBeforeExport"); - } - maybeTakeDecorators(maybeDecorators, classNode, exportNode) { - if (maybeDecorators) { - classNode.decorators = maybeDecorators; - this.resetStartLocationFromNode(classNode, maybeDecorators[0]); - if (exportNode) this.resetStartLocationFromNode(exportNode, classNode); - } - return classNode; - } - canHaveLeadingDecorator() { - return this.match(80); - } - parseDecorators(allowExport) { - const decorators = []; - do { - decorators.push(this.parseDecorator()); - } while (this.match(26)); - if (this.match(82)) { - if (!allowExport) { - this.unexpected(); - } - if (!this.decoratorsEnabledBeforeExport()) { - this.raise(Errors.DecoratorExportClass, { - at: this.state.startLoc - }); - } - } else if (!this.canHaveLeadingDecorator()) { - throw this.raise(Errors.UnexpectedLeadingDecorator, { - at: this.state.startLoc - }); - } - return decorators; - } - parseDecorator() { - this.expectOnePlugin(["decorators", "decorators-legacy"]); - const node = this.startNode(); - this.next(); - if (this.hasPlugin("decorators")) { - const startLoc = this.state.startLoc; - let expr; - if (this.match(10)) { - const startLoc = this.state.startLoc; - this.next(); - expr = this.parseExpression(); - this.expect(11); - expr = this.wrapParenthesis(startLoc, expr); - const paramsStartLoc = this.state.startLoc; - node.expression = this.parseMaybeDecoratorArguments(expr); - if (this.getPluginOption("decorators", "allowCallParenthesized") === false && node.expression !== expr) { - this.raise(Errors.DecoratorArgumentsOutsideParentheses, { - at: paramsStartLoc - }); - } - } else { - expr = this.parseIdentifier(false); - while (this.eat(16)) { - const node = this.startNodeAt(startLoc); - node.object = expr; - if (this.match(136)) { - this.classScope.usePrivateName(this.state.value, this.state.startLoc); - node.property = this.parsePrivateName(); - } else { - node.property = this.parseIdentifier(true); - } - node.computed = false; - expr = this.finishNode(node, "MemberExpression"); - } - node.expression = this.parseMaybeDecoratorArguments(expr); - } - } else { - node.expression = this.parseExprSubscripts(); - } - return this.finishNode(node, "Decorator"); - } - parseMaybeDecoratorArguments(expr) { - if (this.eat(10)) { - const node = this.startNodeAtNode(expr); - node.callee = expr; - node.arguments = this.parseCallExpressionArguments(11, false); - this.toReferencedList(node.arguments); - return this.finishNode(node, "CallExpression"); - } - return expr; - } - parseBreakContinueStatement(node, isBreak) { - this.next(); - if (this.isLineTerminator()) { - node.label = null; - } else { - node.label = this.parseIdentifier(); - this.semicolon(); - } - this.verifyBreakContinue(node, isBreak); - return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement"); - } - verifyBreakContinue(node, isBreak) { - let i; - for (i = 0; i < this.state.labels.length; ++i) { - const lab = this.state.labels[i]; - if (node.label == null || lab.name === node.label.name) { - if (lab.kind != null && (isBreak || lab.kind === "loop")) break; - if (node.label && isBreak) break; - } - } - if (i === this.state.labels.length) { - const type = isBreak ? "BreakStatement" : "ContinueStatement"; - this.raise(Errors.IllegalBreakContinue, { - at: node, - type - }); - } - } - parseDebuggerStatement(node) { - this.next(); - this.semicolon(); - return this.finishNode(node, "DebuggerStatement"); - } - parseHeaderExpression() { - this.expect(10); - const val = this.parseExpression(); - this.expect(11); - return val; - } - parseDoWhileStatement(node) { - this.next(); - this.state.labels.push(loopLabel); - node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); - this.state.labels.pop(); - this.expect(92); - node.test = this.parseHeaderExpression(); - this.eat(13); - return this.finishNode(node, "DoWhileStatement"); - } - parseForStatement(node) { - this.next(); - this.state.labels.push(loopLabel); - let awaitAt = null; - if (this.isAwaitAllowed() && this.eatContextual(96)) { - awaitAt = this.state.lastTokStartLoc; - } - this.scope.enter(SCOPE_OTHER); - this.expect(10); - if (this.match(13)) { - if (awaitAt !== null) { - this.unexpected(awaitAt); - } - return this.parseFor(node, null); - } - const startsWithLet = this.isContextual(99); - const startsWithUsing = this.isContextual(105) && !this.hasFollowingLineBreak(); - const isLetOrUsing = startsWithLet && this.hasFollowingBindingAtom() || startsWithUsing && this.hasFollowingBindingIdentifier() && this.startsUsingForOf(); - if (this.match(74) || this.match(75) || isLetOrUsing) { - const initNode = this.startNode(); - const kind = this.state.value; - this.next(); - this.parseVar(initNode, true, kind); - const init = this.finishNode(initNode, "VariableDeclaration"); - const isForIn = this.match(58); - if (isForIn && startsWithUsing) { - this.raise(Errors.ForInUsing, { - at: init - }); - } - if ((isForIn || this.isContextual(101)) && init.declarations.length === 1) { - return this.parseForIn(node, init, awaitAt); - } - if (awaitAt !== null) { - this.unexpected(awaitAt); - } - return this.parseFor(node, init); - } - const startsWithAsync = this.isContextual(95); - const refExpressionErrors = new ExpressionErrors(); - const init = this.parseExpression(true, refExpressionErrors); - const isForOf = this.isContextual(101); - if (isForOf) { - if (startsWithLet) { - this.raise(Errors.ForOfLet, { - at: init - }); - } - if (awaitAt === null && startsWithAsync && init.type === "Identifier") { - this.raise(Errors.ForOfAsync, { - at: init - }); - } - } - if (isForOf || this.match(58)) { - this.checkDestructuringPrivate(refExpressionErrors); - this.toAssignable(init, true); - const type = isForOf ? "ForOfStatement" : "ForInStatement"; - this.checkLVal(init, { - in: { - type - } - }); - return this.parseForIn(node, init, awaitAt); - } else { - this.checkExpressionErrors(refExpressionErrors, true); - } - if (awaitAt !== null) { - this.unexpected(awaitAt); - } - return this.parseFor(node, init); - } - parseFunctionStatement(node, isAsync, isHangingDeclaration) { - this.next(); - return this.parseFunction(node, ParseFunctionFlag.Declaration | (isHangingDeclaration ? ParseFunctionFlag.HangingDeclaration : 0) | (isAsync ? ParseFunctionFlag.Async : 0)); - } - parseIfStatement(node) { - this.next(); - node.test = this.parseHeaderExpression(); - node.consequent = this.parseStatementOrFunctionDeclaration(true); - node.alternate = this.eat(66) ? this.parseStatementOrFunctionDeclaration(true) : null; - return this.finishNode(node, "IfStatement"); - } - parseReturnStatement(node) { - if (!this.prodParam.hasReturn && !this.options.allowReturnOutsideFunction) { - this.raise(Errors.IllegalReturn, { - at: this.state.startLoc - }); - } - this.next(); - if (this.isLineTerminator()) { - node.argument = null; - } else { - node.argument = this.parseExpression(); - this.semicolon(); - } - return this.finishNode(node, "ReturnStatement"); - } - parseSwitchStatement(node) { - this.next(); - node.discriminant = this.parseHeaderExpression(); - const cases = node.cases = []; - this.expect(5); - this.state.labels.push(switchLabel); - this.scope.enter(SCOPE_OTHER); - let cur; - for (let sawDefault; !this.match(8);) { - if (this.match(61) || this.match(65)) { - const isCase = this.match(61); - if (cur) this.finishNode(cur, "SwitchCase"); - cases.push(cur = this.startNode()); - cur.consequent = []; - this.next(); - if (isCase) { - cur.test = this.parseExpression(); - } else { - if (sawDefault) { - this.raise(Errors.MultipleDefaultsInSwitch, { - at: this.state.lastTokStartLoc - }); - } - sawDefault = true; - cur.test = null; - } - this.expect(14); - } else { - if (cur) { - cur.consequent.push(this.parseStatementListItem()); - } else { - this.unexpected(); - } - } - } - this.scope.exit(); - if (cur) this.finishNode(cur, "SwitchCase"); - this.next(); - this.state.labels.pop(); - return this.finishNode(node, "SwitchStatement"); - } - parseThrowStatement(node) { - this.next(); - if (this.hasPrecedingLineBreak()) { - this.raise(Errors.NewlineAfterThrow, { - at: this.state.lastTokEndLoc - }); - } - node.argument = this.parseExpression(); - this.semicolon(); - return this.finishNode(node, "ThrowStatement"); - } - parseCatchClauseParam() { - const param = this.parseBindingAtom(); - const simple = param.type === "Identifier"; - this.scope.enter(simple ? SCOPE_SIMPLE_CATCH : 0); - this.checkLVal(param, { - in: { - type: "CatchClause" - }, - binding: BIND_CATCH_PARAM - }); - return param; - } - parseTryStatement(node) { - this.next(); - node.block = this.parseBlock(); - node.handler = null; - if (this.match(62)) { - const clause = this.startNode(); - this.next(); - if (this.match(10)) { - this.expect(10); - clause.param = this.parseCatchClauseParam(); - this.expect(11); - } else { - clause.param = null; - this.scope.enter(SCOPE_OTHER); - } - clause.body = this.withSmartMixTopicForbiddingContext(() => this.parseBlock(false, false)); - this.scope.exit(); - node.handler = this.finishNode(clause, "CatchClause"); - } - node.finalizer = this.eat(67) ? this.parseBlock() : null; - if (!node.handler && !node.finalizer) { - this.raise(Errors.NoCatchOrFinally, { - at: node - }); - } - return this.finishNode(node, "TryStatement"); - } - parseVarStatement(node, kind, allowMissingInitializer = false) { - this.next(); - this.parseVar(node, false, kind, allowMissingInitializer); - this.semicolon(); - return this.finishNode(node, "VariableDeclaration"); - } - parseWhileStatement(node) { - this.next(); - node.test = this.parseHeaderExpression(); - this.state.labels.push(loopLabel); - node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); - this.state.labels.pop(); - return this.finishNode(node, "WhileStatement"); - } - parseWithStatement(node) { - if (this.state.strict) { - this.raise(Errors.StrictWith, { - at: this.state.startLoc - }); - } - this.next(); - node.object = this.parseHeaderExpression(); - node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); - return this.finishNode(node, "WithStatement"); - } - parseEmptyStatement(node) { - this.next(); - return this.finishNode(node, "EmptyStatement"); - } - parseLabeledStatement(node, maybeName, expr, flags) { - for (const label of this.state.labels) { - if (label.name === maybeName) { - this.raise(Errors.LabelRedeclaration, { - at: expr, - labelName: maybeName - }); - } - } - const kind = tokenIsLoop(this.state.type) ? "loop" : this.match(71) ? "switch" : null; - for (let i = this.state.labels.length - 1; i >= 0; i--) { - const label = this.state.labels[i]; - if (label.statementStart === node.start) { - label.statementStart = this.state.start; - label.kind = kind; - } else { - break; - } - } - this.state.labels.push({ - name: maybeName, - kind: kind, - statementStart: this.state.start - }); - node.body = flags & ParseStatementFlag.AllowLabeledFunction ? this.parseStatementOrFunctionDeclaration(false) : this.parseStatement(); - this.state.labels.pop(); - node.label = expr; - return this.finishNode(node, "LabeledStatement"); - } - parseExpressionStatement(node, expr, decorators) { - node.expression = expr; - this.semicolon(); - return this.finishNode(node, "ExpressionStatement"); - } - parseBlock(allowDirectives = false, createNewLexicalScope = true, afterBlockParse) { - const node = this.startNode(); - if (allowDirectives) { - this.state.strictErrors.clear(); - } - this.expect(5); - if (createNewLexicalScope) { - this.scope.enter(SCOPE_OTHER); - } - this.parseBlockBody(node, allowDirectives, false, 8, afterBlockParse); - if (createNewLexicalScope) { - this.scope.exit(); - } - return this.finishNode(node, "BlockStatement"); - } - isValidDirective(stmt) { - return stmt.type === "ExpressionStatement" && stmt.expression.type === "StringLiteral" && !stmt.expression.extra.parenthesized; - } - parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) { - const body = node.body = []; - const directives = node.directives = []; - this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end, afterBlockParse); - } - parseBlockOrModuleBlockBody(body, directives, topLevel, end, afterBlockParse) { - const oldStrict = this.state.strict; - let hasStrictModeDirective = false; - let parsedNonDirective = false; - while (!this.match(end)) { - const stmt = topLevel ? this.parseModuleItem() : this.parseStatementListItem(); - if (directives && !parsedNonDirective) { - if (this.isValidDirective(stmt)) { - const directive = this.stmtToDirective(stmt); - directives.push(directive); - if (!hasStrictModeDirective && directive.value.value === "use strict") { - hasStrictModeDirective = true; - this.setStrict(true); - } - continue; - } - parsedNonDirective = true; - this.state.strictErrors.clear(); - } - body.push(stmt); - } - if (afterBlockParse) { - afterBlockParse.call(this, hasStrictModeDirective); - } - if (!oldStrict) { - this.setStrict(false); - } - this.next(); - } - parseFor(node, init) { - node.init = init; - this.semicolon(false); - node.test = this.match(13) ? null : this.parseExpression(); - this.semicolon(false); - node.update = this.match(11) ? null : this.parseExpression(); - this.expect(11); - node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); - this.scope.exit(); - this.state.labels.pop(); - return this.finishNode(node, "ForStatement"); - } - parseForIn(node, init, awaitAt) { - const isForIn = this.match(58); - this.next(); - if (isForIn) { - if (awaitAt !== null) this.unexpected(awaitAt); - } else { - node.await = awaitAt !== null; - } - if (init.type === "VariableDeclaration" && init.declarations[0].init != null && (!isForIn || this.state.strict || init.kind !== "var" || init.declarations[0].id.type !== "Identifier")) { - this.raise(Errors.ForInOfLoopInitializer, { - at: init, - type: isForIn ? "ForInStatement" : "ForOfStatement" - }); - } - if (init.type === "AssignmentPattern") { - this.raise(Errors.InvalidLhs, { - at: init, - ancestor: { - type: "ForStatement" - } - }); - } - node.left = init; - node.right = isForIn ? this.parseExpression() : this.parseMaybeAssignAllowIn(); - this.expect(11); - node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); - this.scope.exit(); - this.state.labels.pop(); - return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement"); - } - parseVar(node, isFor, kind, allowMissingInitializer = false) { - const declarations = node.declarations = []; - node.kind = kind; - for (;;) { - const decl = this.startNode(); - this.parseVarId(decl, kind); - decl.init = !this.eat(29) ? null : isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn(); - if (decl.init === null && !allowMissingInitializer) { - if (decl.id.type !== "Identifier" && !(isFor && (this.match(58) || this.isContextual(101)))) { - this.raise(Errors.DeclarationMissingInitializer, { - at: this.state.lastTokEndLoc, - kind: "destructuring" - }); - } else if (kind === "const" && !(this.match(58) || this.isContextual(101))) { - this.raise(Errors.DeclarationMissingInitializer, { - at: this.state.lastTokEndLoc, - kind: "const" - }); - } - } - declarations.push(this.finishNode(decl, "VariableDeclarator")); - if (!this.eat(12)) break; - } - return node; - } - parseVarId(decl, kind) { - if (kind === "using" && !this.inModule && this.match(96)) { - this.raise(Errors.AwaitInUsingBinding, { - at: this.state.startLoc - }); - } - const id = this.parseBindingAtom(); - this.checkLVal(id, { - in: { - type: "VariableDeclarator" - }, - binding: kind === "var" ? BIND_VAR : BIND_LEXICAL - }); - decl.id = id; - } - parseAsyncFunctionExpression(node) { - return this.parseFunction(node, ParseFunctionFlag.Async); - } - parseFunction(node, flags = ParseFunctionFlag.Expression) { - const hangingDeclaration = flags & ParseFunctionFlag.HangingDeclaration; - const isDeclaration = !!(flags & ParseFunctionFlag.Declaration); - const requireId = isDeclaration && !(flags & ParseFunctionFlag.NullableId); - const isAsync = !!(flags & ParseFunctionFlag.Async); - this.initFunction(node, isAsync); - if (this.match(55)) { - if (hangingDeclaration) { - this.raise(Errors.GeneratorInSingleStatementContext, { - at: this.state.startLoc - }); - } - this.next(); - node.generator = true; - } - if (isDeclaration) { - node.id = this.parseFunctionId(requireId); - } - const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; - this.state.maybeInArrowParameters = false; - this.scope.enter(SCOPE_FUNCTION); - this.prodParam.enter(functionFlags(isAsync, node.generator)); - if (!isDeclaration) { - node.id = this.parseFunctionId(); - } - this.parseFunctionParams(node, false); - this.withSmartMixTopicForbiddingContext(() => { - this.parseFunctionBodyAndFinish(node, isDeclaration ? "FunctionDeclaration" : "FunctionExpression"); - }); - this.prodParam.exit(); - this.scope.exit(); - if (isDeclaration && !hangingDeclaration) { - this.registerFunctionStatementId(node); - } - this.state.maybeInArrowParameters = oldMaybeInArrowParameters; - return node; - } - parseFunctionId(requireId) { - return requireId || tokenIsIdentifier(this.state.type) ? this.parseIdentifier() : null; - } - parseFunctionParams(node, allowModifiers) { - this.expect(10); - this.expressionScope.enter(newParameterDeclarationScope()); - node.params = this.parseBindingList(11, 41, false, allowModifiers); - this.expressionScope.exit(); - } - registerFunctionStatementId(node) { - if (!node.id) return; - this.scope.declareName(node.id.name, this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION, node.id.loc.start); - } - parseClass(node, isStatement, optionalId) { - this.next(); - const oldStrict = this.state.strict; - this.state.strict = true; - this.parseClassId(node, isStatement, optionalId); - this.parseClassSuper(node); - node.body = this.parseClassBody(!!node.superClass, oldStrict); - return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression"); - } - isClassProperty() { - return this.match(29) || this.match(13) || this.match(8); - } - isClassMethod() { - return this.match(10); - } - isNonstaticConstructor(method) { - return !method.computed && !method.static && (method.key.name === "constructor" || method.key.value === "constructor"); - } - parseClassBody(hadSuperClass, oldStrict) { - this.classScope.enter(); - const state = { - hadConstructor: false, - hadSuperClass - }; - let decorators = []; - const classBody = this.startNode(); - classBody.body = []; - this.expect(5); - this.withSmartMixTopicForbiddingContext(() => { - while (!this.match(8)) { - if (this.eat(13)) { - if (decorators.length > 0) { - throw this.raise(Errors.DecoratorSemicolon, { - at: this.state.lastTokEndLoc - }); - } - continue; - } - if (this.match(26)) { - decorators.push(this.parseDecorator()); - continue; - } - const member = this.startNode(); - if (decorators.length) { - member.decorators = decorators; - this.resetStartLocationFromNode(member, decorators[0]); - decorators = []; - } - this.parseClassMember(classBody, member, state); - if (member.kind === "constructor" && member.decorators && member.decorators.length > 0) { - this.raise(Errors.DecoratorConstructor, { - at: member - }); - } - } - }); - this.state.strict = oldStrict; - this.next(); - if (decorators.length) { - throw this.raise(Errors.TrailingDecorator, { - at: this.state.startLoc - }); - } - this.classScope.exit(); - return this.finishNode(classBody, "ClassBody"); - } - parseClassMemberFromModifier(classBody, member) { - const key = this.parseIdentifier(true); - if (this.isClassMethod()) { - const method = member; - method.kind = "method"; - method.computed = false; - method.key = key; - method.static = false; - this.pushClassMethod(classBody, method, false, false, false, false); - return true; - } else if (this.isClassProperty()) { - const prop = member; - prop.computed = false; - prop.key = key; - prop.static = false; - classBody.body.push(this.parseClassProperty(prop)); - return true; - } - this.resetPreviousNodeTrailingComments(key); - return false; - } - parseClassMember(classBody, member, state) { - const isStatic = this.isContextual(104); - if (isStatic) { - if (this.parseClassMemberFromModifier(classBody, member)) { - return; - } - if (this.eat(5)) { - this.parseClassStaticBlock(classBody, member); - return; - } - } - this.parseClassMemberWithIsStatic(classBody, member, state, isStatic); - } - parseClassMemberWithIsStatic(classBody, member, state, isStatic) { - const publicMethod = member; - const privateMethod = member; - const publicProp = member; - const privateProp = member; - const accessorProp = member; - const method = publicMethod; - const publicMember = publicMethod; - member.static = isStatic; - this.parsePropertyNamePrefixOperator(member); - if (this.eat(55)) { - method.kind = "method"; - const isPrivateName = this.match(136); - this.parseClassElementName(method); - if (isPrivateName) { - this.pushClassPrivateMethod(classBody, privateMethod, true, false); - return; - } - if (this.isNonstaticConstructor(publicMethod)) { - this.raise(Errors.ConstructorIsGenerator, { - at: publicMethod.key - }); - } - this.pushClassMethod(classBody, publicMethod, true, false, false, false); - return; - } - const isContextual = tokenIsIdentifier(this.state.type) && !this.state.containsEsc; - const isPrivate = this.match(136); - const key = this.parseClassElementName(member); - const maybeQuestionTokenStartLoc = this.state.startLoc; - this.parsePostMemberNameModifiers(publicMember); - if (this.isClassMethod()) { - method.kind = "method"; - if (isPrivate) { - this.pushClassPrivateMethod(classBody, privateMethod, false, false); - return; - } - const isConstructor = this.isNonstaticConstructor(publicMethod); - let allowsDirectSuper = false; - if (isConstructor) { - publicMethod.kind = "constructor"; - if (state.hadConstructor && !this.hasPlugin("typescript")) { - this.raise(Errors.DuplicateConstructor, { - at: key - }); - } - if (isConstructor && this.hasPlugin("typescript") && member.override) { - this.raise(Errors.OverrideOnConstructor, { - at: key - }); - } - state.hadConstructor = true; - allowsDirectSuper = state.hadSuperClass; - } - this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper); - } else if (this.isClassProperty()) { - if (isPrivate) { - this.pushClassPrivateProperty(classBody, privateProp); - } else { - this.pushClassProperty(classBody, publicProp); - } - } else if (isContextual && key.name === "async" && !this.isLineTerminator()) { - this.resetPreviousNodeTrailingComments(key); - const isGenerator = this.eat(55); - if (publicMember.optional) { - this.unexpected(maybeQuestionTokenStartLoc); - } - method.kind = "method"; - const isPrivate = this.match(136); - this.parseClassElementName(method); - this.parsePostMemberNameModifiers(publicMember); - if (isPrivate) { - this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true); - } else { - if (this.isNonstaticConstructor(publicMethod)) { - this.raise(Errors.ConstructorIsAsync, { - at: publicMethod.key - }); - } - this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false); - } - } else if (isContextual && (key.name === "get" || key.name === "set") && !(this.match(55) && this.isLineTerminator())) { - this.resetPreviousNodeTrailingComments(key); - method.kind = key.name; - const isPrivate = this.match(136); - this.parseClassElementName(publicMethod); - if (isPrivate) { - this.pushClassPrivateMethod(classBody, privateMethod, false, false); - } else { - if (this.isNonstaticConstructor(publicMethod)) { - this.raise(Errors.ConstructorIsAccessor, { - at: publicMethod.key - }); - } - this.pushClassMethod(classBody, publicMethod, false, false, false, false); - } - this.checkGetterSetterParams(publicMethod); - } else if (isContextual && key.name === "accessor" && !this.isLineTerminator()) { - this.expectPlugin("decoratorAutoAccessors"); - this.resetPreviousNodeTrailingComments(key); - const isPrivate = this.match(136); - this.parseClassElementName(publicProp); - this.pushClassAccessorProperty(classBody, accessorProp, isPrivate); - } else if (this.isLineTerminator()) { - if (isPrivate) { - this.pushClassPrivateProperty(classBody, privateProp); - } else { - this.pushClassProperty(classBody, publicProp); - } - } else { - this.unexpected(); - } - } - parseClassElementName(member) { - const { - type, - value - } = this.state; - if ((type === 130 || type === 131) && member.static && value === "prototype") { - this.raise(Errors.StaticPrototype, { - at: this.state.startLoc - }); - } - if (type === 136) { - if (value === "constructor") { - this.raise(Errors.ConstructorClassPrivateField, { - at: this.state.startLoc - }); - } - const key = this.parsePrivateName(); - member.key = key; - return key; - } - return this.parsePropertyName(member); - } - parseClassStaticBlock(classBody, member) { - var _member$decorators; - this.scope.enter(SCOPE_CLASS | SCOPE_STATIC_BLOCK | SCOPE_SUPER); - const oldLabels = this.state.labels; - this.state.labels = []; - this.prodParam.enter(PARAM); - const body = member.body = []; - this.parseBlockOrModuleBlockBody(body, undefined, false, 8); - this.prodParam.exit(); - this.scope.exit(); - this.state.labels = oldLabels; - classBody.body.push(this.finishNode(member, "StaticBlock")); - if ((_member$decorators = member.decorators) != null && _member$decorators.length) { - this.raise(Errors.DecoratorStaticBlock, { - at: member - }); - } - } - pushClassProperty(classBody, prop) { - if (!prop.computed && (prop.key.name === "constructor" || prop.key.value === "constructor")) { - this.raise(Errors.ConstructorClassField, { - at: prop.key - }); - } - classBody.body.push(this.parseClassProperty(prop)); - } - pushClassPrivateProperty(classBody, prop) { - const node = this.parseClassPrivateProperty(prop); - classBody.body.push(node); - this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), CLASS_ELEMENT_OTHER, node.key.loc.start); - } - pushClassAccessorProperty(classBody, prop, isPrivate) { - if (!isPrivate && !prop.computed) { - const key = prop.key; - if (key.name === "constructor" || key.value === "constructor") { - this.raise(Errors.ConstructorClassField, { - at: key - }); - } - } - const node = this.parseClassAccessorProperty(prop); - classBody.body.push(node); - if (isPrivate) { - this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), CLASS_ELEMENT_OTHER, node.key.loc.start); - } - } - pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { - classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true)); - } - pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { - const node = this.parseMethod(method, isGenerator, isAsync, false, false, "ClassPrivateMethod", true); - classBody.body.push(node); - const kind = node.kind === "get" ? node.static ? CLASS_ELEMENT_STATIC_GETTER : CLASS_ELEMENT_INSTANCE_GETTER : node.kind === "set" ? node.static ? CLASS_ELEMENT_STATIC_SETTER : CLASS_ELEMENT_INSTANCE_SETTER : CLASS_ELEMENT_OTHER; - this.declareClassPrivateMethodInScope(node, kind); - } - declareClassPrivateMethodInScope(node, kind) { - this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), kind, node.key.loc.start); - } - parsePostMemberNameModifiers(methodOrProp) {} - parseClassPrivateProperty(node) { - this.parseInitializer(node); - this.semicolon(); - return this.finishNode(node, "ClassPrivateProperty"); - } - parseClassProperty(node) { - this.parseInitializer(node); - this.semicolon(); - return this.finishNode(node, "ClassProperty"); - } - parseClassAccessorProperty(node) { - this.parseInitializer(node); - this.semicolon(); - return this.finishNode(node, "ClassAccessorProperty"); - } - parseInitializer(node) { - this.scope.enter(SCOPE_CLASS | SCOPE_SUPER); - this.expressionScope.enter(newExpressionScope()); - this.prodParam.enter(PARAM); - node.value = this.eat(29) ? this.parseMaybeAssignAllowIn() : null; - this.expressionScope.exit(); - this.prodParam.exit(); - this.scope.exit(); - } - parseClassId(node, isStatement, optionalId, bindingType = BIND_CLASS) { - if (tokenIsIdentifier(this.state.type)) { - node.id = this.parseIdentifier(); - if (isStatement) { - this.declareNameFromIdentifier(node.id, bindingType); - } - } else { - if (optionalId || !isStatement) { - node.id = null; - } else { - throw this.raise(Errors.MissingClassName, { - at: this.state.startLoc - }); - } - } - } - parseClassSuper(node) { - node.superClass = this.eat(81) ? this.parseExprSubscripts() : null; - } - parseExport(node, decorators) { - const hasDefault = this.maybeParseExportDefaultSpecifier(node); - const parseAfterDefault = !hasDefault || this.eat(12); - const hasStar = parseAfterDefault && this.eatExportStar(node); - const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node); - const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(12)); - const isFromRequired = hasDefault || hasStar; - if (hasStar && !hasNamespace) { - if (hasDefault) this.unexpected(); - if (decorators) { - throw this.raise(Errors.UnsupportedDecoratorExport, { - at: node - }); - } - this.parseExportFrom(node, true); - return this.finishNode(node, "ExportAllDeclaration"); - } - const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node); - if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) { - throw this.unexpected(null, 5); - } - if (hasNamespace && parseAfterNamespace) { - throw this.unexpected(null, 97); - } - let hasDeclaration; - if (isFromRequired || hasSpecifiers) { - hasDeclaration = false; - if (decorators) { - throw this.raise(Errors.UnsupportedDecoratorExport, { - at: node - }); - } - this.parseExportFrom(node, isFromRequired); - } else { - hasDeclaration = this.maybeParseExportDeclaration(node); - } - if (isFromRequired || hasSpecifiers || hasDeclaration) { - var _node2$declaration; - const node2 = node; - this.checkExport(node2, true, false, !!node2.source); - if (((_node2$declaration = node2.declaration) == null ? void 0 : _node2$declaration.type) === "ClassDeclaration") { - this.maybeTakeDecorators(decorators, node2.declaration, node2); - } else if (decorators) { - throw this.raise(Errors.UnsupportedDecoratorExport, { - at: node - }); - } - return this.finishNode(node2, "ExportNamedDeclaration"); - } - if (this.eat(65)) { - const node2 = node; - const decl = this.parseExportDefaultExpression(); - node2.declaration = decl; - if (decl.type === "ClassDeclaration") { - this.maybeTakeDecorators(decorators, decl, node2); - } else if (decorators) { - throw this.raise(Errors.UnsupportedDecoratorExport, { - at: node - }); - } - this.checkExport(node2, true, true); - return this.finishNode(node2, "ExportDefaultDeclaration"); - } - throw this.unexpected(null, 5); - } - eatExportStar(node) { - return this.eat(55); - } - maybeParseExportDefaultSpecifier(node) { - if (this.isExportDefaultSpecifier()) { - this.expectPlugin("exportDefaultFrom"); - const specifier = this.startNode(); - specifier.exported = this.parseIdentifier(true); - node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; - return true; - } - return false; - } - maybeParseExportNamespaceSpecifier(node) { - if (this.isContextual(93)) { - if (!node.specifiers) node.specifiers = []; - const specifier = this.startNodeAt(this.state.lastTokStartLoc); - this.next(); - specifier.exported = this.parseModuleExportName(); - node.specifiers.push(this.finishNode(specifier, "ExportNamespaceSpecifier")); - return true; - } - return false; - } - maybeParseExportNamedSpecifiers(node) { - if (this.match(5)) { - if (!node.specifiers) node.specifiers = []; - const isTypeExport = node.exportKind === "type"; - node.specifiers.push(...this.parseExportSpecifiers(isTypeExport)); - node.source = null; - node.declaration = null; - if (this.hasPlugin("importAssertions")) { - node.assertions = []; - } - return true; - } - return false; - } - maybeParseExportDeclaration(node) { - if (this.shouldParseExportDeclaration()) { - node.specifiers = []; - node.source = null; - if (this.hasPlugin("importAssertions")) { - node.assertions = []; - } - node.declaration = this.parseExportDeclaration(node); - return true; - } - return false; - } - isAsyncFunction() { - if (!this.isContextual(95)) return false; - const next = this.nextTokenStart(); - return !lineBreak.test(this.input.slice(this.state.pos, next)) && this.isUnparsedContextual(next, "function"); - } - parseExportDefaultExpression() { - const expr = this.startNode(); - if (this.match(68)) { - this.next(); - return this.parseFunction(expr, ParseFunctionFlag.Declaration | ParseFunctionFlag.NullableId); - } else if (this.isAsyncFunction()) { - this.next(); - this.next(); - return this.parseFunction(expr, ParseFunctionFlag.Declaration | ParseFunctionFlag.NullableId | ParseFunctionFlag.Async); - } - if (this.match(80)) { - return this.parseClass(expr, true, true); - } - if (this.match(26)) { - if (this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport")) { - this.raise(Errors.DecoratorBeforeExport, { - at: this.state.startLoc - }); - } - return this.parseClass(this.maybeTakeDecorators(this.parseDecorators(false), this.startNode()), true, true); - } - if (this.match(75) || this.match(74) || this.isLet()) { - throw this.raise(Errors.UnsupportedDefaultExport, { - at: this.state.startLoc - }); - } - const res = this.parseMaybeAssignAllowIn(); - this.semicolon(); - return res; - } - parseExportDeclaration(node) { - if (this.match(80)) { - const node = this.parseClass(this.startNode(), true, false); - return node; - } - return this.parseStatementListItem(); - } - isExportDefaultSpecifier() { - const { - type - } = this.state; - if (tokenIsIdentifier(type)) { - if (type === 95 && !this.state.containsEsc || type === 99) { - return false; - } - if ((type === 128 || type === 127) && !this.state.containsEsc) { - const { - type: nextType - } = this.lookahead(); - if (tokenIsIdentifier(nextType) && nextType !== 97 || nextType === 5) { - this.expectOnePlugin(["flow", "typescript"]); - return false; - } - } - } else if (!this.match(65)) { - return false; - } - const next = this.nextTokenStart(); - const hasFrom = this.isUnparsedContextual(next, "from"); - if (this.input.charCodeAt(next) === 44 || tokenIsIdentifier(this.state.type) && hasFrom) { - return true; - } - if (this.match(65) && hasFrom) { - const nextAfterFrom = this.input.charCodeAt(this.nextTokenStartSince(next + 4)); - return nextAfterFrom === 34 || nextAfterFrom === 39; - } - return false; - } - parseExportFrom(node, expect) { - if (this.eatContextual(97)) { - node.source = this.parseImportSource(); - this.checkExport(node); - const assertions = this.maybeParseImportAssertions(); - if (assertions) { - node.assertions = assertions; - this.checkJSONModuleImport(node); - } - } else if (expect) { - this.unexpected(); - } - this.semicolon(); - } - shouldParseExportDeclaration() { - const { - type - } = this.state; - if (type === 26) { - this.expectOnePlugin(["decorators", "decorators-legacy"]); - if (this.hasPlugin("decorators")) { - if (this.getPluginOption("decorators", "decoratorsBeforeExport")) { - throw this.raise(Errors.DecoratorBeforeExport, { - at: this.state.startLoc - }); - } - return true; - } - } - return type === 74 || type === 75 || type === 68 || type === 80 || this.isLet() || this.isAsyncFunction(); - } - checkExport(node, checkNames, isDefault, isFrom) { - if (checkNames) { - if (isDefault) { - this.checkDuplicateExports(node, "default"); - if (this.hasPlugin("exportDefaultFrom")) { - var _declaration$extra; - const declaration = node.declaration; - if (declaration.type === "Identifier" && declaration.name === "from" && declaration.end - declaration.start === 4 && !((_declaration$extra = declaration.extra) != null && _declaration$extra.parenthesized)) { - this.raise(Errors.ExportDefaultFromAsIdentifier, { - at: declaration - }); - } - } - } else if (node.specifiers && node.specifiers.length) { - for (const specifier of node.specifiers) { - const { - exported - } = specifier; - const exportName = exported.type === "Identifier" ? exported.name : exported.value; - this.checkDuplicateExports(specifier, exportName); - if (!isFrom && specifier.local) { - const { - local - } = specifier; - if (local.type !== "Identifier") { - this.raise(Errors.ExportBindingIsString, { - at: specifier, - localName: local.value, - exportName - }); - } else { - this.checkReservedWord(local.name, local.loc.start, true, false); - this.scope.checkLocalExport(local); - } - } - } - } else if (node.declaration) { - if (node.declaration.type === "FunctionDeclaration" || node.declaration.type === "ClassDeclaration") { - const id = node.declaration.id; - if (!id) throw new Error("Assertion failure"); - this.checkDuplicateExports(node, id.name); - } else if (node.declaration.type === "VariableDeclaration") { - for (const declaration of node.declaration.declarations) { - this.checkDeclaration(declaration.id); - } - } - } - } - } - checkDeclaration(node) { - if (node.type === "Identifier") { - this.checkDuplicateExports(node, node.name); - } else if (node.type === "ObjectPattern") { - for (const prop of node.properties) { - this.checkDeclaration(prop); - } - } else if (node.type === "ArrayPattern") { - for (const elem of node.elements) { - if (elem) { - this.checkDeclaration(elem); - } - } - } else if (node.type === "ObjectProperty") { - this.checkDeclaration(node.value); - } else if (node.type === "RestElement") { - this.checkDeclaration(node.argument); - } else if (node.type === "AssignmentPattern") { - this.checkDeclaration(node.left); - } - } - checkDuplicateExports(node, exportName) { - if (this.exportedIdentifiers.has(exportName)) { - if (exportName === "default") { - this.raise(Errors.DuplicateDefaultExport, { - at: node - }); - } else { - this.raise(Errors.DuplicateExport, { - at: node, - exportName - }); - } - } - this.exportedIdentifiers.add(exportName); - } - parseExportSpecifiers(isInTypeExport) { - const nodes = []; - let first = true; - this.expect(5); - while (!this.eat(8)) { - if (first) { - first = false; - } else { - this.expect(12); - if (this.eat(8)) break; - } - const isMaybeTypeOnly = this.isContextual(128); - const isString = this.match(131); - const node = this.startNode(); - node.local = this.parseModuleExportName(); - nodes.push(this.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly)); - } - return nodes; - } - parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) { - if (this.eatContextual(93)) { - node.exported = this.parseModuleExportName(); - } else if (isString) { - node.exported = cloneStringLiteral(node.local); - } else if (!node.exported) { - node.exported = cloneIdentifier(node.local); - } - return this.finishNode(node, "ExportSpecifier"); - } - parseModuleExportName() { - if (this.match(131)) { - const result = this.parseStringLiteral(this.state.value); - const surrogate = result.value.match(loneSurrogate); - if (surrogate) { - this.raise(Errors.ModuleExportNameHasLoneSurrogate, { - at: result, - surrogateCharCode: surrogate[0].charCodeAt(0) - }); - } - return result; - } - return this.parseIdentifier(true); - } - isJSONModuleImport(node) { - if (node.assertions != null) { - return node.assertions.some(({ - key, - value - }) => { - return value.value === "json" && (key.type === "Identifier" ? key.name === "type" : key.value === "type"); - }); - } - return false; - } - checkImportReflection(node) { - if (node.module) { - var _node$assertions; - if (node.specifiers.length !== 1 || node.specifiers[0].type !== "ImportDefaultSpecifier") { - this.raise(Errors.ImportReflectionNotBinding, { - at: node.specifiers[0].loc.start - }); - } - if (((_node$assertions = node.assertions) == null ? void 0 : _node$assertions.length) > 0) { - this.raise(Errors.ImportReflectionHasAssertion, { - at: node.specifiers[0].loc.start - }); - } - } - } - checkJSONModuleImport(node) { - if (this.isJSONModuleImport(node) && node.type !== "ExportAllDeclaration") { - const { - specifiers - } = node; - if (specifiers != null) { - const nonDefaultNamedSpecifier = specifiers.find(specifier => { - let imported; - if (specifier.type === "ExportSpecifier") { - imported = specifier.local; - } else if (specifier.type === "ImportSpecifier") { - imported = specifier.imported; - } - if (imported !== undefined) { - return imported.type === "Identifier" ? imported.name !== "default" : imported.value !== "default"; - } - }); - if (nonDefaultNamedSpecifier !== undefined) { - this.raise(Errors.ImportJSONBindingNotDefault, { - at: nonDefaultNamedSpecifier.loc.start - }); - } - } - } - } - parseMaybeImportReflection(node) { - let isImportReflection = false; - if (this.isContextual(125)) { - const lookahead = this.lookahead(); - const nextType = lookahead.type; - if (tokenIsIdentifier(nextType)) { - if (nextType !== 97) { - isImportReflection = true; - } else { - const nextNextTokenFirstChar = this.input.charCodeAt(this.nextTokenStartSince(lookahead.end)); - if (nextNextTokenFirstChar === 102) { - isImportReflection = true; - } - } - } else if (nextType !== 12) { - isImportReflection = true; - } - } - if (isImportReflection) { - this.expectPlugin("importReflection"); - this.next(); - node.module = true; - } else if (this.hasPlugin("importReflection")) { - node.module = false; - } - } - parseImport(node) { - node.specifiers = []; - if (!this.match(131)) { - this.parseMaybeImportReflection(node); - const hasDefault = this.maybeParseDefaultImportSpecifier(node); - const parseNext = !hasDefault || this.eat(12); - const hasStar = parseNext && this.maybeParseStarImportSpecifier(node); - if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node); - this.expectContextual(97); - } - node.source = this.parseImportSource(); - const assertions = this.maybeParseImportAssertions(); - if (assertions) { - node.assertions = assertions; - } else { - const attributes = this.maybeParseModuleAttributes(); - if (attributes) { - node.attributes = attributes; - } - } - this.checkImportReflection(node); - this.checkJSONModuleImport(node); - this.semicolon(); - return this.finishNode(node, "ImportDeclaration"); - } - parseImportSource() { - if (!this.match(131)) this.unexpected(); - return this.parseExprAtom(); - } - shouldParseDefaultImport(node) { - return tokenIsIdentifier(this.state.type); - } - parseImportSpecifierLocal(node, specifier, type) { - specifier.local = this.parseIdentifier(); - node.specifiers.push(this.finishImportSpecifier(specifier, type)); - } - finishImportSpecifier(specifier, type, bindingType = BIND_LEXICAL) { - this.checkLVal(specifier.local, { - in: { - type - }, - binding: bindingType - }); - return this.finishNode(specifier, type); - } - parseAssertEntries() { - const attrs = []; - const attrNames = new Set(); - do { - if (this.match(8)) { - break; - } - const node = this.startNode(); - const keyName = this.state.value; - if (attrNames.has(keyName)) { - this.raise(Errors.ModuleAttributesWithDuplicateKeys, { - at: this.state.startLoc, - key: keyName - }); - } - attrNames.add(keyName); - if (this.match(131)) { - node.key = this.parseStringLiteral(keyName); - } else { - node.key = this.parseIdentifier(true); - } - this.expect(14); - if (!this.match(131)) { - throw this.raise(Errors.ModuleAttributeInvalidValue, { - at: this.state.startLoc - }); - } - node.value = this.parseStringLiteral(this.state.value); - attrs.push(this.finishNode(node, "ImportAttribute")); - } while (this.eat(12)); - return attrs; - } - maybeParseModuleAttributes() { - if (this.match(76) && !this.hasPrecedingLineBreak()) { - this.expectPlugin("moduleAttributes"); - this.next(); - } else { - if (this.hasPlugin("moduleAttributes")) return []; - return null; - } - const attrs = []; - const attributes = new Set(); - do { - const node = this.startNode(); - node.key = this.parseIdentifier(true); - if (node.key.name !== "type") { - this.raise(Errors.ModuleAttributeDifferentFromType, { - at: node.key - }); - } - if (attributes.has(node.key.name)) { - this.raise(Errors.ModuleAttributesWithDuplicateKeys, { - at: node.key, - key: node.key.name - }); - } - attributes.add(node.key.name); - this.expect(14); - if (!this.match(131)) { - throw this.raise(Errors.ModuleAttributeInvalidValue, { - at: this.state.startLoc - }); - } - node.value = this.parseStringLiteral(this.state.value); - this.finishNode(node, "ImportAttribute"); - attrs.push(node); - } while (this.eat(12)); - return attrs; - } - maybeParseImportAssertions() { - if (this.isContextual(94) && !this.hasPrecedingLineBreak()) { - this.expectPlugin("importAssertions"); - this.next(); - } else { - if (this.hasPlugin("importAssertions")) return []; - return null; - } - this.eat(5); - const attrs = this.parseAssertEntries(); - this.eat(8); - return attrs; - } - maybeParseDefaultImportSpecifier(node) { - if (this.shouldParseDefaultImport(node)) { - this.parseImportSpecifierLocal(node, this.startNode(), "ImportDefaultSpecifier"); - return true; - } - return false; - } - maybeParseStarImportSpecifier(node) { - if (this.match(55)) { - const specifier = this.startNode(); - this.next(); - this.expectContextual(93); - this.parseImportSpecifierLocal(node, specifier, "ImportNamespaceSpecifier"); - return true; - } - return false; - } - parseNamedImportSpecifiers(node) { - let first = true; - this.expect(5); - while (!this.eat(8)) { - if (first) { - first = false; - } else { - if (this.eat(14)) { - throw this.raise(Errors.DestructureNamedImport, { - at: this.state.startLoc - }); - } - this.expect(12); - if (this.eat(8)) break; - } - const specifier = this.startNode(); - const importedIsString = this.match(131); - const isMaybeTypeOnly = this.isContextual(128); - specifier.imported = this.parseModuleExportName(); - const importSpecifier = this.parseImportSpecifier(specifier, importedIsString, node.importKind === "type" || node.importKind === "typeof", isMaybeTypeOnly, undefined); - node.specifiers.push(importSpecifier); - } - } - parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { - if (this.eatContextual(93)) { - specifier.local = this.parseIdentifier(); - } else { - const { - imported - } = specifier; - if (importedIsString) { - throw this.raise(Errors.ImportBindingIsString, { - at: specifier, - importName: imported.value - }); - } - this.checkReservedWord(imported.name, specifier.loc.start, true, true); - if (!specifier.local) { - specifier.local = cloneIdentifier(imported); - } - } - return this.finishImportSpecifier(specifier, "ImportSpecifier", bindingType); - } - isThisParam(param) { - return param.type === "Identifier" && param.name === "this"; - } -} - -class Parser extends StatementParser { - constructor(options, input) { - options = getOptions(options); - super(options, input); - this.options = options; - this.initializeScopes(); - this.plugins = pluginsMap(this.options.plugins); - this.filename = options.sourceFilename; - } - getScopeHandler() { - return ScopeHandler; - } - parse() { - this.enterInitialScopes(); - const file = this.startNode(); - const program = this.startNode(); - this.nextToken(); - file.errors = null; - this.parseTopLevel(file, program); - file.errors = this.state.errors; - return file; - } -} -function pluginsMap(plugins) { - const pluginMap = new Map(); - for (const plugin of plugins) { - const [name, options] = Array.isArray(plugin) ? plugin : [plugin, {}]; - if (!pluginMap.has(name)) pluginMap.set(name, options || {}); - } - return pluginMap; -} - -function parse(input, options) { - var _options; - if (((_options = options) == null ? void 0 : _options.sourceType) === "unambiguous") { - options = Object.assign({}, options); - try { - options.sourceType = "module"; - const parser = getParser(options, input); - const ast = parser.parse(); - if (parser.sawUnambiguousESM) { - return ast; - } - if (parser.ambiguousScriptDifferentAst) { - try { - options.sourceType = "script"; - return getParser(options, input).parse(); - } catch (_unused) {} - } else { - ast.program.sourceType = "script"; - } - return ast; - } catch (moduleError) { - try { - options.sourceType = "script"; - return getParser(options, input).parse(); - } catch (_unused2) {} - throw moduleError; - } - } else { - return getParser(options, input).parse(); - } -} -function parseExpression(input, options) { - const parser = getParser(options, input); - if (parser.options.strictMode) { - parser.state.strict = true; - } - return parser.getExpression(); -} -function generateExportedTokenTypes(internalTokenTypes) { - const tokenTypes = {}; - for (const typeName of Object.keys(internalTokenTypes)) { - tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]); - } - return tokenTypes; -} -const tokTypes = generateExportedTokenTypes(tt); -function getParser(options, input) { - let cls = Parser; - if (options != null && options.plugins) { - validatePlugins(options.plugins); - cls = getParserClass(options.plugins); - } - return new cls(options, input); -} -const parserClassCache = {}; -function getParserClass(pluginsFromOptions) { - const pluginList = mixinPluginNames.filter(name => hasPlugin(pluginsFromOptions, name)); - const key = pluginList.join("/"); - let cls = parserClassCache[key]; - if (!cls) { - cls = Parser; - for (const plugin of pluginList) { - cls = mixinPlugins[plugin](cls); - } - parserClassCache[key] = cls; - } - return cls; -} - -exports.parse = parse; -exports.parseExpression = parseExpression; -exports.tokTypes = tokTypes; -//# sourceMappingURL=index.js.map diff --git a/frontend/node_modules/@babel/parser/lib/index.js.map b/frontend/node_modules/@babel/parser/lib/index.js.map deleted file mode 100644 index e094dc968..000000000 --- a/frontend/node_modules/@babel/parser/lib/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../src/util/location.ts","../src/parse-error/credentials.ts","../src/parse-error/module-errors.ts","../src/parse-error/to-node-description.ts","../src/parse-error/standard-errors.ts","../src/parse-error/strict-mode-errors.ts","../src/parse-error/pipeline-operator-errors.ts","../src/parse-error.ts","../src/plugins/estree.ts","../src/tokenizer/context.ts","../src/tokenizer/types.ts","../../babel-helper-validator-identifier/src/identifier.ts","../../babel-helper-validator-identifier/src/keyword.ts","../src/util/identifier.ts","../src/util/scopeflags.ts","../src/util/scope.ts","../src/plugins/flow/scope.ts","../src/parser/base.ts","../src/parser/comments.ts","../src/util/whitespace.ts","../src/tokenizer/state.ts","../../babel-helper-string-parser/src/index.ts","../src/tokenizer/index.ts","../src/util/class-scope.ts","../src/util/expression-scope.ts","../src/util/production-parameter.ts","../src/parser/util.ts","../src/parser/node.ts","../src/plugins/flow/index.ts","../src/plugins/jsx/xhtml.ts","../src/plugins/jsx/index.ts","../src/plugins/typescript/scope.ts","../src/plugins/typescript/index.ts","../src/plugins/placeholders.ts","../src/plugins/v8intrinsic.ts","../src/plugin-utils.ts","../src/options.ts","../src/parser/lval.ts","../src/parser/expression.ts","../src/parser/statement.ts","../src/parser/index.ts","../src/index.ts"],"sourcesContent":["export type Pos = {\n start: number;\n};\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nexport class Position {\n line: number;\n column: number;\n index: number;\n\n constructor(line: number, col: number, index: number) {\n this.line = line;\n this.column = col;\n this.index = index;\n }\n}\n\nexport class SourceLocation {\n start: Position;\n end: Position;\n filename: string;\n identifierName: string | undefined | null;\n\n constructor(start: Position, end?: Position) {\n this.start = start;\n // (may start as null, but initialized later)\n this.end = end;\n }\n}\n\n/**\n * creates a new position with a non-zero column offset from the given position.\n * This function should be only be used when we create AST node out of the token\n * boundaries, such as TemplateElement ends before tt.templateNonTail. This\n * function does not skip whitespaces.\n */\nexport function createPositionWithColumnOffset(\n position: Position,\n columnOffset: number,\n) {\n const { line, column, index } = position;\n return new Position(line, column + columnOffset, index + columnOffset);\n}\n","export const enum ParseErrorCode {\n SyntaxError = \"BABEL_PARSER_SYNTAX_ERROR\",\n SourceTypeModuleError = \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\",\n}\n\nexport type SyntaxPlugin =\n | \"flow\"\n | \"typescript\"\n | \"jsx\"\n | \"pipelineOperator\"\n | \"placeholders\";\n\nexport type ToMessage = (self: ErrorDetails) => string;\n\nexport type ParseErrorCredentials = {\n code: ParseErrorCode;\n reasonCode: string;\n syntaxPlugin?: SyntaxPlugin;\n toMessage: ToMessage;\n};\n\nconst reflect = (keys: string[], last = keys.length - 1) => ({\n get(this: unknown): unknown {\n return keys.reduce(\n (object, key) =>\n // @ts-expect-error key should index object\n object[key],\n this,\n );\n },\n set(this: unknown, value: unknown) {\n keys.reduce(\n // @ts-expect-error key should index item\n (item, key, i) => (i === last ? (item[key] = value) : item[key]),\n this,\n );\n },\n});\n\nconst instantiate = (\n constructor: new () => T,\n properties: any,\n descriptors: any,\n) =>\n Object.keys(descriptors)\n .map(key => [key, descriptors[key]])\n .filter(([, descriptor]) => !!descriptor)\n .map(([key, descriptor]) => [\n key,\n typeof descriptor === \"function\"\n ? { value: descriptor, enumerable: false }\n : typeof descriptor.reflect === \"string\"\n ? { ...descriptor, ...reflect(descriptor.reflect.split(\".\")) }\n : descriptor,\n ])\n .reduce(\n (instance, [key, descriptor]) =>\n Object.defineProperty(instance, key, {\n configurable: true,\n ...descriptor,\n }),\n Object.assign(new constructor(), properties),\n );\n\nexport { instantiate };\n","import { ParseErrorCode } from \"../parse-error\";\n\nexport default {\n ImportMetaOutsideModule: {\n message: `import.meta may appear only with 'sourceType: \"module\"'`,\n code: ParseErrorCode.SourceTypeModuleError,\n },\n ImportOutsideModule: {\n message: `'import' and 'export' may appear only with 'sourceType: \"module\"'`,\n code: ParseErrorCode.SourceTypeModuleError,\n },\n};\n","const NodeDescriptions = {\n ArrayPattern: \"array destructuring pattern\",\n AssignmentExpression: \"assignment expression\",\n AssignmentPattern: \"assignment expression\",\n ArrowFunctionExpression: \"arrow function expression\",\n ConditionalExpression: \"conditional expression\",\n CatchClause: \"catch clause\",\n ForOfStatement: \"for-of statement\",\n ForInStatement: \"for-in statement\",\n ForStatement: \"for-loop\",\n FormalParameters: \"function parameter list\",\n Identifier: \"identifier\",\n ImportSpecifier: \"import specifier\",\n ImportDefaultSpecifier: \"import default specifier\",\n ImportNamespaceSpecifier: \"import namespace specifier\",\n ObjectPattern: \"object destructuring pattern\",\n ParenthesizedExpression: \"parenthesized expression\",\n RestElement: \"rest element\",\n UpdateExpression: {\n true: \"prefix operation\",\n false: \"postfix operation\",\n },\n VariableDeclarator: \"variable declaration\",\n YieldExpression: \"yield expression\",\n};\n\ntype NodeTypesWithDescriptions = keyof Omit<\n typeof NodeDescriptions,\n \"UpdateExpression\"\n>;\n\ntype NodeWithDescription =\n | {\n type: \"UpdateExpression\";\n prefix: boolean;\n }\n | {\n type: NodeTypesWithDescriptions;\n };\n\n// @ts-expect-error prefix is specified only when type is UpdateExpression\n// eslint-disable-next-line no-confusing-arrow\nconst toNodeDescription = ({ type, prefix }: NodeWithDescription) =>\n type === \"UpdateExpression\"\n ? NodeDescriptions.UpdateExpression[String(prefix) as \"true\" | \"false\"]\n : NodeDescriptions[type];\n\nexport default toNodeDescription;\n","import toNodeDescription from \"./to-node-description\";\n\nexport type LValAncestor =\n | { type: \"UpdateExpression\"; prefix: boolean }\n | {\n type:\n | \"ArrayPattern\"\n | \"AssignmentExpression\"\n | \"CatchClause\"\n | \"ForOfStatement\"\n | \"FormalParameters\"\n | \"ForInStatement\"\n | \"ForStatement\"\n | \"ImportSpecifier\"\n | \"ImportNamespaceSpecifier\"\n | \"ImportDefaultSpecifier\"\n | \"ParenthesizedExpression\"\n | \"ObjectPattern\"\n | \"RestElement\"\n | \"VariableDeclarator\";\n };\n\nexport default {\n AccessorIsGenerator: ({ kind }: { kind: \"get\" | \"set\" }) =>\n `A ${kind}ter cannot be a generator.`,\n ArgumentsInClass:\n \"'arguments' is only allowed in functions and class methods.\",\n AsyncFunctionInSingleStatementContext:\n \"Async functions can only be declared at the top level or inside a block.\",\n AwaitBindingIdentifier:\n \"Can not use 'await' as identifier inside an async function.\",\n AwaitBindingIdentifierInStaticBlock:\n \"Can not use 'await' as identifier inside a static block.\",\n AwaitExpressionFormalParameter:\n \"'await' is not allowed in async function parameters.\",\n AwaitInUsingBinding:\n \"'await' is not allowed to be used as a name in 'using' declarations.\",\n AwaitNotInAsyncContext:\n \"'await' is only allowed within async functions and at the top levels of modules.\",\n AwaitNotInAsyncFunction: \"'await' is only allowed within async functions.\",\n BadGetterArity: \"A 'get' accessor must not have any formal parameters.\",\n BadSetterArity: \"A 'set' accessor must have exactly one formal parameter.\",\n BadSetterRestParameter:\n \"A 'set' accessor function argument must not be a rest parameter.\",\n ConstructorClassField: \"Classes may not have a field named 'constructor'.\",\n ConstructorClassPrivateField:\n \"Classes may not have a private field named '#constructor'.\",\n ConstructorIsAccessor: \"Class constructor may not be an accessor.\",\n ConstructorIsAsync: \"Constructor can't be an async function.\",\n ConstructorIsGenerator: \"Constructor can't be a generator.\",\n DeclarationMissingInitializer: ({\n kind,\n }: {\n kind: \"const\" | \"destructuring\";\n }) => `Missing initializer in ${kind} declaration.`,\n DecoratorArgumentsOutsideParentheses:\n \"Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.\",\n DecoratorBeforeExport:\n \"Decorators must be placed *before* the 'export' keyword. You can set the 'decoratorsBeforeExport' option to false to use the 'export @decorator class {}' syntax.\",\n DecoratorConstructor:\n \"Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?\",\n DecoratorExportClass:\n \"Using the export keyword between a decorator and a class is not allowed. Please use `export @dec class` instead.\",\n DecoratorSemicolon: \"Decorators must not be followed by a semicolon.\",\n DecoratorStaticBlock: \"Decorators can't be used with a static block.\",\n DeletePrivateField: \"Deleting a private field is not allowed.\",\n DestructureNamedImport:\n \"ES2015 named imports do not destructure. Use another statement for destructuring after the import.\",\n DuplicateConstructor: \"Duplicate constructor in the same class.\",\n DuplicateDefaultExport: \"Only one default export allowed per module.\",\n DuplicateExport: ({ exportName }: { exportName: string }) =>\n `\\`${exportName}\\` has already been exported. Exported identifiers must be unique.`,\n DuplicateProto: \"Redefinition of __proto__ property.\",\n DuplicateRegExpFlags: \"Duplicate regular expression flag.\",\n ElementAfterRest: \"Rest element must be last element.\",\n EscapedCharNotAnIdentifier: \"Invalid Unicode escape.\",\n ExportBindingIsString: ({\n localName,\n exportName,\n }: {\n localName: string;\n exportName: string;\n }) =>\n `A string literal cannot be used as an exported binding without \\`from\\`.\\n- Did you mean \\`export { '${localName}' as '${exportName}' } from 'some-module'\\`?`,\n ExportDefaultFromAsIdentifier:\n \"'from' is not allowed as an identifier after 'export default'.\",\n\n ForInOfLoopInitializer: ({\n type,\n }: {\n type: \"ForInStatement\" | \"ForOfStatement\";\n }) =>\n `'${\n type === \"ForInStatement\" ? \"for-in\" : \"for-of\"\n }' loop variable declaration may not have an initializer.`,\n ForInUsing: \"For-in loop may not start with 'using' declaration.\",\n\n ForOfAsync: \"The left-hand side of a for-of loop may not be 'async'.\",\n ForOfLet: \"The left-hand side of a for-of loop may not start with 'let'.\",\n GeneratorInSingleStatementContext:\n \"Generators can only be declared at the top level or inside a block.\",\n\n IllegalBreakContinue: ({\n type,\n }: {\n type: \"BreakStatement\" | \"ContinueStatement\";\n }) => `Unsyntactic ${type === \"BreakStatement\" ? \"break\" : \"continue\"}.`,\n\n IllegalLanguageModeDirective:\n \"Illegal 'use strict' directive in function with non-simple parameter list.\",\n IllegalReturn: \"'return' outside of function.\",\n ImportBindingIsString: ({ importName }: { importName: string }) =>\n `A string literal cannot be used as an imported binding.\\n- Did you mean \\`import { \"${importName}\" as foo }\\`?`,\n ImportCallArgumentTrailingComma:\n \"Trailing comma is disallowed inside import(...) arguments.\",\n ImportCallArity: ({ maxArgumentCount }: { maxArgumentCount: 1 | 2 }) =>\n `\\`import()\\` requires exactly ${\n maxArgumentCount === 1 ? \"one argument\" : \"one or two arguments\"\n }.`,\n ImportCallNotNewExpression: \"Cannot use new with import(...).\",\n ImportCallSpreadArgument: \"`...` is not allowed in `import()`.\",\n ImportJSONBindingNotDefault:\n \"A JSON module can only be imported with `default`.\",\n ImportReflectionHasAssertion: \"`import module x` cannot have assertions.\",\n ImportReflectionNotBinding:\n 'Only `import module x from \"./module\"` is valid.',\n IncompatibleRegExpUVFlags:\n \"The 'u' and 'v' regular expression flags cannot be enabled at the same time.\",\n InvalidBigIntLiteral: \"Invalid BigIntLiteral.\",\n InvalidCodePoint: \"Code point out of bounds.\",\n InvalidCoverInitializedName: \"Invalid shorthand property initializer.\",\n InvalidDecimal: \"Invalid decimal.\",\n InvalidDigit: ({ radix }: { radix: number }) =>\n `Expected number in radix ${radix}.`,\n InvalidEscapeSequence: \"Bad character escape sequence.\",\n InvalidEscapeSequenceTemplate: \"Invalid escape sequence in template.\",\n InvalidEscapedReservedWord: ({ reservedWord }: { reservedWord: string }) =>\n `Escape sequence in keyword ${reservedWord}.`,\n InvalidIdentifier: ({ identifierName }: { identifierName: string }) =>\n `Invalid identifier ${identifierName}.`,\n InvalidLhs: ({ ancestor }: { ancestor: LValAncestor }) =>\n `Invalid left-hand side in ${toNodeDescription(ancestor)}.`,\n InvalidLhsBinding: ({ ancestor }: { ancestor: LValAncestor }) =>\n `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`,\n InvalidNumber: \"Invalid number.\",\n InvalidOrMissingExponent:\n \"Floating-point numbers require a valid exponent after the 'e'.\",\n InvalidOrUnexpectedToken: ({ unexpected }: { unexpected: string }) =>\n `Unexpected character '${unexpected}'.`,\n InvalidParenthesizedAssignment: \"Invalid parenthesized assignment pattern.\",\n InvalidPrivateFieldResolution: ({\n identifierName,\n }: {\n identifierName: string;\n }) => `Private name #${identifierName} is not defined.`,\n InvalidPropertyBindingPattern: \"Binding member expression.\",\n InvalidRecordProperty:\n \"Only properties and spread elements are allowed in record definitions.\",\n InvalidRestAssignmentPattern: \"Invalid rest operator's argument.\",\n LabelRedeclaration: ({ labelName }: { labelName: string }) =>\n `Label '${labelName}' is already declared.`,\n LetInLexicalBinding:\n \"'let' is not allowed to be used as a name in 'let' or 'const' declarations.\",\n LineTerminatorBeforeArrow: \"No line break is allowed before '=>'.\",\n MalformedRegExpFlags: \"Invalid regular expression flag.\",\n MissingClassName: \"A class name is required.\",\n MissingEqInAssignment:\n \"Only '=' operator can be used for specifying default value.\",\n MissingSemicolon: \"Missing semicolon.\",\n MissingPlugin: ({ missingPlugin }: { missingPlugin: [string] }) =>\n `This experimental syntax requires enabling the parser plugin: ${missingPlugin\n .map(name => JSON.stringify(name))\n .join(\", \")}.`,\n // FIXME: Would be nice to make this \"missingPlugins\" instead.\n // Also, seems like we can drop the \"(s)\" from the message and just make it \"s\".\n MissingOneOfPlugins: ({ missingPlugin }: { missingPlugin: string[] }) =>\n `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin\n .map(name => JSON.stringify(name))\n .join(\", \")}.`,\n MissingUnicodeEscape: \"Expecting Unicode escape sequence \\\\uXXXX.\",\n MixingCoalesceWithLogical:\n \"Nullish coalescing operator(??) requires parens when mixing with logical operators.\",\n ModuleAttributeDifferentFromType:\n \"The only accepted module attribute is `type`.\",\n ModuleAttributeInvalidValue:\n \"Only string literals are allowed as module attribute values.\",\n ModuleAttributesWithDuplicateKeys: ({ key }: { key: string }) =>\n `Duplicate key \"${key}\" is not allowed in module attributes.`,\n ModuleExportNameHasLoneSurrogate: ({\n surrogateCharCode,\n }: {\n surrogateCharCode: number;\n }) =>\n `An export name cannot include a lone surrogate, found '\\\\u${surrogateCharCode.toString(\n 16,\n )}'.`,\n ModuleExportUndefined: ({ localName }: { localName: string }) =>\n `Export '${localName}' is not defined.`,\n MultipleDefaultsInSwitch: \"Multiple default clauses.\",\n NewlineAfterThrow: \"Illegal newline after throw.\",\n NoCatchOrFinally: \"Missing catch or finally clause.\",\n NumberIdentifier: \"Identifier directly after number.\",\n NumericSeparatorInEscapeSequence:\n \"Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.\",\n ObsoleteAwaitStar:\n \"'await*' has been removed from the async functions proposal. Use Promise.all() instead.\",\n OptionalChainingNoNew:\n \"Constructors in/after an Optional Chain are not allowed.\",\n OptionalChainingNoTemplate:\n \"Tagged Template Literals are not allowed in optionalChain.\",\n OverrideOnConstructor:\n \"'override' modifier cannot appear on a constructor declaration.\",\n ParamDupe: \"Argument name clash.\",\n PatternHasAccessor: \"Object pattern can't contain getter or setter.\",\n PatternHasMethod: \"Object pattern can't contain methods.\",\n PrivateInExpectedIn: ({ identifierName }: { identifierName: string }) =>\n `Private names are only allowed in property accesses (\\`obj.#${identifierName}\\`) or in \\`in\\` expressions (\\`#${identifierName} in obj\\`).`,\n PrivateNameRedeclaration: ({ identifierName }: { identifierName: string }) =>\n `Duplicate private name #${identifierName}.`,\n RecordExpressionBarIncorrectEndSyntaxType:\n \"Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n RecordExpressionBarIncorrectStartSyntaxType:\n \"Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n RecordExpressionHashIncorrectStartSyntaxType:\n \"Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n RecordNoProto: \"'__proto__' is not allowed in Record expressions.\",\n RestTrailingComma: \"Unexpected trailing comma after rest element.\",\n SloppyFunction:\n \"In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.\",\n StaticPrototype: \"Classes may not have static property named prototype.\",\n SuperNotAllowed:\n \"`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?\",\n SuperPrivateField: \"Private fields can't be accessed on super.\",\n TrailingDecorator: \"Decorators must be attached to a class element.\",\n TupleExpressionBarIncorrectEndSyntaxType:\n \"Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n TupleExpressionBarIncorrectStartSyntaxType:\n \"Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n TupleExpressionHashIncorrectStartSyntaxType:\n \"Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n UnexpectedArgumentPlaceholder: \"Unexpected argument placeholder.\",\n UnexpectedAwaitAfterPipelineBody:\n 'Unexpected \"await\" after pipeline body; await must have parentheses in minimal proposal.',\n UnexpectedDigitAfterHash: \"Unexpected digit after hash token.\",\n UnexpectedImportExport:\n \"'import' and 'export' may only appear at the top level.\",\n UnexpectedKeyword: ({ keyword }: { keyword: string }) =>\n `Unexpected keyword '${keyword}'.`,\n UnexpectedLeadingDecorator:\n \"Leading decorators must be attached to a class declaration.\",\n UnexpectedLexicalDeclaration:\n \"Lexical declaration cannot appear in a single-statement context.\",\n UnexpectedNewTarget:\n \"`new.target` can only be used in functions or class properties.\",\n UnexpectedNumericSeparator:\n \"A numeric separator is only allowed between two digits.\",\n UnexpectedPrivateField: \"Unexpected private name.\",\n UnexpectedReservedWord: ({ reservedWord }: { reservedWord: string }) =>\n `Unexpected reserved word '${reservedWord}'.`,\n UnexpectedSuper: \"'super' is only allowed in object methods and classes.\",\n UnexpectedToken: ({\n expected,\n unexpected,\n }: {\n expected?: string | null;\n unexpected?: string | null;\n }) =>\n `Unexpected token${unexpected ? ` '${unexpected}'.` : \"\"}${\n expected ? `, expected \"${expected}\"` : \"\"\n }`,\n UnexpectedTokenUnaryExponentiation:\n \"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.\",\n UnexpectedUsingDeclaration:\n \"Using declaration cannot appear in the top level when source type is `script`.\",\n UnsupportedBind: \"Binding should be performed on object property.\",\n UnsupportedDecoratorExport:\n \"A decorated export must export a class declaration.\",\n UnsupportedDefaultExport:\n \"Only expressions, functions or classes are allowed as the `default` export.\",\n UnsupportedImport:\n \"`import` can only be used in `import()` or `import.meta`.\",\n UnsupportedMetaProperty: ({\n target,\n onlyValidPropertyName,\n }: {\n target: string;\n onlyValidPropertyName: string;\n }) =>\n `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`,\n UnsupportedParameterDecorator:\n \"Decorators cannot be used to decorate parameters.\",\n UnsupportedPropertyDecorator:\n \"Decorators cannot be used to decorate object literal properties.\",\n UnsupportedSuper:\n \"'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).\",\n UnterminatedComment: \"Unterminated comment.\",\n UnterminatedRegExp: \"Unterminated regular expression.\",\n UnterminatedString: \"Unterminated string constant.\",\n UnterminatedTemplate: \"Unterminated template.\",\n UsingDeclarationHasBindingPattern:\n \"Using declaration cannot have destructuring patterns.\",\n VarRedeclaration: ({ identifierName }: { identifierName: string }) =>\n `Identifier '${identifierName}' has already been declared.`,\n YieldBindingIdentifier:\n \"Can not use 'yield' as identifier inside a generator.\",\n YieldInParameter: \"Yield expression is not allowed in formal parameters.\",\n ZeroDigitNumericSeparator:\n \"Numeric separator can not be used after leading 0.\",\n};\n","export default {\n StrictDelete: \"Deleting local variable in strict mode.\",\n\n // `referenceName` is the StringValue[1] of an IdentifierReference[2], which\n // is represented as just an `Identifier`[3] in the Babel AST.\n // 1. https://tc39.es/ecma262/#sec-static-semantics-stringvalue\n // 2. https://tc39.es/ecma262/#prod-IdentifierReference\n // 3. https://github.com/babel/babel/blob/main/packages/babel-parser/ast/spec.md#identifier\n StrictEvalArguments: ({ referenceName }: { referenceName: string }) =>\n `Assigning to '${referenceName}' in strict mode.`,\n\n // `bindingName` is the StringValue[1] of a BindingIdentifier[2], which is\n // represented as just an `Identifier`[3] in the Babel AST.\n // 1. https://tc39.es/ecma262/#sec-static-semantics-stringvalue\n // 2. https://tc39.es/ecma262/#prod-BindingIdentifier\n // 3. https://github.com/babel/babel/blob/main/packages/babel-parser/ast/spec.md#identifier\n StrictEvalArgumentsBinding: ({ bindingName }: { bindingName: string }) =>\n `Binding '${bindingName}' in strict mode.`,\n\n StrictFunction:\n \"In strict mode code, functions can only be declared at top level or inside a block.\",\n\n StrictNumericEscape: \"The only valid numeric escape in strict mode is '\\\\0'.\",\n\n StrictOctalLiteral: \"Legacy octal literals are not allowed in strict mode.\",\n\n StrictWith: \"'with' in strict mode.\",\n};\n","import toNodeDescription from \"./to-node-description\";\n\nexport const UnparenthesizedPipeBodyDescriptions = new Set([\n \"ArrowFunctionExpression\",\n \"AssignmentExpression\",\n \"ConditionalExpression\",\n \"YieldExpression\",\n] as const);\n\ntype GetSetMemberType> = T extends Set\n ? M\n : unknown;\n\ntype UnparanthesizedPipeBodyTypes = GetSetMemberType<\n typeof UnparenthesizedPipeBodyDescriptions\n>;\n\nexport default {\n // This error is only used by the smart-mix proposal\n PipeBodyIsTighter:\n \"Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.\",\n PipeTopicRequiresHackPipes:\n 'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.',\n PipeTopicUnbound:\n \"Topic reference is unbound; it must be inside a pipe body.\",\n PipeTopicUnconfiguredToken: ({ token }: { token: string }) =>\n `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { \"proposal\": \"hack\", \"topicToken\": \"${token}\" }.`,\n PipeTopicUnused:\n \"Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.\",\n PipeUnparenthesizedBody: ({ type }: { type: UnparanthesizedPipeBodyTypes }) =>\n `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({\n type,\n })}; please wrap it in parentheses.`,\n\n // Messages whose codes start with “Pipeline” or “PrimaryTopic”\n // are retained for backwards compatibility\n // with the deprecated smart-mix pipe operator proposal plugin.\n // They are subject to removal in a future major version.\n PipelineBodyNoArrow:\n 'Unexpected arrow \"=>\" after pipeline body; arrow function in pipeline body must be parenthesized.',\n PipelineBodySequenceExpression:\n \"Pipeline body may not be a comma-separated sequence expression.\",\n PipelineHeadSequenceExpression:\n \"Pipeline head should not be a comma-separated sequence expression.\",\n PipelineTopicUnused:\n \"Pipeline is in topic style but does not use topic reference.\",\n PrimaryTopicNotAllowed:\n \"Topic reference was used in a lexical context without topic binding.\",\n PrimaryTopicRequiresSmartPipeline:\n 'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.',\n};\n","import { Position } from \"./util/location\";\nimport {\n instantiate,\n ParseErrorCode,\n type ParseErrorCredentials,\n type ToMessage,\n type SyntaxPlugin,\n} from \"./parse-error/credentials\";\nimport type { Undone } from \"./parser/node\";\nimport type { Node } from \"./types\";\n\n// Babel uses \"normal\" SyntaxErrors for it's errors, but adds some extra\n// functionality. This functionality is defined in the\n// `ParseErrorSpecification` interface below. We may choose to change to someday\n// give our errors their own full-blown class, but until then this allow us to\n// keep all the desirable properties of SyntaxErrors (like their name in stack\n// traces, etc.), and also allows us to punt on any publicly facing\n// class-hierarchy decisions until Babel 8.\ninterface ParseErrorSpecification {\n // Look, these *could* be readonly, but then Flow complains when we initially\n // set them. We could do a whole dance and make a special interface that's not\n // readonly for when we create the error, then cast it to the readonly\n // interface for public use, but the previous implementation didn't have them\n // as readonly, so let's just not worry about it for now.\n code: ParseErrorCode;\n reasonCode: string;\n syntaxPlugin?: SyntaxPlugin;\n missingPlugin?: string | string[];\n loc: Position;\n details: ErrorDetails;\n\n // We should consider removing this as it now just contains the same\n // information as `loc.index`.\n // pos: number;\n}\n\nexport type ParseError = SyntaxError &\n ParseErrorSpecification;\n\n// By `ParseErrorConstructor`, we mean something like the new-less style\n// `ErrorConstructor`[1], since `ParseError`'s are not themselves actually\n// separate classes from `SyntaxError`'s.\n//\n// 1. https://github.com/microsoft/TypeScript/blob/v4.5.5/lib/lib.es5.d.ts#L1027\nexport type ParseErrorConstructor = (a: {\n loc: Position;\n details: ErrorDetails;\n}) => ParseError;\n\nfunction toParseErrorConstructor({\n toMessage,\n ...properties\n}: ParseErrorCredentials): ParseErrorConstructor {\n type ConstructorArgument = {\n loc: Position;\n details: ErrorDetails;\n };\n\n return function constructor({ loc, details }: ConstructorArgument) {\n return instantiate(\n SyntaxError,\n { ...properties, loc },\n {\n clone(\n overrides: {\n loc?: Position;\n details?: ErrorDetails;\n } = {},\n ) {\n const loc = (overrides.loc || {}) as Partial;\n return constructor({\n loc: new Position(\n \"line\" in loc ? loc.line : this.loc.line,\n \"column\" in loc ? loc.column : this.loc.column,\n \"index\" in loc ? loc.index : this.loc.index,\n ),\n details: { ...this.details, ...overrides.details },\n });\n },\n details: { value: details, enumerable: false },\n message: {\n get(this: ConstructorArgument): string {\n return `${toMessage(this.details)} (${this.loc.line}:${\n this.loc.column\n })`;\n },\n set(value: string) {\n Object.defineProperty(this, \"message\", { value });\n },\n },\n pos: { reflect: \"loc.index\", enumerable: true },\n missingPlugin: \"missingPlugin\" in details && {\n reflect: \"details.missingPlugin\",\n enumerable: true,\n },\n },\n ) as ParseError;\n };\n}\n\ntype ParseErrorTemplate =\n | string\n | ToMessage\n | { message: string | ToMessage };\n\ntype ParseErrorTemplates = { [reasonCode: string]: ParseErrorTemplate };\n\n// This is the templated form of `ParseErrorEnum`.\n//\n// Note: We could factor out the return type calculation into something like\n// `ParseErrorConstructor`, and then we could\n// reuse it in the non-templated form of `ParseErrorEnum`, but TypeScript\n// doesn't seem to drill down that far when showing you the computed type of\n// an object in an editor, so we'll leave it inlined for now.\nexport function ParseErrorEnum(a: TemplateStringsArray): <\n T extends ParseErrorTemplates,\n>(\n parseErrorTemplates: T,\n) => {\n [K in keyof T]: ParseErrorConstructor<\n T[K] extends { message: string | ToMessage }\n ? T[K][\"message\"] extends ToMessage\n ? Parameters[0]\n : {}\n : T[K] extends ToMessage\n ? Parameters[0]\n : {}\n >;\n};\n\nexport function ParseErrorEnum(\n parseErrorTemplates: T,\n syntaxPlugin?: SyntaxPlugin,\n): {\n [K in keyof T]: ParseErrorConstructor<\n T[K] extends { message: string | ToMessage }\n ? T[K][\"message\"] extends ToMessage\n ? Parameters[0]\n : {}\n : T[K] extends ToMessage\n ? Parameters[0]\n : {}\n >;\n};\n\n// You call `ParseErrorEnum` with a mapping from `ReasonCode`'s to either:\n//\n// 1. a static error message,\n// 2. `toMessage` functions that define additional necessary `details` needed by\n// the `ParseError`, or\n// 3. Objects that contain a `message` of one of the above and overridden `code`\n// and/or `reasonCode`:\n//\n// ParseErrorEnum `optionalSyntaxPlugin` ({\n// ErrorWithStaticMessage: \"message\",\n// ErrorWithDynamicMessage: ({ type } : { type: string }) => `${type}`),\n// ErrorWithOverriddenCodeAndOrReasonCode: {\n// message: ({ type }: { type: string }) => `${type}`),\n// code: ParseErrorCode.SourceTypeModuleError,\n// ...(BABEL_8_BREAKING ? { } : { reasonCode: \"CustomErrorReasonCode\" })\n// }\n// });\n//\nexport function ParseErrorEnum(\n argument: TemplateStringsArray | ParseErrorTemplates,\n syntaxPlugin?: SyntaxPlugin,\n) {\n // If the first parameter is an array, that means we were called with a tagged\n // template literal. Extract the syntaxPlugin from this, and call again in\n // the \"normalized\" form.\n if (Array.isArray(argument)) {\n return (parseErrorTemplates: ParseErrorTemplates) =>\n ParseErrorEnum(parseErrorTemplates, argument[0]);\n }\n\n const ParseErrorConstructors = {} as Record<\n string,\n ParseErrorConstructor\n >;\n\n for (const reasonCode of Object.keys(argument)) {\n const template = (argument as ParseErrorTemplates)[reasonCode];\n const { message, ...rest } =\n typeof template === \"string\"\n ? { message: () => template }\n : typeof template === \"function\"\n ? { message: template }\n : template;\n const toMessage = typeof message === \"string\" ? () => message : message;\n\n ParseErrorConstructors[reasonCode] = toParseErrorConstructor({\n code: ParseErrorCode.SyntaxError,\n reasonCode,\n toMessage,\n ...(syntaxPlugin ? { syntaxPlugin } : {}),\n ...rest,\n });\n }\n\n return ParseErrorConstructors;\n}\n\nexport type RaiseProperties = {\n at: Position | Undone;\n} & ErrorDetails;\n\nimport ModuleErrors from \"./parse-error/module-errors\";\nimport StandardErrors from \"./parse-error/standard-errors\";\nimport StrictModeErrors from \"./parse-error/strict-mode-errors\";\nimport PipelineOperatorErrors from \"./parse-error/pipeline-operator-errors\";\n\nexport const Errors = {\n ...ParseErrorEnum(ModuleErrors),\n ...ParseErrorEnum(StandardErrors),\n ...ParseErrorEnum(StrictModeErrors),\n ...ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors),\n};\n\nexport type { LValAncestor } from \"./parse-error/standard-errors\";\n\nexport * from \"./parse-error/credentials\";\n","import { type TokenType } from \"../tokenizer/types\";\nimport type Parser from \"../parser\";\nimport type { ExpressionErrors } from \"../parser/util\";\nimport type * as N from \"../types\";\nimport type { Node as NodeType, NodeBase, File } from \"../types\";\nimport type { Position } from \"../util/location\";\nimport { Errors } from \"../parse-error\";\nimport type { Undone } from \"../parser/node\";\nimport type { BindingTypes } from \"../util/scopeflags\";\n\nconst { defineProperty } = Object;\nconst toUnenumerable = (object: any, key: string) =>\n defineProperty(object, key, { enumerable: false, value: object[key] });\n\nfunction toESTreeLocation(node: any) {\n node.loc.start && toUnenumerable(node.loc.start, \"index\");\n node.loc.end && toUnenumerable(node.loc.end, \"index\");\n\n return node;\n}\n\nexport default (superClass: typeof Parser) =>\n class ESTreeParserMixin extends superClass implements Parser {\n parse(): File {\n const file = toESTreeLocation(super.parse());\n\n if (this.options.tokens) {\n file.tokens = file.tokens.map(toESTreeLocation);\n }\n\n return file;\n }\n\n // @ts-expect-error ESTree plugin changes node types\n parseRegExpLiteral({ pattern, flags }): N.EstreeRegExpLiteral {\n let regex: RegExp | null = null;\n try {\n regex = new RegExp(pattern, flags);\n } catch (e) {\n // In environments that don't support these flags value will\n // be null as the regex can't be represented natively.\n }\n const node = this.estreeParseLiteral(regex);\n node.regex = { pattern, flags };\n\n return node;\n }\n\n // @ts-expect-error ESTree plugin changes node types\n parseBigIntLiteral(value: any): N.Node {\n // https://github.com/estree/estree/blob/master/es2020.md#bigintliteral\n let bigInt: BigInt | null;\n try {\n bigInt = BigInt(value);\n } catch {\n bigInt = null;\n }\n const node = this.estreeParseLiteral(bigInt);\n node.bigint = String(node.value || value);\n\n return node;\n }\n\n // @ts-expect-error ESTree plugin changes node types\n parseDecimalLiteral(value: any): N.Node {\n // https://github.com/estree/estree/blob/master/experimental/decimal.md\n // todo: use BigDecimal when node supports it.\n const decimal: null = null;\n const node = this.estreeParseLiteral(decimal);\n node.decimal = String(node.value || value);\n\n return node;\n }\n\n estreeParseLiteral(value: any) {\n // @ts-expect-error ESTree plugin changes node types\n return this.parseLiteral(value, \"Literal\");\n }\n\n // @ts-expect-error ESTree plugin changes node types\n parseStringLiteral(value: any): N.Node {\n return this.estreeParseLiteral(value);\n }\n\n parseNumericLiteral(value: any): any {\n return this.estreeParseLiteral(value);\n }\n\n // @ts-expect-error ESTree plugin changes node types\n parseNullLiteral(): N.Node {\n return this.estreeParseLiteral(null);\n }\n\n parseBooleanLiteral(value: boolean): N.BooleanLiteral {\n return this.estreeParseLiteral(value);\n }\n\n // Cast a Directive to an ExpressionStatement. Mutates the input Directive.\n directiveToStmt(directive: N.Directive): N.ExpressionStatement {\n const expression = directive.value as any as N.EstreeLiteral;\n delete directive.value;\n\n expression.type = \"Literal\";\n // @ts-expect-error N.EstreeLiteral.raw is not defined.\n expression.raw = expression.extra.raw;\n expression.value = expression.extra.expressionValue;\n\n const stmt = directive as any as N.ExpressionStatement;\n stmt.type = \"ExpressionStatement\";\n stmt.expression = expression;\n // @ts-expect-error N.ExpressionStatement.directive is not defined\n stmt.directive = expression.extra.rawValue;\n\n delete expression.extra;\n\n return stmt;\n }\n\n // ==================================\n // Overrides\n // ==================================\n\n initFunction(node: N.BodilessFunctionOrMethodBase, isAsync: boolean): void {\n super.initFunction(node, isAsync);\n node.expression = false;\n }\n\n checkDeclaration(node: N.Pattern | N.ObjectProperty): void {\n if (node != null && this.isObjectProperty(node)) {\n // @ts-expect-error plugin typings\n this.checkDeclaration((node as unknown as N.EstreeProperty).value);\n } else {\n super.checkDeclaration(node);\n }\n }\n\n getObjectOrClassMethodParams(method: N.ObjectMethod | N.ClassMethod) {\n return (method as any as N.EstreeProperty | N.EstreeMethodDefinition)\n .value.params;\n }\n\n isValidDirective(stmt: N.Statement): boolean {\n return (\n stmt.type === \"ExpressionStatement\" &&\n stmt.expression.type === \"Literal\" &&\n typeof stmt.expression.value === \"string\" &&\n !stmt.expression.extra?.parenthesized\n );\n }\n\n parseBlockBody(\n node: N.BlockStatementLike,\n allowDirectives: boolean | undefined | null,\n topLevel: boolean,\n end: TokenType,\n afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n ): void {\n super.parseBlockBody(\n node,\n allowDirectives,\n topLevel,\n end,\n afterBlockParse,\n );\n\n const directiveStatements = node.directives.map(d =>\n this.directiveToStmt(d),\n );\n // @ts-expect-error estree plugin typings\n node.body = directiveStatements.concat(node.body);\n delete node.directives;\n }\n\n pushClassMethod(\n classBody: N.ClassBody,\n method: N.ClassMethod,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowsDirectSuper: boolean,\n ): void {\n this.parseMethod(\n method,\n isGenerator,\n isAsync,\n isConstructor,\n allowsDirectSuper,\n \"ClassMethod\",\n true,\n );\n if (method.typeParameters) {\n // @ts-expect-error mutate AST types\n method.value.typeParameters = method.typeParameters;\n delete method.typeParameters;\n }\n classBody.body.push(method);\n }\n\n parsePrivateName(): any {\n const node = super.parsePrivateName();\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return node;\n }\n }\n return this.convertPrivateNameToPrivateIdentifier(node);\n }\n\n convertPrivateNameToPrivateIdentifier(\n node: N.PrivateName,\n ): N.EstreePrivateIdentifier {\n const name = super.getPrivateNameSV(node);\n node = node as any;\n delete node.id;\n // @ts-expect-error mutate AST types\n node.name = name;\n // @ts-expect-error mutate AST types\n node.type = \"PrivateIdentifier\";\n return node as unknown as N.EstreePrivateIdentifier;\n }\n\n isPrivateName(node: N.Node): boolean {\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return super.isPrivateName(node);\n }\n }\n return node.type === \"PrivateIdentifier\";\n }\n\n getPrivateNameSV(node: N.Node): string {\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return super.getPrivateNameSV(node);\n }\n }\n return node.name;\n }\n\n // @ts-expect-error plugin may override interfaces\n parseLiteral(value: any, type: T[\"type\"]): T {\n const node = super.parseLiteral(value, type);\n // @ts-expect-error mutating AST types\n node.raw = node.extra.raw;\n delete node.extra;\n\n return node;\n }\n\n parseFunctionBody(\n node: N.Function,\n allowExpression?: boolean | null,\n isMethod: boolean = false,\n ): void {\n super.parseFunctionBody(node, allowExpression, isMethod);\n node.expression = node.body.type !== \"BlockStatement\";\n }\n\n // @ts-expect-error plugin may override interfaces\n parseMethod<\n T extends N.ClassPrivateMethod | N.ObjectMethod | N.ClassMethod,\n >(\n node: Undone,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowDirectSuper: boolean,\n type: T[\"type\"],\n inClassScope: boolean = false,\n ): N.EstreeMethodDefinition {\n let funcNode = this.startNode();\n funcNode.kind = node.kind; // provide kind, so super method correctly sets state\n funcNode = super.parseMethod(\n // @ts-expect-error todo(flow->ts)\n funcNode,\n isGenerator,\n isAsync,\n isConstructor,\n allowDirectSuper,\n type,\n inClassScope,\n );\n // @ts-expect-error mutate AST types\n funcNode.type = \"FunctionExpression\";\n delete funcNode.kind;\n // @ts-expect-error mutate AST types\n node.value = funcNode;\n if (type === \"ClassPrivateMethod\") {\n node.computed = false;\n }\n return this.finishNode(\n // @ts-expect-error cast methods to estree types\n node as Undone,\n \"MethodDefinition\",\n );\n }\n\n parseClassProperty(...args: [N.ClassProperty]): any {\n const propertyNode = super.parseClassProperty(...args) as any;\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return propertyNode as N.EstreePropertyDefinition;\n }\n }\n propertyNode.type = \"PropertyDefinition\";\n return propertyNode as N.EstreePropertyDefinition;\n }\n\n parseClassPrivateProperty(...args: [N.ClassPrivateProperty]): any {\n const propertyNode = super.parseClassPrivateProperty(...args) as any;\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return propertyNode as N.EstreePropertyDefinition;\n }\n }\n propertyNode.type = \"PropertyDefinition\";\n propertyNode.computed = false;\n return propertyNode as N.EstreePropertyDefinition;\n }\n\n parseObjectMethod(\n prop: N.ObjectMethod,\n isGenerator: boolean,\n isAsync: boolean,\n isPattern: boolean,\n isAccessor: boolean,\n ): N.ObjectMethod | undefined | null {\n const node: N.EstreeProperty = super.parseObjectMethod(\n prop,\n isGenerator,\n isAsync,\n isPattern,\n isAccessor,\n ) as any;\n\n if (node) {\n node.type = \"Property\";\n if ((node as any as N.ClassMethod).kind === \"method\") {\n node.kind = \"init\";\n }\n node.shorthand = false;\n }\n\n return node as any;\n }\n\n parseObjectProperty(\n prop: N.ObjectProperty,\n startLoc: Position | undefined | null,\n isPattern: boolean,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.ObjectProperty | undefined | null {\n const node: N.EstreeProperty = super.parseObjectProperty(\n prop,\n startLoc,\n isPattern,\n refExpressionErrors,\n ) as any;\n\n if (node) {\n node.kind = \"init\";\n node.type = \"Property\";\n }\n\n return node as any;\n }\n\n isValidLVal(\n type: string,\n isUnparenthesizedInAssign: boolean,\n binding: BindingTypes,\n ) {\n return type === \"Property\"\n ? \"value\"\n : super.isValidLVal(type, isUnparenthesizedInAssign, binding);\n }\n\n isAssignable(node: N.Node, isBinding?: boolean): boolean {\n if (node != null && this.isObjectProperty(node)) {\n return this.isAssignable(node.value, isBinding);\n }\n return super.isAssignable(node, isBinding);\n }\n\n toAssignable(node: N.Node, isLHS: boolean = false): void {\n if (node != null && this.isObjectProperty(node)) {\n const { key, value } = node;\n if (this.isPrivateName(key)) {\n this.classScope.usePrivateName(\n this.getPrivateNameSV(key),\n key.loc.start,\n );\n }\n this.toAssignable(value, isLHS);\n } else {\n super.toAssignable(node, isLHS);\n }\n }\n\n toAssignableObjectExpressionProp(\n prop: N.Node,\n isLast: boolean,\n isLHS: boolean,\n ) {\n if (prop.kind === \"get\" || prop.kind === \"set\") {\n this.raise(Errors.PatternHasAccessor, { at: prop.key });\n } else if (prop.method) {\n this.raise(Errors.PatternHasMethod, { at: prop.key });\n } else {\n super.toAssignableObjectExpressionProp(prop, isLast, isLHS);\n }\n }\n\n finishCallExpression(\n unfinished: Undone,\n optional: boolean,\n ): T {\n const node = super.finishCallExpression(unfinished, optional);\n\n if (node.callee.type === \"Import\") {\n (node as N.Node as N.EstreeImportExpression).type = \"ImportExpression\";\n (node as N.Node as N.EstreeImportExpression).source = node.arguments[0];\n if (this.hasPlugin(\"importAssertions\")) {\n (node as N.Node as N.EstreeImportExpression).attributes =\n node.arguments[1] ?? null;\n }\n // arguments isn't optional in the type definition\n delete node.arguments;\n // callee isn't optional in the type definition\n delete node.callee;\n }\n\n return node;\n }\n\n toReferencedArguments(\n node:\n | N.CallExpression\n | N.OptionalCallExpression\n | N.EstreeImportExpression,\n /* isParenthesizedExpr?: boolean, */\n ) {\n // ImportExpressions do not have an arguments array.\n if (node.type === \"ImportExpression\") {\n return;\n }\n\n super.toReferencedArguments(node);\n }\n\n parseExport(\n unfinished: Undone,\n decorators: N.Decorator[] | null,\n ) {\n const exportStartLoc = this.state.lastTokStartLoc;\n const node = super.parseExport(unfinished, decorators);\n\n switch (node.type) {\n case \"ExportAllDeclaration\":\n // @ts-expect-error mutating AST types\n node.exported = null;\n break;\n\n case \"ExportNamedDeclaration\":\n if (\n node.specifiers.length === 1 &&\n // @ts-expect-error mutating AST types\n node.specifiers[0].type === \"ExportNamespaceSpecifier\"\n ) {\n // @ts-expect-error mutating AST types\n node.type = \"ExportAllDeclaration\";\n // @ts-expect-error mutating AST types\n node.exported = node.specifiers[0].exported;\n delete node.specifiers;\n }\n\n // fallthrough\n case \"ExportDefaultDeclaration\":\n {\n const { declaration } = node;\n if (\n declaration?.type === \"ClassDeclaration\" &&\n declaration.decorators?.length > 0 &&\n // decorator comes before export\n declaration.start === node.start\n ) {\n this.resetStartLocation(\n node,\n // For compatibility with ESLint's keyword-spacing rule, which assumes that an\n // export declaration must start with export.\n // https://github.com/babel/babel/issues/15085\n // Here we reset export declaration's start to be the start of the export token\n exportStartLoc,\n );\n }\n }\n\n break;\n }\n\n return node;\n }\n\n parseSubscript(\n base: N.Expression,\n startLoc: Position,\n noCalls: boolean | undefined | null,\n state: N.ParseSubscriptState,\n ) {\n const node = super.parseSubscript(base, startLoc, noCalls, state);\n\n if (state.optionalChainMember) {\n // https://github.com/estree/estree/blob/master/es2020.md#chainexpression\n if (\n node.type === \"OptionalMemberExpression\" ||\n node.type === \"OptionalCallExpression\"\n ) {\n node.type = node.type.substring(8); // strip Optional prefix\n }\n if (state.stop) {\n const chain = this.startNodeAtNode(node);\n chain.expression = node;\n return this.finishNode(chain, \"ChainExpression\");\n }\n } else if (\n node.type === \"MemberExpression\" ||\n node.type === \"CallExpression\"\n ) {\n node.optional = false;\n }\n\n return node;\n }\n\n hasPropertyAsPrivateName(node: N.Node): boolean {\n if (node.type === \"ChainExpression\") {\n node = node.expression;\n }\n return super.hasPropertyAsPrivateName(node);\n }\n\n isOptionalChain(node: N.Node): boolean {\n return node.type === \"ChainExpression\";\n }\n\n // @ts-expect-error override interfaces\n isObjectProperty(node: N.Node): boolean {\n return node.type === \"Property\" && node.kind === \"init\" && !node.method;\n }\n\n isObjectMethod(node: N.Node): boolean {\n return node.method || node.kind === \"get\" || node.kind === \"set\";\n }\n\n finishNodeAt(\n node: Undone,\n type: T[\"type\"],\n endLoc: Position,\n ): T {\n return toESTreeLocation(super.finishNodeAt(node, type, endLoc));\n }\n\n resetStartLocation(node: N.Node, startLoc: Position) {\n super.resetStartLocation(node, startLoc);\n toESTreeLocation(node);\n }\n\n resetEndLocation(\n node: NodeBase,\n endLoc: Position = this.state.lastTokEndLoc,\n ): void {\n super.resetEndLocation(node, endLoc);\n toESTreeLocation(node);\n }\n };\n","// The token context is used in JSX plugin to track\n// jsx tag / jsx text / normal JavaScript expression\n\nexport class TokContext {\n constructor(token: string, preserveSpace?: boolean) {\n this.token = token;\n this.preserveSpace = !!preserveSpace;\n }\n\n token: string;\n preserveSpace: boolean;\n}\n\nconst types: {\n [key: string]: TokContext;\n} = {\n brace: new TokContext(\"{\"), // normal JavaScript expression\n j_oTag: new TokContext(\"...\", true), // JSX expressions\n};\n\nif (!process.env.BABEL_8_BREAKING) {\n types.template = new TokContext(\"`\", true);\n}\n\nexport { types };\n","import { types as tc, type TokContext } from \"./context\";\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between 1) binary\n// expression (<) and JSX Tag start (); 2) object literal and JSX\n// texts. It is set on the `updateContext` function in the JSX plugin.\n\n// The `startsExpr` property is used to determine whether an expression\n// may be the “argument” subexpression of a `yield` expression or\n// `yield` statement. It is set on all token types that may be at the\n// start of a subexpression.\n\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nconst beforeExpr = true;\nconst startsExpr = true;\nconst isLoop = true;\nconst isAssign = true;\nconst prefix = true;\nconst postfix = true;\n\ntype TokenOptions = {\n keyword?: string;\n beforeExpr?: boolean;\n startsExpr?: boolean;\n rightAssociative?: boolean;\n isLoop?: boolean;\n isAssign?: boolean;\n prefix?: boolean;\n postfix?: boolean;\n binop?: number | null;\n};\n\n// Internally the tokenizer stores token as a number\nexport type TokenType = number;\n\n// The `ExportedTokenType` is exported via `tokTypes` and accessible\n// when `tokens: true` is enabled. Unlike internal token type, it provides\n// metadata of the tokens.\nexport class ExportedTokenType {\n label: string;\n keyword: string | undefined | null;\n beforeExpr: boolean;\n startsExpr: boolean;\n rightAssociative: boolean;\n isLoop: boolean;\n isAssign: boolean;\n prefix: boolean;\n postfix: boolean;\n binop: number | undefined | null;\n // todo(Babel 8): remove updateContext from exposed token layout\n declare updateContext:\n | ((context: Array) => void)\n | undefined\n | null;\n\n constructor(label: string, conf: TokenOptions = {}) {\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.rightAssociative = !!conf.rightAssociative;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop != null ? conf.binop : null;\n if (!process.env.BABEL_8_BREAKING) {\n this.updateContext = null;\n }\n }\n}\n\n// A map from keyword/keyword-like string value to the token type\nexport const keywords = new Map();\n\nfunction createKeyword(name: string, options: TokenOptions = {}): TokenType {\n options.keyword = name;\n const token = createToken(name, options);\n keywords.set(name, token);\n return token;\n}\n\nfunction createBinop(name: string, binop: number) {\n return createToken(name, { beforeExpr, binop });\n}\n\nlet tokenTypeCounter = -1;\nexport const tokenTypes: ExportedTokenType[] = [];\nconst tokenLabels: string[] = [];\nconst tokenBinops: number[] = [];\nconst tokenBeforeExprs: boolean[] = [];\nconst tokenStartsExprs: boolean[] = [];\nconst tokenPrefixes: boolean[] = [];\n\nfunction createToken(name: string, options: TokenOptions = {}): TokenType {\n ++tokenTypeCounter;\n tokenLabels.push(name);\n tokenBinops.push(options.binop ?? -1);\n tokenBeforeExprs.push(options.beforeExpr ?? false);\n tokenStartsExprs.push(options.startsExpr ?? false);\n tokenPrefixes.push(options.prefix ?? false);\n tokenTypes.push(new ExportedTokenType(name, options));\n\n return tokenTypeCounter;\n}\n\nfunction createKeywordLike(\n name: string,\n options: TokenOptions = {},\n): TokenType {\n ++tokenTypeCounter;\n keywords.set(name, tokenTypeCounter);\n tokenLabels.push(name);\n tokenBinops.push(options.binop ?? -1);\n tokenBeforeExprs.push(options.beforeExpr ?? false);\n tokenStartsExprs.push(options.startsExpr ?? false);\n tokenPrefixes.push(options.prefix ?? false);\n // In the exported token type, we set the label as \"name\" for backward compatibility with Babel 7\n tokenTypes.push(new ExportedTokenType(\"name\", options));\n\n return tokenTypeCounter;\n}\n\n// For performance the token type helpers depend on the following declarations order.\n// When adding new token types, please also check if the token helpers need update.\n\nexport type InternalTokenTypes = typeof tt;\n\nexport const tt = {\n // Punctuation token types.\n bracketL: createToken(\"[\", { beforeExpr, startsExpr }),\n bracketHashL: createToken(\"#[\", { beforeExpr, startsExpr }),\n bracketBarL: createToken(\"[|\", { beforeExpr, startsExpr }),\n bracketR: createToken(\"]\"),\n bracketBarR: createToken(\"|]\"),\n braceL: createToken(\"{\", { beforeExpr, startsExpr }),\n braceBarL: createToken(\"{|\", { beforeExpr, startsExpr }),\n braceHashL: createToken(\"#{\", { beforeExpr, startsExpr }),\n braceR: createToken(\"}\"),\n braceBarR: createToken(\"|}\"),\n parenL: createToken(\"(\", { beforeExpr, startsExpr }),\n parenR: createToken(\")\"),\n comma: createToken(\",\", { beforeExpr }),\n semi: createToken(\";\", { beforeExpr }),\n colon: createToken(\":\", { beforeExpr }),\n doubleColon: createToken(\"::\", { beforeExpr }),\n dot: createToken(\".\"),\n question: createToken(\"?\", { beforeExpr }),\n questionDot: createToken(\"?.\"),\n arrow: createToken(\"=>\", { beforeExpr }),\n template: createToken(\"template\"),\n ellipsis: createToken(\"...\", { beforeExpr }),\n backQuote: createToken(\"`\", { startsExpr }),\n dollarBraceL: createToken(\"${\", { beforeExpr, startsExpr }),\n // start: isTemplate\n templateTail: createToken(\"...`\", { startsExpr }),\n templateNonTail: createToken(\"...${\", { beforeExpr, startsExpr }),\n // end: isTemplate\n at: createToken(\"@\"),\n hash: createToken(\"#\", { startsExpr }),\n\n // Special hashbang token.\n interpreterDirective: createToken(\"#!...\"),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n // start: isAssign\n eq: createToken(\"=\", { beforeExpr, isAssign }),\n assign: createToken(\"_=\", { beforeExpr, isAssign }),\n slashAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n // These are only needed to support % and ^ as a Hack-pipe topic token.\n // When the proposal settles on a token, the others can be merged with\n // tt.assign.\n xorAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n moduloAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n // end: isAssign\n\n incDec: createToken(\"++/--\", { prefix, postfix, startsExpr }),\n bang: createToken(\"!\", { beforeExpr, prefix, startsExpr }),\n tilde: createToken(\"~\", { beforeExpr, prefix, startsExpr }),\n\n // More possible topic tokens.\n // When the proposal settles on a token, at least one of these may be removed.\n doubleCaret: createToken(\"^^\", { startsExpr }),\n doubleAt: createToken(\"@@\", { startsExpr }),\n\n // start: isBinop\n pipeline: createBinop(\"|>\", 0),\n nullishCoalescing: createBinop(\"??\", 1),\n logicalOR: createBinop(\"||\", 1),\n logicalAND: createBinop(\"&&\", 2),\n bitwiseOR: createBinop(\"|\", 3),\n bitwiseXOR: createBinop(\"^\", 4),\n bitwiseAND: createBinop(\"&\", 5),\n equality: createBinop(\"==/!=/===/!==\", 6),\n lt: createBinop(\"/<=/>=\", 7),\n gt: createBinop(\"/<=/>=\", 7),\n relational: createBinop(\"/<=/>=\", 7),\n bitShift: createBinop(\"<>/>>>\", 8),\n bitShiftL: createBinop(\"<>/>>>\", 8),\n bitShiftR: createBinop(\"<>/>>>\", 8),\n plusMin: createToken(\"+/-\", { beforeExpr, binop: 9, prefix, startsExpr }),\n // startsExpr: required by v8intrinsic plugin\n modulo: createToken(\"%\", { binop: 10, startsExpr }),\n // unset `beforeExpr` as it can be `function *`\n star: createToken(\"*\", { binop: 10 }),\n slash: createBinop(\"/\", 10),\n exponent: createToken(\"**\", {\n beforeExpr,\n binop: 11,\n rightAssociative: true,\n }),\n\n // Keywords\n // Don't forget to update packages/babel-helper-validator-identifier/src/keyword.js\n // when new keywords are added\n // start: isLiteralPropertyName\n // start: isKeyword\n _in: createKeyword(\"in\", { beforeExpr, binop: 7 }),\n _instanceof: createKeyword(\"instanceof\", { beforeExpr, binop: 7 }),\n // end: isBinop\n _break: createKeyword(\"break\"),\n _case: createKeyword(\"case\", { beforeExpr }),\n _catch: createKeyword(\"catch\"),\n _continue: createKeyword(\"continue\"),\n _debugger: createKeyword(\"debugger\"),\n _default: createKeyword(\"default\", { beforeExpr }),\n _else: createKeyword(\"else\", { beforeExpr }),\n _finally: createKeyword(\"finally\"),\n _function: createKeyword(\"function\", { startsExpr }),\n _if: createKeyword(\"if\"),\n _return: createKeyword(\"return\", { beforeExpr }),\n _switch: createKeyword(\"switch\"),\n _throw: createKeyword(\"throw\", { beforeExpr, prefix, startsExpr }),\n _try: createKeyword(\"try\"),\n _var: createKeyword(\"var\"),\n _const: createKeyword(\"const\"),\n _with: createKeyword(\"with\"),\n _new: createKeyword(\"new\", { beforeExpr, startsExpr }),\n _this: createKeyword(\"this\", { startsExpr }),\n _super: createKeyword(\"super\", { startsExpr }),\n _class: createKeyword(\"class\", { startsExpr }),\n _extends: createKeyword(\"extends\", { beforeExpr }),\n _export: createKeyword(\"export\"),\n _import: createKeyword(\"import\", { startsExpr }),\n _null: createKeyword(\"null\", { startsExpr }),\n _true: createKeyword(\"true\", { startsExpr }),\n _false: createKeyword(\"false\", { startsExpr }),\n _typeof: createKeyword(\"typeof\", { beforeExpr, prefix, startsExpr }),\n _void: createKeyword(\"void\", { beforeExpr, prefix, startsExpr }),\n _delete: createKeyword(\"delete\", { beforeExpr, prefix, startsExpr }),\n // start: isLoop\n _do: createKeyword(\"do\", { isLoop, beforeExpr }),\n _for: createKeyword(\"for\", { isLoop }),\n _while: createKeyword(\"while\", { isLoop }),\n // end: isLoop\n // end: isKeyword\n\n // Primary literals\n // start: isIdentifier\n _as: createKeywordLike(\"as\", { startsExpr }),\n _assert: createKeywordLike(\"assert\", { startsExpr }),\n _async: createKeywordLike(\"async\", { startsExpr }),\n _await: createKeywordLike(\"await\", { startsExpr }),\n _from: createKeywordLike(\"from\", { startsExpr }),\n _get: createKeywordLike(\"get\", { startsExpr }),\n _let: createKeywordLike(\"let\", { startsExpr }),\n _meta: createKeywordLike(\"meta\", { startsExpr }),\n _of: createKeywordLike(\"of\", { startsExpr }),\n _sent: createKeywordLike(\"sent\", { startsExpr }),\n _set: createKeywordLike(\"set\", { startsExpr }),\n _static: createKeywordLike(\"static\", { startsExpr }),\n _using: createKeywordLike(\"using\", { startsExpr }),\n _yield: createKeywordLike(\"yield\", { startsExpr }),\n\n // Flow and TypeScript Keywordlike\n _asserts: createKeywordLike(\"asserts\", { startsExpr }),\n _checks: createKeywordLike(\"checks\", { startsExpr }),\n _exports: createKeywordLike(\"exports\", { startsExpr }),\n _global: createKeywordLike(\"global\", { startsExpr }),\n _implements: createKeywordLike(\"implements\", { startsExpr }),\n _intrinsic: createKeywordLike(\"intrinsic\", { startsExpr }),\n _infer: createKeywordLike(\"infer\", { startsExpr }),\n _is: createKeywordLike(\"is\", { startsExpr }),\n _mixins: createKeywordLike(\"mixins\", { startsExpr }),\n _proto: createKeywordLike(\"proto\", { startsExpr }),\n _require: createKeywordLike(\"require\", { startsExpr }),\n _satisfies: createKeywordLike(\"satisfies\", { startsExpr }),\n // start: isTSTypeOperator\n _keyof: createKeywordLike(\"keyof\", { startsExpr }),\n _readonly: createKeywordLike(\"readonly\", { startsExpr }),\n _unique: createKeywordLike(\"unique\", { startsExpr }),\n // end: isTSTypeOperator\n // start: isTSDeclarationStart\n _abstract: createKeywordLike(\"abstract\", { startsExpr }),\n _declare: createKeywordLike(\"declare\", { startsExpr }),\n _enum: createKeywordLike(\"enum\", { startsExpr }),\n _module: createKeywordLike(\"module\", { startsExpr }),\n _namespace: createKeywordLike(\"namespace\", { startsExpr }),\n // start: isFlowInterfaceOrTypeOrOpaque\n _interface: createKeywordLike(\"interface\", { startsExpr }),\n _type: createKeywordLike(\"type\", { startsExpr }),\n // end: isTSDeclarationStart\n _opaque: createKeywordLike(\"opaque\", { startsExpr }),\n // end: isFlowInterfaceOrTypeOrOpaque\n name: createToken(\"name\", { startsExpr }),\n // end: isIdentifier\n\n string: createToken(\"string\", { startsExpr }),\n num: createToken(\"num\", { startsExpr }),\n bigint: createToken(\"bigint\", { startsExpr }),\n decimal: createToken(\"decimal\", { startsExpr }),\n // end: isLiteralPropertyName\n regexp: createToken(\"regexp\", { startsExpr }),\n privateName: createToken(\"#name\", { startsExpr }),\n eof: createToken(\"eof\"),\n\n // jsx plugin\n jsxName: createToken(\"jsxName\"),\n jsxText: createToken(\"jsxText\", { beforeExpr: true }),\n jsxTagStart: createToken(\"jsxTagStart\", { startsExpr: true }),\n jsxTagEnd: createToken(\"jsxTagEnd\"),\n\n // placeholder plugin\n placeholder: createToken(\"%%\", { startsExpr: true }),\n} as const;\n\nexport function tokenIsIdentifier(token: TokenType): boolean {\n return token >= tt._as && token <= tt.name;\n}\n\nexport function tokenKeywordOrIdentifierIsKeyword(token: TokenType): boolean {\n // we can remove the token >= tt._in check when we\n // know a token is either keyword or identifier\n return token <= tt._while;\n}\n\nexport function tokenIsKeywordOrIdentifier(token: TokenType): boolean {\n return token >= tt._in && token <= tt.name;\n}\n\nexport function tokenIsLiteralPropertyName(token: TokenType): boolean {\n return token >= tt._in && token <= tt.decimal;\n}\n\nexport function tokenComesBeforeExpression(token: TokenType): boolean {\n return tokenBeforeExprs[token];\n}\n\nexport function tokenCanStartExpression(token: TokenType): boolean {\n return tokenStartsExprs[token];\n}\n\nexport function tokenIsAssignment(token: TokenType): boolean {\n return token >= tt.eq && token <= tt.moduloAssign;\n}\n\nexport function tokenIsFlowInterfaceOrTypeOrOpaque(token: TokenType): boolean {\n return token >= tt._interface && token <= tt._opaque;\n}\n\nexport function tokenIsLoop(token: TokenType): boolean {\n return token >= tt._do && token <= tt._while;\n}\n\nexport function tokenIsKeyword(token: TokenType): boolean {\n return token >= tt._in && token <= tt._while;\n}\n\nexport function tokenIsOperator(token: TokenType): boolean {\n return token >= tt.pipeline && token <= tt._instanceof;\n}\n\nexport function tokenIsPostfix(token: TokenType): boolean {\n return token === tt.incDec;\n}\n\nexport function tokenIsPrefix(token: TokenType): boolean {\n return tokenPrefixes[token];\n}\n\nexport function tokenIsTSTypeOperator(token: TokenType): boolean {\n return token >= tt._keyof && token <= tt._unique;\n}\n\nexport function tokenIsTSDeclarationStart(token: TokenType): boolean {\n return token >= tt._abstract && token <= tt._type;\n}\n\nexport function tokenLabelName(token: TokenType): string {\n return tokenLabels[token];\n}\n\nexport function tokenOperatorPrecedence(token: TokenType): number {\n return tokenBinops[token];\n}\n\nexport function tokenIsBinaryOperator(token: TokenType): boolean {\n return tokenBinops[token] !== -1;\n}\n\nexport function tokenIsRightAssociative(token: TokenType): boolean {\n return token === tt.exponent;\n}\n\nexport function tokenIsTemplate(token: TokenType): boolean {\n return token >= tt.templateTail && token <= tt.templateNonTail;\n}\n\nexport function getExportedToken(token: TokenType): ExportedTokenType {\n return tokenTypes[token];\n}\n\nexport function isTokenType(obj: any): boolean {\n return typeof obj === \"number\";\n}\n\nif (!process.env.BABEL_8_BREAKING) {\n tokenTypes[tt.braceR].updateContext = context => {\n context.pop();\n };\n\n tokenTypes[tt.braceL].updateContext =\n tokenTypes[tt.braceHashL].updateContext =\n tokenTypes[tt.dollarBraceL].updateContext =\n context => {\n context.push(tc.brace);\n };\n\n tokenTypes[tt.backQuote].updateContext = context => {\n if (context[context.length - 1] === tc.template) {\n context.pop();\n } else {\n context.push(tc.template);\n }\n };\n\n tokenTypes[tt.jsxTagStart].updateContext = context => {\n context.push(tc.j_expr, tc.j_oTag);\n };\n}\n","import * as charCodes from \"charcodes\";\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point between 0x80 and 0xffff.\n// Generated by `scripts/generate-identifier-regex.js`.\n\n/* prettier-ignore */\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c88\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7ca\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7d9\\ua7f2-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n/* prettier-ignore */\nlet nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0898-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\";\n\nconst nonASCIIidentifierStart = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset-encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by `scripts/generate-identifier-regex.js`.\n/* prettier-ignore */\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,68,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,349,41,7,1,79,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,4026,582,8634,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,43,8,8936,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,757,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4153,7,221,3,5761,15,7472,3104,541,1507,4938,6,4191];\n/* prettier-ignore */\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,370,1,81,2,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,10,1,2,0,49,6,4,4,14,9,5351,0,7,14,13835,9,87,9,39,4,60,6,26,9,1014,0,2,54,8,3,82,0,12,1,19628,1,4706,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,983,6,110,6,6,9,4759,9,787719,239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code: number, set: readonly number[]): boolean {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code: number): boolean {\n if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return (\n code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n );\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n if (code < charCodes.digit0) return code === charCodes.dollarSign;\n if (code < charCodes.colon) return true;\n if (code < charCodes.uppercaseA) return false;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return (\n isInAstralSet(code, astralIdentifierStartCodes) ||\n isInAstralSet(code, astralIdentifierCodes)\n );\n}\n\n// Test whether a given string is a valid identifier name\n\nexport function isIdentifierName(name: string): boolean {\n let isFirst = true;\n for (let i = 0; i < name.length; i++) {\n // The implementation is based on\n // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n // since `name` is mostly ASCII, an inlined `charCodeAt` wins here\n let cp = name.charCodeAt(i);\n if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n const trail = name.charCodeAt(++i);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n if (isFirst) {\n isFirst = false;\n if (!isIdentifierStart(cp)) {\n return false;\n }\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n return !isFirst;\n}\n","const reservedWords = {\n keyword: [\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n ],\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n ],\n strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n word: string,\n inModule: boolean,\n): boolean {\n return (\n isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n );\n}\n\nexport function isKeyword(word: string): boolean {\n return keywords.has(word);\n}\n","/* eslint max-len: 0 */\n\nimport * as charCodes from \"charcodes\";\nimport { isIdentifierStart } from \"@babel/helper-validator-identifier\";\n\nexport {\n isIdentifierStart,\n isIdentifierChar,\n isReservedWord,\n isStrictBindOnlyReservedWord,\n isStrictBindReservedWord,\n isStrictReservedWord,\n isKeyword,\n} from \"@babel/helper-validator-identifier\";\n\nexport const keywordRelationalOperator = /^in(stanceof)?$/;\n\n// Test whether a current state character code and next character code is @\n\nexport function isIteratorStart(\n current: number,\n next: number,\n next2: number,\n): boolean {\n return (\n current === charCodes.atSign &&\n next === charCodes.atSign &&\n isIdentifierStart(next2)\n );\n}\n\n// This is the comprehensive set of JavaScript reserved words\n// If a word is in this set, it could be a reserved word,\n// depending on sourceType/strictMode/binding info. In other words\n// if a word is not in this set, it is not a reserved word under\n// any circumstance.\nconst reservedWordLikeSet = new Set([\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n // strict\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n // strictBind\n \"eval\",\n \"arguments\",\n // reservedWorkLike\n \"enum\",\n \"await\",\n]);\n\nexport function canBeReservedWord(word: string): boolean {\n return reservedWordLikeSet.has(word);\n}\n","// Each scope gets a bitset that may contain these flags\n// prettier-ignore\nexport const SCOPE_OTHER = 0b000000000,\n SCOPE_PROGRAM = 0b000000001,\n SCOPE_FUNCTION = 0b000000010,\n SCOPE_ARROW = 0b000000100,\n SCOPE_SIMPLE_CATCH = 0b000001000,\n SCOPE_SUPER = 0b000010000,\n SCOPE_DIRECT_SUPER = 0b000100000,\n SCOPE_CLASS = 0b001000000,\n SCOPE_STATIC_BLOCK = 0b010000000,\n SCOPE_TS_MODULE = 0b100000000,\n SCOPE_VAR = SCOPE_PROGRAM | SCOPE_FUNCTION | SCOPE_STATIC_BLOCK | SCOPE_TS_MODULE;\n\nexport type ScopeFlags =\n | typeof SCOPE_OTHER\n | typeof SCOPE_PROGRAM\n | typeof SCOPE_FUNCTION\n | typeof SCOPE_VAR\n | typeof SCOPE_ARROW\n | typeof SCOPE_SIMPLE_CATCH\n | typeof SCOPE_SUPER\n | typeof SCOPE_DIRECT_SUPER\n | typeof SCOPE_CLASS\n | typeof SCOPE_STATIC_BLOCK;\n\n// These flags are meant to be _only_ used inside the Scope class (or subclasses).\n// prettier-ignore\nexport const BIND_KIND_VALUE = 0b0000000_0000_01,\n BIND_KIND_TYPE = 0b0000000_0000_10,\n // Used in checkLVal and declareName to determine the type of a binding\n BIND_SCOPE_VAR = 0b0000000_0001_00, // Var-style binding\n BIND_SCOPE_LEXICAL = 0b0000000_0010_00, // Let- or const-style binding\n BIND_SCOPE_FUNCTION = 0b0000000_0100_00, // Function declaration\n BIND_SCOPE_OUTSIDE = 0b0000000_1000_00, // Special case for function names as\n // bound inside the function\n // Misc flags\n BIND_FLAGS_NONE = 0b00000001_0000_00,\n BIND_FLAGS_CLASS = 0b00000010_0000_00,\n BIND_FLAGS_TS_ENUM = 0b00000100_0000_00,\n BIND_FLAGS_TS_CONST_ENUM = 0b00001000_0000_00,\n BIND_FLAGS_TS_EXPORT_ONLY = 0b00010000_0000_00,\n BIND_FLAGS_FLOW_DECLARE_FN = 0b00100000_0000_00,\n BIND_FLAGS_TS_IMPORT = 0b01000000_0000_00,\n // Whether \"let\" should be allowed in bound names in sloppy mode\n BIND_FLAGS_NO_LET_IN_LEXICAL = 0b10000000_0000_00;\n\n// These flags are meant to be _only_ used by Scope consumers\n// prettier-ignore\n/* = is value? | is type? | scope | misc flags */\nexport const BIND_CLASS = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_CLASS|BIND_FLAGS_NO_LET_IN_LEXICAL,\n BIND_LEXICAL = BIND_KIND_VALUE | 0 | BIND_SCOPE_LEXICAL | BIND_FLAGS_NO_LET_IN_LEXICAL,\n BIND_CATCH_PARAM = BIND_KIND_VALUE | 0 | BIND_SCOPE_LEXICAL | 0 ,\n BIND_VAR = BIND_KIND_VALUE | 0 | BIND_SCOPE_VAR | 0 ,\n BIND_FUNCTION = BIND_KIND_VALUE | 0 | BIND_SCOPE_FUNCTION | 0 ,\n BIND_TS_INTERFACE = 0 | BIND_KIND_TYPE | 0 | BIND_FLAGS_CLASS ,\n BIND_TS_TYPE = 0 | BIND_KIND_TYPE | 0 | 0 ,\n BIND_TS_ENUM = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_TS_ENUM|BIND_FLAGS_NO_LET_IN_LEXICAL,\n BIND_TS_AMBIENT = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY,\n // These bindings don't introduce anything in the scope. They are used for assignments and\n // function expressions IDs.\n BIND_NONE = 0 | 0 | 0 | BIND_FLAGS_NONE ,\n BIND_OUTSIDE = BIND_KIND_VALUE | 0 | 0 | BIND_FLAGS_NONE ,\n\n BIND_TS_CONST_ENUM = BIND_TS_ENUM | BIND_FLAGS_TS_CONST_ENUM ,\n BIND_TS_NAMESPACE = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY,\n BIND_TS_TYPE_IMPORT= 0 | BIND_KIND_TYPE | 0 | BIND_FLAGS_TS_IMPORT ,\n\n BIND_FLOW_DECLARE_FN = BIND_FLAGS_FLOW_DECLARE_FN;\n\nexport type BindingTypes =\n | typeof BIND_NONE\n | typeof BIND_OUTSIDE\n | typeof BIND_VAR\n | typeof BIND_LEXICAL\n | typeof BIND_CLASS\n | typeof BIND_FUNCTION\n | typeof BIND_TS_INTERFACE\n | typeof BIND_TS_TYPE\n | typeof BIND_TS_ENUM\n | typeof BIND_TS_AMBIENT\n | typeof BIND_TS_NAMESPACE;\n\n// prettier-ignore\nexport const CLASS_ELEMENT_FLAG_STATIC = 0b1_00,\n CLASS_ELEMENT_KIND_GETTER = 0b0_10,\n CLASS_ELEMENT_KIND_SETTER = 0b0_01,\n CLASS_ELEMENT_KIND_ACCESSOR = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_KIND_SETTER;\n\n// prettier-ignore\nexport const CLASS_ELEMENT_STATIC_GETTER = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_FLAG_STATIC,\n CLASS_ELEMENT_STATIC_SETTER = CLASS_ELEMENT_KIND_SETTER | CLASS_ELEMENT_FLAG_STATIC,\n CLASS_ELEMENT_INSTANCE_GETTER = CLASS_ELEMENT_KIND_GETTER,\n CLASS_ELEMENT_INSTANCE_SETTER = CLASS_ELEMENT_KIND_SETTER,\n CLASS_ELEMENT_OTHER = 0;\n\nexport type ClassElementTypes =\n | typeof CLASS_ELEMENT_STATIC_GETTER\n | typeof CLASS_ELEMENT_STATIC_SETTER\n | typeof CLASS_ELEMENT_INSTANCE_GETTER\n | typeof CLASS_ELEMENT_INSTANCE_SETTER\n | typeof CLASS_ELEMENT_OTHER;\n","import {\n SCOPE_ARROW,\n SCOPE_DIRECT_SUPER,\n SCOPE_FUNCTION,\n SCOPE_SIMPLE_CATCH,\n SCOPE_SUPER,\n SCOPE_PROGRAM,\n SCOPE_VAR,\n SCOPE_CLASS,\n SCOPE_STATIC_BLOCK,\n BIND_SCOPE_FUNCTION,\n BIND_SCOPE_VAR,\n BIND_SCOPE_LEXICAL,\n BIND_KIND_VALUE,\n type ScopeFlags,\n type BindingTypes,\n} from \"./scopeflags\";\nimport type { Position } from \"./location\";\nimport type * as N from \"../types\";\nimport { Errors } from \"../parse-error\";\nimport type Tokenizer from \"../tokenizer\";\n\n// Start an AST node, attaching a start offset.\nexport class Scope {\n declare flags: ScopeFlags;\n // A set of var-declared names in the current lexical scope\n var: Set = new Set();\n // A set of lexically-declared names in the current lexical scope\n lexical: Set = new Set();\n // A set of lexically-declared FunctionDeclaration names in the current lexical scope\n functions: Set = new Set();\n\n constructor(flags: ScopeFlags) {\n this.flags = flags;\n }\n}\n\n// The functions in this module keep track of declared variables in the\n// current scope in order to detect duplicate variable names.\nexport default class ScopeHandler {\n parser: Tokenizer;\n scopeStack: Array = [];\n inModule: boolean;\n undefinedExports: Map = new Map();\n\n constructor(parser: Tokenizer, inModule: boolean) {\n this.parser = parser;\n this.inModule = inModule;\n }\n\n get inTopLevel() {\n return (this.currentScope().flags & SCOPE_PROGRAM) > 0;\n }\n get inFunction() {\n return (this.currentVarScopeFlags() & SCOPE_FUNCTION) > 0;\n }\n get allowSuper() {\n return (this.currentThisScopeFlags() & SCOPE_SUPER) > 0;\n }\n get allowDirectSuper() {\n return (this.currentThisScopeFlags() & SCOPE_DIRECT_SUPER) > 0;\n }\n get inClass() {\n return (this.currentThisScopeFlags() & SCOPE_CLASS) > 0;\n }\n get inClassAndNotInNonArrowFunction() {\n const flags = this.currentThisScopeFlags();\n return (flags & SCOPE_CLASS) > 0 && (flags & SCOPE_FUNCTION) === 0;\n }\n get inStaticBlock() {\n for (let i = this.scopeStack.length - 1; ; i--) {\n const { flags } = this.scopeStack[i];\n if (flags & SCOPE_STATIC_BLOCK) {\n return true;\n }\n if (flags & (SCOPE_VAR | SCOPE_CLASS)) {\n // function body, module body, class property initializers\n return false;\n }\n }\n }\n get inNonArrowFunction() {\n return (this.currentThisScopeFlags() & SCOPE_FUNCTION) > 0;\n }\n get treatFunctionsAsVar() {\n return this.treatFunctionsAsVarInScope(this.currentScope());\n }\n\n createScope(flags: ScopeFlags): Scope {\n return new Scope(flags);\n }\n\n enter(flags: ScopeFlags) {\n /*:: +createScope: (flags: ScopeFlags) => IScope; */\n // @ts-expect-error This method will be overwritten by subclasses\n this.scopeStack.push(this.createScope(flags));\n }\n\n exit(): ScopeFlags {\n const scope = this.scopeStack.pop();\n return scope.flags;\n }\n\n // The spec says:\n // > At the top level of a function, or script, function declarations are\n // > treated like var declarations rather than like lexical declarations.\n treatFunctionsAsVarInScope(scope: IScope): boolean {\n return !!(\n scope.flags & (SCOPE_FUNCTION | SCOPE_STATIC_BLOCK) ||\n (!this.parser.inModule && scope.flags & SCOPE_PROGRAM)\n );\n }\n\n declareName(name: string, bindingType: BindingTypes, loc: Position) {\n let scope = this.currentScope();\n if (bindingType & BIND_SCOPE_LEXICAL || bindingType & BIND_SCOPE_FUNCTION) {\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n\n if (bindingType & BIND_SCOPE_FUNCTION) {\n scope.functions.add(name);\n } else {\n scope.lexical.add(name);\n }\n\n if (bindingType & BIND_SCOPE_LEXICAL) {\n this.maybeExportDefined(scope, name);\n }\n } else if (bindingType & BIND_SCOPE_VAR) {\n for (let i = this.scopeStack.length - 1; i >= 0; --i) {\n scope = this.scopeStack[i];\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n scope.var.add(name);\n this.maybeExportDefined(scope, name);\n\n if (scope.flags & SCOPE_VAR) break;\n }\n }\n if (this.parser.inModule && scope.flags & SCOPE_PROGRAM) {\n this.undefinedExports.delete(name);\n }\n }\n\n maybeExportDefined(scope: IScope, name: string) {\n if (this.parser.inModule && scope.flags & SCOPE_PROGRAM) {\n this.undefinedExports.delete(name);\n }\n }\n\n checkRedeclarationInScope(\n scope: IScope,\n name: string,\n bindingType: BindingTypes,\n loc: Position,\n ) {\n if (this.isRedeclaredInScope(scope, name, bindingType)) {\n this.parser.raise(Errors.VarRedeclaration, {\n at: loc,\n identifierName: name,\n });\n }\n }\n\n isRedeclaredInScope(\n scope: IScope,\n name: string,\n bindingType: BindingTypes,\n ): boolean {\n if (!(bindingType & BIND_KIND_VALUE)) return false;\n\n if (bindingType & BIND_SCOPE_LEXICAL) {\n return (\n scope.lexical.has(name) ||\n scope.functions.has(name) ||\n scope.var.has(name)\n );\n }\n\n if (bindingType & BIND_SCOPE_FUNCTION) {\n return (\n scope.lexical.has(name) ||\n (!this.treatFunctionsAsVarInScope(scope) && scope.var.has(name))\n );\n }\n\n return (\n (scope.lexical.has(name) &&\n !(\n scope.flags & SCOPE_SIMPLE_CATCH &&\n scope.lexical.values().next().value === name\n )) ||\n (!this.treatFunctionsAsVarInScope(scope) && scope.functions.has(name))\n );\n }\n\n checkLocalExport(id: N.Identifier) {\n const { name } = id;\n const topLevelScope = this.scopeStack[0];\n if (\n !topLevelScope.lexical.has(name) &&\n !topLevelScope.var.has(name) &&\n // In strict mode, scope.functions will always be empty.\n // Modules are strict by default, but the `scriptMode` option\n // can overwrite this behavior.\n !topLevelScope.functions.has(name)\n ) {\n this.undefinedExports.set(name, id.loc.start);\n }\n }\n\n currentScope(): IScope {\n return this.scopeStack[this.scopeStack.length - 1];\n }\n\n currentVarScopeFlags(): ScopeFlags {\n for (let i = this.scopeStack.length - 1; ; i--) {\n const { flags } = this.scopeStack[i];\n if (flags & SCOPE_VAR) {\n return flags;\n }\n }\n }\n\n // Could be useful for `arguments`, `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\n currentThisScopeFlags(): ScopeFlags {\n for (let i = this.scopeStack.length - 1; ; i--) {\n const { flags } = this.scopeStack[i];\n if (flags & (SCOPE_VAR | SCOPE_CLASS) && !(flags & SCOPE_ARROW)) {\n return flags;\n }\n }\n }\n}\n","import type { Position } from \"../../util/location\";\nimport ScopeHandler, { Scope } from \"../../util/scope\";\nimport {\n BIND_FLAGS_FLOW_DECLARE_FN,\n type ScopeFlags,\n type BindingTypes,\n} from \"../../util/scopeflags\";\nimport type * as N from \"../../types\";\n\n// Reference implementation: https://github.com/facebook/flow/blob/23aeb2a2ef6eb4241ce178fde5d8f17c5f747fb5/src/typing/env.ml#L536-L584\nclass FlowScope extends Scope {\n // declare function foo(): type;\n declareFunctions: Set = new Set();\n}\n\nexport default class FlowScopeHandler extends ScopeHandler {\n createScope(flags: ScopeFlags): FlowScope {\n return new FlowScope(flags);\n }\n\n declareName(name: string, bindingType: BindingTypes, loc: Position) {\n const scope = this.currentScope();\n if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) {\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n this.maybeExportDefined(scope, name);\n scope.declareFunctions.add(name);\n return;\n }\n\n super.declareName(name, bindingType, loc);\n }\n\n isRedeclaredInScope(\n scope: FlowScope,\n name: string,\n bindingType: BindingTypes,\n ): boolean {\n if (super.isRedeclaredInScope(scope, name, bindingType)) return true;\n\n if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) {\n return (\n !scope.declareFunctions.has(name) &&\n (scope.lexical.has(name) || scope.functions.has(name))\n );\n }\n\n return false;\n }\n\n checkLocalExport(id: N.Identifier) {\n if (!this.scopeStack[0].declareFunctions.has(id.name)) {\n super.checkLocalExport(id);\n }\n }\n}\n","import type { Options } from \"../options\";\nimport type State from \"../tokenizer/state\";\nimport type { PluginsMap } from \"./index\";\nimport type ScopeHandler from \"../util/scope\";\nimport type ExpressionScopeHandler from \"../util/expression-scope\";\nimport type ClassScopeHandler from \"../util/class-scope\";\nimport type ProductionParameterHandler from \"../util/production-parameter\";\nimport type {\n ParserPluginWithOptions,\n PluginConfig,\n PluginOptions,\n} from \"../typings\";\n\nexport default class BaseParser {\n // Properties set by constructor in index.js\n declare options: Options;\n declare inModule: boolean;\n declare scope: ScopeHandler;\n declare classScope: ClassScopeHandler;\n declare prodParam: ProductionParameterHandler;\n declare expressionScope: ExpressionScopeHandler;\n declare plugins: PluginsMap;\n declare filename: string | undefined | null;\n // Names of exports store. `default` is stored as a name for both\n // `export default foo;` and `export { foo as default };`.\n declare exportedIdentifiers: Set;\n sawUnambiguousESM: boolean = false;\n ambiguousScriptDifferentAst: boolean = false;\n\n // Initialized by Tokenizer\n declare state: State;\n // input and length are not in state as they are constant and we do\n // not want to ever copy them, which happens if state gets cloned\n declare input: string;\n declare length: number;\n\n // This method accepts either a string (plugin name) or an array pair\n // (plugin name and options object). If an options object is given,\n // then each value is non-recursively checked for identity with that\n // plugin’s actual option value.\n hasPlugin(pluginConfig: PluginConfig): boolean {\n if (typeof pluginConfig === \"string\") {\n return this.plugins.has(pluginConfig);\n } else {\n const [pluginName, pluginOptions] = pluginConfig;\n if (!this.hasPlugin(pluginName)) {\n return false;\n }\n const actualOptions = this.plugins.get(pluginName);\n for (const key of Object.keys(\n pluginOptions,\n ) as (keyof typeof pluginOptions)[]) {\n if (actualOptions?.[key] !== pluginOptions[key]) {\n return false;\n }\n }\n return true;\n }\n }\n\n getPluginOption<\n PluginName extends ParserPluginWithOptions[0],\n OptionName extends keyof PluginOptions,\n >(plugin: PluginName, name: OptionName) {\n return (this.plugins.get(plugin) as null | PluginOptions)?.[\n name\n ];\n }\n}\n","/*:: declare var invariant; */\n\nimport BaseParser from \"./base\";\nimport type { Comment, Node } from \"../types\";\nimport * as charCodes from \"charcodes\";\nimport type { Undone } from \"./node\";\n\n/**\n * A whitespace token containing comments\n */\nexport type CommentWhitespace = {\n /**\n * the start of the whitespace token.\n */\n start: number;\n /**\n * the end of the whitespace token.\n */\n end: number;\n /**\n * the containing comments\n */\n comments: Array;\n /**\n * the immediately preceding AST node of the whitespace token\n */\n leadingNode: Node | null;\n /**\n * the immediately following AST node of the whitespace token\n */\n trailingNode: Node | null;\n /**\n * the innermost AST node containing the whitespace with minimal size (|end - start|)\n */\n containingNode: Node | null;\n};\n\n/**\n * Merge comments with node's trailingComments or assign comments to be\n * trailingComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nfunction setTrailingComments(node: Undone, comments: Array) {\n if (node.trailingComments === undefined) {\n node.trailingComments = comments;\n } else {\n node.trailingComments.unshift(...comments);\n }\n}\n\n/**\n * Merge comments with node's leadingComments or assign comments to be\n * leadingComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nfunction setLeadingComments(node: Undone, comments: Array) {\n if (node.leadingComments === undefined) {\n node.leadingComments = comments;\n } else {\n node.leadingComments.unshift(...comments);\n }\n}\n\n/**\n * Merge comments with node's innerComments or assign comments to be\n * innerComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nexport function setInnerComments(\n node: Undone,\n comments?: Array,\n) {\n if (node.innerComments === undefined) {\n node.innerComments = comments;\n } else {\n node.innerComments.unshift(...comments);\n }\n}\n\n/**\n * Given node and elements array, if elements has non-null element,\n * merge comments to its trailingComments, otherwise merge comments\n * to node's innerComments\n */\nfunction adjustInnerComments(\n node: Undone,\n elements: Array,\n commentWS: CommentWhitespace,\n) {\n let lastElement = null;\n let i = elements.length;\n while (lastElement === null && i > 0) {\n lastElement = elements[--i];\n }\n if (lastElement === null || lastElement.start > commentWS.start) {\n setInnerComments(node, commentWS.comments);\n } else {\n setTrailingComments(lastElement, commentWS.comments);\n }\n}\n\nexport default class CommentsParser extends BaseParser {\n addComment(comment: Comment): void {\n if (this.filename) comment.loc.filename = this.filename;\n this.state.comments.push(comment);\n }\n\n /**\n * Given a newly created AST node _n_, attach _n_ to a comment whitespace _w_ if applicable\n * {@see {@link CommentWhitespace}}\n */\n processComment(node: Node): void {\n const { commentStack } = this.state;\n const commentStackLength = commentStack.length;\n if (commentStackLength === 0) return;\n let i = commentStackLength - 1;\n const lastCommentWS = commentStack[i];\n\n if (lastCommentWS.start === node.end) {\n lastCommentWS.leadingNode = node;\n i--;\n }\n\n const { start: nodeStart } = node;\n // invariant: for all 0 <= j <= i, let c = commentStack[j], c must satisfy c.end < node.end\n for (; i >= 0; i--) {\n const commentWS = commentStack[i];\n const commentEnd = commentWS.end;\n if (commentEnd > nodeStart) {\n // by definition of commentWhiteSpace, this implies commentWS.start > nodeStart\n // so node can be a containingNode candidate. At this time we can finalize the comment\n // whitespace, because\n // 1) its leadingNode or trailingNode, if exists, will not change\n // 2) its containingNode have been assigned and will not change because it is the\n // innermost minimal-sized AST node\n commentWS.containingNode = node;\n this.finalizeComment(commentWS);\n commentStack.splice(i, 1);\n } else {\n if (commentEnd === nodeStart) {\n commentWS.trailingNode = node;\n }\n // stop the loop when commentEnd <= nodeStart\n break;\n }\n }\n }\n\n /**\n * Assign the comments of comment whitespaces to related AST nodes.\n * Also adjust innerComments following trailing comma.\n */\n finalizeComment(commentWS: CommentWhitespace) {\n const { comments } = commentWS;\n if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) {\n if (commentWS.leadingNode !== null) {\n setTrailingComments(commentWS.leadingNode, comments);\n }\n if (commentWS.trailingNode !== null) {\n setLeadingComments(commentWS.trailingNode, comments);\n }\n } else {\n /*:: invariant(commentWS.containingNode !== null) */\n const { containingNode: node, start: commentStart } = commentWS;\n if (this.input.charCodeAt(commentStart - 1) === charCodes.comma) {\n // If a commentWhitespace follows a comma and the containingNode allows\n // list structures with trailing comma, merge it to the trailingComment\n // of the last non-null list element\n switch (node.type) {\n case \"ObjectExpression\":\n case \"ObjectPattern\":\n case \"RecordExpression\":\n adjustInnerComments(node, node.properties, commentWS);\n break;\n case \"CallExpression\":\n case \"OptionalCallExpression\":\n adjustInnerComments(node, node.arguments, commentWS);\n break;\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"ArrowFunctionExpression\":\n case \"ObjectMethod\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n adjustInnerComments(node, node.params, commentWS);\n break;\n case \"ArrayExpression\":\n case \"ArrayPattern\":\n case \"TupleExpression\":\n adjustInnerComments(node, node.elements, commentWS);\n break;\n case \"ExportNamedDeclaration\":\n case \"ImportDeclaration\":\n adjustInnerComments(node, node.specifiers, commentWS);\n break;\n default: {\n setInnerComments(node, comments);\n }\n }\n } else {\n setInnerComments(node, comments);\n }\n }\n }\n\n /**\n * Drains remaining commentStack and applies finalizeComment\n * to each comment whitespace. Used only in parseExpression\n * where the top level AST node is _not_ Program\n * {@see {@link CommentsParser#finalizeComment}}\n */\n finalizeRemainingComments() {\n const { commentStack } = this.state;\n for (let i = commentStack.length - 1; i >= 0; i--) {\n this.finalizeComment(commentStack[i]);\n }\n this.state.commentStack = [];\n }\n\n /* eslint-disable no-irregular-whitespace */\n /**\n * Reset previous node trailing comments. Used in object / class\n * property parsing. We parse `async`, `static`, `set` and `get`\n * as an identifier but may reinterpret it into an async/static/accessor\n * method later. In this case the identifier is not part of the AST and we\n * should sync the knowledge to commentStacks\n *\n * For example, when parsing\n * ```\n * async /* 1 *​/ function f() {}\n * ```\n * the comment whitespace `/* 1 *​/` has leading node Identifier(async). When\n * we see the function token, we create a Function node and mark `/* 1 *​/` as\n * inner comments. So `/* 1 *​/` should be detached from the Identifier node.\n *\n * @param node the last finished AST node _before_ current token\n */\n /* eslint-enable no-irregular-whitespace */\n resetPreviousNodeTrailingComments(node: Node) {\n const { commentStack } = this.state;\n const { length } = commentStack;\n if (length === 0) return;\n const commentWS = commentStack[length - 1];\n if (commentWS.leadingNode === node) {\n commentWS.leadingNode = null;\n }\n }\n\n /**\n * Attach a node to the comment whitespaces right before/after\n * the given range.\n *\n * This is used to properly attach comments around parenthesized\n * expressions as leading/trailing comments of the inner expression.\n */\n takeSurroundingComments(node: Node, start: number, end: number) {\n const { commentStack } = this.state;\n const commentStackLength = commentStack.length;\n if (commentStackLength === 0) return;\n let i = commentStackLength - 1;\n\n for (; i >= 0; i--) {\n const commentWS = commentStack[i];\n const commentEnd = commentWS.end;\n const commentStart = commentWS.start;\n\n if (commentStart === end) {\n commentWS.leadingNode = node;\n } else if (commentEnd === start) {\n commentWS.trailingNode = node;\n } else if (commentEnd < start) {\n break;\n }\n }\n }\n}\n","import * as charCodes from \"charcodes\";\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\nexport const lineBreak = /\\r\\n?|[\\n\\u2028\\u2029]/;\nexport const lineBreakG = new RegExp(lineBreak.source, \"g\");\n\n// https://tc39.github.io/ecma262/#sec-line-terminators\nexport function isNewLine(code: number): boolean {\n switch (code) {\n case charCodes.lineFeed:\n case charCodes.carriageReturn:\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n return true;\n\n default:\n return false;\n }\n}\n\nexport const skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nexport const skipWhiteSpaceInLine =\n /(?:[^\\S\\n\\r\\u2028\\u2029]|\\/\\/.*|\\/\\*.*?\\*\\/)*/y;\n\n// Skip whitespace and single-line comments, including /* no newline here */.\n// After this RegExp matches, its lastIndex points to a line terminator, or\n// the start of multi-line comment (which is effectively a line terminator),\n// or the end of string.\nexport const skipWhiteSpaceToLineBreak = new RegExp(\n // Unfortunately JS doesn't support Perl's atomic /(?>pattern)/ or\n // possessive quantifiers, so we use a trick to prevent backtracking\n // when the look-ahead for line terminator fails.\n \"(?=(\" +\n // Capture the whitespace and comments that should be skipped inside\n // a look-ahead assertion, and then re-match the group as a unit.\n skipWhiteSpaceInLine.source +\n \"))\\\\1\" +\n // Look-ahead for either line terminator, start of multi-line comment,\n // or end of string.\n /(?=[\\n\\r\\u2028\\u2029]|\\/\\*(?!.*?\\*\\/)|$)/.source,\n \"y\", // sticky\n);\n\n// https://tc39.github.io/ecma262/#sec-white-space\nexport function isWhitespace(code: number): boolean {\n switch (code) {\n case 0x0009: // CHARACTER TABULATION\n case 0x000b: // LINE TABULATION\n case 0x000c: // FORM FEED\n case charCodes.space:\n case charCodes.nonBreakingSpace:\n case charCodes.oghamSpaceMark:\n case 0x2000: // EN QUAD\n case 0x2001: // EM QUAD\n case 0x2002: // EN SPACE\n case 0x2003: // EM SPACE\n case 0x2004: // THREE-PER-EM SPACE\n case 0x2005: // FOUR-PER-EM SPACE\n case 0x2006: // SIX-PER-EM SPACE\n case 0x2007: // FIGURE SPACE\n case 0x2008: // PUNCTUATION SPACE\n case 0x2009: // THIN SPACE\n case 0x200a: // HAIR SPACE\n case 0x202f: // NARROW NO-BREAK SPACE\n case 0x205f: // MEDIUM MATHEMATICAL SPACE\n case 0x3000: // IDEOGRAPHIC SPACE\n case 0xfeff: // ZERO WIDTH NO-BREAK SPACE\n return true;\n\n default:\n return false;\n }\n}\n","import type { Options } from \"../options\";\nimport type * as N from \"../types\";\nimport type { CommentWhitespace } from \"../parser/comments\";\nimport { Position } from \"../util/location\";\n\nimport { types as ct, type TokContext } from \"./context\";\nimport { tt, type TokenType } from \"./types\";\nimport type { Errors } from \"../parse-error\";\nimport { type ParseError } from \"../parse-error\";\n\nexport type DeferredStrictError =\n | typeof Errors.StrictNumericEscape\n | typeof Errors.StrictOctalLiteral;\n\ntype TopicContextState = {\n // When a topic binding has been currently established,\n // then this is 1. Otherwise, it is 0. This is forwards compatible\n // with a future plugin for multiple lexical topics.\n maxNumOfResolvableTopics: number;\n // When a topic binding has been currently established, and if that binding\n // has been used as a topic reference `#`, then this is 0. Otherwise, it is\n // `null`. This is forwards compatible with a future plugin for multiple\n // lexical topics.\n maxTopicIndex: null | 0;\n};\n\nexport default class State {\n strict: boolean;\n curLine: number;\n lineStart: number;\n\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n startLoc: Position;\n endLoc: Position;\n\n init({ strictMode, sourceType, startLine, startColumn }: Options): void {\n this.strict =\n strictMode === false\n ? false\n : strictMode === true\n ? true\n : sourceType === \"module\";\n\n this.curLine = startLine;\n this.lineStart = -startColumn;\n this.startLoc = this.endLoc = new Position(startLine, startColumn, 0);\n }\n\n errors: ParseError[] = [];\n\n // Used to signify the start of a potential arrow function\n potentialArrowAt: number = -1;\n\n // Used to signify the start of an expression which looks like a\n // typed arrow function, but it isn't\n // e.g. a ? (b) : c => d\n // ^\n noArrowAt: number[] = [];\n\n // Used to signify the start of an expression whose params, if it looks like\n // an arrow function, shouldn't be converted to assignable nodes.\n // This is used to defer the validation of typed arrow functions inside\n // conditional expressions.\n // e.g. a ? (b) : c => d\n // ^\n noArrowParamsConversionAt: number[] = [];\n\n // Flags to track\n maybeInArrowParameters: boolean = false;\n inType: boolean = false;\n noAnonFunctionType: boolean = false;\n hasFlowComment: boolean = false;\n isAmbientContext: boolean = false;\n inAbstractClass: boolean = false;\n inDisallowConditionalTypesContext: boolean = false;\n\n // For the Hack-style pipelines plugin\n topicContext: TopicContextState = {\n maxNumOfResolvableTopics: 0,\n maxTopicIndex: null,\n };\n\n // For the F#-style pipelines plugin\n soloAwait: boolean = false;\n inFSharpPipelineDirectBody: boolean = false;\n\n // Labels in scope.\n labels: Array<{\n kind: \"loop\" | \"switch\" | undefined | null;\n name?: string | null;\n statementStart?: number;\n }> = [];\n\n // Comment store for Program.comments\n comments: Array = [];\n\n // Comment attachment store\n commentStack: Array = [];\n\n // The current position of the tokenizer in the input.\n pos: number = 0;\n\n // Properties of the current token:\n // Its type\n type: TokenType = tt.eof;\n\n // For tokens that include more information than their type, the value\n value: any = null;\n\n // Its start and end offset\n start: number = 0;\n end: number = 0;\n\n // Position information for the previous token\n // this is initialized when generating the second token.\n lastTokEndLoc: Position = null;\n // this is initialized when generating the second token.\n lastTokStartLoc: Position = null;\n lastTokStart: number = 0;\n\n // The context stack is used to track whether the apostrophe \"`\" starts\n // or ends a string template\n context: Array = [ct.brace];\n // Used to track whether a JSX element is allowed to form\n canStartJSXElement: boolean = true;\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n containsEsc: boolean = false;\n\n // Used to track invalid escape sequences in template literals,\n // that must be reported if the template is not tagged.\n firstInvalidTemplateEscapePos: null | Position = null;\n\n // This property is used to track the following errors\n // - StrictNumericEscape\n // - StrictOctalLiteral\n //\n // in a literal that occurs prior to/immediately after a \"use strict\" directive.\n\n // todo(JLHwung): set strictErrors to null and avoid recording string errors\n // after a non-directive is parsed\n strictErrors: Map = new Map();\n\n // Tokens length in token store\n tokensLength: number = 0;\n\n curPosition(): Position {\n return new Position(this.curLine, this.pos - this.lineStart, this.pos);\n }\n\n clone(skipArrays?: boolean): State {\n const state = new State();\n const keys = Object.keys(this) as (keyof State)[];\n for (let i = 0, length = keys.length; i < length; i++) {\n const key = keys[i];\n let val = this[key];\n\n if (!skipArrays && Array.isArray(val)) {\n val = val.slice();\n }\n\n // @ts-expect-error val must conform to S[key]\n state[key] = val;\n }\n\n return state;\n }\n}\n\nexport type LookaheadState = {\n pos: number;\n value: any;\n type: TokenType;\n start: number;\n end: number;\n context: TokContext[];\n startLoc: Position;\n lastTokEndLoc: Position;\n curLine: number;\n lineStart: number;\n curPosition: () => Position;\n /* Used only in readToken_mult_modulo */\n inType: boolean;\n // These boolean properties are not initialized in createLookaheadState()\n // instead they will only be set by the tokenizer\n containsEsc?: boolean;\n};\n","import * as charCodes from \"charcodes\";\n\n// The following character codes are forbidden from being\n// an immediate sibling of NumericLiteralSeparator _\nconst forbiddenNumericSeparatorSiblings = {\n decBinOct: new Set([\n charCodes.dot,\n charCodes.uppercaseB,\n charCodes.uppercaseE,\n charCodes.uppercaseO,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseB,\n charCodes.lowercaseE,\n charCodes.lowercaseO,\n ]),\n hex: new Set([\n charCodes.dot,\n charCodes.uppercaseX,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseX,\n ]),\n};\n\nconst isAllowedNumericSeparatorSibling = {\n // 0 - 1\n bin: (ch: number) => ch === charCodes.digit0 || ch === charCodes.digit1,\n\n // 0 - 7\n oct: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit7,\n\n // 0 - 9\n dec: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit9,\n\n // 0 - 9, A - F, a - f,\n hex: (ch: number) =>\n (ch >= charCodes.digit0 && ch <= charCodes.digit9) ||\n (ch >= charCodes.uppercaseA && ch <= charCodes.uppercaseF) ||\n (ch >= charCodes.lowercaseA && ch <= charCodes.lowercaseF),\n};\n\nexport type StringContentsErrorHandlers = EscapedCharErrorHandlers & {\n unterminated(\n initialPos: number,\n initialLineStart: number,\n initialCurLine: number,\n ): void;\n};\n\nexport function readStringContents(\n type: \"single\" | \"double\" | \"template\",\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n errors: StringContentsErrorHandlers,\n) {\n const initialPos = pos;\n const initialLineStart = lineStart;\n const initialCurLine = curLine;\n\n let out = \"\";\n let firstInvalidLoc = null;\n let chunkStart = pos;\n const { length } = input;\n for (;;) {\n if (pos >= length) {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n out += input.slice(chunkStart, pos);\n break;\n }\n const ch = input.charCodeAt(pos);\n if (isStringEnd(type, ch, input, pos)) {\n out += input.slice(chunkStart, pos);\n break;\n }\n if (ch === charCodes.backslash) {\n out += input.slice(chunkStart, pos);\n const res = readEscapedChar(\n input,\n pos,\n lineStart,\n curLine,\n type === \"template\",\n errors,\n );\n if (res.ch === null && !firstInvalidLoc) {\n firstInvalidLoc = { pos, lineStart, curLine };\n } else {\n out += res.ch;\n }\n ({ pos, lineStart, curLine } = res);\n chunkStart = pos;\n } else if (\n ch === charCodes.lineSeparator ||\n ch === charCodes.paragraphSeparator\n ) {\n ++pos;\n ++curLine;\n lineStart = pos;\n } else if (ch === charCodes.lineFeed || ch === charCodes.carriageReturn) {\n if (type === \"template\") {\n out += input.slice(chunkStart, pos) + \"\\n\";\n ++pos;\n if (\n ch === charCodes.carriageReturn &&\n input.charCodeAt(pos) === charCodes.lineFeed\n ) {\n ++pos;\n }\n ++curLine;\n chunkStart = lineStart = pos;\n } else {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n }\n } else {\n ++pos;\n }\n }\n return {\n pos,\n str: out,\n firstInvalidLoc,\n lineStart,\n curLine,\n\n // TODO(Babel 8): This is only needed for backwards compatibility,\n // we can remove it.\n containsInvalid: !!firstInvalidLoc,\n };\n}\n\nfunction isStringEnd(\n type: \"single\" | \"double\" | \"template\",\n ch: number,\n input: string,\n pos: number,\n) {\n if (type === \"template\") {\n return (\n ch === charCodes.graveAccent ||\n (ch === charCodes.dollarSign &&\n input.charCodeAt(pos + 1) === charCodes.leftCurlyBrace)\n );\n }\n return (\n ch === (type === \"double\" ? charCodes.quotationMark : charCodes.apostrophe)\n );\n}\n\ntype EscapedCharErrorHandlers = HexCharErrorHandlers &\n CodePointErrorHandlers & {\n strictNumericEscape(pos: number, lineStart: number, curLine: number): void;\n };\n\nfunction readEscapedChar(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n inTemplate: boolean,\n errors: EscapedCharErrorHandlers,\n) {\n const throwOnInvalid = !inTemplate;\n pos++; // skip '\\'\n\n const res = (ch: string | null) => ({ pos, ch, lineStart, curLine });\n\n const ch = input.charCodeAt(pos++);\n switch (ch) {\n case charCodes.lowercaseN:\n return res(\"\\n\");\n case charCodes.lowercaseR:\n return res(\"\\r\");\n case charCodes.lowercaseX: {\n let code;\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n 2,\n false,\n throwOnInvalid,\n errors,\n ));\n return res(code === null ? null : String.fromCharCode(code));\n }\n case charCodes.lowercaseU: {\n let code;\n ({ code, pos } = readCodePoint(\n input,\n pos,\n lineStart,\n curLine,\n throwOnInvalid,\n errors,\n ));\n return res(code === null ? null : String.fromCodePoint(code));\n }\n case charCodes.lowercaseT:\n return res(\"\\t\");\n case charCodes.lowercaseB:\n return res(\"\\b\");\n case charCodes.lowercaseV:\n return res(\"\\u000b\");\n case charCodes.lowercaseF:\n return res(\"\\f\");\n case charCodes.carriageReturn:\n if (input.charCodeAt(pos) === charCodes.lineFeed) {\n ++pos;\n }\n // fall through\n case charCodes.lineFeed:\n lineStart = pos;\n ++curLine;\n // fall through\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n return res(\"\");\n case charCodes.digit8:\n case charCodes.digit9:\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(pos - 1, lineStart, curLine);\n }\n // fall through\n default:\n if (ch >= charCodes.digit0 && ch <= charCodes.digit7) {\n const startPos = pos - 1;\n const match = input.slice(startPos, pos + 2).match(/^[0-7]+/)!;\n\n let octalStr = match[0];\n\n let octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n pos += octalStr.length - 1;\n const next = input.charCodeAt(pos);\n if (\n octalStr !== \"0\" ||\n next === charCodes.digit8 ||\n next === charCodes.digit9\n ) {\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(startPos, lineStart, curLine);\n }\n }\n\n return res(String.fromCharCode(octal));\n }\n\n return res(String.fromCharCode(ch));\n }\n}\n\ntype HexCharErrorHandlers = IntErrorHandlers & {\n invalidEscapeSequence(pos: number, lineStart: number, curLine: number): void;\n};\n\n// Used to read character escape sequences ('\\x', '\\u').\nfunction readHexChar(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n len: number,\n forceLen: boolean,\n throwOnInvalid: boolean,\n errors: HexCharErrorHandlers,\n) {\n const initialPos = pos;\n let n;\n ({ n, pos } = readInt(\n input,\n pos,\n lineStart,\n curLine,\n 16,\n len,\n forceLen,\n false,\n errors,\n /* bailOnError */ !throwOnInvalid,\n ));\n if (n === null) {\n if (throwOnInvalid) {\n errors.invalidEscapeSequence(initialPos, lineStart, curLine);\n } else {\n pos = initialPos - 1;\n }\n }\n return { code: n, pos };\n}\n\nexport type IntErrorHandlers = {\n numericSeparatorInEscapeSequence(\n pos: number,\n lineStart: number,\n curLine: number,\n ): void;\n unexpectedNumericSeparator(\n pos: number,\n lineStart: number,\n curLine: number,\n ): void;\n // It can return \"true\" to indicate that the error was handled\n // and the int parsing should continue.\n invalidDigit(\n pos: number,\n lineStart: number,\n curLine: number,\n radix: number,\n ): boolean;\n};\n\nexport function readInt(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n radix: number,\n len: number | undefined,\n forceLen: boolean,\n allowNumSeparator: boolean | \"bail\",\n errors: IntErrorHandlers,\n bailOnError: boolean,\n) {\n const start = pos;\n const forbiddenSiblings =\n radix === 16\n ? forbiddenNumericSeparatorSiblings.hex\n : forbiddenNumericSeparatorSiblings.decBinOct;\n const isAllowedSibling =\n radix === 16\n ? isAllowedNumericSeparatorSibling.hex\n : radix === 10\n ? isAllowedNumericSeparatorSibling.dec\n : radix === 8\n ? isAllowedNumericSeparatorSibling.oct\n : isAllowedNumericSeparatorSibling.bin;\n\n let invalid = false;\n let total = 0;\n\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n const code = input.charCodeAt(pos);\n let val;\n\n if (code === charCodes.underscore && allowNumSeparator !== \"bail\") {\n const prev = input.charCodeAt(pos - 1);\n const next = input.charCodeAt(pos + 1);\n\n if (!allowNumSeparator) {\n if (bailOnError) return { n: null, pos };\n errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);\n } else if (\n Number.isNaN(next) ||\n !isAllowedSibling(next) ||\n forbiddenSiblings.has(prev) ||\n forbiddenSiblings.has(next)\n ) {\n if (bailOnError) return { n: null, pos };\n errors.unexpectedNumericSeparator(pos, lineStart, curLine);\n }\n\n // Ignore this _ character\n ++pos;\n continue;\n }\n\n if (code >= charCodes.lowercaseA) {\n val = code - charCodes.lowercaseA + charCodes.lineFeed;\n } else if (code >= charCodes.uppercaseA) {\n val = code - charCodes.uppercaseA + charCodes.lineFeed;\n } else if (charCodes.isDigit(code)) {\n val = code - charCodes.digit0; // 0-9\n } else {\n val = Infinity;\n }\n if (val >= radix) {\n // If we found a digit which is too big, errors.invalidDigit can return true to avoid\n // breaking the loop (this is used for error recovery).\n if (val <= 9 && bailOnError) {\n return { n: null, pos };\n } else if (\n val <= 9 &&\n errors.invalidDigit(pos, lineStart, curLine, radix)\n ) {\n val = 0;\n } else if (forceLen) {\n val = 0;\n invalid = true;\n } else {\n break;\n }\n }\n ++pos;\n total = total * radix + val;\n }\n if (pos === start || (len != null && pos - start !== len) || invalid) {\n return { n: null, pos };\n }\n\n return { n: total, pos };\n}\n\nexport type CodePointErrorHandlers = HexCharErrorHandlers & {\n invalidCodePoint(pos: number, lineStart: number, curLine: number): void;\n};\n\nexport function readCodePoint(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n throwOnInvalid: boolean,\n errors: CodePointErrorHandlers,\n) {\n const ch = input.charCodeAt(pos);\n let code;\n\n if (ch === charCodes.leftCurlyBrace) {\n ++pos;\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n input.indexOf(\"}\", pos) - pos,\n true,\n throwOnInvalid,\n errors,\n ));\n ++pos;\n if (code !== null && code > 0x10ffff) {\n if (throwOnInvalid) {\n errors.invalidCodePoint(pos, lineStart, curLine);\n } else {\n return { code: null, pos };\n }\n }\n } else {\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n 4,\n false,\n throwOnInvalid,\n errors,\n ));\n }\n return { code, pos };\n}\n","/*:: declare var invariant; */\n\nimport type { Options } from \"../options\";\nimport {\n Position,\n SourceLocation,\n createPositionWithColumnOffset,\n} from \"../util/location\";\nimport CommentsParser, { type CommentWhitespace } from \"../parser/comments\";\nimport type * as N from \"../types\";\nimport * as charCodes from \"charcodes\";\nimport { isIdentifierStart, isIdentifierChar } from \"../util/identifier\";\nimport {\n tokenIsKeyword,\n tokenLabelName,\n tt,\n keywords as keywordTypes,\n type TokenType,\n} from \"./types\";\nimport { type TokContext } from \"./context\";\nimport {\n Errors,\n type ParseError,\n type ParseErrorConstructor,\n type RaiseProperties,\n} from \"../parse-error\";\nimport {\n lineBreakG,\n isNewLine,\n isWhitespace,\n skipWhiteSpace,\n} from \"../util/whitespace\";\nimport State from \"./state\";\nimport type { LookaheadState, DeferredStrictError } from \"./state\";\n\nimport {\n readInt,\n readCodePoint,\n readStringContents,\n type IntErrorHandlers,\n type CodePointErrorHandlers,\n type StringContentsErrorHandlers,\n} from \"@babel/helper-string-parser\";\n\nimport type { Plugin } from \"../typings\";\n\nfunction buildPosition(pos: number, lineStart: number, curLine: number) {\n return new Position(curLine, pos - lineStart, pos);\n}\n\nconst VALID_REGEX_FLAGS = new Set([\n charCodes.lowercaseG,\n charCodes.lowercaseM,\n charCodes.lowercaseS,\n charCodes.lowercaseI,\n charCodes.lowercaseY,\n charCodes.lowercaseU,\n charCodes.lowercaseD,\n // This is only valid when using the regexpUnicodeSets plugin\n charCodes.lowercaseV,\n]);\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nexport class Token {\n constructor(state: State) {\n this.type = state.type;\n this.value = state.value;\n this.start = state.start;\n this.end = state.end;\n this.loc = new SourceLocation(state.startLoc, state.endLoc);\n }\n\n declare type: TokenType;\n declare value: any;\n declare start: number;\n declare end: number;\n declare loc: SourceLocation;\n}\n\n// ## Tokenizer\n\nexport default abstract class Tokenizer extends CommentsParser {\n isLookahead: boolean;\n\n // Token store.\n tokens: Array = [];\n\n constructor(options: Options, input: string) {\n super();\n this.state = new State();\n this.state.init(options);\n this.input = input;\n this.length = input.length;\n this.isLookahead = false;\n }\n\n pushToken(token: Token | N.Comment) {\n // Pop out invalid tokens trapped by try-catch parsing.\n // Those parsing branches are mainly created by typescript and flow plugins.\n this.tokens.length = this.state.tokensLength;\n this.tokens.push(token);\n ++this.state.tokensLength;\n }\n\n // Move to the next token\n\n next(): void {\n this.checkKeywordEscapes();\n if (this.options.tokens) {\n this.pushToken(new Token(this.state));\n }\n\n this.state.lastTokStart = this.state.start;\n this.state.lastTokEndLoc = this.state.endLoc;\n this.state.lastTokStartLoc = this.state.startLoc;\n this.nextToken();\n }\n\n eat(type: TokenType): boolean {\n if (this.match(type)) {\n this.next();\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Whether current token matches given type\n */\n match(type: TokenType): boolean {\n return this.state.type === type;\n }\n\n /**\n * Create a LookaheadState from current parser state\n */\n createLookaheadState(state: State): LookaheadState {\n return {\n pos: state.pos,\n value: null,\n type: state.type,\n start: state.start,\n end: state.end,\n context: [this.curContext()],\n inType: state.inType,\n startLoc: state.startLoc,\n lastTokEndLoc: state.lastTokEndLoc,\n curLine: state.curLine,\n lineStart: state.lineStart,\n curPosition: state.curPosition,\n };\n }\n\n /**\n * lookahead peeks the next token, skipping changes to token context and\n * comment stack. For performance it returns a limited LookaheadState\n * instead of full parser state.\n *\n * The { column, line } Loc info is not included in lookahead since such usage\n * is rare. Although it may return other location properties e.g. `curLine` and\n * `lineStart`, these properties are not listed in the LookaheadState interface\n * and thus the returned value is _NOT_ reliable.\n *\n * The tokenizer should make best efforts to avoid using any parser state\n * other than those defined in LookaheadState\n */\n lookahead(): LookaheadState {\n const old = this.state;\n // @ts-expect-error For performance we use a simplified tokenizer state structure\n this.state = this.createLookaheadState(old);\n\n this.isLookahead = true;\n this.nextToken();\n this.isLookahead = false;\n\n const curr = this.state;\n this.state = old;\n return curr;\n }\n\n nextTokenStart(): number {\n return this.nextTokenStartSince(this.state.pos);\n }\n\n nextTokenStartSince(pos: number): number {\n skipWhiteSpace.lastIndex = pos;\n return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos;\n }\n\n lookaheadCharCode(): number {\n return this.input.charCodeAt(this.nextTokenStart());\n }\n\n codePointAtPos(pos: number): number {\n // The implementation is based on\n // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n // since `input` is mostly ASCII, an inlined `charCodeAt` wins here\n let cp = this.input.charCodeAt(pos);\n if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) {\n const trail = this.input.charCodeAt(pos);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n return cp;\n }\n\n // Toggle strict mode. Re-reads the next number or string to please\n // pedantic tests (`\"use strict\"; 010;` should fail).\n\n setStrict(strict: boolean): void {\n this.state.strict = strict;\n if (strict) {\n // Throw an error for any string decimal escape found before/immediately\n // after a \"use strict\" directive. Strict mode will be set at parse\n // time for any literals that occur after the next node of the strict\n // directive.\n this.state.strictErrors.forEach(([toParseError, at]) =>\n this.raise(toParseError, { at }),\n );\n this.state.strictErrors.clear();\n }\n }\n\n curContext(): TokContext {\n return this.state.context[this.state.context.length - 1];\n }\n\n // Read a single token, updating the parser object's token-related\n // properties.\n\n nextToken(): void {\n this.skipSpace();\n this.state.start = this.state.pos;\n if (!this.isLookahead) this.state.startLoc = this.state.curPosition();\n if (this.state.pos >= this.length) {\n this.finishToken(tt.eof);\n return;\n }\n\n this.getTokenFromCode(this.codePointAtPos(this.state.pos));\n }\n\n // Skips a block comment, whose end is marked by commentEnd.\n // *-/ is used by the Flow plugin, when parsing block comments nested\n // inside Flow comments.\n skipBlockComment(commentEnd: \"*/\" | \"*-/\"): N.CommentBlock | undefined {\n let startLoc;\n if (!this.isLookahead) startLoc = this.state.curPosition();\n const start = this.state.pos;\n const end = this.input.indexOf(commentEnd, start + 2);\n if (end === -1) {\n // We have to call this again here because startLoc may not be set...\n // This seems to be for performance reasons:\n // https://github.com/babel/babel/commit/acf2a10899f696a8aaf34df78bf9725b5ea7f2da\n throw this.raise(Errors.UnterminatedComment, {\n at: this.state.curPosition(),\n });\n }\n\n this.state.pos = end + commentEnd.length;\n lineBreakG.lastIndex = start + 2;\n while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) {\n ++this.state.curLine;\n this.state.lineStart = lineBreakG.lastIndex;\n }\n\n // If we are doing a lookahead right now we need to advance the position (above code)\n // but we do not want to push the comment to the state.\n if (this.isLookahead) return;\n /*:: invariant(startLoc) */\n\n const comment: N.CommentBlock = {\n type: \"CommentBlock\",\n value: this.input.slice(start + 2, end),\n start,\n end: end + commentEnd.length,\n loc: new SourceLocation(startLoc, this.state.curPosition()),\n };\n if (this.options.tokens) this.pushToken(comment);\n return comment;\n }\n\n skipLineComment(startSkip: number): N.CommentLine | undefined {\n const start = this.state.pos;\n let startLoc;\n if (!this.isLookahead) startLoc = this.state.curPosition();\n let ch = this.input.charCodeAt((this.state.pos += startSkip));\n if (this.state.pos < this.length) {\n while (!isNewLine(ch) && ++this.state.pos < this.length) {\n ch = this.input.charCodeAt(this.state.pos);\n }\n }\n\n // If we are doing a lookahead right now we need to advance the position (above code)\n // but we do not want to push the comment to the state.\n if (this.isLookahead) return;\n /*:: invariant(startLoc) */\n\n const end = this.state.pos;\n const value = this.input.slice(start + startSkip, end);\n\n const comment: N.CommentLine = {\n type: \"CommentLine\",\n value,\n start,\n end,\n loc: new SourceLocation(startLoc, this.state.curPosition()),\n };\n if (this.options.tokens) this.pushToken(comment);\n return comment;\n }\n\n // Called at the start of the parse and after every token. Skips\n // whitespace and comments, and.\n\n skipSpace(): void {\n const spaceStart = this.state.pos;\n const comments = [];\n loop: while (this.state.pos < this.length) {\n const ch = this.input.charCodeAt(this.state.pos);\n switch (ch) {\n case charCodes.space:\n case charCodes.nonBreakingSpace:\n case charCodes.tab:\n ++this.state.pos;\n break;\n case charCodes.carriageReturn:\n if (\n this.input.charCodeAt(this.state.pos + 1) === charCodes.lineFeed\n ) {\n ++this.state.pos;\n }\n // fall through\n case charCodes.lineFeed:\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n ++this.state.pos;\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n break;\n\n case charCodes.slash:\n switch (this.input.charCodeAt(this.state.pos + 1)) {\n case charCodes.asterisk: {\n const comment = this.skipBlockComment(\"*/\");\n if (comment !== undefined) {\n this.addComment(comment);\n if (this.options.attachComment) comments.push(comment);\n }\n break;\n }\n\n case charCodes.slash: {\n const comment = this.skipLineComment(2);\n if (comment !== undefined) {\n this.addComment(comment);\n if (this.options.attachComment) comments.push(comment);\n }\n break;\n }\n\n default:\n break loop;\n }\n break;\n\n default:\n if (isWhitespace(ch)) {\n ++this.state.pos;\n } else if (ch === charCodes.dash && !this.inModule) {\n const pos = this.state.pos;\n if (\n this.input.charCodeAt(pos + 1) === charCodes.dash &&\n this.input.charCodeAt(pos + 2) === charCodes.greaterThan &&\n (spaceStart === 0 || this.state.lineStart > spaceStart)\n ) {\n // A `-->` line comment\n const comment = this.skipLineComment(3);\n if (comment !== undefined) {\n this.addComment(comment);\n if (this.options.attachComment) comments.push(comment);\n }\n } else {\n break loop;\n }\n } else if (ch === charCodes.lessThan && !this.inModule) {\n const pos = this.state.pos;\n if (\n this.input.charCodeAt(pos + 1) === charCodes.exclamationMark &&\n this.input.charCodeAt(pos + 2) === charCodes.dash &&\n this.input.charCodeAt(pos + 3) === charCodes.dash\n ) {\n // ` -

- Popper -

- -
-

Tooltip & Popover Positioning Engine

-
- -

- - npm version - - - npm downloads per month (popper.js + @popperjs/core) - - - Rolling Versions - -

- -
- - -**Positioning tooltips and popovers is difficult. Popper is here to help!** - -Given an element, such as a button, and a tooltip element describing it, Popper -will automatically put the tooltip in the right place near the button. - -It will position _any_ UI element that "pops out" from the flow of your document -and floats near a target element. The most common example is a tooltip, but it -also includes popovers, drop-downs, and more. All of these can be generically -described as a "popper" element. - -## Demo - -[![Popper visualized](https://i.imgur.com/F7qWsmV.jpg)](https://popper.js.org) - -## Docs - -- [v2.x (latest)](https://popper.js.org/docs/v2/) -- [v1.x](https://popper.js.org/docs/v1/) - -We've created a -[Migration Guide](https://popper.js.org/docs/v2/migration-guide/) to help you -migrate from Popper 1 to Popper 2. - -To contribute to the Popper website and documentation, please visit the -[dedicated repository](https://github.com/popperjs/website). - -## Why not use pure CSS? - -- **Clipping and overflow issues**: Pure CSS poppers will not be prevented from - overflowing clipping boundaries, such as the viewport. It will get partially - cut off or overflows if it's near the edge since there is no dynamic - positioning logic. When using Popper, your popper will always be positioned in - the right place without needing manual adjustments. -- **No flipping**: CSS poppers will not flip to a different placement to fit - better in view if necessary. While you can manually adjust for the main axis - overflow, this feature cannot be achieved via CSS alone. Popper automatically - flips the tooltip to make it fit in view as best as possible for the user. -- **No virtual positioning**: CSS poppers cannot follow the mouse cursor or be - used as a context menu. Popper allows you to position your tooltip relative to - any coordinates you desire. -- **Slower development cycle**: When pure CSS is used to position popper - elements, the lack of dynamic positioning means they must be carefully placed - to consider overflow on all screen sizes. In reusable component libraries, - this means a developer can't just add the component anywhere on the page, - because these issues need to be considered and adjusted for every time. With - Popper, you can place your elements anywhere and they will be positioned - correctly, without needing to consider different screen sizes, layouts, etc. - This massively speeds up development time because this work is automatically - offloaded to Popper. -- **Lack of extensibility**: CSS poppers cannot be easily extended to fit any - arbitrary use case you may need to adjust for. Popper is built with - extensibility in mind. - -## Why Popper? - -With the CSS drawbacks out of the way, we now move on to Popper in the -JavaScript space itself. - -Naive JavaScript tooltip implementations usually have the following problems: - -- **Scrolling containers**: They don't ensure the tooltip stays with the - reference element while scrolling when inside any number of scrolling - containers. -- **DOM context**: They often require the tooltip move outside of its original - DOM context because they don't handle `offsetParent` contexts. -- **Compatibility**: Popper handles an incredible number of edge cases regarding - different browsers and environments (mobile viewports, RTL, scrollbars enabled - or disabled, etc.). Popper is a popular and well-maintained library, so you - can be confident positioning will work for your users on any device. -- **Configurability**: They often lack advanced configurability to suit any - possible use case. -- **Size**: They are usually relatively large in size, or require an ancient - jQuery dependency. -- **Performance**: They often have runtime performance issues and update the - tooltip position too slowly. - -**Popper solves all of these key problems in an elegant, performant manner.** It -is a lightweight ~3 kB library that aims to provide a reliable and extensible -positioning engine you can use to ensure all your popper elements are positioned -in the right place. - -When you start writing your own popper implementation, you'll quickly run into -all of the problems mentioned above. These widgets are incredibly common in our -UIs; we've done the hard work figuring this out so you don't need to spend hours -fixing and handling numerous edge cases that we already ran into while building -the library! - -Popper is used in popular libraries like Bootstrap, Foundation, Material UI, and -more. It's likely you've already used popper elements on the web positioned by -Popper at some point in the past few years. - -Since we write UIs using powerful abstraction libraries such as React or Angular -nowadays, you'll also be glad to know Popper can fully integrate with them and -be a good citizen together with your other components. Check out `react-popper` -for the official Popper wrapper for React. - -## Installation - -### 1. Package Manager - -```bash -# With npm -npm i @popperjs/core - -# With Yarn -yarn add @popperjs/core -``` - -### 2. CDN - -```html - - - - - -``` - -### 3. Direct Download? - -Managing dependencies by "directly downloading" them and placing them into your -source code is not recommended for a variety of reasons, including missing out -on feat/fix updates easily. Please use a versioning management system like a CDN -or npm/Yarn. - -## Usage - -The most straightforward way to get started is to import Popper from the `unpkg` -CDN, which includes all of its features. You can call the `Popper.createPopper` -constructor to create new popper instances. - -Here is a complete example: - -```html - -Popper example - - - - - - - - -``` - -Visit the [tutorial](https://popper.js.org/docs/v2/tutorial/) for an example of -how to build your own tooltip from scratch using Popper. - -### Module bundlers - -You can import the `createPopper` constructor from the fully-featured file: - -```js -import { createPopper } from '@popperjs/core'; - -const button = document.querySelector('#button'); -const tooltip = document.querySelector('#tooltip'); - -// Pass the button, the tooltip, and some options, and Popper will do the -// magic positioning for you: -createPopper(button, tooltip, { - placement: 'right', -}); -``` - -All the modifiers listed in the docs menu will be enabled and "just work", so -you don't need to think about setting Popper up. The size of Popper including -all of its features is about 5 kB minzipped, but it may grow a bit in the -future. - -#### Popper Lite (tree-shaking) - -If bundle size is important, you'll want to take advantage of tree-shaking. The -library is built in a modular way to allow to import only the parts you really -need. - -```js -import { createPopperLite as createPopper } from '@popperjs/core'; -``` - -The Lite version includes the most necessary modifiers that will compute the -offsets of the popper, compute and add the positioning styles, and add event -listeners. This is close in bundle size to pure CSS tooltip libraries, and -behaves somewhat similarly. - -However, this does not include the features that makes Popper truly useful. - -The two most useful modifiers not included in Lite are `preventOverflow` and -`flip`: - -```js -import { - createPopperLite as createPopper, - preventOverflow, - flip, -} from '@popperjs/core'; - -const button = document.querySelector('#button'); -const tooltip = document.querySelector('#tooltip'); - -createPopper(button, tooltip, { - modifiers: [preventOverflow, flip], -}); -``` - -As you make more poppers, you may be finding yourself needing other modifiers -provided by the library. - -See [tree-shaking](https://popper.js.org/docs/v2/performance/#tree-shaking) for more -information. - -## Distribution targets - -Popper is distributed in 3 different versions, in 3 different file formats. - -The 3 file formats are: - -- `esm` (works with `import` syntax — **recommended**) -- `umd` (works with ` -``` - -## Documentation - -The full documentation can be found on the official Popper website: - -http://popper.js.org/react-popper - - -## Running Locally - -#### clone repo - -`git clone git@github.com:popperjs/react-popper.git` - -#### move into folder - -`cd ~/react-popper` - -#### install dependencies - -`npm install` or `yarn` - -#### run dev mode - -`npm run demo:dev` or `yarn demo:dev` - -#### open your browser and visit: - -`http://localhost:1234/` diff --git a/frontend/node_modules/react-popper/dist/index.umd.js b/frontend/node_modules/react-popper/dist/index.umd.js deleted file mode 100644 index 9afaa46db..000000000 --- a/frontend/node_modules/react-popper/dist/index.umd.js +++ /dev/null @@ -1,469 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('react-dom'), require('@popperjs/core')) : - typeof define === 'function' && define.amd ? define(['exports', 'react', 'react-dom', '@popperjs/core'], factory) : - (global = global || self, factory(global.ReactPopper = {}, global.React, global.ReactDOM, global.Popper)); -}(this, (function (exports, React, ReactDOM, core) { 'use strict'; - - var ManagerReferenceNodeContext = React.createContext(); - var ManagerReferenceNodeSetterContext = React.createContext(); - function Manager(_ref) { - var children = _ref.children; - - var _React$useState = React.useState(null), - referenceNode = _React$useState[0], - setReferenceNode = _React$useState[1]; - - var hasUnmounted = React.useRef(false); - React.useEffect(function () { - return function () { - hasUnmounted.current = true; - }; - }, []); - var handleSetReferenceNode = React.useCallback(function (node) { - if (!hasUnmounted.current) { - setReferenceNode(node); - } - }, []); - return /*#__PURE__*/React.createElement(ManagerReferenceNodeContext.Provider, { - value: referenceNode - }, /*#__PURE__*/React.createElement(ManagerReferenceNodeSetterContext.Provider, { - value: handleSetReferenceNode - }, children)); - } - - /** - * Takes an argument and if it's an array, returns the first item in the array, - * otherwise returns the argument. Used for Preact compatibility. - */ - var unwrapArray = function unwrapArray(arg) { - return Array.isArray(arg) ? arg[0] : arg; - }; - /** - * Takes a maybe-undefined function and arbitrary args and invokes the function - * only if it is defined. - */ - - var safeInvoke = function safeInvoke(fn) { - if (typeof fn === 'function') { - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - return fn.apply(void 0, args); - } - }; - /** - * Sets a ref using either a ref callback or a ref object - */ - - var setRef = function setRef(ref, node) { - // if its a function call it - if (typeof ref === 'function') { - return safeInvoke(ref, node); - } // otherwise we should treat it as a ref object - else if (ref != null) { - ref.current = node; - } - }; - /** - * Simple ponyfill for Object.fromEntries - */ - - var fromEntries = function fromEntries(entries) { - return entries.reduce(function (acc, _ref) { - var key = _ref[0], - value = _ref[1]; - acc[key] = value; - return acc; - }, {}); - }; - /** - * Small wrapper around `useLayoutEffect` to get rid of the warning on SSR envs - */ - - var useIsomorphicLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect; - - /* global Map:readonly, Set:readonly, ArrayBuffer:readonly */ - - var hasElementType = typeof Element !== 'undefined'; - var hasMap = typeof Map === 'function'; - var hasSet = typeof Set === 'function'; - var hasArrayBuffer = typeof ArrayBuffer === 'function'; - - // Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js - - function equal(a, b) { - // START: fast-deep-equal es6/index.js 3.1.1 - if (a === b) return true; - - if (a && b && typeof a == 'object' && typeof b == 'object') { - if (a.constructor !== b.constructor) return false; - - var length, i, keys; - if (Array.isArray(a)) { - length = a.length; - if (length != b.length) return false; - for (i = length; i-- !== 0;) - if (!equal(a[i], b[i])) return false; - return true; - } - - // START: Modifications: - // 1. Extra `has &&` helpers in initial condition allow es6 code - // to co-exist with es5. - // 2. Replace `for of` with es5 compliant iteration using `for`. - // Basically, take: - // - // ```js - // for (i of a.entries()) - // if (!b.has(i[0])) return false; - // ``` - // - // ... and convert to: - // - // ```js - // it = a.entries(); - // while (!(i = it.next()).done) - // if (!b.has(i.value[0])) return false; - // ``` - // - // **Note**: `i` access switches to `i.value`. - var it; - if (hasMap && (a instanceof Map) && (b instanceof Map)) { - if (a.size !== b.size) return false; - it = a.entries(); - while (!(i = it.next()).done) - if (!b.has(i.value[0])) return false; - it = a.entries(); - while (!(i = it.next()).done) - if (!equal(i.value[1], b.get(i.value[0]))) return false; - return true; - } - - if (hasSet && (a instanceof Set) && (b instanceof Set)) { - if (a.size !== b.size) return false; - it = a.entries(); - while (!(i = it.next()).done) - if (!b.has(i.value[0])) return false; - return true; - } - // END: Modifications - - if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) { - length = a.length; - if (length != b.length) return false; - for (i = length; i-- !== 0;) - if (a[i] !== b[i]) return false; - return true; - } - - if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; - if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); - if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); - - keys = Object.keys(a); - length = keys.length; - if (length !== Object.keys(b).length) return false; - - for (i = length; i-- !== 0;) - if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; - // END: fast-deep-equal - - // START: react-fast-compare - // custom handling for DOM elements - if (hasElementType && a instanceof Element) return false; - - // custom handling for React - for (i = length; i-- !== 0;) { - if (keys[i] === '_owner' && a.$$typeof) { - // React-specific: avoid traversing React elements' _owner. - // _owner contains circular references - // and is not needed when comparing the actual elements (and not their owners) - // .$$typeof and ._store on just reasonable markers of a react element - continue; - } - - // all other properties should be traversed as usual - if (!equal(a[keys[i]], b[keys[i]])) return false; - } - // END: react-fast-compare - - // START: fast-deep-equal - return true; - } - - return a !== a && b !== b; - } - // end fast-deep-equal - - var reactFastCompare = function isEqual(a, b) { - try { - return equal(a, b); - } catch (error) { - if (((error.message || '').match(/stack|recursion/i))) { - // warn on circular references, don't crash - // browsers give this different errors name and messages: - // chrome/safari: "RangeError", "Maximum call stack size exceeded" - // firefox: "InternalError", too much recursion" - // edge: "Error", "Out of stack space" - console.warn('react-fast-compare cannot handle circular refs'); - return false; - } - // some other error. we should definitely know about these - throw error; - } - }; - - var EMPTY_MODIFIERS = []; - var usePopper = function usePopper(referenceElement, popperElement, options) { - if (options === void 0) { - options = {}; - } - - var prevOptions = React.useRef(null); - var optionsWithDefaults = { - onFirstUpdate: options.onFirstUpdate, - placement: options.placement || 'bottom', - strategy: options.strategy || 'absolute', - modifiers: options.modifiers || EMPTY_MODIFIERS - }; - - var _React$useState = React.useState({ - styles: { - popper: { - position: optionsWithDefaults.strategy, - left: '0', - top: '0' - }, - arrow: { - position: 'absolute' - } - }, - attributes: {} - }), - state = _React$useState[0], - setState = _React$useState[1]; - - var updateStateModifier = React.useMemo(function () { - return { - name: 'updateState', - enabled: true, - phase: 'write', - fn: function fn(_ref) { - var state = _ref.state; - var elements = Object.keys(state.elements); - ReactDOM.flushSync(function () { - setState({ - styles: fromEntries(elements.map(function (element) { - return [element, state.styles[element] || {}]; - })), - attributes: fromEntries(elements.map(function (element) { - return [element, state.attributes[element]]; - })) - }); - }); - }, - requires: ['computeStyles'] - }; - }, []); - var popperOptions = React.useMemo(function () { - var newOptions = { - onFirstUpdate: optionsWithDefaults.onFirstUpdate, - placement: optionsWithDefaults.placement, - strategy: optionsWithDefaults.strategy, - modifiers: [].concat(optionsWithDefaults.modifiers, [updateStateModifier, { - name: 'applyStyles', - enabled: false - }]) - }; - - if (reactFastCompare(prevOptions.current, newOptions)) { - return prevOptions.current || newOptions; - } else { - prevOptions.current = newOptions; - return newOptions; - } - }, [optionsWithDefaults.onFirstUpdate, optionsWithDefaults.placement, optionsWithDefaults.strategy, optionsWithDefaults.modifiers, updateStateModifier]); - var popperInstanceRef = React.useRef(); - useIsomorphicLayoutEffect(function () { - if (popperInstanceRef.current) { - popperInstanceRef.current.setOptions(popperOptions); - } - }, [popperOptions]); - useIsomorphicLayoutEffect(function () { - if (referenceElement == null || popperElement == null) { - return; - } - - var createPopper = options.createPopper || core.createPopper; - var popperInstance = createPopper(referenceElement, popperElement, popperOptions); - popperInstanceRef.current = popperInstance; - return function () { - popperInstance.destroy(); - popperInstanceRef.current = null; - }; - }, [referenceElement, popperElement, options.createPopper]); - return { - state: popperInstanceRef.current ? popperInstanceRef.current.state : null, - styles: state.styles, - attributes: state.attributes, - update: popperInstanceRef.current ? popperInstanceRef.current.update : null, - forceUpdate: popperInstanceRef.current ? popperInstanceRef.current.forceUpdate : null - }; - }; - - var NOOP = function NOOP() { - return void 0; - }; - - var NOOP_PROMISE = function NOOP_PROMISE() { - return Promise.resolve(null); - }; - - var EMPTY_MODIFIERS$1 = []; - function Popper(_ref) { - var _ref$placement = _ref.placement, - placement = _ref$placement === void 0 ? 'bottom' : _ref$placement, - _ref$strategy = _ref.strategy, - strategy = _ref$strategy === void 0 ? 'absolute' : _ref$strategy, - _ref$modifiers = _ref.modifiers, - modifiers = _ref$modifiers === void 0 ? EMPTY_MODIFIERS$1 : _ref$modifiers, - referenceElement = _ref.referenceElement, - onFirstUpdate = _ref.onFirstUpdate, - innerRef = _ref.innerRef, - children = _ref.children; - var referenceNode = React.useContext(ManagerReferenceNodeContext); - - var _React$useState = React.useState(null), - popperElement = _React$useState[0], - setPopperElement = _React$useState[1]; - - var _React$useState2 = React.useState(null), - arrowElement = _React$useState2[0], - setArrowElement = _React$useState2[1]; - - React.useEffect(function () { - setRef(innerRef, popperElement); - }, [innerRef, popperElement]); - var options = React.useMemo(function () { - return { - placement: placement, - strategy: strategy, - onFirstUpdate: onFirstUpdate, - modifiers: [].concat(modifiers, [{ - name: 'arrow', - enabled: arrowElement != null, - options: { - element: arrowElement - } - }]) - }; - }, [placement, strategy, onFirstUpdate, modifiers, arrowElement]); - - var _usePopper = usePopper(referenceElement || referenceNode, popperElement, options), - state = _usePopper.state, - styles = _usePopper.styles, - forceUpdate = _usePopper.forceUpdate, - update = _usePopper.update; - - var childrenProps = React.useMemo(function () { - return { - ref: setPopperElement, - style: styles.popper, - placement: state ? state.placement : placement, - hasPopperEscaped: state && state.modifiersData.hide ? state.modifiersData.hide.hasPopperEscaped : null, - isReferenceHidden: state && state.modifiersData.hide ? state.modifiersData.hide.isReferenceHidden : null, - arrowProps: { - style: styles.arrow, - ref: setArrowElement - }, - forceUpdate: forceUpdate || NOOP, - update: update || NOOP_PROMISE - }; - }, [setPopperElement, setArrowElement, placement, state, styles, update, forceUpdate]); - return unwrapArray(children)(childrenProps); - } - - /** - * Copyright (c) 2014-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - - var warning = function() {}; - - { - var printWarning = function printWarning(format, args) { - var len = arguments.length; - args = new Array(len > 1 ? len - 1 : 0); - for (var key = 1; key < len; key++) { - args[key - 1] = arguments[key]; - } - var argIndex = 0; - var message = 'Warning: ' + - format.replace(/%s/g, function() { - return args[argIndex++]; - }); - if (typeof console !== 'undefined') { - console.error(message); - } - try { - // --- Welcome to debugging React --- - // This error was thrown as a convenience so that you can use this stack - // to find the callsite that caused this warning to fire. - throw new Error(message); - } catch (x) {} - }; - - warning = function(condition, format, args) { - var len = arguments.length; - args = new Array(len > 2 ? len - 2 : 0); - for (var key = 2; key < len; key++) { - args[key - 2] = arguments[key]; - } - if (format === undefined) { - throw new Error( - '`warning(condition, format, ...args)` requires a warning ' + - 'message argument' - ); - } - if (!condition) { - printWarning.apply(null, [format].concat(args)); - } - }; - } - - var warning_1 = warning; - - function Reference(_ref) { - var children = _ref.children, - innerRef = _ref.innerRef; - var setReferenceNode = React.useContext(ManagerReferenceNodeSetterContext); - var refHandler = React.useCallback(function (node) { - setRef(innerRef, node); - safeInvoke(setReferenceNode, node); - }, [innerRef, setReferenceNode]); // ran on unmount - // eslint-disable-next-line react-hooks/exhaustive-deps - - React.useEffect(function () { - return function () { - return setRef(innerRef, null); - }; - }, []); - React.useEffect(function () { - warning_1(Boolean(setReferenceNode), '`Reference` should not be used outside of a `Manager` component.'); - }, [setReferenceNode]); - return unwrapArray(children)({ - ref: refHandler - }); - } - - exports.Manager = Manager; - exports.Popper = Popper; - exports.Reference = Reference; - exports.usePopper = usePopper; - - Object.defineProperty(exports, '__esModule', { value: true }); - -}))); diff --git a/frontend/node_modules/react-popper/dist/index.umd.min.js b/frontend/node_modules/react-popper/dist/index.umd.min.js deleted file mode 100644 index 61420ce00..000000000 --- a/frontend/node_modules/react-popper/dist/index.umd.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("react-dom"),require("@popperjs/core")):"function"==typeof define&&define.amd?define(["exports","react","react-dom","@popperjs/core"],t):t((e=e||self).ReactPopper={},e.React,e.ReactDOM,e.Popper)}(this,(function(e,t,r,n){"use strict";var o=t.createContext(),u=t.createContext();var i=function(e){return Array.isArray(e)?e[0]:e},a=function(e){if("function"==typeof e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n = React.createContext(); -export const ManagerReferenceNodeSetterContext: React.Context< - void | ((?Element) => void) -> = React.createContext(); - -export type ManagerProps = $ReadOnly<{ - children: React.Node, -}>; - -export function Manager({ children }: ManagerProps): React.Node { - const [referenceNode, setReferenceNode] = React.useState(null); - - const hasUnmounted = React.useRef(false); - React.useEffect(() => { - return () => { - hasUnmounted.current = true; - }; - }, []); - - const handleSetReferenceNode = React.useCallback((node) => { - if (!hasUnmounted.current) { - setReferenceNode(node); - } - }, []); - - return ( - - - {children} - - - ); -} diff --git a/frontend/node_modules/react-popper/lib/cjs/Popper.js b/frontend/node_modules/react-popper/lib/cjs/Popper.js deleted file mode 100644 index a9b629032..000000000 --- a/frontend/node_modules/react-popper/lib/cjs/Popper.js +++ /dev/null @@ -1,91 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Popper = Popper; - -var React = _interopRequireWildcard(require("react")); - -var _Manager = require("./Manager"); - -var _utils = require("./utils"); - -var _usePopper2 = require("./usePopper"); - -function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } - -var NOOP = function NOOP() { - return void 0; -}; - -var NOOP_PROMISE = function NOOP_PROMISE() { - return Promise.resolve(null); -}; - -var EMPTY_MODIFIERS = []; - -function Popper(_ref) { - var _ref$placement = _ref.placement, - placement = _ref$placement === void 0 ? 'bottom' : _ref$placement, - _ref$strategy = _ref.strategy, - strategy = _ref$strategy === void 0 ? 'absolute' : _ref$strategy, - _ref$modifiers = _ref.modifiers, - modifiers = _ref$modifiers === void 0 ? EMPTY_MODIFIERS : _ref$modifiers, - referenceElement = _ref.referenceElement, - onFirstUpdate = _ref.onFirstUpdate, - innerRef = _ref.innerRef, - children = _ref.children; - var referenceNode = React.useContext(_Manager.ManagerReferenceNodeContext); - - var _React$useState = React.useState(null), - popperElement = _React$useState[0], - setPopperElement = _React$useState[1]; - - var _React$useState2 = React.useState(null), - arrowElement = _React$useState2[0], - setArrowElement = _React$useState2[1]; - - React.useEffect(function () { - (0, _utils.setRef)(innerRef, popperElement); - }, [innerRef, popperElement]); - var options = React.useMemo(function () { - return { - placement: placement, - strategy: strategy, - onFirstUpdate: onFirstUpdate, - modifiers: [].concat(modifiers, [{ - name: 'arrow', - enabled: arrowElement != null, - options: { - element: arrowElement - } - }]) - }; - }, [placement, strategy, onFirstUpdate, modifiers, arrowElement]); - - var _usePopper = (0, _usePopper2.usePopper)(referenceElement || referenceNode, popperElement, options), - state = _usePopper.state, - styles = _usePopper.styles, - forceUpdate = _usePopper.forceUpdate, - update = _usePopper.update; - - var childrenProps = React.useMemo(function () { - return { - ref: setPopperElement, - style: styles.popper, - placement: state ? state.placement : placement, - hasPopperEscaped: state && state.modifiersData.hide ? state.modifiersData.hide.hasPopperEscaped : null, - isReferenceHidden: state && state.modifiersData.hide ? state.modifiersData.hide.isReferenceHidden : null, - arrowProps: { - style: styles.arrow, - ref: setArrowElement - }, - forceUpdate: forceUpdate || NOOP, - update: update || NOOP_PROMISE - }; - }, [setPopperElement, setArrowElement, placement, state, styles, update, forceUpdate]); - return (0, _utils.unwrapArray)(children)(childrenProps); -} \ No newline at end of file diff --git a/frontend/node_modules/react-popper/lib/cjs/Popper.js.flow b/frontend/node_modules/react-popper/lib/cjs/Popper.js.flow deleted file mode 100644 index c656e8389..000000000 --- a/frontend/node_modules/react-popper/lib/cjs/Popper.js.flow +++ /dev/null @@ -1,124 +0,0 @@ -// @flow strict -import * as React from 'react'; -import { - type State, - type Placement, - type PositioningStrategy, - type VirtualElement, - type StrictModifiers, - type Modifier, -} from '@popperjs/core/lib'; -import { ManagerReferenceNodeContext } from './Manager'; -import type { Ref } from './RefTypes'; -import { unwrapArray, setRef } from './utils'; -import { usePopper } from './usePopper'; - -type ReferenceElement = ?(VirtualElement | HTMLElement); -type Modifiers = Array>>; - -export type PopperArrowProps = {| - ref: Ref, - style: CSSStyleDeclaration, -|}; -export type PopperChildrenProps = {| - ref: Ref, - style: CSSStyleDeclaration, - - placement: Placement, - isReferenceHidden: ?boolean, - hasPopperEscaped: ?boolean, - - update: () => Promise>, - forceUpdate: () => void, - arrowProps: PopperArrowProps, -|}; -export type PopperChildren = (PopperChildrenProps) => React.Node; - -export type PopperProps = $ReadOnly<{| - children: PopperChildren, - innerRef?: Ref, - modifiers?: Modifiers, - placement?: Placement, - strategy?: PositioningStrategy, - referenceElement?: ReferenceElement, - onFirstUpdate?: ($Shape) => void, -|}>; - -const NOOP = () => void 0; -const NOOP_PROMISE = () => Promise.resolve(null); -const EMPTY_MODIFIERS = []; - -export function Popper({ - placement = 'bottom', - strategy = 'absolute', - modifiers = EMPTY_MODIFIERS, - referenceElement, - onFirstUpdate, - innerRef, - children, -}: PopperProps): React.Node { - const referenceNode = React.useContext(ManagerReferenceNodeContext); - - const [popperElement, setPopperElement] = React.useState(null); - const [arrowElement, setArrowElement] = React.useState(null); - - React.useEffect(() => { - setRef(innerRef, popperElement) - }, [innerRef, popperElement]); - - const options = React.useMemo( - () => ({ - placement, - strategy, - onFirstUpdate, - modifiers: [ - ...modifiers, - { - name: 'arrow', - enabled: arrowElement != null, - options: { element: arrowElement }, - }, - ], - }), - [placement, strategy, onFirstUpdate, modifiers, arrowElement] - ); - - const { state, styles, forceUpdate, update } = usePopper( - referenceElement || referenceNode, - popperElement, - options - ); - - const childrenProps = React.useMemo( - () => ({ - ref: setPopperElement, - style: styles.popper, - placement: state ? state.placement : placement, - hasPopperEscaped: - state && state.modifiersData.hide - ? state.modifiersData.hide.hasPopperEscaped - : null, - isReferenceHidden: - state && state.modifiersData.hide - ? state.modifiersData.hide.isReferenceHidden - : null, - arrowProps: { - style: styles.arrow, - ref: setArrowElement, - }, - forceUpdate: forceUpdate || NOOP, - update: update || NOOP_PROMISE, - }), - [ - setPopperElement, - setArrowElement, - placement, - state, - styles, - update, - forceUpdate, - ] - ); - - return unwrapArray(children)(childrenProps); -} diff --git a/frontend/node_modules/react-popper/lib/cjs/RefTypes.js b/frontend/node_modules/react-popper/lib/cjs/RefTypes.js deleted file mode 100644 index 9a390c31f..000000000 --- a/frontend/node_modules/react-popper/lib/cjs/RefTypes.js +++ /dev/null @@ -1 +0,0 @@ -"use strict"; \ No newline at end of file diff --git a/frontend/node_modules/react-popper/lib/cjs/RefTypes.js.flow b/frontend/node_modules/react-popper/lib/cjs/RefTypes.js.flow deleted file mode 100644 index 1581a974c..000000000 --- a/frontend/node_modules/react-popper/lib/cjs/RefTypes.js.flow +++ /dev/null @@ -1,5 +0,0 @@ -// @flow strict -type RefHandler = (?HTMLElement) => void; -type RefObject = { current?: ?HTMLElement}; - -export type Ref = RefHandler | RefObject; diff --git a/frontend/node_modules/react-popper/lib/cjs/Reference.js b/frontend/node_modules/react-popper/lib/cjs/Reference.js deleted file mode 100644 index d4acb8f47..000000000 --- a/frontend/node_modules/react-popper/lib/cjs/Reference.js +++ /dev/null @@ -1,43 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Reference = Reference; - -var React = _interopRequireWildcard(require("react")); - -var _warning = _interopRequireDefault(require("warning")); - -var _Manager = require("./Manager"); - -var _utils = require("./utils"); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } - -function Reference(_ref) { - var children = _ref.children, - innerRef = _ref.innerRef; - var setReferenceNode = React.useContext(_Manager.ManagerReferenceNodeSetterContext); - var refHandler = React.useCallback(function (node) { - (0, _utils.setRef)(innerRef, node); - (0, _utils.safeInvoke)(setReferenceNode, node); - }, [innerRef, setReferenceNode]); // ran on unmount - // eslint-disable-next-line react-hooks/exhaustive-deps - - React.useEffect(function () { - return function () { - return (0, _utils.setRef)(innerRef, null); - }; - }, []); - React.useEffect(function () { - (0, _warning["default"])(Boolean(setReferenceNode), '`Reference` should not be used outside of a `Manager` component.'); - }, [setReferenceNode]); - return (0, _utils.unwrapArray)(children)({ - ref: refHandler - }); -} \ No newline at end of file diff --git a/frontend/node_modules/react-popper/lib/cjs/Reference.js.flow b/frontend/node_modules/react-popper/lib/cjs/Reference.js.flow deleted file mode 100644 index 81cd115f4..000000000 --- a/frontend/node_modules/react-popper/lib/cjs/Reference.js.flow +++ /dev/null @@ -1,37 +0,0 @@ -// @flow strict -import * as React from 'react'; -import warning from 'warning'; -import { ManagerReferenceNodeSetterContext } from './Manager'; -import { safeInvoke, unwrapArray, setRef } from './utils'; -import { type Ref } from './RefTypes'; - -export type ReferenceChildrenProps = $ReadOnly<{ ref: Ref }>; -export type ReferenceProps = $ReadOnly<{| - children: (ReferenceChildrenProps) => React.Node, - innerRef?: Ref, -|}>; - -export function Reference({ children, innerRef }: ReferenceProps): React.Node { - const setReferenceNode = React.useContext(ManagerReferenceNodeSetterContext); - - const refHandler = React.useCallback( - (node: ?HTMLElement) => { - setRef(innerRef, node); - safeInvoke(setReferenceNode, node); - }, - [innerRef, setReferenceNode] - ); - - // ran on unmount - // eslint-disable-next-line react-hooks/exhaustive-deps - React.useEffect(() => () => setRef(innerRef, null), []); - - React.useEffect(() => { - warning( - Boolean(setReferenceNode), - '`Reference` should not be used outside of a `Manager` component.' - ); - }, [setReferenceNode]); - - return unwrapArray(children)({ ref: refHandler }); -} diff --git a/frontend/node_modules/react-popper/lib/cjs/__typings__/main-test.js b/frontend/node_modules/react-popper/lib/cjs/__typings__/main-test.js deleted file mode 100644 index 58e22416f..000000000 --- a/frontend/node_modules/react-popper/lib/cjs/__typings__/main-test.js +++ /dev/null @@ -1,69 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Test = void 0; - -var React = _interopRequireWildcard(require("react")); - -var _ = require(".."); - -function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } - -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -var Test = function Test() { - var _React$createElement; - - return /*#__PURE__*/React.createElement(_.Manager, null, /*#__PURE__*/React.createElement(_.Reference, null), /*#__PURE__*/React.createElement(_.Reference, null, function (_ref) { - var ref = _ref.ref; - return /*#__PURE__*/React.createElement("div", { - ref: ref - }); - }), /*#__PURE__*/React.createElement(_.Popper // $FlowExpectError: should be one of allowed placements - , (_React$createElement = { - placement: "custom" - }, _React$createElement["placement"] = "top", _React$createElement.strategy = "custom", _React$createElement["strategy"] = "fixed", _React$createElement.modifiers = [{ - name: 'flip', - enabled: 'bar', - order: 'foo' - }], _React$createElement["modifiers"] = [{ - name: 'flip', - enabled: false - }], _React$createElement), function (_ref2) { - var ref = _ref2.ref, - style = _ref2.style, - placement = _ref2.placement, - isReferenceHidden = _ref2.isReferenceHidden, - hasPopperEscaped = _ref2.hasPopperEscaped, - update = _ref2.update, - arrowProps = _ref2.arrowProps; - return /*#__PURE__*/React.createElement("div", { - ref: ref, - style: _extends({}, style, { - opacity: isReferenceHidden === true || hasPopperEscaped === true ? 0 : 1 - }), - "data-placement": placement, - onClick: function onClick() { - return update(); - } - }, "Popper", /*#__PURE__*/React.createElement("div", { - ref: arrowProps.ref, - style: arrowProps.style - })); - }), /*#__PURE__*/React.createElement(_.Popper, null, function (_ref3) { - var ref = _ref3.ref, - style = _ref3.style, - placement = _ref3.placement; - return /*#__PURE__*/React.createElement("div", { - ref: ref, - style: style, - "data-placement": placement - }, "Popper"); - })); -}; - -exports.Test = Test; \ No newline at end of file diff --git a/frontend/node_modules/react-popper/lib/cjs/index.js b/frontend/node_modules/react-popper/lib/cjs/index.js deleted file mode 100644 index d1c09ba7a..000000000 --- a/frontend/node_modules/react-popper/lib/cjs/index.js +++ /dev/null @@ -1,37 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -Object.defineProperty(exports, "Popper", { - enumerable: true, - get: function get() { - return _Popper.Popper; - } -}); -Object.defineProperty(exports, "Manager", { - enumerable: true, - get: function get() { - return _Manager.Manager; - } -}); -Object.defineProperty(exports, "Reference", { - enumerable: true, - get: function get() { - return _Reference.Reference; - } -}); -Object.defineProperty(exports, "usePopper", { - enumerable: true, - get: function get() { - return _usePopper.usePopper; - } -}); - -var _Popper = require("./Popper"); - -var _Manager = require("./Manager"); - -var _Reference = require("./Reference"); - -var _usePopper = require("./usePopper"); \ No newline at end of file diff --git a/frontend/node_modules/react-popper/lib/cjs/index.js.flow b/frontend/node_modules/react-popper/lib/cjs/index.js.flow deleted file mode 100644 index 1a51de8aa..000000000 --- a/frontend/node_modules/react-popper/lib/cjs/index.js.flow +++ /dev/null @@ -1,25 +0,0 @@ -// @flow strict - -// Public components -import { Popper } from './Popper'; -import { Manager } from './Manager'; -import { Reference } from './Reference'; -import { usePopper } from './usePopper'; -export { Popper, Manager, Reference, usePopper }; - -// Public types -import type { ManagerProps } from './Manager'; -import type { ReferenceProps, ReferenceChildrenProps } from './Reference'; -import type { - PopperChildrenProps, - PopperArrowProps, - PopperProps, -} from './Popper'; -export type { - ManagerProps, - ReferenceProps, - ReferenceChildrenProps, - PopperChildrenProps, - PopperArrowProps, - PopperProps, -}; diff --git a/frontend/node_modules/react-popper/lib/cjs/usePopper.js b/frontend/node_modules/react-popper/lib/cjs/usePopper.js deleted file mode 100644 index cf9a87d81..000000000 --- a/frontend/node_modules/react-popper/lib/cjs/usePopper.js +++ /dev/null @@ -1,123 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.usePopper = void 0; - -var React = _interopRequireWildcard(require("react")); - -var ReactDOM = _interopRequireWildcard(require("react-dom")); - -var _core = require("@popperjs/core"); - -var _reactFastCompare = _interopRequireDefault(require("react-fast-compare")); - -var _utils = require("./utils"); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } - -var EMPTY_MODIFIERS = []; - -var usePopper = function usePopper(referenceElement, popperElement, options) { - if (options === void 0) { - options = {}; - } - - var prevOptions = React.useRef(null); - var optionsWithDefaults = { - onFirstUpdate: options.onFirstUpdate, - placement: options.placement || 'bottom', - strategy: options.strategy || 'absolute', - modifiers: options.modifiers || EMPTY_MODIFIERS - }; - - var _React$useState = React.useState({ - styles: { - popper: { - position: optionsWithDefaults.strategy, - left: '0', - top: '0' - }, - arrow: { - position: 'absolute' - } - }, - attributes: {} - }), - state = _React$useState[0], - setState = _React$useState[1]; - - var updateStateModifier = React.useMemo(function () { - return { - name: 'updateState', - enabled: true, - phase: 'write', - fn: function fn(_ref) { - var state = _ref.state; - var elements = Object.keys(state.elements); - ReactDOM.flushSync(function () { - setState({ - styles: (0, _utils.fromEntries)(elements.map(function (element) { - return [element, state.styles[element] || {}]; - })), - attributes: (0, _utils.fromEntries)(elements.map(function (element) { - return [element, state.attributes[element]]; - })) - }); - }); - }, - requires: ['computeStyles'] - }; - }, []); - var popperOptions = React.useMemo(function () { - var newOptions = { - onFirstUpdate: optionsWithDefaults.onFirstUpdate, - placement: optionsWithDefaults.placement, - strategy: optionsWithDefaults.strategy, - modifiers: [].concat(optionsWithDefaults.modifiers, [updateStateModifier, { - name: 'applyStyles', - enabled: false - }]) - }; - - if ((0, _reactFastCompare["default"])(prevOptions.current, newOptions)) { - return prevOptions.current || newOptions; - } else { - prevOptions.current = newOptions; - return newOptions; - } - }, [optionsWithDefaults.onFirstUpdate, optionsWithDefaults.placement, optionsWithDefaults.strategy, optionsWithDefaults.modifiers, updateStateModifier]); - var popperInstanceRef = React.useRef(); - (0, _utils.useIsomorphicLayoutEffect)(function () { - if (popperInstanceRef.current) { - popperInstanceRef.current.setOptions(popperOptions); - } - }, [popperOptions]); - (0, _utils.useIsomorphicLayoutEffect)(function () { - if (referenceElement == null || popperElement == null) { - return; - } - - var createPopper = options.createPopper || _core.createPopper; - var popperInstance = createPopper(referenceElement, popperElement, popperOptions); - popperInstanceRef.current = popperInstance; - return function () { - popperInstance.destroy(); - popperInstanceRef.current = null; - }; - }, [referenceElement, popperElement, options.createPopper]); - return { - state: popperInstanceRef.current ? popperInstanceRef.current.state : null, - styles: state.styles, - attributes: state.attributes, - update: popperInstanceRef.current ? popperInstanceRef.current.update : null, - forceUpdate: popperInstanceRef.current ? popperInstanceRef.current.forceUpdate : null - }; -}; - -exports.usePopper = usePopper; \ No newline at end of file diff --git a/frontend/node_modules/react-popper/lib/cjs/usePopper.js.flow b/frontend/node_modules/react-popper/lib/cjs/usePopper.js.flow deleted file mode 100644 index ebc1291b6..000000000 --- a/frontend/node_modules/react-popper/lib/cjs/usePopper.js.flow +++ /dev/null @@ -1,157 +0,0 @@ -// @flow strict -import * as React from 'react'; -import * as ReactDOM from 'react-dom'; -import { - createPopper as defaultCreatePopper, - type Options as PopperOptions, - type VirtualElement, - type State as PopperState, - type Instance as PopperInstance, -} from '@popperjs/core'; -import isEqual from 'react-fast-compare'; -import { fromEntries, useIsomorphicLayoutEffect } from './utils'; - -type Options = $Shape<{ - ...PopperOptions, - createPopper: typeof defaultCreatePopper, -}>; - -type Styles = { - [key: string]: $Shape, -}; - -type Attributes = { - [key: string]: { [key: string]: string }, -}; - -type State = { - styles: Styles, - attributes: Attributes, -}; - -const EMPTY_MODIFIERS = []; - -type UsePopperResult = $ReadOnly<{ - state: ?PopperState, - styles: Styles, - attributes: Attributes, - update: ?$PropertyType, - forceUpdate: ?$PropertyType, -}>; - -export const usePopper = ( - referenceElement: ?(Element | VirtualElement), - popperElement: ?HTMLElement, - options: Options = {} -): UsePopperResult => { - const prevOptions = React.useRef(null); - - const optionsWithDefaults = { - onFirstUpdate: options.onFirstUpdate, - placement: options.placement || 'bottom', - strategy: options.strategy || 'absolute', - modifiers: options.modifiers || EMPTY_MODIFIERS, - }; - - const [state, setState] = React.useState({ - styles: { - popper: { - position: optionsWithDefaults.strategy, - left: '0', - top: '0', - }, - arrow: { - position: 'absolute', - }, - }, - attributes: {}, - }); - - const updateStateModifier = React.useMemo( - () => ({ - name: 'updateState', - enabled: true, - phase: 'write', - fn: ({ state }) => { - const elements = Object.keys(state.elements); - - ReactDOM.flushSync(() => { - setState({ - styles: fromEntries( - elements.map((element) => [element, state.styles[element] || {}]) - ), - attributes: fromEntries( - elements.map((element) => [element, state.attributes[element]]) - ), - }); - }); - }, - requires: ['computeStyles'], - }), - [] - ); - - const popperOptions = React.useMemo(() => { - const newOptions = { - onFirstUpdate: optionsWithDefaults.onFirstUpdate, - placement: optionsWithDefaults.placement, - strategy: optionsWithDefaults.strategy, - modifiers: [ - ...optionsWithDefaults.modifiers, - updateStateModifier, - { name: 'applyStyles', enabled: false }, - ], - }; - - if (isEqual(prevOptions.current, newOptions)) { - return prevOptions.current || newOptions; - } else { - prevOptions.current = newOptions; - return newOptions; - } - }, [ - optionsWithDefaults.onFirstUpdate, - optionsWithDefaults.placement, - optionsWithDefaults.strategy, - optionsWithDefaults.modifiers, - updateStateModifier, - ]); - - const popperInstanceRef = React.useRef(); - - useIsomorphicLayoutEffect(() => { - if (popperInstanceRef.current) { - popperInstanceRef.current.setOptions(popperOptions); - } - }, [popperOptions]); - - useIsomorphicLayoutEffect(() => { - if (referenceElement == null || popperElement == null) { - return; - } - - const createPopper = options.createPopper || defaultCreatePopper; - const popperInstance = createPopper( - referenceElement, - popperElement, - popperOptions - ); - - popperInstanceRef.current = popperInstance; - - return () => { - popperInstance.destroy(); - popperInstanceRef.current = null; - }; - }, [referenceElement, popperElement, options.createPopper]); - - return { - state: popperInstanceRef.current ? popperInstanceRef.current.state : null, - styles: state.styles, - attributes: state.attributes, - update: popperInstanceRef.current ? popperInstanceRef.current.update : null, - forceUpdate: popperInstanceRef.current - ? popperInstanceRef.current.forceUpdate - : null, - }; -}; diff --git a/frontend/node_modules/react-popper/lib/cjs/utils.js b/frontend/node_modules/react-popper/lib/cjs/utils.js deleted file mode 100644 index 077e7ca45..000000000 --- a/frontend/node_modules/react-popper/lib/cjs/utils.js +++ /dev/null @@ -1,76 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.useIsomorphicLayoutEffect = exports.fromEntries = exports.setRef = exports.safeInvoke = exports.unwrapArray = void 0; - -var React = _interopRequireWildcard(require("react")); - -function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } - -/** - * Takes an argument and if it's an array, returns the first item in the array, - * otherwise returns the argument. Used for Preact compatibility. - */ -var unwrapArray = function unwrapArray(arg) { - return Array.isArray(arg) ? arg[0] : arg; -}; -/** - * Takes a maybe-undefined function and arbitrary args and invokes the function - * only if it is defined. - */ - - -exports.unwrapArray = unwrapArray; - -var safeInvoke = function safeInvoke(fn) { - if (typeof fn === 'function') { - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - return fn.apply(void 0, args); - } -}; -/** - * Sets a ref using either a ref callback or a ref object - */ - - -exports.safeInvoke = safeInvoke; - -var setRef = function setRef(ref, node) { - // if its a function call it - if (typeof ref === 'function') { - return safeInvoke(ref, node); - } // otherwise we should treat it as a ref object - else if (ref != null) { - ref.current = node; - } -}; -/** - * Simple ponyfill for Object.fromEntries - */ - - -exports.setRef = setRef; - -var fromEntries = function fromEntries(entries) { - return entries.reduce(function (acc, _ref) { - var key = _ref[0], - value = _ref[1]; - acc[key] = value; - return acc; - }, {}); -}; -/** - * Small wrapper around `useLayoutEffect` to get rid of the warning on SSR envs - */ - - -exports.fromEntries = fromEntries; -var useIsomorphicLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect; -exports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect; \ No newline at end of file diff --git a/frontend/node_modules/react-popper/lib/cjs/utils.js.flow b/frontend/node_modules/react-popper/lib/cjs/utils.js.flow deleted file mode 100644 index d0757bbfa..000000000 --- a/frontend/node_modules/react-popper/lib/cjs/utils.js.flow +++ /dev/null @@ -1,59 +0,0 @@ -// @flow strict -import * as React from 'react'; -import { type Ref } from './RefTypes'; - -/** - * Takes an argument and if it's an array, returns the first item in the array, - * otherwise returns the argument. Used for Preact compatibility. - */ -export const unwrapArray = (arg: *): * => (Array.isArray(arg) ? arg[0] : arg); - -/** - * Takes a maybe-undefined function and arbitrary args and invokes the function - * only if it is defined. - */ -export const safeInvoke = ( - fn: ?F, - ...args: Array -): $Call => { - if (typeof fn === 'function') { - return fn(...args); - } -}; - -/** - * Sets a ref using either a ref callback or a ref object - */ -export const setRef = (ref: ?Ref, node: ?HTMLElement): void => { - // if its a function call it - if (typeof ref === 'function') { - return safeInvoke(ref, node); - } - // otherwise we should treat it as a ref object - else if (ref != null) { - ref.current = node; - } -}; - -/** - * Simple ponyfill for Object.fromEntries - */ -export const fromEntries = ( - entries: Array<[string, any]> -): { [key: string]: any } => - entries.reduce((acc, [key, value]) => { - acc[key] = value; - return acc; - }, {}); - -/** - * Small wrapper around `useLayoutEffect` to get rid of the warning on SSR envs - */ -export const useIsomorphicLayoutEffect: - | typeof React.useEffect - | typeof React.useLayoutEffect = - typeof window !== 'undefined' && - window.document && - window.document.createElement - ? React.useLayoutEffect - : React.useEffect; diff --git a/frontend/node_modules/react-popper/lib/esm/Manager.js b/frontend/node_modules/react-popper/lib/esm/Manager.js deleted file mode 100644 index 5df2908ac..000000000 --- a/frontend/node_modules/react-popper/lib/esm/Manager.js +++ /dev/null @@ -1,27 +0,0 @@ -import * as React from 'react'; -export var ManagerReferenceNodeContext = React.createContext(); -export var ManagerReferenceNodeSetterContext = React.createContext(); -export function Manager(_ref) { - var children = _ref.children; - - var _React$useState = React.useState(null), - referenceNode = _React$useState[0], - setReferenceNode = _React$useState[1]; - - var hasUnmounted = React.useRef(false); - React.useEffect(function () { - return function () { - hasUnmounted.current = true; - }; - }, []); - var handleSetReferenceNode = React.useCallback(function (node) { - if (!hasUnmounted.current) { - setReferenceNode(node); - } - }, []); - return /*#__PURE__*/React.createElement(ManagerReferenceNodeContext.Provider, { - value: referenceNode - }, /*#__PURE__*/React.createElement(ManagerReferenceNodeSetterContext.Provider, { - value: handleSetReferenceNode - }, children)); -} \ No newline at end of file diff --git a/frontend/node_modules/react-popper/lib/esm/Popper.js b/frontend/node_modules/react-popper/lib/esm/Popper.js deleted file mode 100644 index e30fd910e..000000000 --- a/frontend/node_modules/react-popper/lib/esm/Popper.js +++ /dev/null @@ -1,76 +0,0 @@ -import * as React from 'react'; -import { ManagerReferenceNodeContext } from './Manager'; -import { unwrapArray, setRef } from './utils'; -import { usePopper } from './usePopper'; - -var NOOP = function NOOP() { - return void 0; -}; - -var NOOP_PROMISE = function NOOP_PROMISE() { - return Promise.resolve(null); -}; - -var EMPTY_MODIFIERS = []; -export function Popper(_ref) { - var _ref$placement = _ref.placement, - placement = _ref$placement === void 0 ? 'bottom' : _ref$placement, - _ref$strategy = _ref.strategy, - strategy = _ref$strategy === void 0 ? 'absolute' : _ref$strategy, - _ref$modifiers = _ref.modifiers, - modifiers = _ref$modifiers === void 0 ? EMPTY_MODIFIERS : _ref$modifiers, - referenceElement = _ref.referenceElement, - onFirstUpdate = _ref.onFirstUpdate, - innerRef = _ref.innerRef, - children = _ref.children; - var referenceNode = React.useContext(ManagerReferenceNodeContext); - - var _React$useState = React.useState(null), - popperElement = _React$useState[0], - setPopperElement = _React$useState[1]; - - var _React$useState2 = React.useState(null), - arrowElement = _React$useState2[0], - setArrowElement = _React$useState2[1]; - - React.useEffect(function () { - setRef(innerRef, popperElement); - }, [innerRef, popperElement]); - var options = React.useMemo(function () { - return { - placement: placement, - strategy: strategy, - onFirstUpdate: onFirstUpdate, - modifiers: [].concat(modifiers, [{ - name: 'arrow', - enabled: arrowElement != null, - options: { - element: arrowElement - } - }]) - }; - }, [placement, strategy, onFirstUpdate, modifiers, arrowElement]); - - var _usePopper = usePopper(referenceElement || referenceNode, popperElement, options), - state = _usePopper.state, - styles = _usePopper.styles, - forceUpdate = _usePopper.forceUpdate, - update = _usePopper.update; - - var childrenProps = React.useMemo(function () { - return { - ref: setPopperElement, - style: styles.popper, - placement: state ? state.placement : placement, - hasPopperEscaped: state && state.modifiersData.hide ? state.modifiersData.hide.hasPopperEscaped : null, - isReferenceHidden: state && state.modifiersData.hide ? state.modifiersData.hide.isReferenceHidden : null, - arrowProps: { - style: styles.arrow, - ref: setArrowElement - }, - forceUpdate: forceUpdate || NOOP, - update: update || NOOP_PROMISE - }; - }, [setPopperElement, setArrowElement, placement, state, styles, update, forceUpdate]); - return unwrapArray(children)(childrenProps); -} \ No newline at end of file diff --git a/frontend/node_modules/react-popper/lib/esm/RefTypes.js b/frontend/node_modules/react-popper/lib/esm/RefTypes.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/frontend/node_modules/react-popper/lib/esm/Reference.js b/frontend/node_modules/react-popper/lib/esm/Reference.js deleted file mode 100644 index 9c5563cea..000000000 --- a/frontend/node_modules/react-popper/lib/esm/Reference.js +++ /dev/null @@ -1,26 +0,0 @@ -import * as React from 'react'; -import warning from 'warning'; -import { ManagerReferenceNodeSetterContext } from './Manager'; -import { safeInvoke, unwrapArray, setRef } from './utils'; -export function Reference(_ref) { - var children = _ref.children, - innerRef = _ref.innerRef; - var setReferenceNode = React.useContext(ManagerReferenceNodeSetterContext); - var refHandler = React.useCallback(function (node) { - setRef(innerRef, node); - safeInvoke(setReferenceNode, node); - }, [innerRef, setReferenceNode]); // ran on unmount - // eslint-disable-next-line react-hooks/exhaustive-deps - - React.useEffect(function () { - return function () { - return setRef(innerRef, null); - }; - }, []); - React.useEffect(function () { - warning(Boolean(setReferenceNode), '`Reference` should not be used outside of a `Manager` component.'); - }, [setReferenceNode]); - return unwrapArray(children)({ - ref: refHandler - }); -} \ No newline at end of file diff --git a/frontend/node_modules/react-popper/lib/esm/__typings__/main-test.js b/frontend/node_modules/react-popper/lib/esm/__typings__/main-test.js deleted file mode 100644 index afe07ae06..000000000 --- a/frontend/node_modules/react-popper/lib/esm/__typings__/main-test.js +++ /dev/null @@ -1,56 +0,0 @@ -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -// Please remember to update also the TypeScript test files that can -// be found under `/typings/tests` please. Thanks! 🤗 -import * as React from 'react'; -import { Manager, Reference, Popper } from '..'; -export var Test = function Test() { - var _React$createElement; - - return /*#__PURE__*/React.createElement(Manager, null, /*#__PURE__*/React.createElement(Reference, null), /*#__PURE__*/React.createElement(Reference, null, function (_ref) { - var ref = _ref.ref; - return /*#__PURE__*/React.createElement("div", { - ref: ref - }); - }), /*#__PURE__*/React.createElement(Popper // $FlowExpectError: should be one of allowed placements - , (_React$createElement = { - placement: "custom" - }, _React$createElement["placement"] = "top", _React$createElement.strategy = "custom", _React$createElement["strategy"] = "fixed", _React$createElement.modifiers = [{ - name: 'flip', - enabled: 'bar', - order: 'foo' - }], _React$createElement["modifiers"] = [{ - name: 'flip', - enabled: false - }], _React$createElement), function (_ref2) { - var ref = _ref2.ref, - style = _ref2.style, - placement = _ref2.placement, - isReferenceHidden = _ref2.isReferenceHidden, - hasPopperEscaped = _ref2.hasPopperEscaped, - update = _ref2.update, - arrowProps = _ref2.arrowProps; - return /*#__PURE__*/React.createElement("div", { - ref: ref, - style: _extends({}, style, { - opacity: isReferenceHidden === true || hasPopperEscaped === true ? 0 : 1 - }), - "data-placement": placement, - onClick: function onClick() { - return update(); - } - }, "Popper", /*#__PURE__*/React.createElement("div", { - ref: arrowProps.ref, - style: arrowProps.style - })); - }), /*#__PURE__*/React.createElement(Popper, null, function (_ref3) { - var ref = _ref3.ref, - style = _ref3.style, - placement = _ref3.placement; - return /*#__PURE__*/React.createElement("div", { - ref: ref, - style: style, - "data-placement": placement - }, "Popper"); - })); -}; \ No newline at end of file diff --git a/frontend/node_modules/react-popper/lib/esm/index.js b/frontend/node_modules/react-popper/lib/esm/index.js deleted file mode 100644 index 11b44e252..000000000 --- a/frontend/node_modules/react-popper/lib/esm/index.js +++ /dev/null @@ -1,6 +0,0 @@ -// Public components -import { Popper } from './Popper'; -import { Manager } from './Manager'; -import { Reference } from './Reference'; -import { usePopper } from './usePopper'; -export { Popper, Manager, Reference, usePopper }; // Public types \ No newline at end of file diff --git a/frontend/node_modules/react-popper/lib/esm/usePopper.js b/frontend/node_modules/react-popper/lib/esm/usePopper.js deleted file mode 100644 index eee24ea23..000000000 --- a/frontend/node_modules/react-popper/lib/esm/usePopper.js +++ /dev/null @@ -1,102 +0,0 @@ -import * as React from 'react'; -import * as ReactDOM from 'react-dom'; -import { createPopper as defaultCreatePopper } from '@popperjs/core'; -import isEqual from 'react-fast-compare'; -import { fromEntries, useIsomorphicLayoutEffect } from './utils'; -var EMPTY_MODIFIERS = []; -export var usePopper = function usePopper(referenceElement, popperElement, options) { - if (options === void 0) { - options = {}; - } - - var prevOptions = React.useRef(null); - var optionsWithDefaults = { - onFirstUpdate: options.onFirstUpdate, - placement: options.placement || 'bottom', - strategy: options.strategy || 'absolute', - modifiers: options.modifiers || EMPTY_MODIFIERS - }; - - var _React$useState = React.useState({ - styles: { - popper: { - position: optionsWithDefaults.strategy, - left: '0', - top: '0' - }, - arrow: { - position: 'absolute' - } - }, - attributes: {} - }), - state = _React$useState[0], - setState = _React$useState[1]; - - var updateStateModifier = React.useMemo(function () { - return { - name: 'updateState', - enabled: true, - phase: 'write', - fn: function fn(_ref) { - var state = _ref.state; - var elements = Object.keys(state.elements); - ReactDOM.flushSync(function () { - setState({ - styles: fromEntries(elements.map(function (element) { - return [element, state.styles[element] || {}]; - })), - attributes: fromEntries(elements.map(function (element) { - return [element, state.attributes[element]]; - })) - }); - }); - }, - requires: ['computeStyles'] - }; - }, []); - var popperOptions = React.useMemo(function () { - var newOptions = { - onFirstUpdate: optionsWithDefaults.onFirstUpdate, - placement: optionsWithDefaults.placement, - strategy: optionsWithDefaults.strategy, - modifiers: [].concat(optionsWithDefaults.modifiers, [updateStateModifier, { - name: 'applyStyles', - enabled: false - }]) - }; - - if (isEqual(prevOptions.current, newOptions)) { - return prevOptions.current || newOptions; - } else { - prevOptions.current = newOptions; - return newOptions; - } - }, [optionsWithDefaults.onFirstUpdate, optionsWithDefaults.placement, optionsWithDefaults.strategy, optionsWithDefaults.modifiers, updateStateModifier]); - var popperInstanceRef = React.useRef(); - useIsomorphicLayoutEffect(function () { - if (popperInstanceRef.current) { - popperInstanceRef.current.setOptions(popperOptions); - } - }, [popperOptions]); - useIsomorphicLayoutEffect(function () { - if (referenceElement == null || popperElement == null) { - return; - } - - var createPopper = options.createPopper || defaultCreatePopper; - var popperInstance = createPopper(referenceElement, popperElement, popperOptions); - popperInstanceRef.current = popperInstance; - return function () { - popperInstance.destroy(); - popperInstanceRef.current = null; - }; - }, [referenceElement, popperElement, options.createPopper]); - return { - state: popperInstanceRef.current ? popperInstanceRef.current.state : null, - styles: state.styles, - attributes: state.attributes, - update: popperInstanceRef.current ? popperInstanceRef.current.update : null, - forceUpdate: popperInstanceRef.current ? popperInstanceRef.current.forceUpdate : null - }; -}; \ No newline at end of file diff --git a/frontend/node_modules/react-popper/lib/esm/utils.js b/frontend/node_modules/react-popper/lib/esm/utils.js deleted file mode 100644 index e0807cb07..000000000 --- a/frontend/node_modules/react-popper/lib/esm/utils.js +++ /dev/null @@ -1,53 +0,0 @@ -import * as React from 'react'; - -/** - * Takes an argument and if it's an array, returns the first item in the array, - * otherwise returns the argument. Used for Preact compatibility. - */ -export var unwrapArray = function unwrapArray(arg) { - return Array.isArray(arg) ? arg[0] : arg; -}; -/** - * Takes a maybe-undefined function and arbitrary args and invokes the function - * only if it is defined. - */ - -export var safeInvoke = function safeInvoke(fn) { - if (typeof fn === 'function') { - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - return fn.apply(void 0, args); - } -}; -/** - * Sets a ref using either a ref callback or a ref object - */ - -export var setRef = function setRef(ref, node) { - // if its a function call it - if (typeof ref === 'function') { - return safeInvoke(ref, node); - } // otherwise we should treat it as a ref object - else if (ref != null) { - ref.current = node; - } -}; -/** - * Simple ponyfill for Object.fromEntries - */ - -export var fromEntries = function fromEntries(entries) { - return entries.reduce(function (acc, _ref) { - var key = _ref[0], - value = _ref[1]; - acc[key] = value; - return acc; - }, {}); -}; -/** - * Small wrapper around `useLayoutEffect` to get rid of the warning on SSR envs - */ - -export var useIsomorphicLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect; \ No newline at end of file diff --git a/frontend/node_modules/react-popper/package.json b/frontend/node_modules/react-popper/package.json deleted file mode 100644 index 8ff062018..000000000 --- a/frontend/node_modules/react-popper/package.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "name": "react-popper", - "version": "2.3.0", - "description": "Official library to use Popper on React projects", - "license": "MIT", - "author": "Travis Arnold (http://souporserious.com)", - "contributors": [ - "Federico Zivolo (https://fezvrasta.github.io)" - ], - "homepage": "https://popper.js.org/react-popper", - "main": "lib/cjs/index.js", - "module": "lib/esm/index.js", - "typings": "typings/react-popper.d.ts", - "sideEffects": false, - "files": [ - "/dist", - "/lib", - "/typings/react-popper.d.ts" - ], - "scripts": { - "build": "yarn build:clean && yarn build:esm && yarn build:cjs && yarn build:umd && yarn build:flow", - "build:clean": "rimraf dist/ && rimraf lib/", - "build:umd": "rollup -c && rimraf dist/index.esm.js", - "build:esm": "cross-env BABEL_ENV=esm babel src --out-dir lib/esm", - "build:cjs": "cross-env BABEL_ENV=cjs babel src --out-dir lib/cjs", - "build:flow": "flow-copy-source --ignore '{__typings__/*,*.test}.js' src lib/cjs", - "demo:dev": "parcel --out-dir demo/dist demo/index.html", - "demo:build": "parcel build --out-dir demo/dist demo/index.html --public-url=/react-popper", - "demo:deploy": "yarn demo:build && gh-pages -d demo/dist", - "test": "yarn test:eslint && yarn test:flow && yarn test:ts && yarn test:jest", - "test:ts": "tsc --project ./typings/tests", - "test:flow": "flow check", - "test:jest": "jest", - "test:eslint": "eslint src", - "prepare": "yarn build", - "precommit": "pretty-quick --staged && test", - "prepublishOnly": "git-branch-is master" - }, - "jest": { - "setupFilesAfterEnv": [ - "jest.setup.js" - ] - }, - "repository": { - "type": "git", - "url": "https://github.com/popperjs/react-popper" - }, - "bugs": { - "url": "https://github.com/popperjs/react-popper/issues" - }, - "keywords": [ - "react", - "react-popper", - "popperjs", - "component", - "drop", - "tooltip", - "popover" - ], - "peerDependencies": { - "@popperjs/core": "^2.0.0", - "react": "^16.8.0 || ^17 || ^18", - "react-dom": "^16.8.0 || ^17 || ^18" - }, - "dependencies": { - "react-fast-compare": "^3.0.1", - "warning": "^4.0.2" - }, - "devDependencies": { - "@atomico/rollup-plugin-sizes": "^1.1.3", - "@babel/cli": "^7.8.4", - "@babel/core": "^7.9.0", - "@babel/plugin-transform-modules-commonjs": "^7.9.0", - "@babel/polyfill": "^7.8.7", - "@babel/preset-env": "^7.9.0", - "@babel/preset-flow": "^7.9.0", - "@babel/preset-react": "^7.9.4", - "@emotion/core": "^10.0.28", - "@emotion/styled": "^10.0.27", - "@popperjs/core": "^2.3.3", - "@rollup/plugin-commonjs": "^11.0.2", - "@rollup/plugin-node-resolve": "^7.1.1", - "@rollup/plugin-replace": "^2.3.1", - "@testing-library/react": "^13.1.1", - "@testing-library/react-hooks": "^8.0.0", - "@types/react": "^16.9.29", - "babel-eslint": "^10.1.0", - "babel-jest": "^25.2.4", - "cross-env": "^7.0.2", - "eslint": "^6.8.0", - "eslint-config-prettier": "^6.10.1", - "eslint-plugin-flowtype": "^4.7.0", - "eslint-plugin-jest": "^23.8.2", - "eslint-plugin-promise": "^4.2.1", - "eslint-plugin-react": "^7.19.0", - "eslint-plugin-react-hooks": "^3.0.0", - "flow-bin": "^0.176.2", - "flow-copy-source": "^2.0.9", - "gh-pages": "^2.2.0", - "git-branch-is": "^3.1.0", - "jest": "^25.2.4", - "parcel-bundler": "^1.12.4", - "prettier": "^2.0.2", - "pretty-quick": "^2.0.1", - "react": "18.0.0", - "react-dom": "^18.0.0", - "react-spring": "^8.0.27", - "react-test-renderer": "^18.0.0", - "rimraf": "^3.0.2", - "rollup": "^2.3.1", - "rollup-plugin-babel": "^4.4.0", - "rollup-plugin-terser": "^5.3.0", - "typescript": "^3.8.3" - } -} diff --git a/frontend/node_modules/react-popper/typings/react-popper.d.ts b/frontend/node_modules/react-popper/typings/react-popper.d.ts deleted file mode 100644 index 34d8f8252..000000000 --- a/frontend/node_modules/react-popper/typings/react-popper.d.ts +++ /dev/null @@ -1,85 +0,0 @@ -import * as PopperJS from '@popperjs/core'; -import * as React from 'react'; - -// Utility type -type UnionWhere = U extends M ? U : never; - -interface ManagerProps { - children: React.ReactNode; -} -export class Manager extends React.Component {} - -export type RefHandler = (ref: HTMLElement | null) => void; - -interface ReferenceChildrenProps { - // React refs are supposed to be contravariant (allows a more general type to be passed rather than a more specific one) - // However, Typescript currently can't infer that fact for refs - // See https://github.com/microsoft/TypeScript/issues/30748 for more information - ref: React.Ref; -} - -interface ReferenceProps { - children: (props: ReferenceChildrenProps) => React.ReactNode; - innerRef?: React.Ref; -} -export class Reference extends React.Component {} - -export interface PopperArrowProps { - ref: React.Ref; - style: React.CSSProperties; -} - -export interface PopperChildrenProps { - ref: React.Ref; - style: React.CSSProperties; - - placement: PopperJS.Placement; - isReferenceHidden?: boolean; - hasPopperEscaped?: boolean; - - update: () => Promise>; - forceUpdate: () => Partial; - arrowProps: PopperArrowProps; -} - -type StrictModifierNames = NonNullable; - -export type StrictModifier< - Name extends StrictModifierNames = StrictModifierNames -> = UnionWhere; - -export type Modifier< - Name, - Options extends object = object -> = Name extends StrictModifierNames - ? StrictModifier - : Partial>; - -export interface PopperProps { - children: (props: PopperChildrenProps) => React.ReactNode; - innerRef?: React.Ref; - modifiers?: ReadonlyArray>; - placement?: PopperJS.Placement; - strategy?: PopperJS.PositioningStrategy; - referenceElement?: HTMLElement | PopperJS.VirtualElement; - onFirstUpdate?: (state: Partial) => void; -} -export class Popper extends React.Component< - PopperProps, - {} -> {} - -export function usePopper( - referenceElement?: Element | PopperJS.VirtualElement | null, - popperElement?: HTMLElement | null, - options?: Omit, 'modifiers'> & { - createPopper?: typeof PopperJS.createPopper; - modifiers?: ReadonlyArray>; - } -): { - styles: { [key: string]: React.CSSProperties }; - attributes: { [key: string]: { [key: string]: string } | undefined }; - state: PopperJS.State | null; - update: PopperJS.Instance['update'] | null; - forceUpdate: PopperJS.Instance['forceUpdate'] | null; -}; diff --git a/frontend/node_modules/react-router-dom/README.md b/frontend/node_modules/react-router-dom/README.md deleted file mode 100644 index f826f7d25..000000000 --- a/frontend/node_modules/react-router-dom/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# react-router-dom - -DOM bindings for [React Router](https://reactrouter.com). - -## Installation - -Using [npm](https://www.npmjs.com/): - - $ npm install --save react-router-dom - -Then with a module bundler like [webpack](https://webpack.github.io/), use as you would anything else: - -```js -// using ES6 modules -import { BrowserRouter, Route, Link } from "react-router-dom"; - -// using CommonJS modules -const BrowserRouter = require("react-router-dom").BrowserRouter; -const Route = require("react-router-dom").Route; -const Link = require("react-router-dom").Link; -``` - -The UMD build is also available on [unpkg](https://unpkg.com): - -```html - -``` - -You can find the library on `window.ReactRouterDOM`. - -## Issues - -If you find a bug, please file an issue on [our issue tracker on GitHub](https://github.com/remix-run/react-router/issues). - -## Credits - -React Router is built and maintained by [Remix Software](https://remix.run). diff --git a/frontend/node_modules/react-router-dom/package.json b/frontend/node_modules/react-router-dom/package.json deleted file mode 100644 index fc068cac5..000000000 --- a/frontend/node_modules/react-router-dom/package.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "name": "react-router-dom", - "version": "5.3.4", - "description": "DOM bindings for React Router", - "homepage": "https://reactrouter.com/", - "repository": { - "url": "https://github.com/remix-run/react-router.git", - "type": "git", - "directory": "packages/react-router-dom" - }, - "license": "MIT", - "author": "Remix Software ", - "files": [ - "LICENSE", - "README.md", - "BrowserRouter.js", - "HashRouter.js", - "Link.js", - "MemoryRouter.js", - "NavLink.js", - "Prompt.js", - "Redirect.js", - "Route.js", - "Router.js", - "StaticRouter.js", - "Switch.js", - "cjs", - "es", - "esm", - "index.js", - "generatePath.js", - "matchPath.js", - "modules/*.js", - "modules/utils/*.js", - "withRouter.js", - "warnAboutDeprecatedCJSRequire.js", - "umd" - ], - "main": "index.js", - "module": "esm/react-router-dom.js", - "sideEffects": false, - "scripts": { - "build": "rollup -c", - "lint": "eslint modules" - }, - "peerDependencies": { - "react": ">=15" - }, - "dependencies": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-router": "5.3.4", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - }, - "browserify": { - "transform": [ - "loose-envify" - ] - }, - "keywords": [ - "react", - "router", - "route", - "routing", - "history", - "link" - ] -} diff --git a/frontend/node_modules/react-router/README.md b/frontend/node_modules/react-router/README.md deleted file mode 100644 index 22d96a5e4..000000000 --- a/frontend/node_modules/react-router/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# react-router - -Declarative routing for [React](https://facebook.github.io/react). - -## Installation - -Using [npm](https://www.npmjs.com/): - - $ npm install --save react-router - -**Note:** This package provides the core routing functionality for React Router, but you might not want to install it directly. If you are writing an application that will run in the browser, you should instead install `react-router-dom`. Similarly, if you are writing a React Native application, you should instead install `react-router-native`. Both of those will install `react-router` as a dependency. - -Then with a module bundler like [webpack](https://webpack.github.io/), use as you would anything else: - -```js -// using ES6 modules -import { Router, Route, Switch } from "react-router"; - -// using CommonJS modules -var Router = require("react-router").Router; -var Route = require("react-router").Route; -var Switch = require("react-router").Switch; -``` - -The UMD build is also available on [unpkg](https://unpkg.com): - -```html - -``` - -You can find the library on `window.ReactRouter`. - -## Issues - -If you find a bug, please file an issue on [our issue tracker on GitHub](https://github.com/remix-run/react-router/issues). - -## Credits - -React Router is built and maintained by [Remix Software](https://remix.run). diff --git a/frontend/node_modules/react-router/package.json b/frontend/node_modules/react-router/package.json deleted file mode 100644 index 8ff35c656..000000000 --- a/frontend/node_modules/react-router/package.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "name": "react-router", - "version": "5.3.4", - "description": "Declarative routing for React", - "homepage": "https://reactrouter.com/", - "repository": { - "url": "https://github.com/remix-run/react-router.git", - "type": "git", - "directory": "packages/react-router" - }, - "license": "MIT", - "author": "Remix Software ", - "files": [ - "LICENSE", - "README.md", - "MemoryRouter.js", - "Prompt.js", - "Redirect.js", - "Route.js", - "Router.js", - "StaticRouter.js", - "Switch.js", - "cjs", - "es", - "esm", - "index.js", - "generatePath.js", - "matchPath.js", - "modules/*.js", - "modules/utils/*.js", - "withRouter.js", - "warnAboutDeprecatedCJSRequire.js", - "umd" - ], - "main": "index.js", - "module": "esm/react-router.js", - "sideEffects": false, - "scripts": { - "build": "rollup -c", - "lint": "eslint modules" - }, - "peerDependencies": { - "react": ">=15" - }, - "dependencies": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "hoist-non-react-statics": "^3.1.0", - "loose-envify": "^1.3.1", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.2", - "react-is": "^16.6.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - }, - "browserify": { - "transform": [ - "loose-envify" - ] - }, - "keywords": [ - "react", - "router", - "route", - "routing", - "history", - "link" - ] -} diff --git a/frontend/node_modules/react-select/README.md b/frontend/node_modules/react-select/README.md deleted file mode 100644 index 8be7399af..000000000 --- a/frontend/node_modules/react-select/README.md +++ /dev/null @@ -1,168 +0,0 @@ -[![NPM](https://img.shields.io/npm/v/react-select.svg)](https://www.npmjs.com/package/react-select) -[![CircleCI](https://circleci.com/gh/JedWatson/react-select/tree/master.svg?style=shield)](https://circleci.com/gh/JedWatson/react-select/tree/master) -[![Coverage Status](https://coveralls.io/repos/JedWatson/react-select/badge.svg?branch=master&service=github)](https://coveralls.io/github/JedWatson/react-select?branch=master) -[![Supported by Thinkmill](https://thinkmill.github.io/badge/heart.svg)](http://thinkmill.com.au/?utm_source=github&utm_medium=badge&utm_campaign=react-select) - -# React-Select - -The Select control for [React](https://reactjs.com). Initially built for use in [KeystoneJS](http://www.keystonejs.com). - -See [react-select.com](https://www.react-select.com) for live demos and comprehensive docs. - -React Select is funded by [Thinkmill](https://www.thinkmill.com.au) and [Atlassian](https://atlaskit.atlassian.com). It represents a whole new approach to developing powerful React.js components that _just work_ out of the box, while being extremely customisable. - -For the story behind this component, watch Jed's talk at React Conf 2019 - [building React Select](https://youtu.be/yS0jUnmBujE) - -Features include: - -- Flexible approach to data, with customisable functions -- Extensible styling API with [emotion](https://emotion.sh) -- Component Injection API for complete control over the UI behaviour -- Controllable state props and modular architecture -- Long-requested features like option groups, portal support, animation, and more - -## Using an older version? - -- [v3, v4, and v5 upgrade guide](https://react-select.com/upgrade) -- [v2 upgrade guide](https://react-select.com/upgrade-to-v2) -- React Select v1 documentation and examples are available at [v1.react-select.com](https://v1.react-select.com) - -# Installation and usage - -The easiest way to use react-select is to install it from npm and build it into your app with Webpack. - -``` -yarn add react-select -``` - -Then use it in your app: - -#### With React Component - -```js -import React from 'react'; -import Select from 'react-select'; - -const options = [ - { value: 'chocolate', label: 'Chocolate' }, - { value: 'strawberry', label: 'Strawberry' }, - { value: 'vanilla', label: 'Vanilla' }, -]; - -class App extends React.Component { - state = { - selectedOption: null, - }; - handleChange = (selectedOption) => { - this.setState({ selectedOption }, () => - console.log(`Option selected:`, this.state.selectedOption) - ); - }; - render() { - const { selectedOption } = this.state; - - return ( - - - ); -} -``` - -## Props - -Common props you may want to specify include: - -- `autoFocus` - focus the control when it mounts -- `className` - apply a className to the control -- `classNamePrefix` - apply classNames to inner elements with the given prefix -- `isDisabled` - disable the control -- `isMulti` - allow the user to select multiple values -- `isSearchable` - allow the user to search for matching options -- `name` - generate an HTML input with this name, containing the current value -- `onChange` - subscribe to change events -- `options` - specify the options the user can select from -- `placeholder` - change the text displayed when no option is selected -- `noOptionsMessage` - ({ inputValue: string }) => string | null - Text to display when there are no options -- `value` - control the current value - -See the [props documentation](https://www.react-select.com/props) for complete documentation on the props react-select supports. - -## Controllable Props - -You can control the following props by providing values for them. If you don't, react-select will manage them for you. - -- `value` / `onChange` - specify the current value of the control -- `menuIsOpen` / `onMenuOpen` / `onMenuClose` - control whether the menu is open -- `inputValue` / `onInputChange` - control the value of the search input (changing this will update the available options) - -If you don't provide these props, you can set the initial value of the state they control: - -- `defaultValue` - set the initial value of the control -- `defaultMenuIsOpen` - set the initial open value of the menu -- `defaultInputValue` - set the initial value of the search input - -## Methods - -React-select exposes two public methods: - -- `focus()` - focus the control programmatically -- `blur()` - blur the control programmatically - -## Customisation - -Check the docs for more information on: - -- [Customising the styles](https://www.react-select.com/styles) -- [Using custom components](https://www.react-select.com/components) -- [Using the built-in animated components](https://www.react-select.com/home#animated-components) -- [Creating an async select](https://www.react-select.com/async) -- [Allowing users to create new options](https://www.react-select.com/creatable) -- [Advanced use-cases](https://www.react-select.com/advanced) -- [TypeScript guide](https://www.react-select.com/typescript) - -## TypeScript - -The v5 release represents a rewrite from JavaScript to TypeScript. The types for v4 and earlier releases are available at [@types](https://www.npmjs.com/package/@types/react-select). See the [TypeScript guide](https://www.react-select.com/typescript) for how to use the types starting with v5. - -# Thanks - -Thank you to everyone who has contributed to this project. It's been a wild ride. - -If you like React Select, you should [follow me on twitter](https://twitter.com/jedwatson)! - -Shout out to [Joss Mackison](https://github.com/jossmac), [Charles Lee](https://github.com/gwyneplaine), [Ben Conolly](https://github.com/Noviny), [Tom Walker](https://github.com/bladey), [Nathan Bierema](https://github.com/Methuselah96), [Eric Bonow](https://github.com/ebonow), [Mitchell Hamilton](https://github.com/mitchellhamilton), [Dave Brotherstone](https://github.com/bruderstein), [Brian Vaughn](https://github.com/bvaughn), and the [Atlassian Design System](https://atlassian.design) team who along with many other contributors have made this possible ❤️ - -## License - -MIT Licensed. Copyright (c) Jed Watson 2022. diff --git a/frontend/node_modules/react-select/animated/dist/react-select-animated.cjs.d.ts b/frontend/node_modules/react-select/animated/dist/react-select-animated.cjs.d.ts deleted file mode 100644 index c599881d3..000000000 --- a/frontend/node_modules/react-select/animated/dist/react-select-animated.cjs.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "../../dist/declarations/src/animated/index"; -export { default } from "../../dist/declarations/src/animated/index"; diff --git a/frontend/node_modules/react-select/animated/dist/react-select-animated.cjs.dev.js b/frontend/node_modules/react-select/animated/dist/react-select-animated.cjs.dev.js deleted file mode 100644 index 672fd57c6..000000000 --- a/frontend/node_modules/react-select/animated/dist/react-select-animated.cjs.dev.js +++ /dev/null @@ -1,325 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var _objectSpread = require('@babel/runtime/helpers/objectSpread2'); -var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties'); -var memoizeOne = require('memoize-one'); -var index$1 = require('../../dist/index-5b950e59.cjs.dev.js'); -var React = require('react'); -var _extends = require('@babel/runtime/helpers/extends'); -var _slicedToArray = require('@babel/runtime/helpers/slicedToArray'); -var reactTransitionGroup = require('react-transition-group'); -require('@emotion/react'); -require('@babel/runtime/helpers/typeof'); -require('@babel/runtime/helpers/taggedTemplateLiteral'); -require('@babel/runtime/helpers/defineProperty'); -require('react-dom'); -require('@floating-ui/dom'); -require('use-isomorphic-layout-effect'); - -function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; } - -function _interopNamespace(e) { - if (e && e.__esModule) return e; - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { - return e[k]; - } - }); - } - }); - } - n['default'] = e; - return Object.freeze(n); -} - -var memoizeOne__default = /*#__PURE__*/_interopDefault(memoizeOne); -var React__namespace = /*#__PURE__*/_interopNamespace(React); - -var _excluded$4 = ["in", "onExited", "appear", "enter", "exit"]; -// strip transition props off before spreading onto select component -var AnimatedInput = function AnimatedInput(WrappedComponent) { - return function (_ref) { - _ref.in; - _ref.onExited; - _ref.appear; - _ref.enter; - _ref.exit; - var props = _objectWithoutProperties(_ref, _excluded$4); - return /*#__PURE__*/React__namespace.createElement(WrappedComponent, props); - }; -}; - -var _excluded$3 = ["component", "duration", "in", "onExited"]; -var Fade = function Fade(_ref) { - var Tag = _ref.component, - _ref$duration = _ref.duration, - duration = _ref$duration === void 0 ? 1 : _ref$duration, - inProp = _ref.in; - _ref.onExited; - var props = _objectWithoutProperties(_ref, _excluded$3); - var nodeRef = React.useRef(null); - var transition = { - entering: { - opacity: 0 - }, - entered: { - opacity: 1, - transition: "opacity ".concat(duration, "ms") - }, - exiting: { - opacity: 0 - }, - exited: { - opacity: 0 - } - }; - return /*#__PURE__*/React__namespace.createElement(reactTransitionGroup.Transition, { - mountOnEnter: true, - unmountOnExit: true, - in: inProp, - timeout: duration, - nodeRef: nodeRef - }, function (state) { - var innerProps = { - style: _objectSpread({}, transition[state]), - ref: nodeRef - }; - return /*#__PURE__*/React__namespace.createElement(Tag, _extends({ - innerProps: innerProps - }, props)); - }); -}; - -// ============================== -// Collapse Transition -// ============================== - -var collapseDuration = 260; -// wrap each MultiValue with a collapse transition; decreases width until -// finally removing from DOM -var Collapse = function Collapse(_ref2) { - var children = _ref2.children, - _in = _ref2.in, - _onExited = _ref2.onExited; - var ref = React.useRef(null); - var _useState = React.useState('auto'), - _useState2 = _slicedToArray(_useState, 2), - width = _useState2[0], - setWidth = _useState2[1]; - React.useEffect(function () { - var el = ref.current; - if (!el) return; - - /* - Here we're invoking requestAnimationFrame with a callback invoking our - call to getBoundingClientRect and setState in order to resolve an edge case - around portalling. Certain portalling solutions briefly remove children from the DOM - before appending them to the target node. This is to avoid us trying to call getBoundingClientrect - while the Select component is in this state. - */ - // cannot use `offsetWidth` because it is rounded - var rafId = window.requestAnimationFrame(function () { - return setWidth(el.getBoundingClientRect().width); - }); - return function () { - return window.cancelAnimationFrame(rafId); - }; - }, []); - var getStyleFromStatus = function getStyleFromStatus(status) { - switch (status) { - default: - return { - width: width - }; - case 'exiting': - return { - width: 0, - transition: "width ".concat(collapseDuration, "ms ease-out") - }; - case 'exited': - return { - width: 0 - }; - } - }; - return /*#__PURE__*/React__namespace.createElement(reactTransitionGroup.Transition, { - enter: false, - mountOnEnter: true, - unmountOnExit: true, - in: _in, - onExited: function onExited() { - var el = ref.current; - if (!el) return; - _onExited === null || _onExited === void 0 ? void 0 : _onExited(el); - }, - timeout: collapseDuration, - nodeRef: ref - }, function (status) { - return /*#__PURE__*/React__namespace.createElement("div", { - ref: ref, - style: _objectSpread({ - overflow: 'hidden', - whiteSpace: 'nowrap' - }, getStyleFromStatus(status)) - }, children); - }); -}; - -var _excluded$2 = ["in", "onExited"]; -// strip transition props off before spreading onto actual component - -var AnimatedMultiValue = function AnimatedMultiValue(WrappedComponent) { - return function (_ref) { - var inProp = _ref.in, - onExited = _ref.onExited, - props = _objectWithoutProperties(_ref, _excluded$2); - return /*#__PURE__*/React__namespace.createElement(Collapse, { - in: inProp, - onExited: onExited - }, /*#__PURE__*/React__namespace.createElement(WrappedComponent, _extends({ - cropWithEllipsis: inProp - }, props))); - }; -}; - -// fade in when last multi-value removed, otherwise instant -var AnimatedPlaceholder = function AnimatedPlaceholder(WrappedComponent) { - return function (props) { - return /*#__PURE__*/React__namespace.createElement(Fade, _extends({ - component: WrappedComponent, - duration: props.isMulti ? collapseDuration : 1 - }, props)); - }; -}; - -// instant fade; all transition-group children must be transitions - -var AnimatedSingleValue = function AnimatedSingleValue(WrappedComponent) { - return function (props) { - return /*#__PURE__*/React__namespace.createElement(Fade, _extends({ - component: WrappedComponent - }, props)); - }; -}; - -var _excluded$1 = ["component"], - _excluded2 = ["children"]; -// make ValueContainer a transition group -var AnimatedValueContainer = function AnimatedValueContainer(WrappedComponent) { - return function (props) { - return props.isMulti ? /*#__PURE__*/React__namespace.createElement(IsMultiValueContainer, _extends({ - component: WrappedComponent - }, props)) : /*#__PURE__*/React__namespace.createElement(reactTransitionGroup.TransitionGroup, _extends({ - component: WrappedComponent - }, props)); - }; -}; -var IsMultiValueContainer = function IsMultiValueContainer(_ref) { - var component = _ref.component, - restProps = _objectWithoutProperties(_ref, _excluded$1); - var multiProps = useIsMultiValueContainer(restProps); - return /*#__PURE__*/React__namespace.createElement(reactTransitionGroup.TransitionGroup, _extends({ - component: component - }, multiProps)); -}; -var useIsMultiValueContainer = function useIsMultiValueContainer(_ref2) { - var children = _ref2.children, - props = _objectWithoutProperties(_ref2, _excluded2); - var isMulti = props.isMulti, - hasValue = props.hasValue, - innerProps = props.innerProps, - _props$selectProps = props.selectProps, - components = _props$selectProps.components, - controlShouldRenderValue = _props$selectProps.controlShouldRenderValue; - var _useState = React.useState(isMulti && controlShouldRenderValue && hasValue), - _useState2 = _slicedToArray(_useState, 2), - cssDisplayFlex = _useState2[0], - setCssDisplayFlex = _useState2[1]; - var _useState3 = React.useState(false), - _useState4 = _slicedToArray(_useState3, 2), - removingValue = _useState4[0], - setRemovingValue = _useState4[1]; - React.useEffect(function () { - if (hasValue && !cssDisplayFlex) { - setCssDisplayFlex(true); - } - }, [hasValue, cssDisplayFlex]); - React.useEffect(function () { - if (removingValue && !hasValue && cssDisplayFlex) { - setCssDisplayFlex(false); - } - setRemovingValue(false); - }, [removingValue, hasValue, cssDisplayFlex]); - var onExited = function onExited() { - return setRemovingValue(true); - }; - var childMapper = function childMapper(child) { - if (isMulti && /*#__PURE__*/React__namespace.isValidElement(child)) { - // Add onExited callback to MultiValues - if (child.type === components.MultiValue) { - return /*#__PURE__*/React__namespace.cloneElement(child, { - onExited: onExited - }); - } - // While container flexed, Input cursor is shown after Placeholder text, - // so remove Placeholder until display is set back to grid - if (child.type === components.Placeholder && cssDisplayFlex) { - return null; - } - } - return child; - }; - var newInnerProps = _objectSpread(_objectSpread({}, innerProps), {}, { - style: _objectSpread(_objectSpread({}, innerProps === null || innerProps === void 0 ? void 0 : innerProps.style), {}, { - display: isMulti && hasValue || cssDisplayFlex ? 'flex' : 'grid' - }) - }); - var newProps = _objectSpread(_objectSpread({}, props), {}, { - innerProps: newInnerProps, - children: React__namespace.Children.toArray(children).map(childMapper) - }); - return newProps; -}; - -var _excluded = ["Input", "MultiValue", "Placeholder", "SingleValue", "ValueContainer"]; -var makeAnimated = function makeAnimated() { - var externalComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var components = index$1.defaultComponents({ - components: externalComponents - }); - var Input = components.Input, - MultiValue = components.MultiValue, - Placeholder = components.Placeholder, - SingleValue = components.SingleValue, - ValueContainer = components.ValueContainer, - rest = _objectWithoutProperties(components, _excluded); - return _objectSpread({ - Input: AnimatedInput(Input), - MultiValue: AnimatedMultiValue(MultiValue), - Placeholder: AnimatedPlaceholder(Placeholder), - SingleValue: AnimatedSingleValue(SingleValue), - ValueContainer: AnimatedValueContainer(ValueContainer) - }, rest); -}; -var AnimatedComponents = makeAnimated(); -var Input = AnimatedComponents.Input; -var MultiValue = AnimatedComponents.MultiValue; -var Placeholder = AnimatedComponents.Placeholder; -var SingleValue = AnimatedComponents.SingleValue; -var ValueContainer = AnimatedComponents.ValueContainer; -var index = memoizeOne__default['default'](makeAnimated); - -exports.Input = Input; -exports.MultiValue = MultiValue; -exports.Placeholder = Placeholder; -exports.SingleValue = SingleValue; -exports.ValueContainer = ValueContainer; -exports.default = index; diff --git a/frontend/node_modules/react-select/animated/dist/react-select-animated.cjs.js b/frontend/node_modules/react-select/animated/dist/react-select-animated.cjs.js deleted file mode 100644 index 7d5db10fb..000000000 --- a/frontend/node_modules/react-select/animated/dist/react-select-animated.cjs.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -if (process.env.NODE_ENV === "production") { - module.exports = require("./react-select-animated.cjs.prod.js"); -} else { - module.exports = require("./react-select-animated.cjs.dev.js"); -} diff --git a/frontend/node_modules/react-select/animated/dist/react-select-animated.cjs.prod.js b/frontend/node_modules/react-select/animated/dist/react-select-animated.cjs.prod.js deleted file mode 100644 index 3e9b78ca9..000000000 --- a/frontend/node_modules/react-select/animated/dist/react-select-animated.cjs.prod.js +++ /dev/null @@ -1,325 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var _objectSpread = require('@babel/runtime/helpers/objectSpread2'); -var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties'); -var memoizeOne = require('memoize-one'); -var index$1 = require('../../dist/index-78cf371e.cjs.prod.js'); -var React = require('react'); -var _extends = require('@babel/runtime/helpers/extends'); -var _slicedToArray = require('@babel/runtime/helpers/slicedToArray'); -var reactTransitionGroup = require('react-transition-group'); -require('@emotion/react'); -require('@babel/runtime/helpers/typeof'); -require('@babel/runtime/helpers/taggedTemplateLiteral'); -require('@babel/runtime/helpers/defineProperty'); -require('react-dom'); -require('@floating-ui/dom'); -require('use-isomorphic-layout-effect'); - -function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; } - -function _interopNamespace(e) { - if (e && e.__esModule) return e; - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { - return e[k]; - } - }); - } - }); - } - n['default'] = e; - return Object.freeze(n); -} - -var memoizeOne__default = /*#__PURE__*/_interopDefault(memoizeOne); -var React__namespace = /*#__PURE__*/_interopNamespace(React); - -var _excluded$4 = ["in", "onExited", "appear", "enter", "exit"]; -// strip transition props off before spreading onto select component -var AnimatedInput = function AnimatedInput(WrappedComponent) { - return function (_ref) { - _ref.in; - _ref.onExited; - _ref.appear; - _ref.enter; - _ref.exit; - var props = _objectWithoutProperties(_ref, _excluded$4); - return /*#__PURE__*/React__namespace.createElement(WrappedComponent, props); - }; -}; - -var _excluded$3 = ["component", "duration", "in", "onExited"]; -var Fade = function Fade(_ref) { - var Tag = _ref.component, - _ref$duration = _ref.duration, - duration = _ref$duration === void 0 ? 1 : _ref$duration, - inProp = _ref.in; - _ref.onExited; - var props = _objectWithoutProperties(_ref, _excluded$3); - var nodeRef = React.useRef(null); - var transition = { - entering: { - opacity: 0 - }, - entered: { - opacity: 1, - transition: "opacity ".concat(duration, "ms") - }, - exiting: { - opacity: 0 - }, - exited: { - opacity: 0 - } - }; - return /*#__PURE__*/React__namespace.createElement(reactTransitionGroup.Transition, { - mountOnEnter: true, - unmountOnExit: true, - in: inProp, - timeout: duration, - nodeRef: nodeRef - }, function (state) { - var innerProps = { - style: _objectSpread({}, transition[state]), - ref: nodeRef - }; - return /*#__PURE__*/React__namespace.createElement(Tag, _extends({ - innerProps: innerProps - }, props)); - }); -}; - -// ============================== -// Collapse Transition -// ============================== - -var collapseDuration = 260; -// wrap each MultiValue with a collapse transition; decreases width until -// finally removing from DOM -var Collapse = function Collapse(_ref2) { - var children = _ref2.children, - _in = _ref2.in, - _onExited = _ref2.onExited; - var ref = React.useRef(null); - var _useState = React.useState('auto'), - _useState2 = _slicedToArray(_useState, 2), - width = _useState2[0], - setWidth = _useState2[1]; - React.useEffect(function () { - var el = ref.current; - if (!el) return; - - /* - Here we're invoking requestAnimationFrame with a callback invoking our - call to getBoundingClientRect and setState in order to resolve an edge case - around portalling. Certain portalling solutions briefly remove children from the DOM - before appending them to the target node. This is to avoid us trying to call getBoundingClientrect - while the Select component is in this state. - */ - // cannot use `offsetWidth` because it is rounded - var rafId = window.requestAnimationFrame(function () { - return setWidth(el.getBoundingClientRect().width); - }); - return function () { - return window.cancelAnimationFrame(rafId); - }; - }, []); - var getStyleFromStatus = function getStyleFromStatus(status) { - switch (status) { - default: - return { - width: width - }; - case 'exiting': - return { - width: 0, - transition: "width ".concat(collapseDuration, "ms ease-out") - }; - case 'exited': - return { - width: 0 - }; - } - }; - return /*#__PURE__*/React__namespace.createElement(reactTransitionGroup.Transition, { - enter: false, - mountOnEnter: true, - unmountOnExit: true, - in: _in, - onExited: function onExited() { - var el = ref.current; - if (!el) return; - _onExited === null || _onExited === void 0 ? void 0 : _onExited(el); - }, - timeout: collapseDuration, - nodeRef: ref - }, function (status) { - return /*#__PURE__*/React__namespace.createElement("div", { - ref: ref, - style: _objectSpread({ - overflow: 'hidden', - whiteSpace: 'nowrap' - }, getStyleFromStatus(status)) - }, children); - }); -}; - -var _excluded$2 = ["in", "onExited"]; -// strip transition props off before spreading onto actual component - -var AnimatedMultiValue = function AnimatedMultiValue(WrappedComponent) { - return function (_ref) { - var inProp = _ref.in, - onExited = _ref.onExited, - props = _objectWithoutProperties(_ref, _excluded$2); - return /*#__PURE__*/React__namespace.createElement(Collapse, { - in: inProp, - onExited: onExited - }, /*#__PURE__*/React__namespace.createElement(WrappedComponent, _extends({ - cropWithEllipsis: inProp - }, props))); - }; -}; - -// fade in when last multi-value removed, otherwise instant -var AnimatedPlaceholder = function AnimatedPlaceholder(WrappedComponent) { - return function (props) { - return /*#__PURE__*/React__namespace.createElement(Fade, _extends({ - component: WrappedComponent, - duration: props.isMulti ? collapseDuration : 1 - }, props)); - }; -}; - -// instant fade; all transition-group children must be transitions - -var AnimatedSingleValue = function AnimatedSingleValue(WrappedComponent) { - return function (props) { - return /*#__PURE__*/React__namespace.createElement(Fade, _extends({ - component: WrappedComponent - }, props)); - }; -}; - -var _excluded$1 = ["component"], - _excluded2 = ["children"]; -// make ValueContainer a transition group -var AnimatedValueContainer = function AnimatedValueContainer(WrappedComponent) { - return function (props) { - return props.isMulti ? /*#__PURE__*/React__namespace.createElement(IsMultiValueContainer, _extends({ - component: WrappedComponent - }, props)) : /*#__PURE__*/React__namespace.createElement(reactTransitionGroup.TransitionGroup, _extends({ - component: WrappedComponent - }, props)); - }; -}; -var IsMultiValueContainer = function IsMultiValueContainer(_ref) { - var component = _ref.component, - restProps = _objectWithoutProperties(_ref, _excluded$1); - var multiProps = useIsMultiValueContainer(restProps); - return /*#__PURE__*/React__namespace.createElement(reactTransitionGroup.TransitionGroup, _extends({ - component: component - }, multiProps)); -}; -var useIsMultiValueContainer = function useIsMultiValueContainer(_ref2) { - var children = _ref2.children, - props = _objectWithoutProperties(_ref2, _excluded2); - var isMulti = props.isMulti, - hasValue = props.hasValue, - innerProps = props.innerProps, - _props$selectProps = props.selectProps, - components = _props$selectProps.components, - controlShouldRenderValue = _props$selectProps.controlShouldRenderValue; - var _useState = React.useState(isMulti && controlShouldRenderValue && hasValue), - _useState2 = _slicedToArray(_useState, 2), - cssDisplayFlex = _useState2[0], - setCssDisplayFlex = _useState2[1]; - var _useState3 = React.useState(false), - _useState4 = _slicedToArray(_useState3, 2), - removingValue = _useState4[0], - setRemovingValue = _useState4[1]; - React.useEffect(function () { - if (hasValue && !cssDisplayFlex) { - setCssDisplayFlex(true); - } - }, [hasValue, cssDisplayFlex]); - React.useEffect(function () { - if (removingValue && !hasValue && cssDisplayFlex) { - setCssDisplayFlex(false); - } - setRemovingValue(false); - }, [removingValue, hasValue, cssDisplayFlex]); - var onExited = function onExited() { - return setRemovingValue(true); - }; - var childMapper = function childMapper(child) { - if (isMulti && /*#__PURE__*/React__namespace.isValidElement(child)) { - // Add onExited callback to MultiValues - if (child.type === components.MultiValue) { - return /*#__PURE__*/React__namespace.cloneElement(child, { - onExited: onExited - }); - } - // While container flexed, Input cursor is shown after Placeholder text, - // so remove Placeholder until display is set back to grid - if (child.type === components.Placeholder && cssDisplayFlex) { - return null; - } - } - return child; - }; - var newInnerProps = _objectSpread(_objectSpread({}, innerProps), {}, { - style: _objectSpread(_objectSpread({}, innerProps === null || innerProps === void 0 ? void 0 : innerProps.style), {}, { - display: isMulti && hasValue || cssDisplayFlex ? 'flex' : 'grid' - }) - }); - var newProps = _objectSpread(_objectSpread({}, props), {}, { - innerProps: newInnerProps, - children: React__namespace.Children.toArray(children).map(childMapper) - }); - return newProps; -}; - -var _excluded = ["Input", "MultiValue", "Placeholder", "SingleValue", "ValueContainer"]; -var makeAnimated = function makeAnimated() { - var externalComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var components = index$1.defaultComponents({ - components: externalComponents - }); - var Input = components.Input, - MultiValue = components.MultiValue, - Placeholder = components.Placeholder, - SingleValue = components.SingleValue, - ValueContainer = components.ValueContainer, - rest = _objectWithoutProperties(components, _excluded); - return _objectSpread({ - Input: AnimatedInput(Input), - MultiValue: AnimatedMultiValue(MultiValue), - Placeholder: AnimatedPlaceholder(Placeholder), - SingleValue: AnimatedSingleValue(SingleValue), - ValueContainer: AnimatedValueContainer(ValueContainer) - }, rest); -}; -var AnimatedComponents = makeAnimated(); -var Input = AnimatedComponents.Input; -var MultiValue = AnimatedComponents.MultiValue; -var Placeholder = AnimatedComponents.Placeholder; -var SingleValue = AnimatedComponents.SingleValue; -var ValueContainer = AnimatedComponents.ValueContainer; -var index = memoizeOne__default['default'](makeAnimated); - -exports.Input = Input; -exports.MultiValue = MultiValue; -exports.Placeholder = Placeholder; -exports.SingleValue = SingleValue; -exports.ValueContainer = ValueContainer; -exports.default = index; diff --git a/frontend/node_modules/react-select/animated/dist/react-select-animated.esm.js b/frontend/node_modules/react-select/animated/dist/react-select-animated.esm.js deleted file mode 100644 index f8afd3a5f..000000000 --- a/frontend/node_modules/react-select/animated/dist/react-select-animated.esm.js +++ /dev/null @@ -1,293 +0,0 @@ -import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2'; -import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties'; -import memoizeOne from 'memoize-one'; -import { F as defaultComponents } from '../../dist/index-a86253bb.esm.js'; -import * as React from 'react'; -import { useRef, useState, useEffect } from 'react'; -import _extends from '@babel/runtime/helpers/esm/extends'; -import _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray'; -import { Transition, TransitionGroup } from 'react-transition-group'; -import '@emotion/react'; -import '@babel/runtime/helpers/typeof'; -import '@babel/runtime/helpers/taggedTemplateLiteral'; -import '@babel/runtime/helpers/defineProperty'; -import 'react-dom'; -import '@floating-ui/dom'; -import 'use-isomorphic-layout-effect'; - -var _excluded$4 = ["in", "onExited", "appear", "enter", "exit"]; -// strip transition props off before spreading onto select component -var AnimatedInput = function AnimatedInput(WrappedComponent) { - return function (_ref) { - _ref.in; - _ref.onExited; - _ref.appear; - _ref.enter; - _ref.exit; - var props = _objectWithoutProperties(_ref, _excluded$4); - return /*#__PURE__*/React.createElement(WrappedComponent, props); - }; -}; - -var _excluded$3 = ["component", "duration", "in", "onExited"]; -var Fade = function Fade(_ref) { - var Tag = _ref.component, - _ref$duration = _ref.duration, - duration = _ref$duration === void 0 ? 1 : _ref$duration, - inProp = _ref.in; - _ref.onExited; - var props = _objectWithoutProperties(_ref, _excluded$3); - var nodeRef = useRef(null); - var transition = { - entering: { - opacity: 0 - }, - entered: { - opacity: 1, - transition: "opacity ".concat(duration, "ms") - }, - exiting: { - opacity: 0 - }, - exited: { - opacity: 0 - } - }; - return /*#__PURE__*/React.createElement(Transition, { - mountOnEnter: true, - unmountOnExit: true, - in: inProp, - timeout: duration, - nodeRef: nodeRef - }, function (state) { - var innerProps = { - style: _objectSpread({}, transition[state]), - ref: nodeRef - }; - return /*#__PURE__*/React.createElement(Tag, _extends({ - innerProps: innerProps - }, props)); - }); -}; - -// ============================== -// Collapse Transition -// ============================== - -var collapseDuration = 260; -// wrap each MultiValue with a collapse transition; decreases width until -// finally removing from DOM -var Collapse = function Collapse(_ref2) { - var children = _ref2.children, - _in = _ref2.in, - _onExited = _ref2.onExited; - var ref = useRef(null); - var _useState = useState('auto'), - _useState2 = _slicedToArray(_useState, 2), - width = _useState2[0], - setWidth = _useState2[1]; - useEffect(function () { - var el = ref.current; - if (!el) return; - - /* - Here we're invoking requestAnimationFrame with a callback invoking our - call to getBoundingClientRect and setState in order to resolve an edge case - around portalling. Certain portalling solutions briefly remove children from the DOM - before appending them to the target node. This is to avoid us trying to call getBoundingClientrect - while the Select component is in this state. - */ - // cannot use `offsetWidth` because it is rounded - var rafId = window.requestAnimationFrame(function () { - return setWidth(el.getBoundingClientRect().width); - }); - return function () { - return window.cancelAnimationFrame(rafId); - }; - }, []); - var getStyleFromStatus = function getStyleFromStatus(status) { - switch (status) { - default: - return { - width: width - }; - case 'exiting': - return { - width: 0, - transition: "width ".concat(collapseDuration, "ms ease-out") - }; - case 'exited': - return { - width: 0 - }; - } - }; - return /*#__PURE__*/React.createElement(Transition, { - enter: false, - mountOnEnter: true, - unmountOnExit: true, - in: _in, - onExited: function onExited() { - var el = ref.current; - if (!el) return; - _onExited === null || _onExited === void 0 ? void 0 : _onExited(el); - }, - timeout: collapseDuration, - nodeRef: ref - }, function (status) { - return /*#__PURE__*/React.createElement("div", { - ref: ref, - style: _objectSpread({ - overflow: 'hidden', - whiteSpace: 'nowrap' - }, getStyleFromStatus(status)) - }, children); - }); -}; - -var _excluded$2 = ["in", "onExited"]; -// strip transition props off before spreading onto actual component - -var AnimatedMultiValue = function AnimatedMultiValue(WrappedComponent) { - return function (_ref) { - var inProp = _ref.in, - onExited = _ref.onExited, - props = _objectWithoutProperties(_ref, _excluded$2); - return /*#__PURE__*/React.createElement(Collapse, { - in: inProp, - onExited: onExited - }, /*#__PURE__*/React.createElement(WrappedComponent, _extends({ - cropWithEllipsis: inProp - }, props))); - }; -}; - -// fade in when last multi-value removed, otherwise instant -var AnimatedPlaceholder = function AnimatedPlaceholder(WrappedComponent) { - return function (props) { - return /*#__PURE__*/React.createElement(Fade, _extends({ - component: WrappedComponent, - duration: props.isMulti ? collapseDuration : 1 - }, props)); - }; -}; - -// instant fade; all transition-group children must be transitions - -var AnimatedSingleValue = function AnimatedSingleValue(WrappedComponent) { - return function (props) { - return /*#__PURE__*/React.createElement(Fade, _extends({ - component: WrappedComponent - }, props)); - }; -}; - -var _excluded$1 = ["component"], - _excluded2 = ["children"]; -// make ValueContainer a transition group -var AnimatedValueContainer = function AnimatedValueContainer(WrappedComponent) { - return function (props) { - return props.isMulti ? /*#__PURE__*/React.createElement(IsMultiValueContainer, _extends({ - component: WrappedComponent - }, props)) : /*#__PURE__*/React.createElement(TransitionGroup, _extends({ - component: WrappedComponent - }, props)); - }; -}; -var IsMultiValueContainer = function IsMultiValueContainer(_ref) { - var component = _ref.component, - restProps = _objectWithoutProperties(_ref, _excluded$1); - var multiProps = useIsMultiValueContainer(restProps); - return /*#__PURE__*/React.createElement(TransitionGroup, _extends({ - component: component - }, multiProps)); -}; -var useIsMultiValueContainer = function useIsMultiValueContainer(_ref2) { - var children = _ref2.children, - props = _objectWithoutProperties(_ref2, _excluded2); - var isMulti = props.isMulti, - hasValue = props.hasValue, - innerProps = props.innerProps, - _props$selectProps = props.selectProps, - components = _props$selectProps.components, - controlShouldRenderValue = _props$selectProps.controlShouldRenderValue; - var _useState = useState(isMulti && controlShouldRenderValue && hasValue), - _useState2 = _slicedToArray(_useState, 2), - cssDisplayFlex = _useState2[0], - setCssDisplayFlex = _useState2[1]; - var _useState3 = useState(false), - _useState4 = _slicedToArray(_useState3, 2), - removingValue = _useState4[0], - setRemovingValue = _useState4[1]; - useEffect(function () { - if (hasValue && !cssDisplayFlex) { - setCssDisplayFlex(true); - } - }, [hasValue, cssDisplayFlex]); - useEffect(function () { - if (removingValue && !hasValue && cssDisplayFlex) { - setCssDisplayFlex(false); - } - setRemovingValue(false); - }, [removingValue, hasValue, cssDisplayFlex]); - var onExited = function onExited() { - return setRemovingValue(true); - }; - var childMapper = function childMapper(child) { - if (isMulti && /*#__PURE__*/React.isValidElement(child)) { - // Add onExited callback to MultiValues - if (child.type === components.MultiValue) { - return /*#__PURE__*/React.cloneElement(child, { - onExited: onExited - }); - } - // While container flexed, Input cursor is shown after Placeholder text, - // so remove Placeholder until display is set back to grid - if (child.type === components.Placeholder && cssDisplayFlex) { - return null; - } - } - return child; - }; - var newInnerProps = _objectSpread(_objectSpread({}, innerProps), {}, { - style: _objectSpread(_objectSpread({}, innerProps === null || innerProps === void 0 ? void 0 : innerProps.style), {}, { - display: isMulti && hasValue || cssDisplayFlex ? 'flex' : 'grid' - }) - }); - var newProps = _objectSpread(_objectSpread({}, props), {}, { - innerProps: newInnerProps, - children: React.Children.toArray(children).map(childMapper) - }); - return newProps; -}; - -var _excluded = ["Input", "MultiValue", "Placeholder", "SingleValue", "ValueContainer"]; -var makeAnimated = function makeAnimated() { - var externalComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var components = defaultComponents({ - components: externalComponents - }); - var Input = components.Input, - MultiValue = components.MultiValue, - Placeholder = components.Placeholder, - SingleValue = components.SingleValue, - ValueContainer = components.ValueContainer, - rest = _objectWithoutProperties(components, _excluded); - return _objectSpread({ - Input: AnimatedInput(Input), - MultiValue: AnimatedMultiValue(MultiValue), - Placeholder: AnimatedPlaceholder(Placeholder), - SingleValue: AnimatedSingleValue(SingleValue), - ValueContainer: AnimatedValueContainer(ValueContainer) - }, rest); -}; -var AnimatedComponents = makeAnimated(); -var Input = AnimatedComponents.Input; -var MultiValue = AnimatedComponents.MultiValue; -var Placeholder = AnimatedComponents.Placeholder; -var SingleValue = AnimatedComponents.SingleValue; -var ValueContainer = AnimatedComponents.ValueContainer; -var index = memoizeOne(makeAnimated); - -export default index; -export { Input, MultiValue, Placeholder, SingleValue, ValueContainer }; diff --git a/frontend/node_modules/react-select/animated/package.json b/frontend/node_modules/react-select/animated/package.json deleted file mode 100644 index 480f66dd0..000000000 --- a/frontend/node_modules/react-select/animated/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "main": "dist/react-select-animated.cjs.js", - "module": "dist/react-select-animated.esm.js", - "types": "dist/react-select-animated.cjs.d.ts" -} diff --git a/frontend/node_modules/react-select/async-creatable/dist/react-select-async-creatable.cjs.d.ts b/frontend/node_modules/react-select/async-creatable/dist/react-select-async-creatable.cjs.d.ts deleted file mode 100644 index 113edfa17..000000000 --- a/frontend/node_modules/react-select/async-creatable/dist/react-select-async-creatable.cjs.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "../../dist/declarations/src/async-creatable/index"; -export { default } from "../../dist/declarations/src/async-creatable/index"; diff --git a/frontend/node_modules/react-select/async-creatable/dist/react-select-async-creatable.cjs.dev.js b/frontend/node_modules/react-select/async-creatable/dist/react-select-async-creatable.cjs.dev.js deleted file mode 100644 index f439d2c0e..000000000 --- a/frontend/node_modules/react-select/async-creatable/dist/react-select-async-creatable.cjs.dev.js +++ /dev/null @@ -1,60 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var _extends = require('@babel/runtime/helpers/extends'); -var React = require('react'); -var Select = require('../../dist/Select-73d77d2c.cjs.dev.js'); -var useAsync = require('../../dist/useAsync-c7333178.cjs.dev.js'); -var useStateManager = require('../../dist/useStateManager-7748b351.cjs.dev.js'); -var useCreatable = require('../../dist/useCreatable-10abcf47.cjs.dev.js'); -require('@babel/runtime/helpers/objectSpread2'); -require('@babel/runtime/helpers/classCallCheck'); -require('@babel/runtime/helpers/createClass'); -require('@babel/runtime/helpers/inherits'); -require('@babel/runtime/helpers/createSuper'); -require('@babel/runtime/helpers/toConsumableArray'); -require('../../dist/index-5b950e59.cjs.dev.js'); -require('@emotion/react'); -require('@babel/runtime/helpers/slicedToArray'); -require('@babel/runtime/helpers/objectWithoutProperties'); -require('@babel/runtime/helpers/typeof'); -require('@babel/runtime/helpers/taggedTemplateLiteral'); -require('@babel/runtime/helpers/defineProperty'); -require('react-dom'); -require('@floating-ui/dom'); -require('use-isomorphic-layout-effect'); -require('memoize-one'); - -function _interopNamespace(e) { - if (e && e.__esModule) return e; - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { - return e[k]; - } - }); - } - }); - } - n['default'] = e; - return Object.freeze(n); -} - -var React__namespace = /*#__PURE__*/_interopNamespace(React); - -var AsyncCreatableSelect = /*#__PURE__*/React.forwardRef(function (props, ref) { - var stateManagerProps = useAsync.useAsync(props); - var creatableProps = useStateManager.useStateManager(stateManagerProps); - var selectProps = useCreatable.useCreatable(creatableProps); - return /*#__PURE__*/React__namespace.createElement(Select.Select, _extends({ - ref: ref - }, selectProps)); -}); - -exports.default = AsyncCreatableSelect; diff --git a/frontend/node_modules/react-select/async-creatable/dist/react-select-async-creatable.cjs.js b/frontend/node_modules/react-select/async-creatable/dist/react-select-async-creatable.cjs.js deleted file mode 100644 index 9168802f9..000000000 --- a/frontend/node_modules/react-select/async-creatable/dist/react-select-async-creatable.cjs.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -if (process.env.NODE_ENV === "production") { - module.exports = require("./react-select-async-creatable.cjs.prod.js"); -} else { - module.exports = require("./react-select-async-creatable.cjs.dev.js"); -} diff --git a/frontend/node_modules/react-select/async-creatable/dist/react-select-async-creatable.cjs.prod.js b/frontend/node_modules/react-select/async-creatable/dist/react-select-async-creatable.cjs.prod.js deleted file mode 100644 index 0a2e93e22..000000000 --- a/frontend/node_modules/react-select/async-creatable/dist/react-select-async-creatable.cjs.prod.js +++ /dev/null @@ -1,60 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var _extends = require('@babel/runtime/helpers/extends'); -var React = require('react'); -var Select = require('../../dist/Select-a4b66b9e.cjs.prod.js'); -var useAsync = require('../../dist/useAsync-73d4611a.cjs.prod.js'); -var useStateManager = require('../../dist/useStateManager-ce23061c.cjs.prod.js'); -var useCreatable = require('../../dist/useCreatable-612c7d7e.cjs.prod.js'); -require('@babel/runtime/helpers/objectSpread2'); -require('@babel/runtime/helpers/classCallCheck'); -require('@babel/runtime/helpers/createClass'); -require('@babel/runtime/helpers/inherits'); -require('@babel/runtime/helpers/createSuper'); -require('@babel/runtime/helpers/toConsumableArray'); -require('../../dist/index-78cf371e.cjs.prod.js'); -require('@emotion/react'); -require('@babel/runtime/helpers/slicedToArray'); -require('@babel/runtime/helpers/objectWithoutProperties'); -require('@babel/runtime/helpers/typeof'); -require('@babel/runtime/helpers/taggedTemplateLiteral'); -require('@babel/runtime/helpers/defineProperty'); -require('react-dom'); -require('@floating-ui/dom'); -require('use-isomorphic-layout-effect'); -require('memoize-one'); - -function _interopNamespace(e) { - if (e && e.__esModule) return e; - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { - return e[k]; - } - }); - } - }); - } - n['default'] = e; - return Object.freeze(n); -} - -var React__namespace = /*#__PURE__*/_interopNamespace(React); - -var AsyncCreatableSelect = /*#__PURE__*/React.forwardRef(function (props, ref) { - var stateManagerProps = useAsync.useAsync(props); - var creatableProps = useStateManager.useStateManager(stateManagerProps); - var selectProps = useCreatable.useCreatable(creatableProps); - return /*#__PURE__*/React__namespace.createElement(Select.Select, _extends({ - ref: ref - }, selectProps)); -}); - -exports.default = AsyncCreatableSelect; diff --git a/frontend/node_modules/react-select/async-creatable/dist/react-select-async-creatable.esm.js b/frontend/node_modules/react-select/async-creatable/dist/react-select-async-creatable.esm.js deleted file mode 100644 index 2d0d3d810..000000000 --- a/frontend/node_modules/react-select/async-creatable/dist/react-select-async-creatable.esm.js +++ /dev/null @@ -1,35 +0,0 @@ -import _extends from '@babel/runtime/helpers/esm/extends'; -import * as React from 'react'; -import { forwardRef } from 'react'; -import { S as Select } from '../../dist/Select-40119e12.esm.js'; -import { u as useAsync } from '../../dist/useAsync-fd9b28d9.esm.js'; -import { u as useStateManager } from '../../dist/useStateManager-7e1e8489.esm.js'; -import { u as useCreatable } from '../../dist/useCreatable-36230047.esm.js'; -import '@babel/runtime/helpers/objectSpread2'; -import '@babel/runtime/helpers/classCallCheck'; -import '@babel/runtime/helpers/createClass'; -import '@babel/runtime/helpers/inherits'; -import '@babel/runtime/helpers/createSuper'; -import '@babel/runtime/helpers/toConsumableArray'; -import '../../dist/index-a86253bb.esm.js'; -import '@emotion/react'; -import '@babel/runtime/helpers/slicedToArray'; -import '@babel/runtime/helpers/objectWithoutProperties'; -import '@babel/runtime/helpers/typeof'; -import '@babel/runtime/helpers/taggedTemplateLiteral'; -import '@babel/runtime/helpers/defineProperty'; -import 'react-dom'; -import '@floating-ui/dom'; -import 'use-isomorphic-layout-effect'; -import 'memoize-one'; - -var AsyncCreatableSelect = /*#__PURE__*/forwardRef(function (props, ref) { - var stateManagerProps = useAsync(props); - var creatableProps = useStateManager(stateManagerProps); - var selectProps = useCreatable(creatableProps); - return /*#__PURE__*/React.createElement(Select, _extends({ - ref: ref - }, selectProps)); -}); - -export default AsyncCreatableSelect; diff --git a/frontend/node_modules/react-select/async-creatable/package.json b/frontend/node_modules/react-select/async-creatable/package.json deleted file mode 100644 index 0a3bddde0..000000000 --- a/frontend/node_modules/react-select/async-creatable/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "main": "dist/react-select-async-creatable.cjs.js", - "module": "dist/react-select-async-creatable.esm.js", - "types": "dist/react-select-async-creatable.cjs.d.ts" -} diff --git a/frontend/node_modules/react-select/async/dist/react-select-async.cjs.d.ts b/frontend/node_modules/react-select/async/dist/react-select-async.cjs.d.ts deleted file mode 100644 index ec9574d68..000000000 --- a/frontend/node_modules/react-select/async/dist/react-select-async.cjs.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "../../dist/declarations/src/async/index"; -export { default } from "../../dist/declarations/src/async/index"; diff --git a/frontend/node_modules/react-select/async/dist/react-select-async.cjs.dev.js b/frontend/node_modules/react-select/async/dist/react-select-async.cjs.dev.js deleted file mode 100644 index 983445875..000000000 --- a/frontend/node_modules/react-select/async/dist/react-select-async.cjs.dev.js +++ /dev/null @@ -1,59 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var _extends = require('@babel/runtime/helpers/extends'); -var React = require('react'); -var Select = require('../../dist/Select-73d77d2c.cjs.dev.js'); -var useStateManager = require('../../dist/useStateManager-7748b351.cjs.dev.js'); -var useAsync = require('../../dist/useAsync-c7333178.cjs.dev.js'); -require('@babel/runtime/helpers/objectSpread2'); -require('@babel/runtime/helpers/classCallCheck'); -require('@babel/runtime/helpers/createClass'); -require('@babel/runtime/helpers/inherits'); -require('@babel/runtime/helpers/createSuper'); -require('@babel/runtime/helpers/toConsumableArray'); -require('../../dist/index-5b950e59.cjs.dev.js'); -require('@emotion/react'); -require('@babel/runtime/helpers/slicedToArray'); -require('@babel/runtime/helpers/objectWithoutProperties'); -require('@babel/runtime/helpers/typeof'); -require('@babel/runtime/helpers/taggedTemplateLiteral'); -require('@babel/runtime/helpers/defineProperty'); -require('react-dom'); -require('@floating-ui/dom'); -require('use-isomorphic-layout-effect'); -require('memoize-one'); - -function _interopNamespace(e) { - if (e && e.__esModule) return e; - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { - return e[k]; - } - }); - } - }); - } - n['default'] = e; - return Object.freeze(n); -} - -var React__namespace = /*#__PURE__*/_interopNamespace(React); - -var AsyncSelect = /*#__PURE__*/React.forwardRef(function (props, ref) { - var stateManagedProps = useAsync.useAsync(props); - var selectProps = useStateManager.useStateManager(stateManagedProps); - return /*#__PURE__*/React__namespace.createElement(Select.Select, _extends({ - ref: ref - }, selectProps)); -}); - -exports.useAsync = useAsync.useAsync; -exports.default = AsyncSelect; diff --git a/frontend/node_modules/react-select/async/dist/react-select-async.cjs.js b/frontend/node_modules/react-select/async/dist/react-select-async.cjs.js deleted file mode 100644 index 50f42cee7..000000000 --- a/frontend/node_modules/react-select/async/dist/react-select-async.cjs.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -if (process.env.NODE_ENV === "production") { - module.exports = require("./react-select-async.cjs.prod.js"); -} else { - module.exports = require("./react-select-async.cjs.dev.js"); -} diff --git a/frontend/node_modules/react-select/async/dist/react-select-async.cjs.prod.js b/frontend/node_modules/react-select/async/dist/react-select-async.cjs.prod.js deleted file mode 100644 index 8e6f3abd9..000000000 --- a/frontend/node_modules/react-select/async/dist/react-select-async.cjs.prod.js +++ /dev/null @@ -1,59 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var _extends = require('@babel/runtime/helpers/extends'); -var React = require('react'); -var Select = require('../../dist/Select-a4b66b9e.cjs.prod.js'); -var useStateManager = require('../../dist/useStateManager-ce23061c.cjs.prod.js'); -var useAsync = require('../../dist/useAsync-73d4611a.cjs.prod.js'); -require('@babel/runtime/helpers/objectSpread2'); -require('@babel/runtime/helpers/classCallCheck'); -require('@babel/runtime/helpers/createClass'); -require('@babel/runtime/helpers/inherits'); -require('@babel/runtime/helpers/createSuper'); -require('@babel/runtime/helpers/toConsumableArray'); -require('../../dist/index-78cf371e.cjs.prod.js'); -require('@emotion/react'); -require('@babel/runtime/helpers/slicedToArray'); -require('@babel/runtime/helpers/objectWithoutProperties'); -require('@babel/runtime/helpers/typeof'); -require('@babel/runtime/helpers/taggedTemplateLiteral'); -require('@babel/runtime/helpers/defineProperty'); -require('react-dom'); -require('@floating-ui/dom'); -require('use-isomorphic-layout-effect'); -require('memoize-one'); - -function _interopNamespace(e) { - if (e && e.__esModule) return e; - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { - return e[k]; - } - }); - } - }); - } - n['default'] = e; - return Object.freeze(n); -} - -var React__namespace = /*#__PURE__*/_interopNamespace(React); - -var AsyncSelect = /*#__PURE__*/React.forwardRef(function (props, ref) { - var stateManagedProps = useAsync.useAsync(props); - var selectProps = useStateManager.useStateManager(stateManagedProps); - return /*#__PURE__*/React__namespace.createElement(Select.Select, _extends({ - ref: ref - }, selectProps)); -}); - -exports.useAsync = useAsync.useAsync; -exports.default = AsyncSelect; diff --git a/frontend/node_modules/react-select/async/dist/react-select-async.esm.js b/frontend/node_modules/react-select/async/dist/react-select-async.esm.js deleted file mode 100644 index 7515c8c81..000000000 --- a/frontend/node_modules/react-select/async/dist/react-select-async.esm.js +++ /dev/null @@ -1,34 +0,0 @@ -import _extends from '@babel/runtime/helpers/esm/extends'; -import * as React from 'react'; -import { forwardRef } from 'react'; -import { S as Select } from '../../dist/Select-40119e12.esm.js'; -import { u as useStateManager } from '../../dist/useStateManager-7e1e8489.esm.js'; -import { u as useAsync } from '../../dist/useAsync-fd9b28d9.esm.js'; -export { u as useAsync } from '../../dist/useAsync-fd9b28d9.esm.js'; -import '@babel/runtime/helpers/objectSpread2'; -import '@babel/runtime/helpers/classCallCheck'; -import '@babel/runtime/helpers/createClass'; -import '@babel/runtime/helpers/inherits'; -import '@babel/runtime/helpers/createSuper'; -import '@babel/runtime/helpers/toConsumableArray'; -import '../../dist/index-a86253bb.esm.js'; -import '@emotion/react'; -import '@babel/runtime/helpers/slicedToArray'; -import '@babel/runtime/helpers/objectWithoutProperties'; -import '@babel/runtime/helpers/typeof'; -import '@babel/runtime/helpers/taggedTemplateLiteral'; -import '@babel/runtime/helpers/defineProperty'; -import 'react-dom'; -import '@floating-ui/dom'; -import 'use-isomorphic-layout-effect'; -import 'memoize-one'; - -var AsyncSelect = /*#__PURE__*/forwardRef(function (props, ref) { - var stateManagedProps = useAsync(props); - var selectProps = useStateManager(stateManagedProps); - return /*#__PURE__*/React.createElement(Select, _extends({ - ref: ref - }, selectProps)); -}); - -export default AsyncSelect; diff --git a/frontend/node_modules/react-select/async/package.json b/frontend/node_modules/react-select/async/package.json deleted file mode 100644 index b58d5d1e2..000000000 --- a/frontend/node_modules/react-select/async/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "main": "dist/react-select-async.cjs.js", - "module": "dist/react-select-async.esm.js", - "types": "dist/react-select-async.cjs.d.ts" -} diff --git a/frontend/node_modules/react-select/base/dist/react-select-base.cjs.d.ts b/frontend/node_modules/react-select/base/dist/react-select-base.cjs.d.ts deleted file mode 100644 index bfa2cf992..000000000 --- a/frontend/node_modules/react-select/base/dist/react-select-base.cjs.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "../../dist/declarations/src/base/index"; -export { default } from "../../dist/declarations/src/base/index"; diff --git a/frontend/node_modules/react-select/base/dist/react-select-base.cjs.dev.js b/frontend/node_modules/react-select/base/dist/react-select-base.cjs.dev.js deleted file mode 100644 index 809336dad..000000000 --- a/frontend/node_modules/react-select/base/dist/react-select-base.cjs.dev.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var Select = require('../../dist/Select-73d77d2c.cjs.dev.js'); -require('@babel/runtime/helpers/extends'); -require('@babel/runtime/helpers/objectSpread2'); -require('@babel/runtime/helpers/classCallCheck'); -require('@babel/runtime/helpers/createClass'); -require('@babel/runtime/helpers/inherits'); -require('@babel/runtime/helpers/createSuper'); -require('@babel/runtime/helpers/toConsumableArray'); -require('react'); -require('../../dist/index-5b950e59.cjs.dev.js'); -require('@emotion/react'); -require('@babel/runtime/helpers/slicedToArray'); -require('@babel/runtime/helpers/objectWithoutProperties'); -require('@babel/runtime/helpers/typeof'); -require('@babel/runtime/helpers/taggedTemplateLiteral'); -require('@babel/runtime/helpers/defineProperty'); -require('react-dom'); -require('@floating-ui/dom'); -require('use-isomorphic-layout-effect'); -require('memoize-one'); - - - -exports.default = Select.Select; -exports.defaultProps = Select.defaultProps; diff --git a/frontend/node_modules/react-select/base/dist/react-select-base.cjs.js b/frontend/node_modules/react-select/base/dist/react-select-base.cjs.js deleted file mode 100644 index 97c4c32d8..000000000 --- a/frontend/node_modules/react-select/base/dist/react-select-base.cjs.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -if (process.env.NODE_ENV === "production") { - module.exports = require("./react-select-base.cjs.prod.js"); -} else { - module.exports = require("./react-select-base.cjs.dev.js"); -} diff --git a/frontend/node_modules/react-select/base/dist/react-select-base.cjs.prod.js b/frontend/node_modules/react-select/base/dist/react-select-base.cjs.prod.js deleted file mode 100644 index 34e99ef6f..000000000 --- a/frontend/node_modules/react-select/base/dist/react-select-base.cjs.prod.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var Select = require('../../dist/Select-a4b66b9e.cjs.prod.js'); -require('@babel/runtime/helpers/extends'); -require('@babel/runtime/helpers/objectSpread2'); -require('@babel/runtime/helpers/classCallCheck'); -require('@babel/runtime/helpers/createClass'); -require('@babel/runtime/helpers/inherits'); -require('@babel/runtime/helpers/createSuper'); -require('@babel/runtime/helpers/toConsumableArray'); -require('react'); -require('../../dist/index-78cf371e.cjs.prod.js'); -require('@emotion/react'); -require('@babel/runtime/helpers/slicedToArray'); -require('@babel/runtime/helpers/objectWithoutProperties'); -require('@babel/runtime/helpers/typeof'); -require('@babel/runtime/helpers/taggedTemplateLiteral'); -require('@babel/runtime/helpers/defineProperty'); -require('react-dom'); -require('@floating-ui/dom'); -require('use-isomorphic-layout-effect'); -require('memoize-one'); - - - -exports.default = Select.Select; -exports.defaultProps = Select.defaultProps; diff --git a/frontend/node_modules/react-select/base/dist/react-select-base.esm.js b/frontend/node_modules/react-select/base/dist/react-select-base.esm.js deleted file mode 100644 index 53dadc27e..000000000 --- a/frontend/node_modules/react-select/base/dist/react-select-base.esm.js +++ /dev/null @@ -1,20 +0,0 @@ -export { S as default, a as defaultProps } from '../../dist/Select-40119e12.esm.js'; -import '@babel/runtime/helpers/extends'; -import '@babel/runtime/helpers/objectSpread2'; -import '@babel/runtime/helpers/classCallCheck'; -import '@babel/runtime/helpers/createClass'; -import '@babel/runtime/helpers/inherits'; -import '@babel/runtime/helpers/createSuper'; -import '@babel/runtime/helpers/toConsumableArray'; -import 'react'; -import '../../dist/index-a86253bb.esm.js'; -import '@emotion/react'; -import '@babel/runtime/helpers/slicedToArray'; -import '@babel/runtime/helpers/objectWithoutProperties'; -import '@babel/runtime/helpers/typeof'; -import '@babel/runtime/helpers/taggedTemplateLiteral'; -import '@babel/runtime/helpers/defineProperty'; -import 'react-dom'; -import '@floating-ui/dom'; -import 'use-isomorphic-layout-effect'; -import 'memoize-one'; diff --git a/frontend/node_modules/react-select/base/package.json b/frontend/node_modules/react-select/base/package.json deleted file mode 100644 index 957568d89..000000000 --- a/frontend/node_modules/react-select/base/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "main": "dist/react-select-base.cjs.js", - "module": "dist/react-select-base.esm.js", - "types": "dist/react-select-base.cjs.d.ts" -} diff --git a/frontend/node_modules/react-select/creatable/dist/react-select-creatable.cjs.d.ts b/frontend/node_modules/react-select/creatable/dist/react-select-creatable.cjs.d.ts deleted file mode 100644 index 4c544de7a..000000000 --- a/frontend/node_modules/react-select/creatable/dist/react-select-creatable.cjs.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "../../dist/declarations/src/creatable/index"; -export { default } from "../../dist/declarations/src/creatable/index"; diff --git a/frontend/node_modules/react-select/creatable/dist/react-select-creatable.cjs.dev.js b/frontend/node_modules/react-select/creatable/dist/react-select-creatable.cjs.dev.js deleted file mode 100644 index 20f8b0c76..000000000 --- a/frontend/node_modules/react-select/creatable/dist/react-select-creatable.cjs.dev.js +++ /dev/null @@ -1,59 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var _extends = require('@babel/runtime/helpers/extends'); -var React = require('react'); -var Select = require('../../dist/Select-73d77d2c.cjs.dev.js'); -var useStateManager = require('../../dist/useStateManager-7748b351.cjs.dev.js'); -var useCreatable = require('../../dist/useCreatable-10abcf47.cjs.dev.js'); -require('@babel/runtime/helpers/objectSpread2'); -require('@babel/runtime/helpers/classCallCheck'); -require('@babel/runtime/helpers/createClass'); -require('@babel/runtime/helpers/inherits'); -require('@babel/runtime/helpers/createSuper'); -require('@babel/runtime/helpers/toConsumableArray'); -require('../../dist/index-5b950e59.cjs.dev.js'); -require('@emotion/react'); -require('@babel/runtime/helpers/slicedToArray'); -require('@babel/runtime/helpers/objectWithoutProperties'); -require('@babel/runtime/helpers/typeof'); -require('@babel/runtime/helpers/taggedTemplateLiteral'); -require('@babel/runtime/helpers/defineProperty'); -require('react-dom'); -require('@floating-ui/dom'); -require('use-isomorphic-layout-effect'); -require('memoize-one'); - -function _interopNamespace(e) { - if (e && e.__esModule) return e; - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { - return e[k]; - } - }); - } - }); - } - n['default'] = e; - return Object.freeze(n); -} - -var React__namespace = /*#__PURE__*/_interopNamespace(React); - -var CreatableSelect = /*#__PURE__*/React.forwardRef(function (props, ref) { - var creatableProps = useStateManager.useStateManager(props); - var selectProps = useCreatable.useCreatable(creatableProps); - return /*#__PURE__*/React__namespace.createElement(Select.Select, _extends({ - ref: ref - }, selectProps)); -}); - -exports.useCreatable = useCreatable.useCreatable; -exports.default = CreatableSelect; diff --git a/frontend/node_modules/react-select/creatable/dist/react-select-creatable.cjs.js b/frontend/node_modules/react-select/creatable/dist/react-select-creatable.cjs.js deleted file mode 100644 index 510a1a555..000000000 --- a/frontend/node_modules/react-select/creatable/dist/react-select-creatable.cjs.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -if (process.env.NODE_ENV === "production") { - module.exports = require("./react-select-creatable.cjs.prod.js"); -} else { - module.exports = require("./react-select-creatable.cjs.dev.js"); -} diff --git a/frontend/node_modules/react-select/creatable/dist/react-select-creatable.cjs.prod.js b/frontend/node_modules/react-select/creatable/dist/react-select-creatable.cjs.prod.js deleted file mode 100644 index 97395872f..000000000 --- a/frontend/node_modules/react-select/creatable/dist/react-select-creatable.cjs.prod.js +++ /dev/null @@ -1,59 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var _extends = require('@babel/runtime/helpers/extends'); -var React = require('react'); -var Select = require('../../dist/Select-a4b66b9e.cjs.prod.js'); -var useStateManager = require('../../dist/useStateManager-ce23061c.cjs.prod.js'); -var useCreatable = require('../../dist/useCreatable-612c7d7e.cjs.prod.js'); -require('@babel/runtime/helpers/objectSpread2'); -require('@babel/runtime/helpers/classCallCheck'); -require('@babel/runtime/helpers/createClass'); -require('@babel/runtime/helpers/inherits'); -require('@babel/runtime/helpers/createSuper'); -require('@babel/runtime/helpers/toConsumableArray'); -require('../../dist/index-78cf371e.cjs.prod.js'); -require('@emotion/react'); -require('@babel/runtime/helpers/slicedToArray'); -require('@babel/runtime/helpers/objectWithoutProperties'); -require('@babel/runtime/helpers/typeof'); -require('@babel/runtime/helpers/taggedTemplateLiteral'); -require('@babel/runtime/helpers/defineProperty'); -require('react-dom'); -require('@floating-ui/dom'); -require('use-isomorphic-layout-effect'); -require('memoize-one'); - -function _interopNamespace(e) { - if (e && e.__esModule) return e; - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { - return e[k]; - } - }); - } - }); - } - n['default'] = e; - return Object.freeze(n); -} - -var React__namespace = /*#__PURE__*/_interopNamespace(React); - -var CreatableSelect = /*#__PURE__*/React.forwardRef(function (props, ref) { - var creatableProps = useStateManager.useStateManager(props); - var selectProps = useCreatable.useCreatable(creatableProps); - return /*#__PURE__*/React__namespace.createElement(Select.Select, _extends({ - ref: ref - }, selectProps)); -}); - -exports.useCreatable = useCreatable.useCreatable; -exports.default = CreatableSelect; diff --git a/frontend/node_modules/react-select/creatable/dist/react-select-creatable.esm.js b/frontend/node_modules/react-select/creatable/dist/react-select-creatable.esm.js deleted file mode 100644 index bf6d5a5e7..000000000 --- a/frontend/node_modules/react-select/creatable/dist/react-select-creatable.esm.js +++ /dev/null @@ -1,34 +0,0 @@ -import _extends from '@babel/runtime/helpers/esm/extends'; -import * as React from 'react'; -import { forwardRef } from 'react'; -import { S as Select } from '../../dist/Select-40119e12.esm.js'; -import { u as useStateManager } from '../../dist/useStateManager-7e1e8489.esm.js'; -import { u as useCreatable } from '../../dist/useCreatable-36230047.esm.js'; -export { u as useCreatable } from '../../dist/useCreatable-36230047.esm.js'; -import '@babel/runtime/helpers/objectSpread2'; -import '@babel/runtime/helpers/classCallCheck'; -import '@babel/runtime/helpers/createClass'; -import '@babel/runtime/helpers/inherits'; -import '@babel/runtime/helpers/createSuper'; -import '@babel/runtime/helpers/toConsumableArray'; -import '../../dist/index-a86253bb.esm.js'; -import '@emotion/react'; -import '@babel/runtime/helpers/slicedToArray'; -import '@babel/runtime/helpers/objectWithoutProperties'; -import '@babel/runtime/helpers/typeof'; -import '@babel/runtime/helpers/taggedTemplateLiteral'; -import '@babel/runtime/helpers/defineProperty'; -import 'react-dom'; -import '@floating-ui/dom'; -import 'use-isomorphic-layout-effect'; -import 'memoize-one'; - -var CreatableSelect = /*#__PURE__*/forwardRef(function (props, ref) { - var creatableProps = useStateManager(props); - var selectProps = useCreatable(creatableProps); - return /*#__PURE__*/React.createElement(Select, _extends({ - ref: ref - }, selectProps)); -}); - -export default CreatableSelect; diff --git a/frontend/node_modules/react-select/creatable/package.json b/frontend/node_modules/react-select/creatable/package.json deleted file mode 100644 index 347a42cf5..000000000 --- a/frontend/node_modules/react-select/creatable/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "main": "dist/react-select-creatable.cjs.js", - "module": "dist/react-select-creatable.esm.js", - "types": "dist/react-select-creatable.cjs.d.ts" -} diff --git a/frontend/node_modules/react-select/dist/Select-40119e12.esm.js b/frontend/node_modules/react-select/dist/Select-40119e12.esm.js deleted file mode 100644 index 09ec1e2b9..000000000 --- a/frontend/node_modules/react-select/dist/Select-40119e12.esm.js +++ /dev/null @@ -1,2571 +0,0 @@ -import _extends from '@babel/runtime/helpers/esm/extends'; -import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2'; -import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck'; -import _createClass from '@babel/runtime/helpers/esm/createClass'; -import _inherits from '@babel/runtime/helpers/esm/inherits'; -import _createSuper from '@babel/runtime/helpers/esm/createSuper'; -import _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray'; -import * as React from 'react'; -import { useMemo, Fragment, useRef, useCallback, useEffect, Component } from 'react'; -import { r as removeProps, s as supportsPassiveEvents, a as clearIndicatorCSS, b as containerCSS, d as css$1, e as dropdownIndicatorCSS, g as groupCSS, f as groupHeadingCSS, i as indicatorsContainerCSS, h as indicatorSeparatorCSS, j as inputCSS, l as loadingIndicatorCSS, k as loadingMessageCSS, m as menuCSS, n as menuListCSS, o as menuPortalCSS, p as multiValueCSS, q as multiValueLabelCSS, t as multiValueRemoveCSS, u as noOptionsMessageCSS, v as optionCSS, w as placeholderCSS, x as css$2, y as valueContainerCSS, z as isTouchCapable, A as isMobileDevice, B as multiValueAsValue, C as singleValueAsValue, D as valueTernary, E as classNames, F as defaultComponents, G as notNullish, H as isDocumentElement, I as cleanValue, J as scrollIntoView, K as noop, M as MenuPlacer } from './index-a86253bb.esm.js'; -import { jsx, css } from '@emotion/react'; -import memoizeOne from 'memoize-one'; -import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties'; - -function _EMOTION_STRINGIFIED_CSS_ERROR__$2() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } - -// Assistive text to describe visual elements. Hidden for sighted users. -var _ref = process.env.NODE_ENV === "production" ? { - name: "7pg0cj-a11yText", - styles: "label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap" -} : { - name: "1f43avz-a11yText-A11yText", - styles: "label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;label:A11yText;", - map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkExMXlUZXh0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNSSIsImZpbGUiOiJBMTF5VGV4dC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGpzeCBqc3ggKi9cbmltcG9ydCB7IGpzeCB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuLy8gQXNzaXN0aXZlIHRleHQgdG8gZGVzY3JpYmUgdmlzdWFsIGVsZW1lbnRzLiBIaWRkZW4gZm9yIHNpZ2h0ZWQgdXNlcnMuXG5jb25zdCBBMTF5VGV4dCA9IChwcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzcGFuJ10pID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGxhYmVsOiAnYTExeVRleHQnLFxuICAgICAgekluZGV4OiA5OTk5LFxuICAgICAgYm9yZGVyOiAwLFxuICAgICAgY2xpcDogJ3JlY3QoMXB4LCAxcHgsIDFweCwgMXB4KScsXG4gICAgICBoZWlnaHQ6IDEsXG4gICAgICB3aWR0aDogMSxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgcGFkZGluZzogMCxcbiAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgQTExeVRleHQ7XG4iXX0= */", - toString: _EMOTION_STRINGIFIED_CSS_ERROR__$2 -}; -var A11yText = function A11yText(props) { - return jsx("span", _extends({ - css: _ref - }, props)); -}; - -var defaultAriaLiveMessages = { - guidance: function guidance(props) { - var isSearchable = props.isSearchable, - isMulti = props.isMulti, - isDisabled = props.isDisabled, - tabSelectsValue = props.tabSelectsValue, - context = props.context; - switch (context) { - case 'menu': - return "Use Up and Down to choose options".concat(isDisabled ? '' : ', press Enter to select the currently focused option', ", press Escape to exit the menu").concat(tabSelectsValue ? ', press Tab to select the option and exit the menu' : '', "."); - case 'input': - return "".concat(props['aria-label'] || 'Select', " is focused ").concat(isSearchable ? ',type to refine list' : '', ", press Down to open the menu, ").concat(isMulti ? ' press left to focus selected values' : ''); - case 'value': - return 'Use left and right to toggle between focused values, press Backspace to remove the currently focused value'; - default: - return ''; - } - }, - onChange: function onChange(props) { - var action = props.action, - _props$label = props.label, - label = _props$label === void 0 ? '' : _props$label, - labels = props.labels, - isDisabled = props.isDisabled; - switch (action) { - case 'deselect-option': - case 'pop-value': - case 'remove-value': - return "option ".concat(label, ", deselected."); - case 'clear': - return 'All selected options have been cleared.'; - case 'initial-input-focus': - return "option".concat(labels.length > 1 ? 's' : '', " ").concat(labels.join(','), ", selected."); - case 'select-option': - return isDisabled ? "option ".concat(label, " is disabled. Select another option.") : "option ".concat(label, ", selected."); - default: - return ''; - } - }, - onFocus: function onFocus(props) { - var context = props.context, - focused = props.focused, - options = props.options, - _props$label2 = props.label, - label = _props$label2 === void 0 ? '' : _props$label2, - selectValue = props.selectValue, - isDisabled = props.isDisabled, - isSelected = props.isSelected; - var getArrayIndex = function getArrayIndex(arr, item) { - return arr && arr.length ? "".concat(arr.indexOf(item) + 1, " of ").concat(arr.length) : ''; - }; - if (context === 'value' && selectValue) { - return "value ".concat(label, " focused, ").concat(getArrayIndex(selectValue, focused), "."); - } - if (context === 'menu') { - var disabled = isDisabled ? ' disabled' : ''; - var status = "".concat(isSelected ? 'selected' : 'focused').concat(disabled); - return "option ".concat(label, " ").concat(status, ", ").concat(getArrayIndex(options, focused), "."); - } - return ''; - }, - onFilter: function onFilter(props) { - var inputValue = props.inputValue, - resultsMessage = props.resultsMessage; - return "".concat(resultsMessage).concat(inputValue ? ' for search term ' + inputValue : '', "."); - } -}; - -var LiveRegion = function LiveRegion(props) { - var ariaSelection = props.ariaSelection, - focusedOption = props.focusedOption, - focusedValue = props.focusedValue, - focusableOptions = props.focusableOptions, - isFocused = props.isFocused, - selectValue = props.selectValue, - selectProps = props.selectProps, - id = props.id; - var ariaLiveMessages = selectProps.ariaLiveMessages, - getOptionLabel = selectProps.getOptionLabel, - inputValue = selectProps.inputValue, - isMulti = selectProps.isMulti, - isOptionDisabled = selectProps.isOptionDisabled, - isSearchable = selectProps.isSearchable, - menuIsOpen = selectProps.menuIsOpen, - options = selectProps.options, - screenReaderStatus = selectProps.screenReaderStatus, - tabSelectsValue = selectProps.tabSelectsValue; - var ariaLabel = selectProps['aria-label']; - var ariaLive = selectProps['aria-live']; - - // Update aria live message configuration when prop changes - var messages = useMemo(function () { - return _objectSpread(_objectSpread({}, defaultAriaLiveMessages), ariaLiveMessages || {}); - }, [ariaLiveMessages]); - - // Update aria live selected option when prop changes - var ariaSelected = useMemo(function () { - var message = ''; - if (ariaSelection && messages.onChange) { - var option = ariaSelection.option, - selectedOptions = ariaSelection.options, - removedValue = ariaSelection.removedValue, - removedValues = ariaSelection.removedValues, - value = ariaSelection.value; - // select-option when !isMulti does not return option so we assume selected option is value - var asOption = function asOption(val) { - return !Array.isArray(val) ? val : null; - }; - - // If there is just one item from the action then get its label - var selected = removedValue || option || asOption(value); - var label = selected ? getOptionLabel(selected) : ''; - - // If there are multiple items from the action then return an array of labels - var multiSelected = selectedOptions || removedValues || undefined; - var labels = multiSelected ? multiSelected.map(getOptionLabel) : []; - var onChangeProps = _objectSpread({ - // multiSelected items are usually items that have already been selected - // or set by the user as a default value so we assume they are not disabled - isDisabled: selected && isOptionDisabled(selected, selectValue), - label: label, - labels: labels - }, ariaSelection); - message = messages.onChange(onChangeProps); - } - return message; - }, [ariaSelection, messages, isOptionDisabled, selectValue, getOptionLabel]); - var ariaFocused = useMemo(function () { - var focusMsg = ''; - var focused = focusedOption || focusedValue; - var isSelected = !!(focusedOption && selectValue && selectValue.includes(focusedOption)); - if (focused && messages.onFocus) { - var onFocusProps = { - focused: focused, - label: getOptionLabel(focused), - isDisabled: isOptionDisabled(focused, selectValue), - isSelected: isSelected, - options: focusableOptions, - context: focused === focusedOption ? 'menu' : 'value', - selectValue: selectValue - }; - focusMsg = messages.onFocus(onFocusProps); - } - return focusMsg; - }, [focusedOption, focusedValue, getOptionLabel, isOptionDisabled, messages, focusableOptions, selectValue]); - var ariaResults = useMemo(function () { - var resultsMsg = ''; - if (menuIsOpen && options.length && messages.onFilter) { - var resultsMessage = screenReaderStatus({ - count: focusableOptions.length - }); - resultsMsg = messages.onFilter({ - inputValue: inputValue, - resultsMessage: resultsMessage - }); - } - return resultsMsg; - }, [focusableOptions, inputValue, menuIsOpen, messages, options, screenReaderStatus]); - var ariaGuidance = useMemo(function () { - var guidanceMsg = ''; - if (messages.guidance) { - var context = focusedValue ? 'value' : menuIsOpen ? 'menu' : 'input'; - guidanceMsg = messages.guidance({ - 'aria-label': ariaLabel, - context: context, - isDisabled: focusedOption && isOptionDisabled(focusedOption, selectValue), - isMulti: isMulti, - isSearchable: isSearchable, - tabSelectsValue: tabSelectsValue - }); - } - return guidanceMsg; - }, [ariaLabel, focusedOption, focusedValue, isMulti, isOptionDisabled, isSearchable, menuIsOpen, messages, selectValue, tabSelectsValue]); - var ariaContext = "".concat(ariaFocused, " ").concat(ariaResults, " ").concat(ariaGuidance); - var ScreenReaderText = jsx(Fragment, null, jsx("span", { - id: "aria-selection" - }, ariaSelected), jsx("span", { - id: "aria-context" - }, ariaContext)); - var isInitialFocus = (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus'; - return jsx(Fragment, null, jsx(A11yText, { - id: id - }, isInitialFocus && ScreenReaderText), jsx(A11yText, { - "aria-live": ariaLive, - "aria-atomic": "false", - "aria-relevant": "additions text" - }, isFocused && !isInitialFocus && ScreenReaderText)); -}; - -var diacritics = [{ - base: 'A', - letters: "A\u24B6\uFF21\xC0\xC1\xC2\u1EA6\u1EA4\u1EAA\u1EA8\xC3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\xC4\u01DE\u1EA2\xC5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F" -}, { - base: 'AA', - letters: "\uA732" -}, { - base: 'AE', - letters: "\xC6\u01FC\u01E2" -}, { - base: 'AO', - letters: "\uA734" -}, { - base: 'AU', - letters: "\uA736" -}, { - base: 'AV', - letters: "\uA738\uA73A" -}, { - base: 'AY', - letters: "\uA73C" -}, { - base: 'B', - letters: "B\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181" -}, { - base: 'C', - letters: "C\u24B8\uFF23\u0106\u0108\u010A\u010C\xC7\u1E08\u0187\u023B\uA73E" -}, { - base: 'D', - letters: "D\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779" -}, { - base: 'DZ', - letters: "\u01F1\u01C4" -}, { - base: 'Dz', - letters: "\u01F2\u01C5" -}, { - base: 'E', - letters: "E\u24BA\uFF25\xC8\xC9\xCA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\xCB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E" -}, { - base: 'F', - letters: "F\u24BB\uFF26\u1E1E\u0191\uA77B" -}, { - base: 'G', - letters: "G\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E" -}, { - base: 'H', - letters: "H\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D" -}, { - base: 'I', - letters: "I\u24BE\uFF29\xCC\xCD\xCE\u0128\u012A\u012C\u0130\xCF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197" -}, { - base: 'J', - letters: "J\u24BF\uFF2A\u0134\u0248" -}, { - base: 'K', - letters: "K\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2" -}, { - base: 'L', - letters: "L\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780" -}, { - base: 'LJ', - letters: "\u01C7" -}, { - base: 'Lj', - letters: "\u01C8" -}, { - base: 'M', - letters: "M\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C" -}, { - base: 'N', - letters: "N\u24C3\uFF2E\u01F8\u0143\xD1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4" -}, { - base: 'NJ', - letters: "\u01CA" -}, { - base: 'Nj', - letters: "\u01CB" -}, { - base: 'O', - letters: "O\u24C4\uFF2F\xD2\xD3\xD4\u1ED2\u1ED0\u1ED6\u1ED4\xD5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\xD6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\xD8\u01FE\u0186\u019F\uA74A\uA74C" -}, { - base: 'OI', - letters: "\u01A2" -}, { - base: 'OO', - letters: "\uA74E" -}, { - base: 'OU', - letters: "\u0222" -}, { - base: 'P', - letters: "P\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754" -}, { - base: 'Q', - letters: "Q\u24C6\uFF31\uA756\uA758\u024A" -}, { - base: 'R', - letters: "R\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782" -}, { - base: 'S', - letters: "S\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784" -}, { - base: 'T', - letters: "T\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786" -}, { - base: 'TZ', - letters: "\uA728" -}, { - base: 'U', - letters: "U\u24CA\uFF35\xD9\xDA\xDB\u0168\u1E78\u016A\u1E7A\u016C\xDC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244" -}, { - base: 'V', - letters: "V\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245" -}, { - base: 'VY', - letters: "\uA760" -}, { - base: 'W', - letters: "W\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72" -}, { - base: 'X', - letters: "X\u24CD\uFF38\u1E8A\u1E8C" -}, { - base: 'Y', - letters: "Y\u24CE\uFF39\u1EF2\xDD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE" -}, { - base: 'Z', - letters: "Z\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762" -}, { - base: 'a', - letters: "a\u24D0\uFF41\u1E9A\xE0\xE1\xE2\u1EA7\u1EA5\u1EAB\u1EA9\xE3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\xE4\u01DF\u1EA3\xE5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250" -}, { - base: 'aa', - letters: "\uA733" -}, { - base: 'ae', - letters: "\xE6\u01FD\u01E3" -}, { - base: 'ao', - letters: "\uA735" -}, { - base: 'au', - letters: "\uA737" -}, { - base: 'av', - letters: "\uA739\uA73B" -}, { - base: 'ay', - letters: "\uA73D" -}, { - base: 'b', - letters: "b\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253" -}, { - base: 'c', - letters: "c\u24D2\uFF43\u0107\u0109\u010B\u010D\xE7\u1E09\u0188\u023C\uA73F\u2184" -}, { - base: 'd', - letters: "d\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A" -}, { - base: 'dz', - letters: "\u01F3\u01C6" -}, { - base: 'e', - letters: "e\u24D4\uFF45\xE8\xE9\xEA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\xEB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD" -}, { - base: 'f', - letters: "f\u24D5\uFF46\u1E1F\u0192\uA77C" -}, { - base: 'g', - letters: "g\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F" -}, { - base: 'h', - letters: "h\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265" -}, { - base: 'hv', - letters: "\u0195" -}, { - base: 'i', - letters: "i\u24D8\uFF49\xEC\xED\xEE\u0129\u012B\u012D\xEF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131" -}, { - base: 'j', - letters: "j\u24D9\uFF4A\u0135\u01F0\u0249" -}, { - base: 'k', - letters: "k\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3" -}, { - base: 'l', - letters: "l\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747" -}, { - base: 'lj', - letters: "\u01C9" -}, { - base: 'm', - letters: "m\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F" -}, { - base: 'n', - letters: "n\u24DD\uFF4E\u01F9\u0144\xF1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5" -}, { - base: 'nj', - letters: "\u01CC" -}, { - base: 'o', - letters: "o\u24DE\uFF4F\xF2\xF3\xF4\u1ED3\u1ED1\u1ED7\u1ED5\xF5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\xF6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\xF8\u01FF\u0254\uA74B\uA74D\u0275" -}, { - base: 'oi', - letters: "\u01A3" -}, { - base: 'ou', - letters: "\u0223" -}, { - base: 'oo', - letters: "\uA74F" -}, { - base: 'p', - letters: "p\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755" -}, { - base: 'q', - letters: "q\u24E0\uFF51\u024B\uA757\uA759" -}, { - base: 'r', - letters: "r\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783" -}, { - base: 's', - letters: "s\u24E2\uFF53\xDF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B" -}, { - base: 't', - letters: "t\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787" -}, { - base: 'tz', - letters: "\uA729" -}, { - base: 'u', - letters: "u\u24E4\uFF55\xF9\xFA\xFB\u0169\u1E79\u016B\u1E7B\u016D\xFC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289" -}, { - base: 'v', - letters: "v\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C" -}, { - base: 'vy', - letters: "\uA761" -}, { - base: 'w', - letters: "w\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73" -}, { - base: 'x', - letters: "x\u24E7\uFF58\u1E8B\u1E8D" -}, { - base: 'y', - letters: "y\u24E8\uFF59\u1EF3\xFD\u0177\u1EF9\u0233\u1E8F\xFF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF" -}, { - base: 'z', - letters: "z\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763" -}]; -var anyDiacritic = new RegExp('[' + diacritics.map(function (d) { - return d.letters; -}).join('') + ']', 'g'); -var diacriticToBase = {}; -for (var i = 0; i < diacritics.length; i++) { - var diacritic = diacritics[i]; - for (var j = 0; j < diacritic.letters.length; j++) { - diacriticToBase[diacritic.letters[j]] = diacritic.base; - } -} -var stripDiacritics = function stripDiacritics(str) { - return str.replace(anyDiacritic, function (match) { - return diacriticToBase[match]; - }); -}; - -var memoizedStripDiacriticsForInput = memoizeOne(stripDiacritics); -var trimString = function trimString(str) { - return str.replace(/^\s+|\s+$/g, ''); -}; -var defaultStringify = function defaultStringify(option) { - return "".concat(option.label, " ").concat(option.value); -}; -var createFilter = function createFilter(config) { - return function (option, rawInput) { - // eslint-disable-next-line no-underscore-dangle - if (option.data.__isNew__) return true; - var _ignoreCase$ignoreAcc = _objectSpread({ - ignoreCase: true, - ignoreAccents: true, - stringify: defaultStringify, - trim: true, - matchFrom: 'any' - }, config), - ignoreCase = _ignoreCase$ignoreAcc.ignoreCase, - ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents, - stringify = _ignoreCase$ignoreAcc.stringify, - trim = _ignoreCase$ignoreAcc.trim, - matchFrom = _ignoreCase$ignoreAcc.matchFrom; - var input = trim ? trimString(rawInput) : rawInput; - var candidate = trim ? trimString(stringify(option)) : stringify(option); - if (ignoreCase) { - input = input.toLowerCase(); - candidate = candidate.toLowerCase(); - } - if (ignoreAccents) { - input = memoizedStripDiacriticsForInput(input); - candidate = stripDiacritics(candidate); - } - return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1; - }; -}; - -var _excluded = ["innerRef"]; -function DummyInput(_ref) { - var innerRef = _ref.innerRef, - props = _objectWithoutProperties(_ref, _excluded); - // Remove animation props not meant for HTML elements - var filteredProps = removeProps(props, 'onExited', 'in', 'enter', 'exit', 'appear'); - return jsx("input", _extends({ - ref: innerRef - }, filteredProps, { - css: /*#__PURE__*/css({ - label: 'dummyInput', - // get rid of any default styles - background: 0, - border: 0, - // important! this hides the flashing cursor - caretColor: 'transparent', - fontSize: 'inherit', - gridArea: '1 / 1 / 2 / 3', - outline: 0, - padding: 0, - // important! without `width` browsers won't allow focus - width: 1, - // remove cursor on desktop - color: 'transparent', - // remove cursor on mobile whilst maintaining "scroll into view" behaviour - left: -100, - opacity: 0, - position: 'relative', - transform: 'scale(.01)' - }, process.env.NODE_ENV === "production" ? "" : ";label:DummyInput;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR1bW15SW5wdXQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlCTSIsImZpbGUiOiJEdW1teUlucHV0LnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgcmVtb3ZlUHJvcHMgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIER1bW15SW5wdXQoe1xuICBpbm5lclJlZixcbiAgLi4ucHJvcHNcbn06IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snaW5wdXQnXSAmIHtcbiAgcmVhZG9ubHkgaW5uZXJSZWY6IFJlZjxIVE1MSW5wdXRFbGVtZW50Pjtcbn0pIHtcbiAgLy8gUmVtb3ZlIGFuaW1hdGlvbiBwcm9wcyBub3QgbWVhbnQgZm9yIEhUTUwgZWxlbWVudHNcbiAgY29uc3QgZmlsdGVyZWRQcm9wcyA9IHJlbW92ZVByb3BzKFxuICAgIHByb3BzLFxuICAgICdvbkV4aXRlZCcsXG4gICAgJ2luJyxcbiAgICAnZW50ZXInLFxuICAgICdleGl0JyxcbiAgICAnYXBwZWFyJ1xuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGlucHV0XG4gICAgICByZWY9e2lubmVyUmVmfVxuICAgICAgey4uLmZpbHRlcmVkUHJvcHN9XG4gICAgICBjc3M9e3tcbiAgICAgICAgbGFiZWw6ICdkdW1teUlucHV0JyxcbiAgICAgICAgLy8gZ2V0IHJpZCBvZiBhbnkgZGVmYXVsdCBzdHlsZXNcbiAgICAgICAgYmFja2dyb3VuZDogMCxcbiAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICAvLyBpbXBvcnRhbnQhIHRoaXMgaGlkZXMgdGhlIGZsYXNoaW5nIGN1cnNvclxuICAgICAgICBjYXJldENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICBmb250U2l6ZTogJ2luaGVyaXQnLFxuICAgICAgICBncmlkQXJlYTogJzEgLyAxIC8gMiAvIDMnLFxuICAgICAgICBvdXRsaW5lOiAwLFxuICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAvLyBpbXBvcnRhbnQhIHdpdGhvdXQgYHdpZHRoYCBicm93c2VycyB3b24ndCBhbGxvdyBmb2N1c1xuICAgICAgICB3aWR0aDogMSxcblxuICAgICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIGRlc2t0b3BcbiAgICAgICAgY29sb3I6ICd0cmFuc3BhcmVudCcsXG5cbiAgICAgICAgLy8gcmVtb3ZlIGN1cnNvciBvbiBtb2JpbGUgd2hpbHN0IG1haW50YWluaW5nIFwic2Nyb2xsIGludG8gdmlld1wiIGJlaGF2aW91clxuICAgICAgICBsZWZ0OiAtMTAwLFxuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgdHJhbnNmb3JtOiAnc2NhbGUoLjAxKScsXG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59XG4iXX0= */") - })); -} - -var cancelScroll = function cancelScroll(event) { - event.preventDefault(); - event.stopPropagation(); -}; -function useScrollCapture(_ref) { - var isEnabled = _ref.isEnabled, - onBottomArrive = _ref.onBottomArrive, - onBottomLeave = _ref.onBottomLeave, - onTopArrive = _ref.onTopArrive, - onTopLeave = _ref.onTopLeave; - var isBottom = useRef(false); - var isTop = useRef(false); - var touchStart = useRef(0); - var scrollTarget = useRef(null); - var handleEventDelta = useCallback(function (event, delta) { - if (scrollTarget.current === null) return; - var _scrollTarget$current = scrollTarget.current, - scrollTop = _scrollTarget$current.scrollTop, - scrollHeight = _scrollTarget$current.scrollHeight, - clientHeight = _scrollTarget$current.clientHeight; - var target = scrollTarget.current; - var isDeltaPositive = delta > 0; - var availableScroll = scrollHeight - clientHeight - scrollTop; - var shouldCancelScroll = false; - - // reset bottom/top flags - if (availableScroll > delta && isBottom.current) { - if (onBottomLeave) onBottomLeave(event); - isBottom.current = false; - } - if (isDeltaPositive && isTop.current) { - if (onTopLeave) onTopLeave(event); - isTop.current = false; - } - - // bottom limit - if (isDeltaPositive && delta > availableScroll) { - if (onBottomArrive && !isBottom.current) { - onBottomArrive(event); - } - target.scrollTop = scrollHeight; - shouldCancelScroll = true; - isBottom.current = true; - - // top limit - } else if (!isDeltaPositive && -delta > scrollTop) { - if (onTopArrive && !isTop.current) { - onTopArrive(event); - } - target.scrollTop = 0; - shouldCancelScroll = true; - isTop.current = true; - } - - // cancel scroll - if (shouldCancelScroll) { - cancelScroll(event); - } - }, [onBottomArrive, onBottomLeave, onTopArrive, onTopLeave]); - var onWheel = useCallback(function (event) { - handleEventDelta(event, event.deltaY); - }, [handleEventDelta]); - var onTouchStart = useCallback(function (event) { - // set touch start so we can calculate touchmove delta - touchStart.current = event.changedTouches[0].clientY; - }, []); - var onTouchMove = useCallback(function (event) { - var deltaY = touchStart.current - event.changedTouches[0].clientY; - handleEventDelta(event, deltaY); - }, [handleEventDelta]); - var startListening = useCallback(function (el) { - // bail early if no element is available to attach to - if (!el) return; - var notPassive = supportsPassiveEvents ? { - passive: false - } : false; - el.addEventListener('wheel', onWheel, notPassive); - el.addEventListener('touchstart', onTouchStart, notPassive); - el.addEventListener('touchmove', onTouchMove, notPassive); - }, [onTouchMove, onTouchStart, onWheel]); - var stopListening = useCallback(function (el) { - // bail early if no element is available to detach from - if (!el) return; - el.removeEventListener('wheel', onWheel, false); - el.removeEventListener('touchstart', onTouchStart, false); - el.removeEventListener('touchmove', onTouchMove, false); - }, [onTouchMove, onTouchStart, onWheel]); - useEffect(function () { - if (!isEnabled) return; - var element = scrollTarget.current; - startListening(element); - return function () { - stopListening(element); - }; - }, [isEnabled, startListening, stopListening]); - return function (element) { - scrollTarget.current = element; - }; -} - -var STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position']; -var LOCK_STYLES = { - boxSizing: 'border-box', - // account for possible declaration `width: 100%;` on body - overflow: 'hidden', - position: 'relative', - height: '100%' -}; -function preventTouchMove(e) { - e.preventDefault(); -} -function allowTouchMove(e) { - e.stopPropagation(); -} -function preventInertiaScroll() { - var top = this.scrollTop; - var totalScroll = this.scrollHeight; - var currentScroll = top + this.offsetHeight; - if (top === 0) { - this.scrollTop = 1; - } else if (currentScroll === totalScroll) { - this.scrollTop = top - 1; - } -} - -// `ontouchstart` check works on most browsers -// `maxTouchPoints` works on IE10/11 and Surface -function isTouchDevice() { - return 'ontouchstart' in window || navigator.maxTouchPoints; -} -var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement); -var activeScrollLocks = 0; -var listenerOptions = { - capture: false, - passive: false -}; -function useScrollLock(_ref) { - var isEnabled = _ref.isEnabled, - _ref$accountForScroll = _ref.accountForScrollbars, - accountForScrollbars = _ref$accountForScroll === void 0 ? true : _ref$accountForScroll; - var originalStyles = useRef({}); - var scrollTarget = useRef(null); - var addScrollLock = useCallback(function (touchScrollTarget) { - if (!canUseDOM) return; - var target = document.body; - var targetStyle = target && target.style; - if (accountForScrollbars) { - // store any styles already applied to the body - STYLE_KEYS.forEach(function (key) { - var val = targetStyle && targetStyle[key]; - originalStyles.current[key] = val; - }); - } - - // apply the lock styles and padding if this is the first scroll lock - if (accountForScrollbars && activeScrollLocks < 1) { - var currentPadding = parseInt(originalStyles.current.paddingRight, 10) || 0; - var clientWidth = document.body ? document.body.clientWidth : 0; - var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0; - Object.keys(LOCK_STYLES).forEach(function (key) { - var val = LOCK_STYLES[key]; - if (targetStyle) { - targetStyle[key] = val; - } - }); - if (targetStyle) { - targetStyle.paddingRight = "".concat(adjustedPadding, "px"); - } - } - - // account for touch devices - if (target && isTouchDevice()) { - // Mobile Safari ignores { overflow: hidden } declaration on the body. - target.addEventListener('touchmove', preventTouchMove, listenerOptions); - - // Allow scroll on provided target - if (touchScrollTarget) { - touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, listenerOptions); - touchScrollTarget.addEventListener('touchmove', allowTouchMove, listenerOptions); - } - } - - // increment active scroll locks - activeScrollLocks += 1; - }, [accountForScrollbars]); - var removeScrollLock = useCallback(function (touchScrollTarget) { - if (!canUseDOM) return; - var target = document.body; - var targetStyle = target && target.style; - - // safely decrement active scroll locks - activeScrollLocks = Math.max(activeScrollLocks - 1, 0); - - // reapply original body styles, if any - if (accountForScrollbars && activeScrollLocks < 1) { - STYLE_KEYS.forEach(function (key) { - var val = originalStyles.current[key]; - if (targetStyle) { - targetStyle[key] = val; - } - }); - } - - // remove touch listeners - if (target && isTouchDevice()) { - target.removeEventListener('touchmove', preventTouchMove, listenerOptions); - if (touchScrollTarget) { - touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, listenerOptions); - touchScrollTarget.removeEventListener('touchmove', allowTouchMove, listenerOptions); - } - } - }, [accountForScrollbars]); - useEffect(function () { - if (!isEnabled) return; - var element = scrollTarget.current; - addScrollLock(element); - return function () { - removeScrollLock(element); - }; - }, [isEnabled, addScrollLock, removeScrollLock]); - return function (element) { - scrollTarget.current = element; - }; -} - -function _EMOTION_STRINGIFIED_CSS_ERROR__$1() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } -var blurSelectInput = function blurSelectInput() { - return document.activeElement && document.activeElement.blur(); -}; -var _ref2$1 = process.env.NODE_ENV === "production" ? { - name: "1kfdb0e", - styles: "position:fixed;left:0;bottom:0;right:0;top:0" -} : { - name: "bp8cua-ScrollManager", - styles: "position:fixed;left:0;bottom:0;right:0;top:0;label:ScrollManager;", - map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNjcm9sbE1hbmFnZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStDVSIsImZpbGUiOiJTY3JvbGxNYW5hZ2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgRnJhZ21lbnQsIFJlYWN0RWxlbWVudCwgUmVmQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlU2Nyb2xsQ2FwdHVyZSBmcm9tICcuL3VzZVNjcm9sbENhcHR1cmUnO1xuaW1wb3J0IHVzZVNjcm9sbExvY2sgZnJvbSAnLi91c2VTY3JvbGxMb2NrJztcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgcmVhZG9ubHkgY2hpbGRyZW46IChyZWY6IFJlZkNhbGxiYWNrPEhUTUxFbGVtZW50PikgPT4gUmVhY3RFbGVtZW50O1xuICByZWFkb25seSBsb2NrRW5hYmxlZDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY2FwdHVyZUVuYWJsZWQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IG9uQm90dG9tQXJyaXZlPzogKGV2ZW50OiBXaGVlbEV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25Cb3R0b21MZWF2ZT86IChldmVudDogV2hlZWxFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IG9uVG9wQXJyaXZlPzogKGV2ZW50OiBXaGVlbEV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25Ub3BMZWF2ZT86IChldmVudDogV2hlZWxFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWQ7XG59XG5cbmNvbnN0IGJsdXJTZWxlY3RJbnB1dCA9ICgpID0+XG4gIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmJsdXIoKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2Nyb2xsTWFuYWdlcih7XG4gIGNoaWxkcmVuLFxuICBsb2NrRW5hYmxlZCxcbiAgY2FwdHVyZUVuYWJsZWQgPSB0cnVlLFxuICBvbkJvdHRvbUFycml2ZSxcbiAgb25Cb3R0b21MZWF2ZSxcbiAgb25Ub3BBcnJpdmUsXG4gIG9uVG9wTGVhdmUsXG59OiBQcm9wcykge1xuICBjb25zdCBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0ID0gdXNlU2Nyb2xsQ2FwdHVyZSh7XG4gICAgaXNFbmFibGVkOiBjYXB0dXJlRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZSxcbiAgICBvbkJvdHRvbUxlYXZlLFxuICAgIG9uVG9wQXJyaXZlLFxuICAgIG9uVG9wTGVhdmUsXG4gIH0pO1xuICBjb25zdCBzZXRTY3JvbGxMb2NrVGFyZ2V0ID0gdXNlU2Nyb2xsTG9jayh7IGlzRW5hYmxlZDogbG9ja0VuYWJsZWQgfSk7XG5cbiAgY29uc3QgdGFyZ2V0UmVmOiBSZWZDYWxsYmFjazxIVE1MRWxlbWVudD4gPSAoZWxlbWVudCkgPT4ge1xuICAgIHNldFNjcm9sbENhcHR1cmVUYXJnZXQoZWxlbWVudCk7XG4gICAgc2V0U2Nyb2xsTG9ja1RhcmdldChlbGVtZW50KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxGcmFnbWVudD5cbiAgICAgIHtsb2NrRW5hYmxlZCAmJiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBvbkNsaWNrPXtibHVyU2VsZWN0SW5wdXR9XG4gICAgICAgICAgY3NzPXt7IHBvc2l0aW9uOiAnZml4ZWQnLCBsZWZ0OiAwLCBib3R0b206IDAsIHJpZ2h0OiAwLCB0b3A6IDAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7Y2hpbGRyZW4odGFyZ2V0UmVmKX1cbiAgICA8L0ZyYWdtZW50PlxuICApO1xufVxuIl19 */", - toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1 -}; -function ScrollManager(_ref) { - var children = _ref.children, - lockEnabled = _ref.lockEnabled, - _ref$captureEnabled = _ref.captureEnabled, - captureEnabled = _ref$captureEnabled === void 0 ? true : _ref$captureEnabled, - onBottomArrive = _ref.onBottomArrive, - onBottomLeave = _ref.onBottomLeave, - onTopArrive = _ref.onTopArrive, - onTopLeave = _ref.onTopLeave; - var setScrollCaptureTarget = useScrollCapture({ - isEnabled: captureEnabled, - onBottomArrive: onBottomArrive, - onBottomLeave: onBottomLeave, - onTopArrive: onTopArrive, - onTopLeave: onTopLeave - }); - var setScrollLockTarget = useScrollLock({ - isEnabled: lockEnabled - }); - var targetRef = function targetRef(element) { - setScrollCaptureTarget(element); - setScrollLockTarget(element); - }; - return jsx(Fragment, null, lockEnabled && jsx("div", { - onClick: blurSelectInput, - css: _ref2$1 - }), children(targetRef)); -} - -function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } -var _ref2 = process.env.NODE_ENV === "production" ? { - name: "1a0ro4n-requiredInput", - styles: "label:requiredInput;opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;width:100%" -} : { - name: "5kkxb2-requiredInput-RequiredInput", - styles: "label:requiredInput;opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;width:100%;label:RequiredInput;", - map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlJlcXVpcmVkSW5wdXQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFJIiwiZmlsZSI6IlJlcXVpcmVkSW5wdXQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBGb2N1c0V2ZW50SGFuZGxlciwgRnVuY3Rpb25Db21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmNvbnN0IFJlcXVpcmVkSW5wdXQ6IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBvbkZvY3VzOiBGb2N1c0V2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50Pjtcbn0+ID0gKHsgbmFtZSwgb25Gb2N1cyB9KSA9PiAoXG4gIDxpbnB1dFxuICAgIHJlcXVpcmVkXG4gICAgbmFtZT17bmFtZX1cbiAgICB0YWJJbmRleD17LTF9XG4gICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICBjc3M9e3tcbiAgICAgIGxhYmVsOiAncmVxdWlyZWRJbnB1dCcsXG4gICAgICBvcGFjaXR5OiAwLFxuICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBib3R0b206IDAsXG4gICAgICBsZWZ0OiAwLFxuICAgICAgcmlnaHQ6IDAsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgIH19XG4gICAgLy8gUHJldmVudCBgU3dpdGNoaW5nIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWRgIGVycm9yXG4gICAgdmFsdWU9XCJcIlxuICAgIG9uQ2hhbmdlPXsoKSA9PiB7fX1cbiAgLz5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IFJlcXVpcmVkSW5wdXQ7XG4iXX0= */", - toString: _EMOTION_STRINGIFIED_CSS_ERROR__ -}; -var RequiredInput = function RequiredInput(_ref) { - var name = _ref.name, - onFocus = _ref.onFocus; - return jsx("input", { - required: true, - name: name, - tabIndex: -1, - onFocus: onFocus, - css: _ref2 - // Prevent `Switching from uncontrolled to controlled` error - , - value: "", - onChange: function onChange() {} - }); -}; - -var formatGroupLabel = function formatGroupLabel(group) { - return group.label; -}; -var getOptionLabel$1 = function getOptionLabel(option) { - return option.label; -}; -var getOptionValue$1 = function getOptionValue(option) { - return option.value; -}; -var isOptionDisabled = function isOptionDisabled(option) { - return !!option.isDisabled; -}; - -var defaultStyles = { - clearIndicator: clearIndicatorCSS, - container: containerCSS, - control: css$1, - dropdownIndicator: dropdownIndicatorCSS, - group: groupCSS, - groupHeading: groupHeadingCSS, - indicatorsContainer: indicatorsContainerCSS, - indicatorSeparator: indicatorSeparatorCSS, - input: inputCSS, - loadingIndicator: loadingIndicatorCSS, - loadingMessage: loadingMessageCSS, - menu: menuCSS, - menuList: menuListCSS, - menuPortal: menuPortalCSS, - multiValue: multiValueCSS, - multiValueLabel: multiValueLabelCSS, - multiValueRemove: multiValueRemoveCSS, - noOptionsMessage: noOptionsMessageCSS, - option: optionCSS, - placeholder: placeholderCSS, - singleValue: css$2, - valueContainer: valueContainerCSS -}; -// Merge Utility -// Allows consumers to extend a base Select with additional styles - -function mergeStyles(source) { - var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - // initialize with source styles - var styles = _objectSpread({}, source); - - // massage in target styles - Object.keys(target).forEach(function (keyAsString) { - var key = keyAsString; - if (source[key]) { - styles[key] = function (rsCss, props) { - return target[key](source[key](rsCss, props), props); - }; - } else { - styles[key] = target[key]; - } - }); - return styles; -} - -var colors = { - primary: '#2684FF', - primary75: '#4C9AFF', - primary50: '#B2D4FF', - primary25: '#DEEBFF', - danger: '#DE350B', - dangerLight: '#FFBDAD', - neutral0: 'hsl(0, 0%, 100%)', - neutral5: 'hsl(0, 0%, 95%)', - neutral10: 'hsl(0, 0%, 90%)', - neutral20: 'hsl(0, 0%, 80%)', - neutral30: 'hsl(0, 0%, 70%)', - neutral40: 'hsl(0, 0%, 60%)', - neutral50: 'hsl(0, 0%, 50%)', - neutral60: 'hsl(0, 0%, 40%)', - neutral70: 'hsl(0, 0%, 30%)', - neutral80: 'hsl(0, 0%, 20%)', - neutral90: 'hsl(0, 0%, 10%)' -}; -var borderRadius = 4; -// Used to calculate consistent margin/padding on elements -var baseUnit = 4; -// The minimum height of the control -var controlHeight = 38; -// The amount of space between the control and menu */ -var menuGutter = baseUnit * 2; -var spacing = { - baseUnit: baseUnit, - controlHeight: controlHeight, - menuGutter: menuGutter -}; -var defaultTheme = { - borderRadius: borderRadius, - colors: colors, - spacing: spacing -}; - -var defaultProps = { - 'aria-live': 'polite', - backspaceRemovesValue: true, - blurInputOnSelect: isTouchCapable(), - captureMenuScroll: !isTouchCapable(), - classNames: {}, - closeMenuOnSelect: true, - closeMenuOnScroll: false, - components: {}, - controlShouldRenderValue: true, - escapeClearsValue: false, - filterOption: createFilter(), - formatGroupLabel: formatGroupLabel, - getOptionLabel: getOptionLabel$1, - getOptionValue: getOptionValue$1, - isDisabled: false, - isLoading: false, - isMulti: false, - isRtl: false, - isSearchable: true, - isOptionDisabled: isOptionDisabled, - loadingMessage: function loadingMessage() { - return 'Loading...'; - }, - maxMenuHeight: 300, - minMenuHeight: 140, - menuIsOpen: false, - menuPlacement: 'bottom', - menuPosition: 'absolute', - menuShouldBlockScroll: false, - menuShouldScrollIntoView: !isMobileDevice(), - noOptionsMessage: function noOptionsMessage() { - return 'No options'; - }, - openMenuOnFocus: false, - openMenuOnClick: true, - options: [], - pageSize: 5, - placeholder: 'Select...', - screenReaderStatus: function screenReaderStatus(_ref) { - var count = _ref.count; - return "".concat(count, " result").concat(count !== 1 ? 's' : '', " available"); - }, - styles: {}, - tabIndex: 0, - tabSelectsValue: true, - unstyled: false -}; -function toCategorizedOption(props, option, selectValue, index) { - var isDisabled = _isOptionDisabled(props, option, selectValue); - var isSelected = _isOptionSelected(props, option, selectValue); - var label = getOptionLabel(props, option); - var value = getOptionValue(props, option); - return { - type: 'option', - data: option, - isDisabled: isDisabled, - isSelected: isSelected, - label: label, - value: value, - index: index - }; -} -function buildCategorizedOptions(props, selectValue) { - return props.options.map(function (groupOrOption, groupOrOptionIndex) { - if ('options' in groupOrOption) { - var categorizedOptions = groupOrOption.options.map(function (option, optionIndex) { - return toCategorizedOption(props, option, selectValue, optionIndex); - }).filter(function (categorizedOption) { - return isFocusable(props, categorizedOption); - }); - return categorizedOptions.length > 0 ? { - type: 'group', - data: groupOrOption, - options: categorizedOptions, - index: groupOrOptionIndex - } : undefined; - } - var categorizedOption = toCategorizedOption(props, groupOrOption, selectValue, groupOrOptionIndex); - return isFocusable(props, categorizedOption) ? categorizedOption : undefined; - }).filter(notNullish); -} -function buildFocusableOptionsFromCategorizedOptions(categorizedOptions) { - return categorizedOptions.reduce(function (optionsAccumulator, categorizedOption) { - if (categorizedOption.type === 'group') { - optionsAccumulator.push.apply(optionsAccumulator, _toConsumableArray(categorizedOption.options.map(function (option) { - return option.data; - }))); - } else { - optionsAccumulator.push(categorizedOption.data); - } - return optionsAccumulator; - }, []); -} -function buildFocusableOptions(props, selectValue) { - return buildFocusableOptionsFromCategorizedOptions(buildCategorizedOptions(props, selectValue)); -} -function isFocusable(props, categorizedOption) { - var _props$inputValue = props.inputValue, - inputValue = _props$inputValue === void 0 ? '' : _props$inputValue; - var data = categorizedOption.data, - isSelected = categorizedOption.isSelected, - label = categorizedOption.label, - value = categorizedOption.value; - return (!shouldHideSelectedOptions(props) || !isSelected) && _filterOption(props, { - label: label, - value: value, - data: data - }, inputValue); -} -function getNextFocusedValue(state, nextSelectValue) { - var focusedValue = state.focusedValue, - lastSelectValue = state.selectValue; - var lastFocusedIndex = lastSelectValue.indexOf(focusedValue); - if (lastFocusedIndex > -1) { - var nextFocusedIndex = nextSelectValue.indexOf(focusedValue); - if (nextFocusedIndex > -1) { - // the focused value is still in the selectValue, return it - return focusedValue; - } else if (lastFocusedIndex < nextSelectValue.length) { - // the focusedValue is not present in the next selectValue array by - // reference, so return the new value at the same index - return nextSelectValue[lastFocusedIndex]; - } - } - return null; -} -function getNextFocusedOption(state, options) { - var lastFocusedOption = state.focusedOption; - return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0]; -} -var getOptionLabel = function getOptionLabel(props, data) { - return props.getOptionLabel(data); -}; -var getOptionValue = function getOptionValue(props, data) { - return props.getOptionValue(data); -}; -function _isOptionDisabled(props, option, selectValue) { - return typeof props.isOptionDisabled === 'function' ? props.isOptionDisabled(option, selectValue) : false; -} -function _isOptionSelected(props, option, selectValue) { - if (selectValue.indexOf(option) > -1) return true; - if (typeof props.isOptionSelected === 'function') { - return props.isOptionSelected(option, selectValue); - } - var candidate = getOptionValue(props, option); - return selectValue.some(function (i) { - return getOptionValue(props, i) === candidate; - }); -} -function _filterOption(props, option, inputValue) { - return props.filterOption ? props.filterOption(option, inputValue) : true; -} -var shouldHideSelectedOptions = function shouldHideSelectedOptions(props) { - var hideSelectedOptions = props.hideSelectedOptions, - isMulti = props.isMulti; - if (hideSelectedOptions === undefined) return isMulti; - return hideSelectedOptions; -}; -var instanceId = 1; -var Select = /*#__PURE__*/function (_Component) { - _inherits(Select, _Component); - var _super = _createSuper(Select); - // Misc. Instance Properties - // ------------------------------ - - // TODO - - // Refs - // ------------------------------ - - // Lifecycle - // ------------------------------ - - function Select(_props) { - var _this; - _classCallCheck(this, Select); - _this = _super.call(this, _props); - _this.state = { - ariaSelection: null, - focusedOption: null, - focusedValue: null, - inputIsHidden: false, - isFocused: false, - selectValue: [], - clearFocusValueOnUpdate: false, - prevWasFocused: false, - inputIsHiddenAfterUpdate: undefined, - prevProps: undefined - }; - _this.blockOptionHover = false; - _this.isComposing = false; - _this.commonProps = void 0; - _this.initialTouchX = 0; - _this.initialTouchY = 0; - _this.instancePrefix = ''; - _this.openAfterFocus = false; - _this.scrollToFocusedOptionOnUpdate = false; - _this.userIsDragging = void 0; - _this.controlRef = null; - _this.getControlRef = function (ref) { - _this.controlRef = ref; - }; - _this.focusedOptionRef = null; - _this.getFocusedOptionRef = function (ref) { - _this.focusedOptionRef = ref; - }; - _this.menuListRef = null; - _this.getMenuListRef = function (ref) { - _this.menuListRef = ref; - }; - _this.inputRef = null; - _this.getInputRef = function (ref) { - _this.inputRef = ref; - }; - _this.focus = _this.focusInput; - _this.blur = _this.blurInput; - _this.onChange = function (newValue, actionMeta) { - var _this$props = _this.props, - onChange = _this$props.onChange, - name = _this$props.name; - actionMeta.name = name; - _this.ariaOnChange(newValue, actionMeta); - onChange(newValue, actionMeta); - }; - _this.setValue = function (newValue, action, option) { - var _this$props2 = _this.props, - closeMenuOnSelect = _this$props2.closeMenuOnSelect, - isMulti = _this$props2.isMulti, - inputValue = _this$props2.inputValue; - _this.onInputChange('', { - action: 'set-value', - prevInputValue: inputValue - }); - if (closeMenuOnSelect) { - _this.setState({ - inputIsHiddenAfterUpdate: !isMulti - }); - _this.onMenuClose(); - } - // when the select value should change, we should reset focusedValue - _this.setState({ - clearFocusValueOnUpdate: true - }); - _this.onChange(newValue, { - action: action, - option: option - }); - }; - _this.selectOption = function (newValue) { - var _this$props3 = _this.props, - blurInputOnSelect = _this$props3.blurInputOnSelect, - isMulti = _this$props3.isMulti, - name = _this$props3.name; - var selectValue = _this.state.selectValue; - var deselected = isMulti && _this.isOptionSelected(newValue, selectValue); - var isDisabled = _this.isOptionDisabled(newValue, selectValue); - if (deselected) { - var candidate = _this.getOptionValue(newValue); - _this.setValue(multiValueAsValue(selectValue.filter(function (i) { - return _this.getOptionValue(i) !== candidate; - })), 'deselect-option', newValue); - } else if (!isDisabled) { - // Select option if option is not disabled - if (isMulti) { - _this.setValue(multiValueAsValue([].concat(_toConsumableArray(selectValue), [newValue])), 'select-option', newValue); - } else { - _this.setValue(singleValueAsValue(newValue), 'select-option'); - } - } else { - _this.ariaOnChange(singleValueAsValue(newValue), { - action: 'select-option', - option: newValue, - name: name - }); - return; - } - if (blurInputOnSelect) { - _this.blurInput(); - } - }; - _this.removeValue = function (removedValue) { - var isMulti = _this.props.isMulti; - var selectValue = _this.state.selectValue; - var candidate = _this.getOptionValue(removedValue); - var newValueArray = selectValue.filter(function (i) { - return _this.getOptionValue(i) !== candidate; - }); - var newValue = valueTernary(isMulti, newValueArray, newValueArray[0] || null); - _this.onChange(newValue, { - action: 'remove-value', - removedValue: removedValue - }); - _this.focusInput(); - }; - _this.clearValue = function () { - var selectValue = _this.state.selectValue; - _this.onChange(valueTernary(_this.props.isMulti, [], null), { - action: 'clear', - removedValues: selectValue - }); - }; - _this.popValue = function () { - var isMulti = _this.props.isMulti; - var selectValue = _this.state.selectValue; - var lastSelectedValue = selectValue[selectValue.length - 1]; - var newValueArray = selectValue.slice(0, selectValue.length - 1); - var newValue = valueTernary(isMulti, newValueArray, newValueArray[0] || null); - _this.onChange(newValue, { - action: 'pop-value', - removedValue: lastSelectedValue - }); - }; - _this.getValue = function () { - return _this.state.selectValue; - }; - _this.cx = function () { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - return classNames.apply(void 0, [_this.props.classNamePrefix].concat(args)); - }; - _this.getOptionLabel = function (data) { - return getOptionLabel(_this.props, data); - }; - _this.getOptionValue = function (data) { - return getOptionValue(_this.props, data); - }; - _this.getStyles = function (key, props) { - var unstyled = _this.props.unstyled; - var base = defaultStyles[key](props, unstyled); - base.boxSizing = 'border-box'; - var custom = _this.props.styles[key]; - return custom ? custom(base, props) : base; - }; - _this.getClassNames = function (key, props) { - var _this$props$className, _this$props$className2; - return (_this$props$className = (_this$props$className2 = _this.props.classNames)[key]) === null || _this$props$className === void 0 ? void 0 : _this$props$className.call(_this$props$className2, props); - }; - _this.getElementId = function (element) { - return "".concat(_this.instancePrefix, "-").concat(element); - }; - _this.getComponents = function () { - return defaultComponents(_this.props); - }; - _this.buildCategorizedOptions = function () { - return buildCategorizedOptions(_this.props, _this.state.selectValue); - }; - _this.getCategorizedOptions = function () { - return _this.props.menuIsOpen ? _this.buildCategorizedOptions() : []; - }; - _this.buildFocusableOptions = function () { - return buildFocusableOptionsFromCategorizedOptions(_this.buildCategorizedOptions()); - }; - _this.getFocusableOptions = function () { - return _this.props.menuIsOpen ? _this.buildFocusableOptions() : []; - }; - _this.ariaOnChange = function (value, actionMeta) { - _this.setState({ - ariaSelection: _objectSpread({ - value: value - }, actionMeta) - }); - }; - _this.onMenuMouseDown = function (event) { - if (event.button !== 0) { - return; - } - event.stopPropagation(); - event.preventDefault(); - _this.focusInput(); - }; - _this.onMenuMouseMove = function (event) { - _this.blockOptionHover = false; - }; - _this.onControlMouseDown = function (event) { - // Event captured by dropdown indicator - if (event.defaultPrevented) { - return; - } - var openMenuOnClick = _this.props.openMenuOnClick; - if (!_this.state.isFocused) { - if (openMenuOnClick) { - _this.openAfterFocus = true; - } - _this.focusInput(); - } else if (!_this.props.menuIsOpen) { - if (openMenuOnClick) { - _this.openMenu('first'); - } - } else { - if (event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') { - _this.onMenuClose(); - } - } - if (event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') { - event.preventDefault(); - } - }; - _this.onDropdownIndicatorMouseDown = function (event) { - // ignore mouse events that weren't triggered by the primary button - if (event && event.type === 'mousedown' && event.button !== 0) { - return; - } - if (_this.props.isDisabled) return; - var _this$props4 = _this.props, - isMulti = _this$props4.isMulti, - menuIsOpen = _this$props4.menuIsOpen; - _this.focusInput(); - if (menuIsOpen) { - _this.setState({ - inputIsHiddenAfterUpdate: !isMulti - }); - _this.onMenuClose(); - } else { - _this.openMenu('first'); - } - event.preventDefault(); - }; - _this.onClearIndicatorMouseDown = function (event) { - // ignore mouse events that weren't triggered by the primary button - if (event && event.type === 'mousedown' && event.button !== 0) { - return; - } - _this.clearValue(); - event.preventDefault(); - _this.openAfterFocus = false; - if (event.type === 'touchend') { - _this.focusInput(); - } else { - setTimeout(function () { - return _this.focusInput(); - }); - } - }; - _this.onScroll = function (event) { - if (typeof _this.props.closeMenuOnScroll === 'boolean') { - if (event.target instanceof HTMLElement && isDocumentElement(event.target)) { - _this.props.onMenuClose(); - } - } else if (typeof _this.props.closeMenuOnScroll === 'function') { - if (_this.props.closeMenuOnScroll(event)) { - _this.props.onMenuClose(); - } - } - }; - _this.onCompositionStart = function () { - _this.isComposing = true; - }; - _this.onCompositionEnd = function () { - _this.isComposing = false; - }; - _this.onTouchStart = function (_ref2) { - var touches = _ref2.touches; - var touch = touches && touches.item(0); - if (!touch) { - return; - } - _this.initialTouchX = touch.clientX; - _this.initialTouchY = touch.clientY; - _this.userIsDragging = false; - }; - _this.onTouchMove = function (_ref3) { - var touches = _ref3.touches; - var touch = touches && touches.item(0); - if (!touch) { - return; - } - var deltaX = Math.abs(touch.clientX - _this.initialTouchX); - var deltaY = Math.abs(touch.clientY - _this.initialTouchY); - var moveThreshold = 5; - _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold; - }; - _this.onTouchEnd = function (event) { - if (_this.userIsDragging) return; - - // close the menu if the user taps outside - // we're checking on event.target here instead of event.currentTarget, because we want to assert information - // on events on child elements, not the document (which we've attached this handler to). - if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) { - _this.blurInput(); - } - - // reset move vars - _this.initialTouchX = 0; - _this.initialTouchY = 0; - }; - _this.onControlTouchEnd = function (event) { - if (_this.userIsDragging) return; - _this.onControlMouseDown(event); - }; - _this.onClearIndicatorTouchEnd = function (event) { - if (_this.userIsDragging) return; - _this.onClearIndicatorMouseDown(event); - }; - _this.onDropdownIndicatorTouchEnd = function (event) { - if (_this.userIsDragging) return; - _this.onDropdownIndicatorMouseDown(event); - }; - _this.handleInputChange = function (event) { - var prevInputValue = _this.props.inputValue; - var inputValue = event.currentTarget.value; - _this.setState({ - inputIsHiddenAfterUpdate: false - }); - _this.onInputChange(inputValue, { - action: 'input-change', - prevInputValue: prevInputValue - }); - if (!_this.props.menuIsOpen) { - _this.onMenuOpen(); - } - }; - _this.onInputFocus = function (event) { - if (_this.props.onFocus) { - _this.props.onFocus(event); - } - _this.setState({ - inputIsHiddenAfterUpdate: false, - isFocused: true - }); - if (_this.openAfterFocus || _this.props.openMenuOnFocus) { - _this.openMenu('first'); - } - _this.openAfterFocus = false; - }; - _this.onInputBlur = function (event) { - var prevInputValue = _this.props.inputValue; - if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) { - _this.inputRef.focus(); - return; - } - if (_this.props.onBlur) { - _this.props.onBlur(event); - } - _this.onInputChange('', { - action: 'input-blur', - prevInputValue: prevInputValue - }); - _this.onMenuClose(); - _this.setState({ - focusedValue: null, - isFocused: false - }); - }; - _this.onOptionHover = function (focusedOption) { - if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) { - return; - } - _this.setState({ - focusedOption: focusedOption - }); - }; - _this.shouldHideSelectedOptions = function () { - return shouldHideSelectedOptions(_this.props); - }; - _this.onValueInputFocus = function (e) { - e.preventDefault(); - e.stopPropagation(); - _this.focus(); - }; - _this.onKeyDown = function (event) { - var _this$props5 = _this.props, - isMulti = _this$props5.isMulti, - backspaceRemovesValue = _this$props5.backspaceRemovesValue, - escapeClearsValue = _this$props5.escapeClearsValue, - inputValue = _this$props5.inputValue, - isClearable = _this$props5.isClearable, - isDisabled = _this$props5.isDisabled, - menuIsOpen = _this$props5.menuIsOpen, - onKeyDown = _this$props5.onKeyDown, - tabSelectsValue = _this$props5.tabSelectsValue, - openMenuOnFocus = _this$props5.openMenuOnFocus; - var _this$state = _this.state, - focusedOption = _this$state.focusedOption, - focusedValue = _this$state.focusedValue, - selectValue = _this$state.selectValue; - if (isDisabled) return; - if (typeof onKeyDown === 'function') { - onKeyDown(event); - if (event.defaultPrevented) { - return; - } - } - - // Block option hover events when the user has just pressed a key - _this.blockOptionHover = true; - switch (event.key) { - case 'ArrowLeft': - if (!isMulti || inputValue) return; - _this.focusValue('previous'); - break; - case 'ArrowRight': - if (!isMulti || inputValue) return; - _this.focusValue('next'); - break; - case 'Delete': - case 'Backspace': - if (inputValue) return; - if (focusedValue) { - _this.removeValue(focusedValue); - } else { - if (!backspaceRemovesValue) return; - if (isMulti) { - _this.popValue(); - } else if (isClearable) { - _this.clearValue(); - } - } - break; - case 'Tab': - if (_this.isComposing) return; - if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption || - // don't capture the event if the menu opens on focus and the focused - // option is already selected; it breaks the flow of navigation - openMenuOnFocus && _this.isOptionSelected(focusedOption, selectValue)) { - return; - } - _this.selectOption(focusedOption); - break; - case 'Enter': - if (event.keyCode === 229) { - // ignore the keydown event from an Input Method Editor(IME) - // ref. https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode - break; - } - if (menuIsOpen) { - if (!focusedOption) return; - if (_this.isComposing) return; - _this.selectOption(focusedOption); - break; - } - return; - case 'Escape': - if (menuIsOpen) { - _this.setState({ - inputIsHiddenAfterUpdate: false - }); - _this.onInputChange('', { - action: 'menu-close', - prevInputValue: inputValue - }); - _this.onMenuClose(); - } else if (isClearable && escapeClearsValue) { - _this.clearValue(); - } - break; - case ' ': - // space - if (inputValue) { - return; - } - if (!menuIsOpen) { - _this.openMenu('first'); - break; - } - if (!focusedOption) return; - _this.selectOption(focusedOption); - break; - case 'ArrowUp': - if (menuIsOpen) { - _this.focusOption('up'); - } else { - _this.openMenu('last'); - } - break; - case 'ArrowDown': - if (menuIsOpen) { - _this.focusOption('down'); - } else { - _this.openMenu('first'); - } - break; - case 'PageUp': - if (!menuIsOpen) return; - _this.focusOption('pageup'); - break; - case 'PageDown': - if (!menuIsOpen) return; - _this.focusOption('pagedown'); - break; - case 'Home': - if (!menuIsOpen) return; - _this.focusOption('first'); - break; - case 'End': - if (!menuIsOpen) return; - _this.focusOption('last'); - break; - default: - return; - } - event.preventDefault(); - }; - _this.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId); - _this.state.selectValue = cleanValue(_props.value); - - // Set focusedOption if menuIsOpen is set on init (e.g. defaultMenuIsOpen) - if (_props.menuIsOpen && _this.state.selectValue.length) { - var focusableOptions = _this.buildFocusableOptions(); - var optionIndex = focusableOptions.indexOf(_this.state.selectValue[0]); - _this.state.focusedOption = focusableOptions[optionIndex]; - } - return _this; - } - _createClass(Select, [{ - key: "componentDidMount", - value: function componentDidMount() { - this.startListeningComposition(); - this.startListeningToTouch(); - if (this.props.closeMenuOnScroll && document && document.addEventListener) { - // Listen to all scroll events, and filter them out inside of 'onScroll' - document.addEventListener('scroll', this.onScroll, true); - } - if (this.props.autoFocus) { - this.focusInput(); - } - - // Scroll focusedOption into view if menuIsOpen is set on mount (e.g. defaultMenuIsOpen) - if (this.props.menuIsOpen && this.state.focusedOption && this.menuListRef && this.focusedOptionRef) { - scrollIntoView(this.menuListRef, this.focusedOptionRef); - } - } - }, { - key: "componentDidUpdate", - value: function componentDidUpdate(prevProps) { - var _this$props6 = this.props, - isDisabled = _this$props6.isDisabled, - menuIsOpen = _this$props6.menuIsOpen; - var isFocused = this.state.isFocused; - if ( - // ensure focus is restored correctly when the control becomes enabled - isFocused && !isDisabled && prevProps.isDisabled || - // ensure focus is on the Input when the menu opens - isFocused && menuIsOpen && !prevProps.menuIsOpen) { - this.focusInput(); - } - if (isFocused && isDisabled && !prevProps.isDisabled) { - // ensure select state gets blurred in case Select is programmatically disabled while focused - // eslint-disable-next-line react/no-did-update-set-state - this.setState({ - isFocused: false - }, this.onMenuClose); - } else if (!isFocused && !isDisabled && prevProps.isDisabled && this.inputRef === document.activeElement) { - // ensure select state gets focused in case Select is programatically re-enabled while focused (Firefox) - // eslint-disable-next-line react/no-did-update-set-state - this.setState({ - isFocused: true - }); - } - - // scroll the focused option into view if necessary - if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) { - scrollIntoView(this.menuListRef, this.focusedOptionRef); - this.scrollToFocusedOptionOnUpdate = false; - } - } - }, { - key: "componentWillUnmount", - value: function componentWillUnmount() { - this.stopListeningComposition(); - this.stopListeningToTouch(); - document.removeEventListener('scroll', this.onScroll, true); - } - - // ============================== - // Consumer Handlers - // ============================== - }, { - key: "onMenuOpen", - value: function onMenuOpen() { - this.props.onMenuOpen(); - } - }, { - key: "onMenuClose", - value: function onMenuClose() { - this.onInputChange('', { - action: 'menu-close', - prevInputValue: this.props.inputValue - }); - this.props.onMenuClose(); - } - }, { - key: "onInputChange", - value: function onInputChange(newValue, actionMeta) { - this.props.onInputChange(newValue, actionMeta); - } - - // ============================== - // Methods - // ============================== - }, { - key: "focusInput", - value: function focusInput() { - if (!this.inputRef) return; - this.inputRef.focus(); - } - }, { - key: "blurInput", - value: function blurInput() { - if (!this.inputRef) return; - this.inputRef.blur(); - } - - // aliased for consumers - }, { - key: "openMenu", - value: function openMenu(focusOption) { - var _this2 = this; - var _this$state2 = this.state, - selectValue = _this$state2.selectValue, - isFocused = _this$state2.isFocused; - var focusableOptions = this.buildFocusableOptions(); - var openAtIndex = focusOption === 'first' ? 0 : focusableOptions.length - 1; - if (!this.props.isMulti) { - var selectedIndex = focusableOptions.indexOf(selectValue[0]); - if (selectedIndex > -1) { - openAtIndex = selectedIndex; - } - } - - // only scroll if the menu isn't already open - this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef); - this.setState({ - inputIsHiddenAfterUpdate: false, - focusedValue: null, - focusedOption: focusableOptions[openAtIndex] - }, function () { - return _this2.onMenuOpen(); - }); - } - }, { - key: "focusValue", - value: function focusValue(direction) { - var _this$state3 = this.state, - selectValue = _this$state3.selectValue, - focusedValue = _this$state3.focusedValue; - - // Only multiselects support value focusing - if (!this.props.isMulti) return; - this.setState({ - focusedOption: null - }); - var focusedIndex = selectValue.indexOf(focusedValue); - if (!focusedValue) { - focusedIndex = -1; - } - var lastIndex = selectValue.length - 1; - var nextFocus = -1; - if (!selectValue.length) return; - switch (direction) { - case 'previous': - if (focusedIndex === 0) { - // don't cycle from the start to the end - nextFocus = 0; - } else if (focusedIndex === -1) { - // if nothing is focused, focus the last value first - nextFocus = lastIndex; - } else { - nextFocus = focusedIndex - 1; - } - break; - case 'next': - if (focusedIndex > -1 && focusedIndex < lastIndex) { - nextFocus = focusedIndex + 1; - } - break; - } - this.setState({ - inputIsHidden: nextFocus !== -1, - focusedValue: selectValue[nextFocus] - }); - } - }, { - key: "focusOption", - value: function focusOption() { - var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'first'; - var pageSize = this.props.pageSize; - var focusedOption = this.state.focusedOption; - var options = this.getFocusableOptions(); - if (!options.length) return; - var nextFocus = 0; // handles 'first' - var focusedIndex = options.indexOf(focusedOption); - if (!focusedOption) { - focusedIndex = -1; - } - if (direction === 'up') { - nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1; - } else if (direction === 'down') { - nextFocus = (focusedIndex + 1) % options.length; - } else if (direction === 'pageup') { - nextFocus = focusedIndex - pageSize; - if (nextFocus < 0) nextFocus = 0; - } else if (direction === 'pagedown') { - nextFocus = focusedIndex + pageSize; - if (nextFocus > options.length - 1) nextFocus = options.length - 1; - } else if (direction === 'last') { - nextFocus = options.length - 1; - } - this.scrollToFocusedOptionOnUpdate = true; - this.setState({ - focusedOption: options[nextFocus], - focusedValue: null - }); - } - }, { - key: "getTheme", - value: - // ============================== - // Getters - // ============================== - - function getTheme() { - // Use the default theme if there are no customisations. - if (!this.props.theme) { - return defaultTheme; - } - // If the theme prop is a function, assume the function - // knows how to merge the passed-in default theme with - // its own modifications. - if (typeof this.props.theme === 'function') { - return this.props.theme(defaultTheme); - } - // Otherwise, if a plain theme object was passed in, - // overlay it with the default theme. - return _objectSpread(_objectSpread({}, defaultTheme), this.props.theme); - } - }, { - key: "getCommonProps", - value: function getCommonProps() { - var clearValue = this.clearValue, - cx = this.cx, - getStyles = this.getStyles, - getClassNames = this.getClassNames, - getValue = this.getValue, - selectOption = this.selectOption, - setValue = this.setValue, - props = this.props; - var isMulti = props.isMulti, - isRtl = props.isRtl, - options = props.options; - var hasValue = this.hasValue(); - return { - clearValue: clearValue, - cx: cx, - getStyles: getStyles, - getClassNames: getClassNames, - getValue: getValue, - hasValue: hasValue, - isMulti: isMulti, - isRtl: isRtl, - options: options, - selectOption: selectOption, - selectProps: props, - setValue: setValue, - theme: this.getTheme() - }; - } - }, { - key: "hasValue", - value: function hasValue() { - var selectValue = this.state.selectValue; - return selectValue.length > 0; - } - }, { - key: "hasOptions", - value: function hasOptions() { - return !!this.getFocusableOptions().length; - } - }, { - key: "isClearable", - value: function isClearable() { - var _this$props7 = this.props, - isClearable = _this$props7.isClearable, - isMulti = _this$props7.isMulti; - - // single select, by default, IS NOT clearable - // multi select, by default, IS clearable - if (isClearable === undefined) return isMulti; - return isClearable; - } - }, { - key: "isOptionDisabled", - value: function isOptionDisabled(option, selectValue) { - return _isOptionDisabled(this.props, option, selectValue); - } - }, { - key: "isOptionSelected", - value: function isOptionSelected(option, selectValue) { - return _isOptionSelected(this.props, option, selectValue); - } - }, { - key: "filterOption", - value: function filterOption(option, inputValue) { - return _filterOption(this.props, option, inputValue); - } - }, { - key: "formatOptionLabel", - value: function formatOptionLabel(data, context) { - if (typeof this.props.formatOptionLabel === 'function') { - var _inputValue = this.props.inputValue; - var _selectValue = this.state.selectValue; - return this.props.formatOptionLabel(data, { - context: context, - inputValue: _inputValue, - selectValue: _selectValue - }); - } else { - return this.getOptionLabel(data); - } - } - }, { - key: "formatGroupLabel", - value: function formatGroupLabel(data) { - return this.props.formatGroupLabel(data); - } - - // ============================== - // Mouse Handlers - // ============================== - }, { - key: "startListeningComposition", - value: - // ============================== - // Composition Handlers - // ============================== - - function startListeningComposition() { - if (document && document.addEventListener) { - document.addEventListener('compositionstart', this.onCompositionStart, false); - document.addEventListener('compositionend', this.onCompositionEnd, false); - } - } - }, { - key: "stopListeningComposition", - value: function stopListeningComposition() { - if (document && document.removeEventListener) { - document.removeEventListener('compositionstart', this.onCompositionStart); - document.removeEventListener('compositionend', this.onCompositionEnd); - } - } - }, { - key: "startListeningToTouch", - value: - // ============================== - // Touch Handlers - // ============================== - - function startListeningToTouch() { - if (document && document.addEventListener) { - document.addEventListener('touchstart', this.onTouchStart, false); - document.addEventListener('touchmove', this.onTouchMove, false); - document.addEventListener('touchend', this.onTouchEnd, false); - } - } - }, { - key: "stopListeningToTouch", - value: function stopListeningToTouch() { - if (document && document.removeEventListener) { - document.removeEventListener('touchstart', this.onTouchStart); - document.removeEventListener('touchmove', this.onTouchMove); - document.removeEventListener('touchend', this.onTouchEnd); - } - } - }, { - key: "renderInput", - value: - // ============================== - // Renderers - // ============================== - function renderInput() { - var _this$props8 = this.props, - isDisabled = _this$props8.isDisabled, - isSearchable = _this$props8.isSearchable, - inputId = _this$props8.inputId, - inputValue = _this$props8.inputValue, - tabIndex = _this$props8.tabIndex, - form = _this$props8.form, - menuIsOpen = _this$props8.menuIsOpen, - required = _this$props8.required; - var _this$getComponents = this.getComponents(), - Input = _this$getComponents.Input; - var _this$state4 = this.state, - inputIsHidden = _this$state4.inputIsHidden, - ariaSelection = _this$state4.ariaSelection; - var commonProps = this.commonProps; - var id = inputId || this.getElementId('input'); - - // aria attributes makes the JSX "noisy", separated for clarity - var ariaAttributes = _objectSpread(_objectSpread(_objectSpread({ - 'aria-autocomplete': 'list', - 'aria-expanded': menuIsOpen, - 'aria-haspopup': true, - 'aria-errormessage': this.props['aria-errormessage'], - 'aria-invalid': this.props['aria-invalid'], - 'aria-label': this.props['aria-label'], - 'aria-labelledby': this.props['aria-labelledby'], - 'aria-required': required, - role: 'combobox' - }, menuIsOpen && { - 'aria-controls': this.getElementId('listbox'), - 'aria-owns': this.getElementId('listbox') - }), !isSearchable && { - 'aria-readonly': true - }), this.hasValue() ? (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus' && { - 'aria-describedby': this.getElementId('live-region') - } : { - 'aria-describedby': this.getElementId('placeholder') - }); - if (!isSearchable) { - // use a dummy input to maintain focus/blur functionality - return /*#__PURE__*/React.createElement(DummyInput, _extends({ - id: id, - innerRef: this.getInputRef, - onBlur: this.onInputBlur, - onChange: noop, - onFocus: this.onInputFocus, - disabled: isDisabled, - tabIndex: tabIndex, - inputMode: "none", - form: form, - value: "" - }, ariaAttributes)); - } - return /*#__PURE__*/React.createElement(Input, _extends({}, commonProps, { - autoCapitalize: "none", - autoComplete: "off", - autoCorrect: "off", - id: id, - innerRef: this.getInputRef, - isDisabled: isDisabled, - isHidden: inputIsHidden, - onBlur: this.onInputBlur, - onChange: this.handleInputChange, - onFocus: this.onInputFocus, - spellCheck: "false", - tabIndex: tabIndex, - form: form, - type: "text", - value: inputValue - }, ariaAttributes)); - } - }, { - key: "renderPlaceholderOrValue", - value: function renderPlaceholderOrValue() { - var _this3 = this; - var _this$getComponents2 = this.getComponents(), - MultiValue = _this$getComponents2.MultiValue, - MultiValueContainer = _this$getComponents2.MultiValueContainer, - MultiValueLabel = _this$getComponents2.MultiValueLabel, - MultiValueRemove = _this$getComponents2.MultiValueRemove, - SingleValue = _this$getComponents2.SingleValue, - Placeholder = _this$getComponents2.Placeholder; - var commonProps = this.commonProps; - var _this$props9 = this.props, - controlShouldRenderValue = _this$props9.controlShouldRenderValue, - isDisabled = _this$props9.isDisabled, - isMulti = _this$props9.isMulti, - inputValue = _this$props9.inputValue, - placeholder = _this$props9.placeholder; - var _this$state5 = this.state, - selectValue = _this$state5.selectValue, - focusedValue = _this$state5.focusedValue, - isFocused = _this$state5.isFocused; - if (!this.hasValue() || !controlShouldRenderValue) { - return inputValue ? null : /*#__PURE__*/React.createElement(Placeholder, _extends({}, commonProps, { - key: "placeholder", - isDisabled: isDisabled, - isFocused: isFocused, - innerProps: { - id: this.getElementId('placeholder') - } - }), placeholder); - } - if (isMulti) { - return selectValue.map(function (opt, index) { - var isOptionFocused = opt === focusedValue; - var key = "".concat(_this3.getOptionLabel(opt), "-").concat(_this3.getOptionValue(opt)); - return /*#__PURE__*/React.createElement(MultiValue, _extends({}, commonProps, { - components: { - Container: MultiValueContainer, - Label: MultiValueLabel, - Remove: MultiValueRemove - }, - isFocused: isOptionFocused, - isDisabled: isDisabled, - key: key, - index: index, - removeProps: { - onClick: function onClick() { - return _this3.removeValue(opt); - }, - onTouchEnd: function onTouchEnd() { - return _this3.removeValue(opt); - }, - onMouseDown: function onMouseDown(e) { - e.preventDefault(); - } - }, - data: opt - }), _this3.formatOptionLabel(opt, 'value')); - }); - } - if (inputValue) { - return null; - } - var singleValue = selectValue[0]; - return /*#__PURE__*/React.createElement(SingleValue, _extends({}, commonProps, { - data: singleValue, - isDisabled: isDisabled - }), this.formatOptionLabel(singleValue, 'value')); - } - }, { - key: "renderClearIndicator", - value: function renderClearIndicator() { - var _this$getComponents3 = this.getComponents(), - ClearIndicator = _this$getComponents3.ClearIndicator; - var commonProps = this.commonProps; - var _this$props10 = this.props, - isDisabled = _this$props10.isDisabled, - isLoading = _this$props10.isLoading; - var isFocused = this.state.isFocused; - if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) { - return null; - } - var innerProps = { - onMouseDown: this.onClearIndicatorMouseDown, - onTouchEnd: this.onClearIndicatorTouchEnd, - 'aria-hidden': 'true' - }; - return /*#__PURE__*/React.createElement(ClearIndicator, _extends({}, commonProps, { - innerProps: innerProps, - isFocused: isFocused - })); - } - }, { - key: "renderLoadingIndicator", - value: function renderLoadingIndicator() { - var _this$getComponents4 = this.getComponents(), - LoadingIndicator = _this$getComponents4.LoadingIndicator; - var commonProps = this.commonProps; - var _this$props11 = this.props, - isDisabled = _this$props11.isDisabled, - isLoading = _this$props11.isLoading; - var isFocused = this.state.isFocused; - if (!LoadingIndicator || !isLoading) return null; - var innerProps = { - 'aria-hidden': 'true' - }; - return /*#__PURE__*/React.createElement(LoadingIndicator, _extends({}, commonProps, { - innerProps: innerProps, - isDisabled: isDisabled, - isFocused: isFocused - })); - } - }, { - key: "renderIndicatorSeparator", - value: function renderIndicatorSeparator() { - var _this$getComponents5 = this.getComponents(), - DropdownIndicator = _this$getComponents5.DropdownIndicator, - IndicatorSeparator = _this$getComponents5.IndicatorSeparator; - - // separator doesn't make sense without the dropdown indicator - if (!DropdownIndicator || !IndicatorSeparator) return null; - var commonProps = this.commonProps; - var isDisabled = this.props.isDisabled; - var isFocused = this.state.isFocused; - return /*#__PURE__*/React.createElement(IndicatorSeparator, _extends({}, commonProps, { - isDisabled: isDisabled, - isFocused: isFocused - })); - } - }, { - key: "renderDropdownIndicator", - value: function renderDropdownIndicator() { - var _this$getComponents6 = this.getComponents(), - DropdownIndicator = _this$getComponents6.DropdownIndicator; - if (!DropdownIndicator) return null; - var commonProps = this.commonProps; - var isDisabled = this.props.isDisabled; - var isFocused = this.state.isFocused; - var innerProps = { - onMouseDown: this.onDropdownIndicatorMouseDown, - onTouchEnd: this.onDropdownIndicatorTouchEnd, - 'aria-hidden': 'true' - }; - return /*#__PURE__*/React.createElement(DropdownIndicator, _extends({}, commonProps, { - innerProps: innerProps, - isDisabled: isDisabled, - isFocused: isFocused - })); - } - }, { - key: "renderMenu", - value: function renderMenu() { - var _this4 = this; - var _this$getComponents7 = this.getComponents(), - Group = _this$getComponents7.Group, - GroupHeading = _this$getComponents7.GroupHeading, - Menu = _this$getComponents7.Menu, - MenuList = _this$getComponents7.MenuList, - MenuPortal = _this$getComponents7.MenuPortal, - LoadingMessage = _this$getComponents7.LoadingMessage, - NoOptionsMessage = _this$getComponents7.NoOptionsMessage, - Option = _this$getComponents7.Option; - var commonProps = this.commonProps; - var focusedOption = this.state.focusedOption; - var _this$props12 = this.props, - captureMenuScroll = _this$props12.captureMenuScroll, - inputValue = _this$props12.inputValue, - isLoading = _this$props12.isLoading, - loadingMessage = _this$props12.loadingMessage, - minMenuHeight = _this$props12.minMenuHeight, - maxMenuHeight = _this$props12.maxMenuHeight, - menuIsOpen = _this$props12.menuIsOpen, - menuPlacement = _this$props12.menuPlacement, - menuPosition = _this$props12.menuPosition, - menuPortalTarget = _this$props12.menuPortalTarget, - menuShouldBlockScroll = _this$props12.menuShouldBlockScroll, - menuShouldScrollIntoView = _this$props12.menuShouldScrollIntoView, - noOptionsMessage = _this$props12.noOptionsMessage, - onMenuScrollToTop = _this$props12.onMenuScrollToTop, - onMenuScrollToBottom = _this$props12.onMenuScrollToBottom; - if (!menuIsOpen) return null; - - // TODO: Internal Option Type here - var render = function render(props, id) { - var type = props.type, - data = props.data, - isDisabled = props.isDisabled, - isSelected = props.isSelected, - label = props.label, - value = props.value; - var isFocused = focusedOption === data; - var onHover = isDisabled ? undefined : function () { - return _this4.onOptionHover(data); - }; - var onSelect = isDisabled ? undefined : function () { - return _this4.selectOption(data); - }; - var optionId = "".concat(_this4.getElementId('option'), "-").concat(id); - var innerProps = { - id: optionId, - onClick: onSelect, - onMouseMove: onHover, - onMouseOver: onHover, - tabIndex: -1 - }; - return /*#__PURE__*/React.createElement(Option, _extends({}, commonProps, { - innerProps: innerProps, - data: data, - isDisabled: isDisabled, - isSelected: isSelected, - key: optionId, - label: label, - type: type, - value: value, - isFocused: isFocused, - innerRef: isFocused ? _this4.getFocusedOptionRef : undefined - }), _this4.formatOptionLabel(props.data, 'menu')); - }; - var menuUI; - if (this.hasOptions()) { - menuUI = this.getCategorizedOptions().map(function (item) { - if (item.type === 'group') { - var _data = item.data, - options = item.options, - groupIndex = item.index; - var groupId = "".concat(_this4.getElementId('group'), "-").concat(groupIndex); - var headingId = "".concat(groupId, "-heading"); - return /*#__PURE__*/React.createElement(Group, _extends({}, commonProps, { - key: groupId, - data: _data, - options: options, - Heading: GroupHeading, - headingProps: { - id: headingId, - data: item.data - }, - label: _this4.formatGroupLabel(item.data) - }), item.options.map(function (option) { - return render(option, "".concat(groupIndex, "-").concat(option.index)); - })); - } else if (item.type === 'option') { - return render(item, "".concat(item.index)); - } - }); - } else if (isLoading) { - var message = loadingMessage({ - inputValue: inputValue - }); - if (message === null) return null; - menuUI = /*#__PURE__*/React.createElement(LoadingMessage, commonProps, message); - } else { - var _message = noOptionsMessage({ - inputValue: inputValue - }); - if (_message === null) return null; - menuUI = /*#__PURE__*/React.createElement(NoOptionsMessage, commonProps, _message); - } - var menuPlacementProps = { - minMenuHeight: minMenuHeight, - maxMenuHeight: maxMenuHeight, - menuPlacement: menuPlacement, - menuPosition: menuPosition, - menuShouldScrollIntoView: menuShouldScrollIntoView - }; - var menuElement = /*#__PURE__*/React.createElement(MenuPlacer, _extends({}, commonProps, menuPlacementProps), function (_ref4) { - var ref = _ref4.ref, - _ref4$placerProps = _ref4.placerProps, - placement = _ref4$placerProps.placement, - maxHeight = _ref4$placerProps.maxHeight; - return /*#__PURE__*/React.createElement(Menu, _extends({}, commonProps, menuPlacementProps, { - innerRef: ref, - innerProps: { - onMouseDown: _this4.onMenuMouseDown, - onMouseMove: _this4.onMenuMouseMove, - id: _this4.getElementId('listbox') - }, - isLoading: isLoading, - placement: placement - }), /*#__PURE__*/React.createElement(ScrollManager, { - captureEnabled: captureMenuScroll, - onTopArrive: onMenuScrollToTop, - onBottomArrive: onMenuScrollToBottom, - lockEnabled: menuShouldBlockScroll - }, function (scrollTargetRef) { - return /*#__PURE__*/React.createElement(MenuList, _extends({}, commonProps, { - innerRef: function innerRef(instance) { - _this4.getMenuListRef(instance); - scrollTargetRef(instance); - }, - isLoading: isLoading, - maxHeight: maxHeight, - focusedOption: focusedOption - }), menuUI); - })); - }); - - // positioning behaviour is almost identical for portalled and fixed, - // so we use the same component. the actual portalling logic is forked - // within the component based on `menuPosition` - return menuPortalTarget || menuPosition === 'fixed' ? /*#__PURE__*/React.createElement(MenuPortal, _extends({}, commonProps, { - appendTo: menuPortalTarget, - controlElement: this.controlRef, - menuPlacement: menuPlacement, - menuPosition: menuPosition - }), menuElement) : menuElement; - } - }, { - key: "renderFormField", - value: function renderFormField() { - var _this5 = this; - var _this$props13 = this.props, - delimiter = _this$props13.delimiter, - isDisabled = _this$props13.isDisabled, - isMulti = _this$props13.isMulti, - name = _this$props13.name, - required = _this$props13.required; - var selectValue = this.state.selectValue; - if (!name || isDisabled) return; - if (required && !this.hasValue()) { - return /*#__PURE__*/React.createElement(RequiredInput, { - name: name, - onFocus: this.onValueInputFocus - }); - } - if (isMulti) { - if (delimiter) { - var value = selectValue.map(function (opt) { - return _this5.getOptionValue(opt); - }).join(delimiter); - return /*#__PURE__*/React.createElement("input", { - name: name, - type: "hidden", - value: value - }); - } else { - var input = selectValue.length > 0 ? selectValue.map(function (opt, i) { - return /*#__PURE__*/React.createElement("input", { - key: "i-".concat(i), - name: name, - type: "hidden", - value: _this5.getOptionValue(opt) - }); - }) : /*#__PURE__*/React.createElement("input", { - name: name, - type: "hidden", - value: "" - }); - return /*#__PURE__*/React.createElement("div", null, input); - } - } else { - var _value = selectValue[0] ? this.getOptionValue(selectValue[0]) : ''; - return /*#__PURE__*/React.createElement("input", { - name: name, - type: "hidden", - value: _value - }); - } - } - }, { - key: "renderLiveRegion", - value: function renderLiveRegion() { - var commonProps = this.commonProps; - var _this$state6 = this.state, - ariaSelection = _this$state6.ariaSelection, - focusedOption = _this$state6.focusedOption, - focusedValue = _this$state6.focusedValue, - isFocused = _this$state6.isFocused, - selectValue = _this$state6.selectValue; - var focusableOptions = this.getFocusableOptions(); - return /*#__PURE__*/React.createElement(LiveRegion, _extends({}, commonProps, { - id: this.getElementId('live-region'), - ariaSelection: ariaSelection, - focusedOption: focusedOption, - focusedValue: focusedValue, - isFocused: isFocused, - selectValue: selectValue, - focusableOptions: focusableOptions - })); - } - }, { - key: "render", - value: function render() { - var _this$getComponents8 = this.getComponents(), - Control = _this$getComponents8.Control, - IndicatorsContainer = _this$getComponents8.IndicatorsContainer, - SelectContainer = _this$getComponents8.SelectContainer, - ValueContainer = _this$getComponents8.ValueContainer; - var _this$props14 = this.props, - className = _this$props14.className, - id = _this$props14.id, - isDisabled = _this$props14.isDisabled, - menuIsOpen = _this$props14.menuIsOpen; - var isFocused = this.state.isFocused; - var commonProps = this.commonProps = this.getCommonProps(); - return /*#__PURE__*/React.createElement(SelectContainer, _extends({}, commonProps, { - className: className, - innerProps: { - id: id, - onKeyDown: this.onKeyDown - }, - isDisabled: isDisabled, - isFocused: isFocused - }), this.renderLiveRegion(), /*#__PURE__*/React.createElement(Control, _extends({}, commonProps, { - innerRef: this.getControlRef, - innerProps: { - onMouseDown: this.onControlMouseDown, - onTouchEnd: this.onControlTouchEnd - }, - isDisabled: isDisabled, - isFocused: isFocused, - menuIsOpen: menuIsOpen - }), /*#__PURE__*/React.createElement(ValueContainer, _extends({}, commonProps, { - isDisabled: isDisabled - }), this.renderPlaceholderOrValue(), this.renderInput()), /*#__PURE__*/React.createElement(IndicatorsContainer, _extends({}, commonProps, { - isDisabled: isDisabled - }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField()); - } - }], [{ - key: "getDerivedStateFromProps", - value: function getDerivedStateFromProps(props, state) { - var prevProps = state.prevProps, - clearFocusValueOnUpdate = state.clearFocusValueOnUpdate, - inputIsHiddenAfterUpdate = state.inputIsHiddenAfterUpdate, - ariaSelection = state.ariaSelection, - isFocused = state.isFocused, - prevWasFocused = state.prevWasFocused; - var options = props.options, - value = props.value, - menuIsOpen = props.menuIsOpen, - inputValue = props.inputValue, - isMulti = props.isMulti; - var selectValue = cleanValue(value); - var newMenuOptionsState = {}; - if (prevProps && (value !== prevProps.value || options !== prevProps.options || menuIsOpen !== prevProps.menuIsOpen || inputValue !== prevProps.inputValue)) { - var focusableOptions = menuIsOpen ? buildFocusableOptions(props, selectValue) : []; - var focusedValue = clearFocusValueOnUpdate ? getNextFocusedValue(state, selectValue) : null; - var focusedOption = getNextFocusedOption(state, focusableOptions); - newMenuOptionsState = { - selectValue: selectValue, - focusedOption: focusedOption, - focusedValue: focusedValue, - clearFocusValueOnUpdate: false - }; - } - // some updates should toggle the state of the input visibility - var newInputIsHiddenState = inputIsHiddenAfterUpdate != null && props !== prevProps ? { - inputIsHidden: inputIsHiddenAfterUpdate, - inputIsHiddenAfterUpdate: undefined - } : {}; - var newAriaSelection = ariaSelection; - var hasKeptFocus = isFocused && prevWasFocused; - if (isFocused && !hasKeptFocus) { - // If `value` or `defaultValue` props are not empty then announce them - // when the Select is initially focused - newAriaSelection = { - value: valueTernary(isMulti, selectValue, selectValue[0] || null), - options: selectValue, - action: 'initial-input-focus' - }; - hasKeptFocus = !prevWasFocused; - } - - // If the 'initial-input-focus' action has been set already - // then reset the ariaSelection to null - if ((ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus') { - newAriaSelection = null; - } - return _objectSpread(_objectSpread(_objectSpread({}, newMenuOptionsState), newInputIsHiddenState), {}, { - prevProps: props, - ariaSelection: newAriaSelection, - prevWasFocused: hasKeptFocus - }); - } - }]); - return Select; -}(Component); -Select.defaultProps = defaultProps; - -export { Select as S, defaultProps as a, getOptionLabel$1 as b, createFilter as c, defaultTheme as d, getOptionValue$1 as g, mergeStyles as m }; diff --git a/frontend/node_modules/react-select/dist/Select-73d77d2c.cjs.dev.js b/frontend/node_modules/react-select/dist/Select-73d77d2c.cjs.dev.js deleted file mode 100644 index e2625255c..000000000 --- a/frontend/node_modules/react-select/dist/Select-73d77d2c.cjs.dev.js +++ /dev/null @@ -1,2603 +0,0 @@ -'use strict'; - -var _extends = require('@babel/runtime/helpers/extends'); -var _objectSpread = require('@babel/runtime/helpers/objectSpread2'); -var _classCallCheck = require('@babel/runtime/helpers/classCallCheck'); -var _createClass = require('@babel/runtime/helpers/createClass'); -var _inherits = require('@babel/runtime/helpers/inherits'); -var _createSuper = require('@babel/runtime/helpers/createSuper'); -var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray'); -var React = require('react'); -var index = require('./index-5b950e59.cjs.dev.js'); -var react = require('@emotion/react'); -var memoizeOne = require('memoize-one'); -var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties'); - -function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; } - -function _interopNamespace(e) { - if (e && e.__esModule) return e; - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { - return e[k]; - } - }); - } - }); - } - n['default'] = e; - return Object.freeze(n); -} - -var React__namespace = /*#__PURE__*/_interopNamespace(React); -var memoizeOne__default = /*#__PURE__*/_interopDefault(memoizeOne); - -function _EMOTION_STRINGIFIED_CSS_ERROR__$2() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } - -// Assistive text to describe visual elements. Hidden for sighted users. -var _ref = process.env.NODE_ENV === "production" ? { - name: "7pg0cj-a11yText", - styles: "label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap" -} : { - name: "1f43avz-a11yText-A11yText", - styles: "label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;label:A11yText;", - map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkExMXlUZXh0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNSSIsImZpbGUiOiJBMTF5VGV4dC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGpzeCBqc3ggKi9cbmltcG9ydCB7IGpzeCB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuLy8gQXNzaXN0aXZlIHRleHQgdG8gZGVzY3JpYmUgdmlzdWFsIGVsZW1lbnRzLiBIaWRkZW4gZm9yIHNpZ2h0ZWQgdXNlcnMuXG5jb25zdCBBMTF5VGV4dCA9IChwcm9wczogSlNYLkludHJpbnNpY0VsZW1lbnRzWydzcGFuJ10pID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGxhYmVsOiAnYTExeVRleHQnLFxuICAgICAgekluZGV4OiA5OTk5LFxuICAgICAgYm9yZGVyOiAwLFxuICAgICAgY2xpcDogJ3JlY3QoMXB4LCAxcHgsIDFweCwgMXB4KScsXG4gICAgICBoZWlnaHQ6IDEsXG4gICAgICB3aWR0aDogMSxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgcGFkZGluZzogMCxcbiAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIH19XG4gICAgey4uLnByb3BzfVxuICAvPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgQTExeVRleHQ7XG4iXX0= */", - toString: _EMOTION_STRINGIFIED_CSS_ERROR__$2 -}; -var A11yText = function A11yText(props) { - return react.jsx("span", _extends({ - css: _ref - }, props)); -}; - -var defaultAriaLiveMessages = { - guidance: function guidance(props) { - var isSearchable = props.isSearchable, - isMulti = props.isMulti, - isDisabled = props.isDisabled, - tabSelectsValue = props.tabSelectsValue, - context = props.context; - switch (context) { - case 'menu': - return "Use Up and Down to choose options".concat(isDisabled ? '' : ', press Enter to select the currently focused option', ", press Escape to exit the menu").concat(tabSelectsValue ? ', press Tab to select the option and exit the menu' : '', "."); - case 'input': - return "".concat(props['aria-label'] || 'Select', " is focused ").concat(isSearchable ? ',type to refine list' : '', ", press Down to open the menu, ").concat(isMulti ? ' press left to focus selected values' : ''); - case 'value': - return 'Use left and right to toggle between focused values, press Backspace to remove the currently focused value'; - default: - return ''; - } - }, - onChange: function onChange(props) { - var action = props.action, - _props$label = props.label, - label = _props$label === void 0 ? '' : _props$label, - labels = props.labels, - isDisabled = props.isDisabled; - switch (action) { - case 'deselect-option': - case 'pop-value': - case 'remove-value': - return "option ".concat(label, ", deselected."); - case 'clear': - return 'All selected options have been cleared.'; - case 'initial-input-focus': - return "option".concat(labels.length > 1 ? 's' : '', " ").concat(labels.join(','), ", selected."); - case 'select-option': - return isDisabled ? "option ".concat(label, " is disabled. Select another option.") : "option ".concat(label, ", selected."); - default: - return ''; - } - }, - onFocus: function onFocus(props) { - var context = props.context, - focused = props.focused, - options = props.options, - _props$label2 = props.label, - label = _props$label2 === void 0 ? '' : _props$label2, - selectValue = props.selectValue, - isDisabled = props.isDisabled, - isSelected = props.isSelected; - var getArrayIndex = function getArrayIndex(arr, item) { - return arr && arr.length ? "".concat(arr.indexOf(item) + 1, " of ").concat(arr.length) : ''; - }; - if (context === 'value' && selectValue) { - return "value ".concat(label, " focused, ").concat(getArrayIndex(selectValue, focused), "."); - } - if (context === 'menu') { - var disabled = isDisabled ? ' disabled' : ''; - var status = "".concat(isSelected ? 'selected' : 'focused').concat(disabled); - return "option ".concat(label, " ").concat(status, ", ").concat(getArrayIndex(options, focused), "."); - } - return ''; - }, - onFilter: function onFilter(props) { - var inputValue = props.inputValue, - resultsMessage = props.resultsMessage; - return "".concat(resultsMessage).concat(inputValue ? ' for search term ' + inputValue : '', "."); - } -}; - -var LiveRegion = function LiveRegion(props) { - var ariaSelection = props.ariaSelection, - focusedOption = props.focusedOption, - focusedValue = props.focusedValue, - focusableOptions = props.focusableOptions, - isFocused = props.isFocused, - selectValue = props.selectValue, - selectProps = props.selectProps, - id = props.id; - var ariaLiveMessages = selectProps.ariaLiveMessages, - getOptionLabel = selectProps.getOptionLabel, - inputValue = selectProps.inputValue, - isMulti = selectProps.isMulti, - isOptionDisabled = selectProps.isOptionDisabled, - isSearchable = selectProps.isSearchable, - menuIsOpen = selectProps.menuIsOpen, - options = selectProps.options, - screenReaderStatus = selectProps.screenReaderStatus, - tabSelectsValue = selectProps.tabSelectsValue; - var ariaLabel = selectProps['aria-label']; - var ariaLive = selectProps['aria-live']; - - // Update aria live message configuration when prop changes - var messages = React.useMemo(function () { - return _objectSpread(_objectSpread({}, defaultAriaLiveMessages), ariaLiveMessages || {}); - }, [ariaLiveMessages]); - - // Update aria live selected option when prop changes - var ariaSelected = React.useMemo(function () { - var message = ''; - if (ariaSelection && messages.onChange) { - var option = ariaSelection.option, - selectedOptions = ariaSelection.options, - removedValue = ariaSelection.removedValue, - removedValues = ariaSelection.removedValues, - value = ariaSelection.value; - // select-option when !isMulti does not return option so we assume selected option is value - var asOption = function asOption(val) { - return !Array.isArray(val) ? val : null; - }; - - // If there is just one item from the action then get its label - var selected = removedValue || option || asOption(value); - var label = selected ? getOptionLabel(selected) : ''; - - // If there are multiple items from the action then return an array of labels - var multiSelected = selectedOptions || removedValues || undefined; - var labels = multiSelected ? multiSelected.map(getOptionLabel) : []; - var onChangeProps = _objectSpread({ - // multiSelected items are usually items that have already been selected - // or set by the user as a default value so we assume they are not disabled - isDisabled: selected && isOptionDisabled(selected, selectValue), - label: label, - labels: labels - }, ariaSelection); - message = messages.onChange(onChangeProps); - } - return message; - }, [ariaSelection, messages, isOptionDisabled, selectValue, getOptionLabel]); - var ariaFocused = React.useMemo(function () { - var focusMsg = ''; - var focused = focusedOption || focusedValue; - var isSelected = !!(focusedOption && selectValue && selectValue.includes(focusedOption)); - if (focused && messages.onFocus) { - var onFocusProps = { - focused: focused, - label: getOptionLabel(focused), - isDisabled: isOptionDisabled(focused, selectValue), - isSelected: isSelected, - options: focusableOptions, - context: focused === focusedOption ? 'menu' : 'value', - selectValue: selectValue - }; - focusMsg = messages.onFocus(onFocusProps); - } - return focusMsg; - }, [focusedOption, focusedValue, getOptionLabel, isOptionDisabled, messages, focusableOptions, selectValue]); - var ariaResults = React.useMemo(function () { - var resultsMsg = ''; - if (menuIsOpen && options.length && messages.onFilter) { - var resultsMessage = screenReaderStatus({ - count: focusableOptions.length - }); - resultsMsg = messages.onFilter({ - inputValue: inputValue, - resultsMessage: resultsMessage - }); - } - return resultsMsg; - }, [focusableOptions, inputValue, menuIsOpen, messages, options, screenReaderStatus]); - var ariaGuidance = React.useMemo(function () { - var guidanceMsg = ''; - if (messages.guidance) { - var context = focusedValue ? 'value' : menuIsOpen ? 'menu' : 'input'; - guidanceMsg = messages.guidance({ - 'aria-label': ariaLabel, - context: context, - isDisabled: focusedOption && isOptionDisabled(focusedOption, selectValue), - isMulti: isMulti, - isSearchable: isSearchable, - tabSelectsValue: tabSelectsValue - }); - } - return guidanceMsg; - }, [ariaLabel, focusedOption, focusedValue, isMulti, isOptionDisabled, isSearchable, menuIsOpen, messages, selectValue, tabSelectsValue]); - var ariaContext = "".concat(ariaFocused, " ").concat(ariaResults, " ").concat(ariaGuidance); - var ScreenReaderText = react.jsx(React.Fragment, null, react.jsx("span", { - id: "aria-selection" - }, ariaSelected), react.jsx("span", { - id: "aria-context" - }, ariaContext)); - var isInitialFocus = (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus'; - return react.jsx(React.Fragment, null, react.jsx(A11yText, { - id: id - }, isInitialFocus && ScreenReaderText), react.jsx(A11yText, { - "aria-live": ariaLive, - "aria-atomic": "false", - "aria-relevant": "additions text" - }, isFocused && !isInitialFocus && ScreenReaderText)); -}; - -var diacritics = [{ - base: 'A', - letters: "A\u24B6\uFF21\xC0\xC1\xC2\u1EA6\u1EA4\u1EAA\u1EA8\xC3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\xC4\u01DE\u1EA2\xC5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F" -}, { - base: 'AA', - letters: "\uA732" -}, { - base: 'AE', - letters: "\xC6\u01FC\u01E2" -}, { - base: 'AO', - letters: "\uA734" -}, { - base: 'AU', - letters: "\uA736" -}, { - base: 'AV', - letters: "\uA738\uA73A" -}, { - base: 'AY', - letters: "\uA73C" -}, { - base: 'B', - letters: "B\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181" -}, { - base: 'C', - letters: "C\u24B8\uFF23\u0106\u0108\u010A\u010C\xC7\u1E08\u0187\u023B\uA73E" -}, { - base: 'D', - letters: "D\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779" -}, { - base: 'DZ', - letters: "\u01F1\u01C4" -}, { - base: 'Dz', - letters: "\u01F2\u01C5" -}, { - base: 'E', - letters: "E\u24BA\uFF25\xC8\xC9\xCA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\xCB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E" -}, { - base: 'F', - letters: "F\u24BB\uFF26\u1E1E\u0191\uA77B" -}, { - base: 'G', - letters: "G\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E" -}, { - base: 'H', - letters: "H\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D" -}, { - base: 'I', - letters: "I\u24BE\uFF29\xCC\xCD\xCE\u0128\u012A\u012C\u0130\xCF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197" -}, { - base: 'J', - letters: "J\u24BF\uFF2A\u0134\u0248" -}, { - base: 'K', - letters: "K\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2" -}, { - base: 'L', - letters: "L\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780" -}, { - base: 'LJ', - letters: "\u01C7" -}, { - base: 'Lj', - letters: "\u01C8" -}, { - base: 'M', - letters: "M\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C" -}, { - base: 'N', - letters: "N\u24C3\uFF2E\u01F8\u0143\xD1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4" -}, { - base: 'NJ', - letters: "\u01CA" -}, { - base: 'Nj', - letters: "\u01CB" -}, { - base: 'O', - letters: "O\u24C4\uFF2F\xD2\xD3\xD4\u1ED2\u1ED0\u1ED6\u1ED4\xD5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\xD6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\xD8\u01FE\u0186\u019F\uA74A\uA74C" -}, { - base: 'OI', - letters: "\u01A2" -}, { - base: 'OO', - letters: "\uA74E" -}, { - base: 'OU', - letters: "\u0222" -}, { - base: 'P', - letters: "P\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754" -}, { - base: 'Q', - letters: "Q\u24C6\uFF31\uA756\uA758\u024A" -}, { - base: 'R', - letters: "R\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782" -}, { - base: 'S', - letters: "S\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784" -}, { - base: 'T', - letters: "T\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786" -}, { - base: 'TZ', - letters: "\uA728" -}, { - base: 'U', - letters: "U\u24CA\uFF35\xD9\xDA\xDB\u0168\u1E78\u016A\u1E7A\u016C\xDC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244" -}, { - base: 'V', - letters: "V\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245" -}, { - base: 'VY', - letters: "\uA760" -}, { - base: 'W', - letters: "W\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72" -}, { - base: 'X', - letters: "X\u24CD\uFF38\u1E8A\u1E8C" -}, { - base: 'Y', - letters: "Y\u24CE\uFF39\u1EF2\xDD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE" -}, { - base: 'Z', - letters: "Z\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762" -}, { - base: 'a', - letters: "a\u24D0\uFF41\u1E9A\xE0\xE1\xE2\u1EA7\u1EA5\u1EAB\u1EA9\xE3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\xE4\u01DF\u1EA3\xE5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250" -}, { - base: 'aa', - letters: "\uA733" -}, { - base: 'ae', - letters: "\xE6\u01FD\u01E3" -}, { - base: 'ao', - letters: "\uA735" -}, { - base: 'au', - letters: "\uA737" -}, { - base: 'av', - letters: "\uA739\uA73B" -}, { - base: 'ay', - letters: "\uA73D" -}, { - base: 'b', - letters: "b\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253" -}, { - base: 'c', - letters: "c\u24D2\uFF43\u0107\u0109\u010B\u010D\xE7\u1E09\u0188\u023C\uA73F\u2184" -}, { - base: 'd', - letters: "d\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A" -}, { - base: 'dz', - letters: "\u01F3\u01C6" -}, { - base: 'e', - letters: "e\u24D4\uFF45\xE8\xE9\xEA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\xEB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD" -}, { - base: 'f', - letters: "f\u24D5\uFF46\u1E1F\u0192\uA77C" -}, { - base: 'g', - letters: "g\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F" -}, { - base: 'h', - letters: "h\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265" -}, { - base: 'hv', - letters: "\u0195" -}, { - base: 'i', - letters: "i\u24D8\uFF49\xEC\xED\xEE\u0129\u012B\u012D\xEF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131" -}, { - base: 'j', - letters: "j\u24D9\uFF4A\u0135\u01F0\u0249" -}, { - base: 'k', - letters: "k\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3" -}, { - base: 'l', - letters: "l\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747" -}, { - base: 'lj', - letters: "\u01C9" -}, { - base: 'm', - letters: "m\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F" -}, { - base: 'n', - letters: "n\u24DD\uFF4E\u01F9\u0144\xF1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5" -}, { - base: 'nj', - letters: "\u01CC" -}, { - base: 'o', - letters: "o\u24DE\uFF4F\xF2\xF3\xF4\u1ED3\u1ED1\u1ED7\u1ED5\xF5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\xF6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\xF8\u01FF\u0254\uA74B\uA74D\u0275" -}, { - base: 'oi', - letters: "\u01A3" -}, { - base: 'ou', - letters: "\u0223" -}, { - base: 'oo', - letters: "\uA74F" -}, { - base: 'p', - letters: "p\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755" -}, { - base: 'q', - letters: "q\u24E0\uFF51\u024B\uA757\uA759" -}, { - base: 'r', - letters: "r\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783" -}, { - base: 's', - letters: "s\u24E2\uFF53\xDF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B" -}, { - base: 't', - letters: "t\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787" -}, { - base: 'tz', - letters: "\uA729" -}, { - base: 'u', - letters: "u\u24E4\uFF55\xF9\xFA\xFB\u0169\u1E79\u016B\u1E7B\u016D\xFC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289" -}, { - base: 'v', - letters: "v\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C" -}, { - base: 'vy', - letters: "\uA761" -}, { - base: 'w', - letters: "w\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73" -}, { - base: 'x', - letters: "x\u24E7\uFF58\u1E8B\u1E8D" -}, { - base: 'y', - letters: "y\u24E8\uFF59\u1EF3\xFD\u0177\u1EF9\u0233\u1E8F\xFF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF" -}, { - base: 'z', - letters: "z\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763" -}]; -var anyDiacritic = new RegExp('[' + diacritics.map(function (d) { - return d.letters; -}).join('') + ']', 'g'); -var diacriticToBase = {}; -for (var i = 0; i < diacritics.length; i++) { - var diacritic = diacritics[i]; - for (var j = 0; j < diacritic.letters.length; j++) { - diacriticToBase[diacritic.letters[j]] = diacritic.base; - } -} -var stripDiacritics = function stripDiacritics(str) { - return str.replace(anyDiacritic, function (match) { - return diacriticToBase[match]; - }); -}; - -var memoizedStripDiacriticsForInput = memoizeOne__default['default'](stripDiacritics); -var trimString = function trimString(str) { - return str.replace(/^\s+|\s+$/g, ''); -}; -var defaultStringify = function defaultStringify(option) { - return "".concat(option.label, " ").concat(option.value); -}; -var createFilter = function createFilter(config) { - return function (option, rawInput) { - // eslint-disable-next-line no-underscore-dangle - if (option.data.__isNew__) return true; - var _ignoreCase$ignoreAcc = _objectSpread({ - ignoreCase: true, - ignoreAccents: true, - stringify: defaultStringify, - trim: true, - matchFrom: 'any' - }, config), - ignoreCase = _ignoreCase$ignoreAcc.ignoreCase, - ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents, - stringify = _ignoreCase$ignoreAcc.stringify, - trim = _ignoreCase$ignoreAcc.trim, - matchFrom = _ignoreCase$ignoreAcc.matchFrom; - var input = trim ? trimString(rawInput) : rawInput; - var candidate = trim ? trimString(stringify(option)) : stringify(option); - if (ignoreCase) { - input = input.toLowerCase(); - candidate = candidate.toLowerCase(); - } - if (ignoreAccents) { - input = memoizedStripDiacriticsForInput(input); - candidate = stripDiacritics(candidate); - } - return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1; - }; -}; - -var _excluded = ["innerRef"]; -function DummyInput(_ref) { - var innerRef = _ref.innerRef, - props = _objectWithoutProperties(_ref, _excluded); - // Remove animation props not meant for HTML elements - var filteredProps = index.removeProps(props, 'onExited', 'in', 'enter', 'exit', 'appear'); - return react.jsx("input", _extends({ - ref: innerRef - }, filteredProps, { - css: /*#__PURE__*/react.css({ - label: 'dummyInput', - // get rid of any default styles - background: 0, - border: 0, - // important! this hides the flashing cursor - caretColor: 'transparent', - fontSize: 'inherit', - gridArea: '1 / 1 / 2 / 3', - outline: 0, - padding: 0, - // important! without `width` browsers won't allow focus - width: 1, - // remove cursor on desktop - color: 'transparent', - // remove cursor on mobile whilst maintaining "scroll into view" behaviour - left: -100, - opacity: 0, - position: 'relative', - transform: 'scale(.01)' - }, process.env.NODE_ENV === "production" ? "" : ";label:DummyInput;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR1bW15SW5wdXQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlCTSIsImZpbGUiOiJEdW1teUlucHV0LnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgcmVtb3ZlUHJvcHMgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIER1bW15SW5wdXQoe1xuICBpbm5lclJlZixcbiAgLi4ucHJvcHNcbn06IEpTWC5JbnRyaW5zaWNFbGVtZW50c1snaW5wdXQnXSAmIHtcbiAgcmVhZG9ubHkgaW5uZXJSZWY6IFJlZjxIVE1MSW5wdXRFbGVtZW50Pjtcbn0pIHtcbiAgLy8gUmVtb3ZlIGFuaW1hdGlvbiBwcm9wcyBub3QgbWVhbnQgZm9yIEhUTUwgZWxlbWVudHNcbiAgY29uc3QgZmlsdGVyZWRQcm9wcyA9IHJlbW92ZVByb3BzKFxuICAgIHByb3BzLFxuICAgICdvbkV4aXRlZCcsXG4gICAgJ2luJyxcbiAgICAnZW50ZXInLFxuICAgICdleGl0JyxcbiAgICAnYXBwZWFyJ1xuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGlucHV0XG4gICAgICByZWY9e2lubmVyUmVmfVxuICAgICAgey4uLmZpbHRlcmVkUHJvcHN9XG4gICAgICBjc3M9e3tcbiAgICAgICAgbGFiZWw6ICdkdW1teUlucHV0JyxcbiAgICAgICAgLy8gZ2V0IHJpZCBvZiBhbnkgZGVmYXVsdCBzdHlsZXNcbiAgICAgICAgYmFja2dyb3VuZDogMCxcbiAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICAvLyBpbXBvcnRhbnQhIHRoaXMgaGlkZXMgdGhlIGZsYXNoaW5nIGN1cnNvclxuICAgICAgICBjYXJldENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICBmb250U2l6ZTogJ2luaGVyaXQnLFxuICAgICAgICBncmlkQXJlYTogJzEgLyAxIC8gMiAvIDMnLFxuICAgICAgICBvdXRsaW5lOiAwLFxuICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAvLyBpbXBvcnRhbnQhIHdpdGhvdXQgYHdpZHRoYCBicm93c2VycyB3b24ndCBhbGxvdyBmb2N1c1xuICAgICAgICB3aWR0aDogMSxcblxuICAgICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIGRlc2t0b3BcbiAgICAgICAgY29sb3I6ICd0cmFuc3BhcmVudCcsXG5cbiAgICAgICAgLy8gcmVtb3ZlIGN1cnNvciBvbiBtb2JpbGUgd2hpbHN0IG1haW50YWluaW5nIFwic2Nyb2xsIGludG8gdmlld1wiIGJlaGF2aW91clxuICAgICAgICBsZWZ0OiAtMTAwLFxuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgdHJhbnNmb3JtOiAnc2NhbGUoLjAxKScsXG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59XG4iXX0= */") - })); -} - -var cancelScroll = function cancelScroll(event) { - event.preventDefault(); - event.stopPropagation(); -}; -function useScrollCapture(_ref) { - var isEnabled = _ref.isEnabled, - onBottomArrive = _ref.onBottomArrive, - onBottomLeave = _ref.onBottomLeave, - onTopArrive = _ref.onTopArrive, - onTopLeave = _ref.onTopLeave; - var isBottom = React.useRef(false); - var isTop = React.useRef(false); - var touchStart = React.useRef(0); - var scrollTarget = React.useRef(null); - var handleEventDelta = React.useCallback(function (event, delta) { - if (scrollTarget.current === null) return; - var _scrollTarget$current = scrollTarget.current, - scrollTop = _scrollTarget$current.scrollTop, - scrollHeight = _scrollTarget$current.scrollHeight, - clientHeight = _scrollTarget$current.clientHeight; - var target = scrollTarget.current; - var isDeltaPositive = delta > 0; - var availableScroll = scrollHeight - clientHeight - scrollTop; - var shouldCancelScroll = false; - - // reset bottom/top flags - if (availableScroll > delta && isBottom.current) { - if (onBottomLeave) onBottomLeave(event); - isBottom.current = false; - } - if (isDeltaPositive && isTop.current) { - if (onTopLeave) onTopLeave(event); - isTop.current = false; - } - - // bottom limit - if (isDeltaPositive && delta > availableScroll) { - if (onBottomArrive && !isBottom.current) { - onBottomArrive(event); - } - target.scrollTop = scrollHeight; - shouldCancelScroll = true; - isBottom.current = true; - - // top limit - } else if (!isDeltaPositive && -delta > scrollTop) { - if (onTopArrive && !isTop.current) { - onTopArrive(event); - } - target.scrollTop = 0; - shouldCancelScroll = true; - isTop.current = true; - } - - // cancel scroll - if (shouldCancelScroll) { - cancelScroll(event); - } - }, [onBottomArrive, onBottomLeave, onTopArrive, onTopLeave]); - var onWheel = React.useCallback(function (event) { - handleEventDelta(event, event.deltaY); - }, [handleEventDelta]); - var onTouchStart = React.useCallback(function (event) { - // set touch start so we can calculate touchmove delta - touchStart.current = event.changedTouches[0].clientY; - }, []); - var onTouchMove = React.useCallback(function (event) { - var deltaY = touchStart.current - event.changedTouches[0].clientY; - handleEventDelta(event, deltaY); - }, [handleEventDelta]); - var startListening = React.useCallback(function (el) { - // bail early if no element is available to attach to - if (!el) return; - var notPassive = index.supportsPassiveEvents ? { - passive: false - } : false; - el.addEventListener('wheel', onWheel, notPassive); - el.addEventListener('touchstart', onTouchStart, notPassive); - el.addEventListener('touchmove', onTouchMove, notPassive); - }, [onTouchMove, onTouchStart, onWheel]); - var stopListening = React.useCallback(function (el) { - // bail early if no element is available to detach from - if (!el) return; - el.removeEventListener('wheel', onWheel, false); - el.removeEventListener('touchstart', onTouchStart, false); - el.removeEventListener('touchmove', onTouchMove, false); - }, [onTouchMove, onTouchStart, onWheel]); - React.useEffect(function () { - if (!isEnabled) return; - var element = scrollTarget.current; - startListening(element); - return function () { - stopListening(element); - }; - }, [isEnabled, startListening, stopListening]); - return function (element) { - scrollTarget.current = element; - }; -} - -var STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position']; -var LOCK_STYLES = { - boxSizing: 'border-box', - // account for possible declaration `width: 100%;` on body - overflow: 'hidden', - position: 'relative', - height: '100%' -}; -function preventTouchMove(e) { - e.preventDefault(); -} -function allowTouchMove(e) { - e.stopPropagation(); -} -function preventInertiaScroll() { - var top = this.scrollTop; - var totalScroll = this.scrollHeight; - var currentScroll = top + this.offsetHeight; - if (top === 0) { - this.scrollTop = 1; - } else if (currentScroll === totalScroll) { - this.scrollTop = top - 1; - } -} - -// `ontouchstart` check works on most browsers -// `maxTouchPoints` works on IE10/11 and Surface -function isTouchDevice() { - return 'ontouchstart' in window || navigator.maxTouchPoints; -} -var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement); -var activeScrollLocks = 0; -var listenerOptions = { - capture: false, - passive: false -}; -function useScrollLock(_ref) { - var isEnabled = _ref.isEnabled, - _ref$accountForScroll = _ref.accountForScrollbars, - accountForScrollbars = _ref$accountForScroll === void 0 ? true : _ref$accountForScroll; - var originalStyles = React.useRef({}); - var scrollTarget = React.useRef(null); - var addScrollLock = React.useCallback(function (touchScrollTarget) { - if (!canUseDOM) return; - var target = document.body; - var targetStyle = target && target.style; - if (accountForScrollbars) { - // store any styles already applied to the body - STYLE_KEYS.forEach(function (key) { - var val = targetStyle && targetStyle[key]; - originalStyles.current[key] = val; - }); - } - - // apply the lock styles and padding if this is the first scroll lock - if (accountForScrollbars && activeScrollLocks < 1) { - var currentPadding = parseInt(originalStyles.current.paddingRight, 10) || 0; - var clientWidth = document.body ? document.body.clientWidth : 0; - var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0; - Object.keys(LOCK_STYLES).forEach(function (key) { - var val = LOCK_STYLES[key]; - if (targetStyle) { - targetStyle[key] = val; - } - }); - if (targetStyle) { - targetStyle.paddingRight = "".concat(adjustedPadding, "px"); - } - } - - // account for touch devices - if (target && isTouchDevice()) { - // Mobile Safari ignores { overflow: hidden } declaration on the body. - target.addEventListener('touchmove', preventTouchMove, listenerOptions); - - // Allow scroll on provided target - if (touchScrollTarget) { - touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, listenerOptions); - touchScrollTarget.addEventListener('touchmove', allowTouchMove, listenerOptions); - } - } - - // increment active scroll locks - activeScrollLocks += 1; - }, [accountForScrollbars]); - var removeScrollLock = React.useCallback(function (touchScrollTarget) { - if (!canUseDOM) return; - var target = document.body; - var targetStyle = target && target.style; - - // safely decrement active scroll locks - activeScrollLocks = Math.max(activeScrollLocks - 1, 0); - - // reapply original body styles, if any - if (accountForScrollbars && activeScrollLocks < 1) { - STYLE_KEYS.forEach(function (key) { - var val = originalStyles.current[key]; - if (targetStyle) { - targetStyle[key] = val; - } - }); - } - - // remove touch listeners - if (target && isTouchDevice()) { - target.removeEventListener('touchmove', preventTouchMove, listenerOptions); - if (touchScrollTarget) { - touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, listenerOptions); - touchScrollTarget.removeEventListener('touchmove', allowTouchMove, listenerOptions); - } - } - }, [accountForScrollbars]); - React.useEffect(function () { - if (!isEnabled) return; - var element = scrollTarget.current; - addScrollLock(element); - return function () { - removeScrollLock(element); - }; - }, [isEnabled, addScrollLock, removeScrollLock]); - return function (element) { - scrollTarget.current = element; - }; -} - -function _EMOTION_STRINGIFIED_CSS_ERROR__$1() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } -var blurSelectInput = function blurSelectInput() { - return document.activeElement && document.activeElement.blur(); -}; -var _ref2$1 = process.env.NODE_ENV === "production" ? { - name: "1kfdb0e", - styles: "position:fixed;left:0;bottom:0;right:0;top:0" -} : { - name: "bp8cua-ScrollManager", - styles: "position:fixed;left:0;bottom:0;right:0;top:0;label:ScrollManager;", - map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNjcm9sbE1hbmFnZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStDVSIsImZpbGUiOiJTY3JvbGxNYW5hZ2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgRnJhZ21lbnQsIFJlYWN0RWxlbWVudCwgUmVmQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlU2Nyb2xsQ2FwdHVyZSBmcm9tICcuL3VzZVNjcm9sbENhcHR1cmUnO1xuaW1wb3J0IHVzZVNjcm9sbExvY2sgZnJvbSAnLi91c2VTY3JvbGxMb2NrJztcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgcmVhZG9ubHkgY2hpbGRyZW46IChyZWY6IFJlZkNhbGxiYWNrPEhUTUxFbGVtZW50PikgPT4gUmVhY3RFbGVtZW50O1xuICByZWFkb25seSBsb2NrRW5hYmxlZDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY2FwdHVyZUVuYWJsZWQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IG9uQm90dG9tQXJyaXZlPzogKGV2ZW50OiBXaGVlbEV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25Cb3R0b21MZWF2ZT86IChldmVudDogV2hlZWxFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IG9uVG9wQXJyaXZlPzogKGV2ZW50OiBXaGVlbEV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25Ub3BMZWF2ZT86IChldmVudDogV2hlZWxFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWQ7XG59XG5cbmNvbnN0IGJsdXJTZWxlY3RJbnB1dCA9ICgpID0+XG4gIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmJsdXIoKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2Nyb2xsTWFuYWdlcih7XG4gIGNoaWxkcmVuLFxuICBsb2NrRW5hYmxlZCxcbiAgY2FwdHVyZUVuYWJsZWQgPSB0cnVlLFxuICBvbkJvdHRvbUFycml2ZSxcbiAgb25Cb3R0b21MZWF2ZSxcbiAgb25Ub3BBcnJpdmUsXG4gIG9uVG9wTGVhdmUsXG59OiBQcm9wcykge1xuICBjb25zdCBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0ID0gdXNlU2Nyb2xsQ2FwdHVyZSh7XG4gICAgaXNFbmFibGVkOiBjYXB0dXJlRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZSxcbiAgICBvbkJvdHRvbUxlYXZlLFxuICAgIG9uVG9wQXJyaXZlLFxuICAgIG9uVG9wTGVhdmUsXG4gIH0pO1xuICBjb25zdCBzZXRTY3JvbGxMb2NrVGFyZ2V0ID0gdXNlU2Nyb2xsTG9jayh7IGlzRW5hYmxlZDogbG9ja0VuYWJsZWQgfSk7XG5cbiAgY29uc3QgdGFyZ2V0UmVmOiBSZWZDYWxsYmFjazxIVE1MRWxlbWVudD4gPSAoZWxlbWVudCkgPT4ge1xuICAgIHNldFNjcm9sbENhcHR1cmVUYXJnZXQoZWxlbWVudCk7XG4gICAgc2V0U2Nyb2xsTG9ja1RhcmdldChlbGVtZW50KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxGcmFnbWVudD5cbiAgICAgIHtsb2NrRW5hYmxlZCAmJiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBvbkNsaWNrPXtibHVyU2VsZWN0SW5wdXR9XG4gICAgICAgICAgY3NzPXt7IHBvc2l0aW9uOiAnZml4ZWQnLCBsZWZ0OiAwLCBib3R0b206IDAsIHJpZ2h0OiAwLCB0b3A6IDAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7Y2hpbGRyZW4odGFyZ2V0UmVmKX1cbiAgICA8L0ZyYWdtZW50PlxuICApO1xufVxuIl19 */", - toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1 -}; -function ScrollManager(_ref) { - var children = _ref.children, - lockEnabled = _ref.lockEnabled, - _ref$captureEnabled = _ref.captureEnabled, - captureEnabled = _ref$captureEnabled === void 0 ? true : _ref$captureEnabled, - onBottomArrive = _ref.onBottomArrive, - onBottomLeave = _ref.onBottomLeave, - onTopArrive = _ref.onTopArrive, - onTopLeave = _ref.onTopLeave; - var setScrollCaptureTarget = useScrollCapture({ - isEnabled: captureEnabled, - onBottomArrive: onBottomArrive, - onBottomLeave: onBottomLeave, - onTopArrive: onTopArrive, - onTopLeave: onTopLeave - }); - var setScrollLockTarget = useScrollLock({ - isEnabled: lockEnabled - }); - var targetRef = function targetRef(element) { - setScrollCaptureTarget(element); - setScrollLockTarget(element); - }; - return react.jsx(React.Fragment, null, lockEnabled && react.jsx("div", { - onClick: blurSelectInput, - css: _ref2$1 - }), children(targetRef)); -} - -function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } -var _ref2 = process.env.NODE_ENV === "production" ? { - name: "1a0ro4n-requiredInput", - styles: "label:requiredInput;opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;width:100%" -} : { - name: "5kkxb2-requiredInput-RequiredInput", - styles: "label:requiredInput;opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;width:100%;label:RequiredInput;", - map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlJlcXVpcmVkSW5wdXQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFJIiwiZmlsZSI6IlJlcXVpcmVkSW5wdXQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBGb2N1c0V2ZW50SGFuZGxlciwgRnVuY3Rpb25Db21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmNvbnN0IFJlcXVpcmVkSW5wdXQ6IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBvbkZvY3VzOiBGb2N1c0V2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50Pjtcbn0+ID0gKHsgbmFtZSwgb25Gb2N1cyB9KSA9PiAoXG4gIDxpbnB1dFxuICAgIHJlcXVpcmVkXG4gICAgbmFtZT17bmFtZX1cbiAgICB0YWJJbmRleD17LTF9XG4gICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICBjc3M9e3tcbiAgICAgIGxhYmVsOiAncmVxdWlyZWRJbnB1dCcsXG4gICAgICBvcGFjaXR5OiAwLFxuICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBib3R0b206IDAsXG4gICAgICBsZWZ0OiAwLFxuICAgICAgcmlnaHQ6IDAsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgIH19XG4gICAgLy8gUHJldmVudCBgU3dpdGNoaW5nIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWRgIGVycm9yXG4gICAgdmFsdWU9XCJcIlxuICAgIG9uQ2hhbmdlPXsoKSA9PiB7fX1cbiAgLz5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IFJlcXVpcmVkSW5wdXQ7XG4iXX0= */", - toString: _EMOTION_STRINGIFIED_CSS_ERROR__ -}; -var RequiredInput = function RequiredInput(_ref) { - var name = _ref.name, - onFocus = _ref.onFocus; - return react.jsx("input", { - required: true, - name: name, - tabIndex: -1, - onFocus: onFocus, - css: _ref2 - // Prevent `Switching from uncontrolled to controlled` error - , - value: "", - onChange: function onChange() {} - }); -}; - -var formatGroupLabel = function formatGroupLabel(group) { - return group.label; -}; -var getOptionLabel$1 = function getOptionLabel(option) { - return option.label; -}; -var getOptionValue$1 = function getOptionValue(option) { - return option.value; -}; -var isOptionDisabled = function isOptionDisabled(option) { - return !!option.isDisabled; -}; - -var defaultStyles = { - clearIndicator: index.clearIndicatorCSS, - container: index.containerCSS, - control: index.css, - dropdownIndicator: index.dropdownIndicatorCSS, - group: index.groupCSS, - groupHeading: index.groupHeadingCSS, - indicatorsContainer: index.indicatorsContainerCSS, - indicatorSeparator: index.indicatorSeparatorCSS, - input: index.inputCSS, - loadingIndicator: index.loadingIndicatorCSS, - loadingMessage: index.loadingMessageCSS, - menu: index.menuCSS, - menuList: index.menuListCSS, - menuPortal: index.menuPortalCSS, - multiValue: index.multiValueCSS, - multiValueLabel: index.multiValueLabelCSS, - multiValueRemove: index.multiValueRemoveCSS, - noOptionsMessage: index.noOptionsMessageCSS, - option: index.optionCSS, - placeholder: index.placeholderCSS, - singleValue: index.css$1, - valueContainer: index.valueContainerCSS -}; -// Merge Utility -// Allows consumers to extend a base Select with additional styles - -function mergeStyles(source) { - var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - // initialize with source styles - var styles = _objectSpread({}, source); - - // massage in target styles - Object.keys(target).forEach(function (keyAsString) { - var key = keyAsString; - if (source[key]) { - styles[key] = function (rsCss, props) { - return target[key](source[key](rsCss, props), props); - }; - } else { - styles[key] = target[key]; - } - }); - return styles; -} - -var colors = { - primary: '#2684FF', - primary75: '#4C9AFF', - primary50: '#B2D4FF', - primary25: '#DEEBFF', - danger: '#DE350B', - dangerLight: '#FFBDAD', - neutral0: 'hsl(0, 0%, 100%)', - neutral5: 'hsl(0, 0%, 95%)', - neutral10: 'hsl(0, 0%, 90%)', - neutral20: 'hsl(0, 0%, 80%)', - neutral30: 'hsl(0, 0%, 70%)', - neutral40: 'hsl(0, 0%, 60%)', - neutral50: 'hsl(0, 0%, 50%)', - neutral60: 'hsl(0, 0%, 40%)', - neutral70: 'hsl(0, 0%, 30%)', - neutral80: 'hsl(0, 0%, 20%)', - neutral90: 'hsl(0, 0%, 10%)' -}; -var borderRadius = 4; -// Used to calculate consistent margin/padding on elements -var baseUnit = 4; -// The minimum height of the control -var controlHeight = 38; -// The amount of space between the control and menu */ -var menuGutter = baseUnit * 2; -var spacing = { - baseUnit: baseUnit, - controlHeight: controlHeight, - menuGutter: menuGutter -}; -var defaultTheme = { - borderRadius: borderRadius, - colors: colors, - spacing: spacing -}; - -var defaultProps = { - 'aria-live': 'polite', - backspaceRemovesValue: true, - blurInputOnSelect: index.isTouchCapable(), - captureMenuScroll: !index.isTouchCapable(), - classNames: {}, - closeMenuOnSelect: true, - closeMenuOnScroll: false, - components: {}, - controlShouldRenderValue: true, - escapeClearsValue: false, - filterOption: createFilter(), - formatGroupLabel: formatGroupLabel, - getOptionLabel: getOptionLabel$1, - getOptionValue: getOptionValue$1, - isDisabled: false, - isLoading: false, - isMulti: false, - isRtl: false, - isSearchable: true, - isOptionDisabled: isOptionDisabled, - loadingMessage: function loadingMessage() { - return 'Loading...'; - }, - maxMenuHeight: 300, - minMenuHeight: 140, - menuIsOpen: false, - menuPlacement: 'bottom', - menuPosition: 'absolute', - menuShouldBlockScroll: false, - menuShouldScrollIntoView: !index.isMobileDevice(), - noOptionsMessage: function noOptionsMessage() { - return 'No options'; - }, - openMenuOnFocus: false, - openMenuOnClick: true, - options: [], - pageSize: 5, - placeholder: 'Select...', - screenReaderStatus: function screenReaderStatus(_ref) { - var count = _ref.count; - return "".concat(count, " result").concat(count !== 1 ? 's' : '', " available"); - }, - styles: {}, - tabIndex: 0, - tabSelectsValue: true, - unstyled: false -}; -function toCategorizedOption(props, option, selectValue, index) { - var isDisabled = _isOptionDisabled(props, option, selectValue); - var isSelected = _isOptionSelected(props, option, selectValue); - var label = getOptionLabel(props, option); - var value = getOptionValue(props, option); - return { - type: 'option', - data: option, - isDisabled: isDisabled, - isSelected: isSelected, - label: label, - value: value, - index: index - }; -} -function buildCategorizedOptions(props, selectValue) { - return props.options.map(function (groupOrOption, groupOrOptionIndex) { - if ('options' in groupOrOption) { - var categorizedOptions = groupOrOption.options.map(function (option, optionIndex) { - return toCategorizedOption(props, option, selectValue, optionIndex); - }).filter(function (categorizedOption) { - return isFocusable(props, categorizedOption); - }); - return categorizedOptions.length > 0 ? { - type: 'group', - data: groupOrOption, - options: categorizedOptions, - index: groupOrOptionIndex - } : undefined; - } - var categorizedOption = toCategorizedOption(props, groupOrOption, selectValue, groupOrOptionIndex); - return isFocusable(props, categorizedOption) ? categorizedOption : undefined; - }).filter(index.notNullish); -} -function buildFocusableOptionsFromCategorizedOptions(categorizedOptions) { - return categorizedOptions.reduce(function (optionsAccumulator, categorizedOption) { - if (categorizedOption.type === 'group') { - optionsAccumulator.push.apply(optionsAccumulator, _toConsumableArray(categorizedOption.options.map(function (option) { - return option.data; - }))); - } else { - optionsAccumulator.push(categorizedOption.data); - } - return optionsAccumulator; - }, []); -} -function buildFocusableOptions(props, selectValue) { - return buildFocusableOptionsFromCategorizedOptions(buildCategorizedOptions(props, selectValue)); -} -function isFocusable(props, categorizedOption) { - var _props$inputValue = props.inputValue, - inputValue = _props$inputValue === void 0 ? '' : _props$inputValue; - var data = categorizedOption.data, - isSelected = categorizedOption.isSelected, - label = categorizedOption.label, - value = categorizedOption.value; - return (!shouldHideSelectedOptions(props) || !isSelected) && _filterOption(props, { - label: label, - value: value, - data: data - }, inputValue); -} -function getNextFocusedValue(state, nextSelectValue) { - var focusedValue = state.focusedValue, - lastSelectValue = state.selectValue; - var lastFocusedIndex = lastSelectValue.indexOf(focusedValue); - if (lastFocusedIndex > -1) { - var nextFocusedIndex = nextSelectValue.indexOf(focusedValue); - if (nextFocusedIndex > -1) { - // the focused value is still in the selectValue, return it - return focusedValue; - } else if (lastFocusedIndex < nextSelectValue.length) { - // the focusedValue is not present in the next selectValue array by - // reference, so return the new value at the same index - return nextSelectValue[lastFocusedIndex]; - } - } - return null; -} -function getNextFocusedOption(state, options) { - var lastFocusedOption = state.focusedOption; - return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0]; -} -var getOptionLabel = function getOptionLabel(props, data) { - return props.getOptionLabel(data); -}; -var getOptionValue = function getOptionValue(props, data) { - return props.getOptionValue(data); -}; -function _isOptionDisabled(props, option, selectValue) { - return typeof props.isOptionDisabled === 'function' ? props.isOptionDisabled(option, selectValue) : false; -} -function _isOptionSelected(props, option, selectValue) { - if (selectValue.indexOf(option) > -1) return true; - if (typeof props.isOptionSelected === 'function') { - return props.isOptionSelected(option, selectValue); - } - var candidate = getOptionValue(props, option); - return selectValue.some(function (i) { - return getOptionValue(props, i) === candidate; - }); -} -function _filterOption(props, option, inputValue) { - return props.filterOption ? props.filterOption(option, inputValue) : true; -} -var shouldHideSelectedOptions = function shouldHideSelectedOptions(props) { - var hideSelectedOptions = props.hideSelectedOptions, - isMulti = props.isMulti; - if (hideSelectedOptions === undefined) return isMulti; - return hideSelectedOptions; -}; -var instanceId = 1; -var Select = /*#__PURE__*/function (_Component) { - _inherits(Select, _Component); - var _super = _createSuper(Select); - // Misc. Instance Properties - // ------------------------------ - - // TODO - - // Refs - // ------------------------------ - - // Lifecycle - // ------------------------------ - - function Select(_props) { - var _this; - _classCallCheck(this, Select); - _this = _super.call(this, _props); - _this.state = { - ariaSelection: null, - focusedOption: null, - focusedValue: null, - inputIsHidden: false, - isFocused: false, - selectValue: [], - clearFocusValueOnUpdate: false, - prevWasFocused: false, - inputIsHiddenAfterUpdate: undefined, - prevProps: undefined - }; - _this.blockOptionHover = false; - _this.isComposing = false; - _this.commonProps = void 0; - _this.initialTouchX = 0; - _this.initialTouchY = 0; - _this.instancePrefix = ''; - _this.openAfterFocus = false; - _this.scrollToFocusedOptionOnUpdate = false; - _this.userIsDragging = void 0; - _this.controlRef = null; - _this.getControlRef = function (ref) { - _this.controlRef = ref; - }; - _this.focusedOptionRef = null; - _this.getFocusedOptionRef = function (ref) { - _this.focusedOptionRef = ref; - }; - _this.menuListRef = null; - _this.getMenuListRef = function (ref) { - _this.menuListRef = ref; - }; - _this.inputRef = null; - _this.getInputRef = function (ref) { - _this.inputRef = ref; - }; - _this.focus = _this.focusInput; - _this.blur = _this.blurInput; - _this.onChange = function (newValue, actionMeta) { - var _this$props = _this.props, - onChange = _this$props.onChange, - name = _this$props.name; - actionMeta.name = name; - _this.ariaOnChange(newValue, actionMeta); - onChange(newValue, actionMeta); - }; - _this.setValue = function (newValue, action, option) { - var _this$props2 = _this.props, - closeMenuOnSelect = _this$props2.closeMenuOnSelect, - isMulti = _this$props2.isMulti, - inputValue = _this$props2.inputValue; - _this.onInputChange('', { - action: 'set-value', - prevInputValue: inputValue - }); - if (closeMenuOnSelect) { - _this.setState({ - inputIsHiddenAfterUpdate: !isMulti - }); - _this.onMenuClose(); - } - // when the select value should change, we should reset focusedValue - _this.setState({ - clearFocusValueOnUpdate: true - }); - _this.onChange(newValue, { - action: action, - option: option - }); - }; - _this.selectOption = function (newValue) { - var _this$props3 = _this.props, - blurInputOnSelect = _this$props3.blurInputOnSelect, - isMulti = _this$props3.isMulti, - name = _this$props3.name; - var selectValue = _this.state.selectValue; - var deselected = isMulti && _this.isOptionSelected(newValue, selectValue); - var isDisabled = _this.isOptionDisabled(newValue, selectValue); - if (deselected) { - var candidate = _this.getOptionValue(newValue); - _this.setValue(index.multiValueAsValue(selectValue.filter(function (i) { - return _this.getOptionValue(i) !== candidate; - })), 'deselect-option', newValue); - } else if (!isDisabled) { - // Select option if option is not disabled - if (isMulti) { - _this.setValue(index.multiValueAsValue([].concat(_toConsumableArray(selectValue), [newValue])), 'select-option', newValue); - } else { - _this.setValue(index.singleValueAsValue(newValue), 'select-option'); - } - } else { - _this.ariaOnChange(index.singleValueAsValue(newValue), { - action: 'select-option', - option: newValue, - name: name - }); - return; - } - if (blurInputOnSelect) { - _this.blurInput(); - } - }; - _this.removeValue = function (removedValue) { - var isMulti = _this.props.isMulti; - var selectValue = _this.state.selectValue; - var candidate = _this.getOptionValue(removedValue); - var newValueArray = selectValue.filter(function (i) { - return _this.getOptionValue(i) !== candidate; - }); - var newValue = index.valueTernary(isMulti, newValueArray, newValueArray[0] || null); - _this.onChange(newValue, { - action: 'remove-value', - removedValue: removedValue - }); - _this.focusInput(); - }; - _this.clearValue = function () { - var selectValue = _this.state.selectValue; - _this.onChange(index.valueTernary(_this.props.isMulti, [], null), { - action: 'clear', - removedValues: selectValue - }); - }; - _this.popValue = function () { - var isMulti = _this.props.isMulti; - var selectValue = _this.state.selectValue; - var lastSelectedValue = selectValue[selectValue.length - 1]; - var newValueArray = selectValue.slice(0, selectValue.length - 1); - var newValue = index.valueTernary(isMulti, newValueArray, newValueArray[0] || null); - _this.onChange(newValue, { - action: 'pop-value', - removedValue: lastSelectedValue - }); - }; - _this.getValue = function () { - return _this.state.selectValue; - }; - _this.cx = function () { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - return index.classNames.apply(void 0, [_this.props.classNamePrefix].concat(args)); - }; - _this.getOptionLabel = function (data) { - return getOptionLabel(_this.props, data); - }; - _this.getOptionValue = function (data) { - return getOptionValue(_this.props, data); - }; - _this.getStyles = function (key, props) { - var unstyled = _this.props.unstyled; - var base = defaultStyles[key](props, unstyled); - base.boxSizing = 'border-box'; - var custom = _this.props.styles[key]; - return custom ? custom(base, props) : base; - }; - _this.getClassNames = function (key, props) { - var _this$props$className, _this$props$className2; - return (_this$props$className = (_this$props$className2 = _this.props.classNames)[key]) === null || _this$props$className === void 0 ? void 0 : _this$props$className.call(_this$props$className2, props); - }; - _this.getElementId = function (element) { - return "".concat(_this.instancePrefix, "-").concat(element); - }; - _this.getComponents = function () { - return index.defaultComponents(_this.props); - }; - _this.buildCategorizedOptions = function () { - return buildCategorizedOptions(_this.props, _this.state.selectValue); - }; - _this.getCategorizedOptions = function () { - return _this.props.menuIsOpen ? _this.buildCategorizedOptions() : []; - }; - _this.buildFocusableOptions = function () { - return buildFocusableOptionsFromCategorizedOptions(_this.buildCategorizedOptions()); - }; - _this.getFocusableOptions = function () { - return _this.props.menuIsOpen ? _this.buildFocusableOptions() : []; - }; - _this.ariaOnChange = function (value, actionMeta) { - _this.setState({ - ariaSelection: _objectSpread({ - value: value - }, actionMeta) - }); - }; - _this.onMenuMouseDown = function (event) { - if (event.button !== 0) { - return; - } - event.stopPropagation(); - event.preventDefault(); - _this.focusInput(); - }; - _this.onMenuMouseMove = function (event) { - _this.blockOptionHover = false; - }; - _this.onControlMouseDown = function (event) { - // Event captured by dropdown indicator - if (event.defaultPrevented) { - return; - } - var openMenuOnClick = _this.props.openMenuOnClick; - if (!_this.state.isFocused) { - if (openMenuOnClick) { - _this.openAfterFocus = true; - } - _this.focusInput(); - } else if (!_this.props.menuIsOpen) { - if (openMenuOnClick) { - _this.openMenu('first'); - } - } else { - if (event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') { - _this.onMenuClose(); - } - } - if (event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') { - event.preventDefault(); - } - }; - _this.onDropdownIndicatorMouseDown = function (event) { - // ignore mouse events that weren't triggered by the primary button - if (event && event.type === 'mousedown' && event.button !== 0) { - return; - } - if (_this.props.isDisabled) return; - var _this$props4 = _this.props, - isMulti = _this$props4.isMulti, - menuIsOpen = _this$props4.menuIsOpen; - _this.focusInput(); - if (menuIsOpen) { - _this.setState({ - inputIsHiddenAfterUpdate: !isMulti - }); - _this.onMenuClose(); - } else { - _this.openMenu('first'); - } - event.preventDefault(); - }; - _this.onClearIndicatorMouseDown = function (event) { - // ignore mouse events that weren't triggered by the primary button - if (event && event.type === 'mousedown' && event.button !== 0) { - return; - } - _this.clearValue(); - event.preventDefault(); - _this.openAfterFocus = false; - if (event.type === 'touchend') { - _this.focusInput(); - } else { - setTimeout(function () { - return _this.focusInput(); - }); - } - }; - _this.onScroll = function (event) { - if (typeof _this.props.closeMenuOnScroll === 'boolean') { - if (event.target instanceof HTMLElement && index.isDocumentElement(event.target)) { - _this.props.onMenuClose(); - } - } else if (typeof _this.props.closeMenuOnScroll === 'function') { - if (_this.props.closeMenuOnScroll(event)) { - _this.props.onMenuClose(); - } - } - }; - _this.onCompositionStart = function () { - _this.isComposing = true; - }; - _this.onCompositionEnd = function () { - _this.isComposing = false; - }; - _this.onTouchStart = function (_ref2) { - var touches = _ref2.touches; - var touch = touches && touches.item(0); - if (!touch) { - return; - } - _this.initialTouchX = touch.clientX; - _this.initialTouchY = touch.clientY; - _this.userIsDragging = false; - }; - _this.onTouchMove = function (_ref3) { - var touches = _ref3.touches; - var touch = touches && touches.item(0); - if (!touch) { - return; - } - var deltaX = Math.abs(touch.clientX - _this.initialTouchX); - var deltaY = Math.abs(touch.clientY - _this.initialTouchY); - var moveThreshold = 5; - _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold; - }; - _this.onTouchEnd = function (event) { - if (_this.userIsDragging) return; - - // close the menu if the user taps outside - // we're checking on event.target here instead of event.currentTarget, because we want to assert information - // on events on child elements, not the document (which we've attached this handler to). - if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) { - _this.blurInput(); - } - - // reset move vars - _this.initialTouchX = 0; - _this.initialTouchY = 0; - }; - _this.onControlTouchEnd = function (event) { - if (_this.userIsDragging) return; - _this.onControlMouseDown(event); - }; - _this.onClearIndicatorTouchEnd = function (event) { - if (_this.userIsDragging) return; - _this.onClearIndicatorMouseDown(event); - }; - _this.onDropdownIndicatorTouchEnd = function (event) { - if (_this.userIsDragging) return; - _this.onDropdownIndicatorMouseDown(event); - }; - _this.handleInputChange = function (event) { - var prevInputValue = _this.props.inputValue; - var inputValue = event.currentTarget.value; - _this.setState({ - inputIsHiddenAfterUpdate: false - }); - _this.onInputChange(inputValue, { - action: 'input-change', - prevInputValue: prevInputValue - }); - if (!_this.props.menuIsOpen) { - _this.onMenuOpen(); - } - }; - _this.onInputFocus = function (event) { - if (_this.props.onFocus) { - _this.props.onFocus(event); - } - _this.setState({ - inputIsHiddenAfterUpdate: false, - isFocused: true - }); - if (_this.openAfterFocus || _this.props.openMenuOnFocus) { - _this.openMenu('first'); - } - _this.openAfterFocus = false; - }; - _this.onInputBlur = function (event) { - var prevInputValue = _this.props.inputValue; - if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) { - _this.inputRef.focus(); - return; - } - if (_this.props.onBlur) { - _this.props.onBlur(event); - } - _this.onInputChange('', { - action: 'input-blur', - prevInputValue: prevInputValue - }); - _this.onMenuClose(); - _this.setState({ - focusedValue: null, - isFocused: false - }); - }; - _this.onOptionHover = function (focusedOption) { - if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) { - return; - } - _this.setState({ - focusedOption: focusedOption - }); - }; - _this.shouldHideSelectedOptions = function () { - return shouldHideSelectedOptions(_this.props); - }; - _this.onValueInputFocus = function (e) { - e.preventDefault(); - e.stopPropagation(); - _this.focus(); - }; - _this.onKeyDown = function (event) { - var _this$props5 = _this.props, - isMulti = _this$props5.isMulti, - backspaceRemovesValue = _this$props5.backspaceRemovesValue, - escapeClearsValue = _this$props5.escapeClearsValue, - inputValue = _this$props5.inputValue, - isClearable = _this$props5.isClearable, - isDisabled = _this$props5.isDisabled, - menuIsOpen = _this$props5.menuIsOpen, - onKeyDown = _this$props5.onKeyDown, - tabSelectsValue = _this$props5.tabSelectsValue, - openMenuOnFocus = _this$props5.openMenuOnFocus; - var _this$state = _this.state, - focusedOption = _this$state.focusedOption, - focusedValue = _this$state.focusedValue, - selectValue = _this$state.selectValue; - if (isDisabled) return; - if (typeof onKeyDown === 'function') { - onKeyDown(event); - if (event.defaultPrevented) { - return; - } - } - - // Block option hover events when the user has just pressed a key - _this.blockOptionHover = true; - switch (event.key) { - case 'ArrowLeft': - if (!isMulti || inputValue) return; - _this.focusValue('previous'); - break; - case 'ArrowRight': - if (!isMulti || inputValue) return; - _this.focusValue('next'); - break; - case 'Delete': - case 'Backspace': - if (inputValue) return; - if (focusedValue) { - _this.removeValue(focusedValue); - } else { - if (!backspaceRemovesValue) return; - if (isMulti) { - _this.popValue(); - } else if (isClearable) { - _this.clearValue(); - } - } - break; - case 'Tab': - if (_this.isComposing) return; - if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption || - // don't capture the event if the menu opens on focus and the focused - // option is already selected; it breaks the flow of navigation - openMenuOnFocus && _this.isOptionSelected(focusedOption, selectValue)) { - return; - } - _this.selectOption(focusedOption); - break; - case 'Enter': - if (event.keyCode === 229) { - // ignore the keydown event from an Input Method Editor(IME) - // ref. https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode - break; - } - if (menuIsOpen) { - if (!focusedOption) return; - if (_this.isComposing) return; - _this.selectOption(focusedOption); - break; - } - return; - case 'Escape': - if (menuIsOpen) { - _this.setState({ - inputIsHiddenAfterUpdate: false - }); - _this.onInputChange('', { - action: 'menu-close', - prevInputValue: inputValue - }); - _this.onMenuClose(); - } else if (isClearable && escapeClearsValue) { - _this.clearValue(); - } - break; - case ' ': - // space - if (inputValue) { - return; - } - if (!menuIsOpen) { - _this.openMenu('first'); - break; - } - if (!focusedOption) return; - _this.selectOption(focusedOption); - break; - case 'ArrowUp': - if (menuIsOpen) { - _this.focusOption('up'); - } else { - _this.openMenu('last'); - } - break; - case 'ArrowDown': - if (menuIsOpen) { - _this.focusOption('down'); - } else { - _this.openMenu('first'); - } - break; - case 'PageUp': - if (!menuIsOpen) return; - _this.focusOption('pageup'); - break; - case 'PageDown': - if (!menuIsOpen) return; - _this.focusOption('pagedown'); - break; - case 'Home': - if (!menuIsOpen) return; - _this.focusOption('first'); - break; - case 'End': - if (!menuIsOpen) return; - _this.focusOption('last'); - break; - default: - return; - } - event.preventDefault(); - }; - _this.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId); - _this.state.selectValue = index.cleanValue(_props.value); - - // Set focusedOption if menuIsOpen is set on init (e.g. defaultMenuIsOpen) - if (_props.menuIsOpen && _this.state.selectValue.length) { - var focusableOptions = _this.buildFocusableOptions(); - var optionIndex = focusableOptions.indexOf(_this.state.selectValue[0]); - _this.state.focusedOption = focusableOptions[optionIndex]; - } - return _this; - } - _createClass(Select, [{ - key: "componentDidMount", - value: function componentDidMount() { - this.startListeningComposition(); - this.startListeningToTouch(); - if (this.props.closeMenuOnScroll && document && document.addEventListener) { - // Listen to all scroll events, and filter them out inside of 'onScroll' - document.addEventListener('scroll', this.onScroll, true); - } - if (this.props.autoFocus) { - this.focusInput(); - } - - // Scroll focusedOption into view if menuIsOpen is set on mount (e.g. defaultMenuIsOpen) - if (this.props.menuIsOpen && this.state.focusedOption && this.menuListRef && this.focusedOptionRef) { - index.scrollIntoView(this.menuListRef, this.focusedOptionRef); - } - } - }, { - key: "componentDidUpdate", - value: function componentDidUpdate(prevProps) { - var _this$props6 = this.props, - isDisabled = _this$props6.isDisabled, - menuIsOpen = _this$props6.menuIsOpen; - var isFocused = this.state.isFocused; - if ( - // ensure focus is restored correctly when the control becomes enabled - isFocused && !isDisabled && prevProps.isDisabled || - // ensure focus is on the Input when the menu opens - isFocused && menuIsOpen && !prevProps.menuIsOpen) { - this.focusInput(); - } - if (isFocused && isDisabled && !prevProps.isDisabled) { - // ensure select state gets blurred in case Select is programmatically disabled while focused - // eslint-disable-next-line react/no-did-update-set-state - this.setState({ - isFocused: false - }, this.onMenuClose); - } else if (!isFocused && !isDisabled && prevProps.isDisabled && this.inputRef === document.activeElement) { - // ensure select state gets focused in case Select is programatically re-enabled while focused (Firefox) - // eslint-disable-next-line react/no-did-update-set-state - this.setState({ - isFocused: true - }); - } - - // scroll the focused option into view if necessary - if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) { - index.scrollIntoView(this.menuListRef, this.focusedOptionRef); - this.scrollToFocusedOptionOnUpdate = false; - } - } - }, { - key: "componentWillUnmount", - value: function componentWillUnmount() { - this.stopListeningComposition(); - this.stopListeningToTouch(); - document.removeEventListener('scroll', this.onScroll, true); - } - - // ============================== - // Consumer Handlers - // ============================== - }, { - key: "onMenuOpen", - value: function onMenuOpen() { - this.props.onMenuOpen(); - } - }, { - key: "onMenuClose", - value: function onMenuClose() { - this.onInputChange('', { - action: 'menu-close', - prevInputValue: this.props.inputValue - }); - this.props.onMenuClose(); - } - }, { - key: "onInputChange", - value: function onInputChange(newValue, actionMeta) { - this.props.onInputChange(newValue, actionMeta); - } - - // ============================== - // Methods - // ============================== - }, { - key: "focusInput", - value: function focusInput() { - if (!this.inputRef) return; - this.inputRef.focus(); - } - }, { - key: "blurInput", - value: function blurInput() { - if (!this.inputRef) return; - this.inputRef.blur(); - } - - // aliased for consumers - }, { - key: "openMenu", - value: function openMenu(focusOption) { - var _this2 = this; - var _this$state2 = this.state, - selectValue = _this$state2.selectValue, - isFocused = _this$state2.isFocused; - var focusableOptions = this.buildFocusableOptions(); - var openAtIndex = focusOption === 'first' ? 0 : focusableOptions.length - 1; - if (!this.props.isMulti) { - var selectedIndex = focusableOptions.indexOf(selectValue[0]); - if (selectedIndex > -1) { - openAtIndex = selectedIndex; - } - } - - // only scroll if the menu isn't already open - this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef); - this.setState({ - inputIsHiddenAfterUpdate: false, - focusedValue: null, - focusedOption: focusableOptions[openAtIndex] - }, function () { - return _this2.onMenuOpen(); - }); - } - }, { - key: "focusValue", - value: function focusValue(direction) { - var _this$state3 = this.state, - selectValue = _this$state3.selectValue, - focusedValue = _this$state3.focusedValue; - - // Only multiselects support value focusing - if (!this.props.isMulti) return; - this.setState({ - focusedOption: null - }); - var focusedIndex = selectValue.indexOf(focusedValue); - if (!focusedValue) { - focusedIndex = -1; - } - var lastIndex = selectValue.length - 1; - var nextFocus = -1; - if (!selectValue.length) return; - switch (direction) { - case 'previous': - if (focusedIndex === 0) { - // don't cycle from the start to the end - nextFocus = 0; - } else if (focusedIndex === -1) { - // if nothing is focused, focus the last value first - nextFocus = lastIndex; - } else { - nextFocus = focusedIndex - 1; - } - break; - case 'next': - if (focusedIndex > -1 && focusedIndex < lastIndex) { - nextFocus = focusedIndex + 1; - } - break; - } - this.setState({ - inputIsHidden: nextFocus !== -1, - focusedValue: selectValue[nextFocus] - }); - } - }, { - key: "focusOption", - value: function focusOption() { - var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'first'; - var pageSize = this.props.pageSize; - var focusedOption = this.state.focusedOption; - var options = this.getFocusableOptions(); - if (!options.length) return; - var nextFocus = 0; // handles 'first' - var focusedIndex = options.indexOf(focusedOption); - if (!focusedOption) { - focusedIndex = -1; - } - if (direction === 'up') { - nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1; - } else if (direction === 'down') { - nextFocus = (focusedIndex + 1) % options.length; - } else if (direction === 'pageup') { - nextFocus = focusedIndex - pageSize; - if (nextFocus < 0) nextFocus = 0; - } else if (direction === 'pagedown') { - nextFocus = focusedIndex + pageSize; - if (nextFocus > options.length - 1) nextFocus = options.length - 1; - } else if (direction === 'last') { - nextFocus = options.length - 1; - } - this.scrollToFocusedOptionOnUpdate = true; - this.setState({ - focusedOption: options[nextFocus], - focusedValue: null - }); - } - }, { - key: "getTheme", - value: - // ============================== - // Getters - // ============================== - - function getTheme() { - // Use the default theme if there are no customisations. - if (!this.props.theme) { - return defaultTheme; - } - // If the theme prop is a function, assume the function - // knows how to merge the passed-in default theme with - // its own modifications. - if (typeof this.props.theme === 'function') { - return this.props.theme(defaultTheme); - } - // Otherwise, if a plain theme object was passed in, - // overlay it with the default theme. - return _objectSpread(_objectSpread({}, defaultTheme), this.props.theme); - } - }, { - key: "getCommonProps", - value: function getCommonProps() { - var clearValue = this.clearValue, - cx = this.cx, - getStyles = this.getStyles, - getClassNames = this.getClassNames, - getValue = this.getValue, - selectOption = this.selectOption, - setValue = this.setValue, - props = this.props; - var isMulti = props.isMulti, - isRtl = props.isRtl, - options = props.options; - var hasValue = this.hasValue(); - return { - clearValue: clearValue, - cx: cx, - getStyles: getStyles, - getClassNames: getClassNames, - getValue: getValue, - hasValue: hasValue, - isMulti: isMulti, - isRtl: isRtl, - options: options, - selectOption: selectOption, - selectProps: props, - setValue: setValue, - theme: this.getTheme() - }; - } - }, { - key: "hasValue", - value: function hasValue() { - var selectValue = this.state.selectValue; - return selectValue.length > 0; - } - }, { - key: "hasOptions", - value: function hasOptions() { - return !!this.getFocusableOptions().length; - } - }, { - key: "isClearable", - value: function isClearable() { - var _this$props7 = this.props, - isClearable = _this$props7.isClearable, - isMulti = _this$props7.isMulti; - - // single select, by default, IS NOT clearable - // multi select, by default, IS clearable - if (isClearable === undefined) return isMulti; - return isClearable; - } - }, { - key: "isOptionDisabled", - value: function isOptionDisabled(option, selectValue) { - return _isOptionDisabled(this.props, option, selectValue); - } - }, { - key: "isOptionSelected", - value: function isOptionSelected(option, selectValue) { - return _isOptionSelected(this.props, option, selectValue); - } - }, { - key: "filterOption", - value: function filterOption(option, inputValue) { - return _filterOption(this.props, option, inputValue); - } - }, { - key: "formatOptionLabel", - value: function formatOptionLabel(data, context) { - if (typeof this.props.formatOptionLabel === 'function') { - var _inputValue = this.props.inputValue; - var _selectValue = this.state.selectValue; - return this.props.formatOptionLabel(data, { - context: context, - inputValue: _inputValue, - selectValue: _selectValue - }); - } else { - return this.getOptionLabel(data); - } - } - }, { - key: "formatGroupLabel", - value: function formatGroupLabel(data) { - return this.props.formatGroupLabel(data); - } - - // ============================== - // Mouse Handlers - // ============================== - }, { - key: "startListeningComposition", - value: - // ============================== - // Composition Handlers - // ============================== - - function startListeningComposition() { - if (document && document.addEventListener) { - document.addEventListener('compositionstart', this.onCompositionStart, false); - document.addEventListener('compositionend', this.onCompositionEnd, false); - } - } - }, { - key: "stopListeningComposition", - value: function stopListeningComposition() { - if (document && document.removeEventListener) { - document.removeEventListener('compositionstart', this.onCompositionStart); - document.removeEventListener('compositionend', this.onCompositionEnd); - } - } - }, { - key: "startListeningToTouch", - value: - // ============================== - // Touch Handlers - // ============================== - - function startListeningToTouch() { - if (document && document.addEventListener) { - document.addEventListener('touchstart', this.onTouchStart, false); - document.addEventListener('touchmove', this.onTouchMove, false); - document.addEventListener('touchend', this.onTouchEnd, false); - } - } - }, { - key: "stopListeningToTouch", - value: function stopListeningToTouch() { - if (document && document.removeEventListener) { - document.removeEventListener('touchstart', this.onTouchStart); - document.removeEventListener('touchmove', this.onTouchMove); - document.removeEventListener('touchend', this.onTouchEnd); - } - } - }, { - key: "renderInput", - value: - // ============================== - // Renderers - // ============================== - function renderInput() { - var _this$props8 = this.props, - isDisabled = _this$props8.isDisabled, - isSearchable = _this$props8.isSearchable, - inputId = _this$props8.inputId, - inputValue = _this$props8.inputValue, - tabIndex = _this$props8.tabIndex, - form = _this$props8.form, - menuIsOpen = _this$props8.menuIsOpen, - required = _this$props8.required; - var _this$getComponents = this.getComponents(), - Input = _this$getComponents.Input; - var _this$state4 = this.state, - inputIsHidden = _this$state4.inputIsHidden, - ariaSelection = _this$state4.ariaSelection; - var commonProps = this.commonProps; - var id = inputId || this.getElementId('input'); - - // aria attributes makes the JSX "noisy", separated for clarity - var ariaAttributes = _objectSpread(_objectSpread(_objectSpread({ - 'aria-autocomplete': 'list', - 'aria-expanded': menuIsOpen, - 'aria-haspopup': true, - 'aria-errormessage': this.props['aria-errormessage'], - 'aria-invalid': this.props['aria-invalid'], - 'aria-label': this.props['aria-label'], - 'aria-labelledby': this.props['aria-labelledby'], - 'aria-required': required, - role: 'combobox' - }, menuIsOpen && { - 'aria-controls': this.getElementId('listbox'), - 'aria-owns': this.getElementId('listbox') - }), !isSearchable && { - 'aria-readonly': true - }), this.hasValue() ? (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus' && { - 'aria-describedby': this.getElementId('live-region') - } : { - 'aria-describedby': this.getElementId('placeholder') - }); - if (!isSearchable) { - // use a dummy input to maintain focus/blur functionality - return /*#__PURE__*/React__namespace.createElement(DummyInput, _extends({ - id: id, - innerRef: this.getInputRef, - onBlur: this.onInputBlur, - onChange: index.noop, - onFocus: this.onInputFocus, - disabled: isDisabled, - tabIndex: tabIndex, - inputMode: "none", - form: form, - value: "" - }, ariaAttributes)); - } - return /*#__PURE__*/React__namespace.createElement(Input, _extends({}, commonProps, { - autoCapitalize: "none", - autoComplete: "off", - autoCorrect: "off", - id: id, - innerRef: this.getInputRef, - isDisabled: isDisabled, - isHidden: inputIsHidden, - onBlur: this.onInputBlur, - onChange: this.handleInputChange, - onFocus: this.onInputFocus, - spellCheck: "false", - tabIndex: tabIndex, - form: form, - type: "text", - value: inputValue - }, ariaAttributes)); - } - }, { - key: "renderPlaceholderOrValue", - value: function renderPlaceholderOrValue() { - var _this3 = this; - var _this$getComponents2 = this.getComponents(), - MultiValue = _this$getComponents2.MultiValue, - MultiValueContainer = _this$getComponents2.MultiValueContainer, - MultiValueLabel = _this$getComponents2.MultiValueLabel, - MultiValueRemove = _this$getComponents2.MultiValueRemove, - SingleValue = _this$getComponents2.SingleValue, - Placeholder = _this$getComponents2.Placeholder; - var commonProps = this.commonProps; - var _this$props9 = this.props, - controlShouldRenderValue = _this$props9.controlShouldRenderValue, - isDisabled = _this$props9.isDisabled, - isMulti = _this$props9.isMulti, - inputValue = _this$props9.inputValue, - placeholder = _this$props9.placeholder; - var _this$state5 = this.state, - selectValue = _this$state5.selectValue, - focusedValue = _this$state5.focusedValue, - isFocused = _this$state5.isFocused; - if (!this.hasValue() || !controlShouldRenderValue) { - return inputValue ? null : /*#__PURE__*/React__namespace.createElement(Placeholder, _extends({}, commonProps, { - key: "placeholder", - isDisabled: isDisabled, - isFocused: isFocused, - innerProps: { - id: this.getElementId('placeholder') - } - }), placeholder); - } - if (isMulti) { - return selectValue.map(function (opt, index) { - var isOptionFocused = opt === focusedValue; - var key = "".concat(_this3.getOptionLabel(opt), "-").concat(_this3.getOptionValue(opt)); - return /*#__PURE__*/React__namespace.createElement(MultiValue, _extends({}, commonProps, { - components: { - Container: MultiValueContainer, - Label: MultiValueLabel, - Remove: MultiValueRemove - }, - isFocused: isOptionFocused, - isDisabled: isDisabled, - key: key, - index: index, - removeProps: { - onClick: function onClick() { - return _this3.removeValue(opt); - }, - onTouchEnd: function onTouchEnd() { - return _this3.removeValue(opt); - }, - onMouseDown: function onMouseDown(e) { - e.preventDefault(); - } - }, - data: opt - }), _this3.formatOptionLabel(opt, 'value')); - }); - } - if (inputValue) { - return null; - } - var singleValue = selectValue[0]; - return /*#__PURE__*/React__namespace.createElement(SingleValue, _extends({}, commonProps, { - data: singleValue, - isDisabled: isDisabled - }), this.formatOptionLabel(singleValue, 'value')); - } - }, { - key: "renderClearIndicator", - value: function renderClearIndicator() { - var _this$getComponents3 = this.getComponents(), - ClearIndicator = _this$getComponents3.ClearIndicator; - var commonProps = this.commonProps; - var _this$props10 = this.props, - isDisabled = _this$props10.isDisabled, - isLoading = _this$props10.isLoading; - var isFocused = this.state.isFocused; - if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) { - return null; - } - var innerProps = { - onMouseDown: this.onClearIndicatorMouseDown, - onTouchEnd: this.onClearIndicatorTouchEnd, - 'aria-hidden': 'true' - }; - return /*#__PURE__*/React__namespace.createElement(ClearIndicator, _extends({}, commonProps, { - innerProps: innerProps, - isFocused: isFocused - })); - } - }, { - key: "renderLoadingIndicator", - value: function renderLoadingIndicator() { - var _this$getComponents4 = this.getComponents(), - LoadingIndicator = _this$getComponents4.LoadingIndicator; - var commonProps = this.commonProps; - var _this$props11 = this.props, - isDisabled = _this$props11.isDisabled, - isLoading = _this$props11.isLoading; - var isFocused = this.state.isFocused; - if (!LoadingIndicator || !isLoading) return null; - var innerProps = { - 'aria-hidden': 'true' - }; - return /*#__PURE__*/React__namespace.createElement(LoadingIndicator, _extends({}, commonProps, { - innerProps: innerProps, - isDisabled: isDisabled, - isFocused: isFocused - })); - } - }, { - key: "renderIndicatorSeparator", - value: function renderIndicatorSeparator() { - var _this$getComponents5 = this.getComponents(), - DropdownIndicator = _this$getComponents5.DropdownIndicator, - IndicatorSeparator = _this$getComponents5.IndicatorSeparator; - - // separator doesn't make sense without the dropdown indicator - if (!DropdownIndicator || !IndicatorSeparator) return null; - var commonProps = this.commonProps; - var isDisabled = this.props.isDisabled; - var isFocused = this.state.isFocused; - return /*#__PURE__*/React__namespace.createElement(IndicatorSeparator, _extends({}, commonProps, { - isDisabled: isDisabled, - isFocused: isFocused - })); - } - }, { - key: "renderDropdownIndicator", - value: function renderDropdownIndicator() { - var _this$getComponents6 = this.getComponents(), - DropdownIndicator = _this$getComponents6.DropdownIndicator; - if (!DropdownIndicator) return null; - var commonProps = this.commonProps; - var isDisabled = this.props.isDisabled; - var isFocused = this.state.isFocused; - var innerProps = { - onMouseDown: this.onDropdownIndicatorMouseDown, - onTouchEnd: this.onDropdownIndicatorTouchEnd, - 'aria-hidden': 'true' - }; - return /*#__PURE__*/React__namespace.createElement(DropdownIndicator, _extends({}, commonProps, { - innerProps: innerProps, - isDisabled: isDisabled, - isFocused: isFocused - })); - } - }, { - key: "renderMenu", - value: function renderMenu() { - var _this4 = this; - var _this$getComponents7 = this.getComponents(), - Group = _this$getComponents7.Group, - GroupHeading = _this$getComponents7.GroupHeading, - Menu = _this$getComponents7.Menu, - MenuList = _this$getComponents7.MenuList, - MenuPortal = _this$getComponents7.MenuPortal, - LoadingMessage = _this$getComponents7.LoadingMessage, - NoOptionsMessage = _this$getComponents7.NoOptionsMessage, - Option = _this$getComponents7.Option; - var commonProps = this.commonProps; - var focusedOption = this.state.focusedOption; - var _this$props12 = this.props, - captureMenuScroll = _this$props12.captureMenuScroll, - inputValue = _this$props12.inputValue, - isLoading = _this$props12.isLoading, - loadingMessage = _this$props12.loadingMessage, - minMenuHeight = _this$props12.minMenuHeight, - maxMenuHeight = _this$props12.maxMenuHeight, - menuIsOpen = _this$props12.menuIsOpen, - menuPlacement = _this$props12.menuPlacement, - menuPosition = _this$props12.menuPosition, - menuPortalTarget = _this$props12.menuPortalTarget, - menuShouldBlockScroll = _this$props12.menuShouldBlockScroll, - menuShouldScrollIntoView = _this$props12.menuShouldScrollIntoView, - noOptionsMessage = _this$props12.noOptionsMessage, - onMenuScrollToTop = _this$props12.onMenuScrollToTop, - onMenuScrollToBottom = _this$props12.onMenuScrollToBottom; - if (!menuIsOpen) return null; - - // TODO: Internal Option Type here - var render = function render(props, id) { - var type = props.type, - data = props.data, - isDisabled = props.isDisabled, - isSelected = props.isSelected, - label = props.label, - value = props.value; - var isFocused = focusedOption === data; - var onHover = isDisabled ? undefined : function () { - return _this4.onOptionHover(data); - }; - var onSelect = isDisabled ? undefined : function () { - return _this4.selectOption(data); - }; - var optionId = "".concat(_this4.getElementId('option'), "-").concat(id); - var innerProps = { - id: optionId, - onClick: onSelect, - onMouseMove: onHover, - onMouseOver: onHover, - tabIndex: -1 - }; - return /*#__PURE__*/React__namespace.createElement(Option, _extends({}, commonProps, { - innerProps: innerProps, - data: data, - isDisabled: isDisabled, - isSelected: isSelected, - key: optionId, - label: label, - type: type, - value: value, - isFocused: isFocused, - innerRef: isFocused ? _this4.getFocusedOptionRef : undefined - }), _this4.formatOptionLabel(props.data, 'menu')); - }; - var menuUI; - if (this.hasOptions()) { - menuUI = this.getCategorizedOptions().map(function (item) { - if (item.type === 'group') { - var _data = item.data, - options = item.options, - groupIndex = item.index; - var groupId = "".concat(_this4.getElementId('group'), "-").concat(groupIndex); - var headingId = "".concat(groupId, "-heading"); - return /*#__PURE__*/React__namespace.createElement(Group, _extends({}, commonProps, { - key: groupId, - data: _data, - options: options, - Heading: GroupHeading, - headingProps: { - id: headingId, - data: item.data - }, - label: _this4.formatGroupLabel(item.data) - }), item.options.map(function (option) { - return render(option, "".concat(groupIndex, "-").concat(option.index)); - })); - } else if (item.type === 'option') { - return render(item, "".concat(item.index)); - } - }); - } else if (isLoading) { - var message = loadingMessage({ - inputValue: inputValue - }); - if (message === null) return null; - menuUI = /*#__PURE__*/React__namespace.createElement(LoadingMessage, commonProps, message); - } else { - var _message = noOptionsMessage({ - inputValue: inputValue - }); - if (_message === null) return null; - menuUI = /*#__PURE__*/React__namespace.createElement(NoOptionsMessage, commonProps, _message); - } - var menuPlacementProps = { - minMenuHeight: minMenuHeight, - maxMenuHeight: maxMenuHeight, - menuPlacement: menuPlacement, - menuPosition: menuPosition, - menuShouldScrollIntoView: menuShouldScrollIntoView - }; - var menuElement = /*#__PURE__*/React__namespace.createElement(index.MenuPlacer, _extends({}, commonProps, menuPlacementProps), function (_ref4) { - var ref = _ref4.ref, - _ref4$placerProps = _ref4.placerProps, - placement = _ref4$placerProps.placement, - maxHeight = _ref4$placerProps.maxHeight; - return /*#__PURE__*/React__namespace.createElement(Menu, _extends({}, commonProps, menuPlacementProps, { - innerRef: ref, - innerProps: { - onMouseDown: _this4.onMenuMouseDown, - onMouseMove: _this4.onMenuMouseMove, - id: _this4.getElementId('listbox') - }, - isLoading: isLoading, - placement: placement - }), /*#__PURE__*/React__namespace.createElement(ScrollManager, { - captureEnabled: captureMenuScroll, - onTopArrive: onMenuScrollToTop, - onBottomArrive: onMenuScrollToBottom, - lockEnabled: menuShouldBlockScroll - }, function (scrollTargetRef) { - return /*#__PURE__*/React__namespace.createElement(MenuList, _extends({}, commonProps, { - innerRef: function innerRef(instance) { - _this4.getMenuListRef(instance); - scrollTargetRef(instance); - }, - isLoading: isLoading, - maxHeight: maxHeight, - focusedOption: focusedOption - }), menuUI); - })); - }); - - // positioning behaviour is almost identical for portalled and fixed, - // so we use the same component. the actual portalling logic is forked - // within the component based on `menuPosition` - return menuPortalTarget || menuPosition === 'fixed' ? /*#__PURE__*/React__namespace.createElement(MenuPortal, _extends({}, commonProps, { - appendTo: menuPortalTarget, - controlElement: this.controlRef, - menuPlacement: menuPlacement, - menuPosition: menuPosition - }), menuElement) : menuElement; - } - }, { - key: "renderFormField", - value: function renderFormField() { - var _this5 = this; - var _this$props13 = this.props, - delimiter = _this$props13.delimiter, - isDisabled = _this$props13.isDisabled, - isMulti = _this$props13.isMulti, - name = _this$props13.name, - required = _this$props13.required; - var selectValue = this.state.selectValue; - if (!name || isDisabled) return; - if (required && !this.hasValue()) { - return /*#__PURE__*/React__namespace.createElement(RequiredInput, { - name: name, - onFocus: this.onValueInputFocus - }); - } - if (isMulti) { - if (delimiter) { - var value = selectValue.map(function (opt) { - return _this5.getOptionValue(opt); - }).join(delimiter); - return /*#__PURE__*/React__namespace.createElement("input", { - name: name, - type: "hidden", - value: value - }); - } else { - var input = selectValue.length > 0 ? selectValue.map(function (opt, i) { - return /*#__PURE__*/React__namespace.createElement("input", { - key: "i-".concat(i), - name: name, - type: "hidden", - value: _this5.getOptionValue(opt) - }); - }) : /*#__PURE__*/React__namespace.createElement("input", { - name: name, - type: "hidden", - value: "" - }); - return /*#__PURE__*/React__namespace.createElement("div", null, input); - } - } else { - var _value = selectValue[0] ? this.getOptionValue(selectValue[0]) : ''; - return /*#__PURE__*/React__namespace.createElement("input", { - name: name, - type: "hidden", - value: _value - }); - } - } - }, { - key: "renderLiveRegion", - value: function renderLiveRegion() { - var commonProps = this.commonProps; - var _this$state6 = this.state, - ariaSelection = _this$state6.ariaSelection, - focusedOption = _this$state6.focusedOption, - focusedValue = _this$state6.focusedValue, - isFocused = _this$state6.isFocused, - selectValue = _this$state6.selectValue; - var focusableOptions = this.getFocusableOptions(); - return /*#__PURE__*/React__namespace.createElement(LiveRegion, _extends({}, commonProps, { - id: this.getElementId('live-region'), - ariaSelection: ariaSelection, - focusedOption: focusedOption, - focusedValue: focusedValue, - isFocused: isFocused, - selectValue: selectValue, - focusableOptions: focusableOptions - })); - } - }, { - key: "render", - value: function render() { - var _this$getComponents8 = this.getComponents(), - Control = _this$getComponents8.Control, - IndicatorsContainer = _this$getComponents8.IndicatorsContainer, - SelectContainer = _this$getComponents8.SelectContainer, - ValueContainer = _this$getComponents8.ValueContainer; - var _this$props14 = this.props, - className = _this$props14.className, - id = _this$props14.id, - isDisabled = _this$props14.isDisabled, - menuIsOpen = _this$props14.menuIsOpen; - var isFocused = this.state.isFocused; - var commonProps = this.commonProps = this.getCommonProps(); - return /*#__PURE__*/React__namespace.createElement(SelectContainer, _extends({}, commonProps, { - className: className, - innerProps: { - id: id, - onKeyDown: this.onKeyDown - }, - isDisabled: isDisabled, - isFocused: isFocused - }), this.renderLiveRegion(), /*#__PURE__*/React__namespace.createElement(Control, _extends({}, commonProps, { - innerRef: this.getControlRef, - innerProps: { - onMouseDown: this.onControlMouseDown, - onTouchEnd: this.onControlTouchEnd - }, - isDisabled: isDisabled, - isFocused: isFocused, - menuIsOpen: menuIsOpen - }), /*#__PURE__*/React__namespace.createElement(ValueContainer, _extends({}, commonProps, { - isDisabled: isDisabled - }), this.renderPlaceholderOrValue(), this.renderInput()), /*#__PURE__*/React__namespace.createElement(IndicatorsContainer, _extends({}, commonProps, { - isDisabled: isDisabled - }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField()); - } - }], [{ - key: "getDerivedStateFromProps", - value: function getDerivedStateFromProps(props, state) { - var prevProps = state.prevProps, - clearFocusValueOnUpdate = state.clearFocusValueOnUpdate, - inputIsHiddenAfterUpdate = state.inputIsHiddenAfterUpdate, - ariaSelection = state.ariaSelection, - isFocused = state.isFocused, - prevWasFocused = state.prevWasFocused; - var options = props.options, - value = props.value, - menuIsOpen = props.menuIsOpen, - inputValue = props.inputValue, - isMulti = props.isMulti; - var selectValue = index.cleanValue(value); - var newMenuOptionsState = {}; - if (prevProps && (value !== prevProps.value || options !== prevProps.options || menuIsOpen !== prevProps.menuIsOpen || inputValue !== prevProps.inputValue)) { - var focusableOptions = menuIsOpen ? buildFocusableOptions(props, selectValue) : []; - var focusedValue = clearFocusValueOnUpdate ? getNextFocusedValue(state, selectValue) : null; - var focusedOption = getNextFocusedOption(state, focusableOptions); - newMenuOptionsState = { - selectValue: selectValue, - focusedOption: focusedOption, - focusedValue: focusedValue, - clearFocusValueOnUpdate: false - }; - } - // some updates should toggle the state of the input visibility - var newInputIsHiddenState = inputIsHiddenAfterUpdate != null && props !== prevProps ? { - inputIsHidden: inputIsHiddenAfterUpdate, - inputIsHiddenAfterUpdate: undefined - } : {}; - var newAriaSelection = ariaSelection; - var hasKeptFocus = isFocused && prevWasFocused; - if (isFocused && !hasKeptFocus) { - // If `value` or `defaultValue` props are not empty then announce them - // when the Select is initially focused - newAriaSelection = { - value: index.valueTernary(isMulti, selectValue, selectValue[0] || null), - options: selectValue, - action: 'initial-input-focus' - }; - hasKeptFocus = !prevWasFocused; - } - - // If the 'initial-input-focus' action has been set already - // then reset the ariaSelection to null - if ((ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus') { - newAriaSelection = null; - } - return _objectSpread(_objectSpread(_objectSpread({}, newMenuOptionsState), newInputIsHiddenState), {}, { - prevProps: props, - ariaSelection: newAriaSelection, - prevWasFocused: hasKeptFocus - }); - } - }]); - return Select; -}(React.Component); -Select.defaultProps = defaultProps; - -exports.Select = Select; -exports.createFilter = createFilter; -exports.defaultProps = defaultProps; -exports.defaultTheme = defaultTheme; -exports.getOptionLabel = getOptionLabel$1; -exports.getOptionValue = getOptionValue$1; -exports.mergeStyles = mergeStyles; diff --git a/frontend/node_modules/react-select/dist/Select-a4b66b9e.cjs.prod.js b/frontend/node_modules/react-select/dist/Select-a4b66b9e.cjs.prod.js deleted file mode 100644 index 98448b290..000000000 --- a/frontend/node_modules/react-select/dist/Select-a4b66b9e.cjs.prod.js +++ /dev/null @@ -1,2584 +0,0 @@ -'use strict'; - -var _extends = require('@babel/runtime/helpers/extends'); -var _objectSpread = require('@babel/runtime/helpers/objectSpread2'); -var _classCallCheck = require('@babel/runtime/helpers/classCallCheck'); -var _createClass = require('@babel/runtime/helpers/createClass'); -var _inherits = require('@babel/runtime/helpers/inherits'); -var _createSuper = require('@babel/runtime/helpers/createSuper'); -var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray'); -var React = require('react'); -var index = require('./index-78cf371e.cjs.prod.js'); -var react = require('@emotion/react'); -var memoizeOne = require('memoize-one'); -var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties'); - -function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; } - -function _interopNamespace(e) { - if (e && e.__esModule) return e; - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { - return e[k]; - } - }); - } - }); - } - n['default'] = e; - return Object.freeze(n); -} - -var React__namespace = /*#__PURE__*/_interopNamespace(React); -var memoizeOne__default = /*#__PURE__*/_interopDefault(memoizeOne); - -// Assistive text to describe visual elements. Hidden for sighted users. -var _ref = { - name: "7pg0cj-a11yText", - styles: "label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap" -} ; -var A11yText = function A11yText(props) { - return react.jsx("span", _extends({ - css: _ref - }, props)); -}; - -var defaultAriaLiveMessages = { - guidance: function guidance(props) { - var isSearchable = props.isSearchable, - isMulti = props.isMulti, - isDisabled = props.isDisabled, - tabSelectsValue = props.tabSelectsValue, - context = props.context; - switch (context) { - case 'menu': - return "Use Up and Down to choose options".concat(isDisabled ? '' : ', press Enter to select the currently focused option', ", press Escape to exit the menu").concat(tabSelectsValue ? ', press Tab to select the option and exit the menu' : '', "."); - case 'input': - return "".concat(props['aria-label'] || 'Select', " is focused ").concat(isSearchable ? ',type to refine list' : '', ", press Down to open the menu, ").concat(isMulti ? ' press left to focus selected values' : ''); - case 'value': - return 'Use left and right to toggle between focused values, press Backspace to remove the currently focused value'; - default: - return ''; - } - }, - onChange: function onChange(props) { - var action = props.action, - _props$label = props.label, - label = _props$label === void 0 ? '' : _props$label, - labels = props.labels, - isDisabled = props.isDisabled; - switch (action) { - case 'deselect-option': - case 'pop-value': - case 'remove-value': - return "option ".concat(label, ", deselected."); - case 'clear': - return 'All selected options have been cleared.'; - case 'initial-input-focus': - return "option".concat(labels.length > 1 ? 's' : '', " ").concat(labels.join(','), ", selected."); - case 'select-option': - return isDisabled ? "option ".concat(label, " is disabled. Select another option.") : "option ".concat(label, ", selected."); - default: - return ''; - } - }, - onFocus: function onFocus(props) { - var context = props.context, - focused = props.focused, - options = props.options, - _props$label2 = props.label, - label = _props$label2 === void 0 ? '' : _props$label2, - selectValue = props.selectValue, - isDisabled = props.isDisabled, - isSelected = props.isSelected; - var getArrayIndex = function getArrayIndex(arr, item) { - return arr && arr.length ? "".concat(arr.indexOf(item) + 1, " of ").concat(arr.length) : ''; - }; - if (context === 'value' && selectValue) { - return "value ".concat(label, " focused, ").concat(getArrayIndex(selectValue, focused), "."); - } - if (context === 'menu') { - var disabled = isDisabled ? ' disabled' : ''; - var status = "".concat(isSelected ? 'selected' : 'focused').concat(disabled); - return "option ".concat(label, " ").concat(status, ", ").concat(getArrayIndex(options, focused), "."); - } - return ''; - }, - onFilter: function onFilter(props) { - var inputValue = props.inputValue, - resultsMessage = props.resultsMessage; - return "".concat(resultsMessage).concat(inputValue ? ' for search term ' + inputValue : '', "."); - } -}; - -var LiveRegion = function LiveRegion(props) { - var ariaSelection = props.ariaSelection, - focusedOption = props.focusedOption, - focusedValue = props.focusedValue, - focusableOptions = props.focusableOptions, - isFocused = props.isFocused, - selectValue = props.selectValue, - selectProps = props.selectProps, - id = props.id; - var ariaLiveMessages = selectProps.ariaLiveMessages, - getOptionLabel = selectProps.getOptionLabel, - inputValue = selectProps.inputValue, - isMulti = selectProps.isMulti, - isOptionDisabled = selectProps.isOptionDisabled, - isSearchable = selectProps.isSearchable, - menuIsOpen = selectProps.menuIsOpen, - options = selectProps.options, - screenReaderStatus = selectProps.screenReaderStatus, - tabSelectsValue = selectProps.tabSelectsValue; - var ariaLabel = selectProps['aria-label']; - var ariaLive = selectProps['aria-live']; - - // Update aria live message configuration when prop changes - var messages = React.useMemo(function () { - return _objectSpread(_objectSpread({}, defaultAriaLiveMessages), ariaLiveMessages || {}); - }, [ariaLiveMessages]); - - // Update aria live selected option when prop changes - var ariaSelected = React.useMemo(function () { - var message = ''; - if (ariaSelection && messages.onChange) { - var option = ariaSelection.option, - selectedOptions = ariaSelection.options, - removedValue = ariaSelection.removedValue, - removedValues = ariaSelection.removedValues, - value = ariaSelection.value; - // select-option when !isMulti does not return option so we assume selected option is value - var asOption = function asOption(val) { - return !Array.isArray(val) ? val : null; - }; - - // If there is just one item from the action then get its label - var selected = removedValue || option || asOption(value); - var label = selected ? getOptionLabel(selected) : ''; - - // If there are multiple items from the action then return an array of labels - var multiSelected = selectedOptions || removedValues || undefined; - var labels = multiSelected ? multiSelected.map(getOptionLabel) : []; - var onChangeProps = _objectSpread({ - // multiSelected items are usually items that have already been selected - // or set by the user as a default value so we assume they are not disabled - isDisabled: selected && isOptionDisabled(selected, selectValue), - label: label, - labels: labels - }, ariaSelection); - message = messages.onChange(onChangeProps); - } - return message; - }, [ariaSelection, messages, isOptionDisabled, selectValue, getOptionLabel]); - var ariaFocused = React.useMemo(function () { - var focusMsg = ''; - var focused = focusedOption || focusedValue; - var isSelected = !!(focusedOption && selectValue && selectValue.includes(focusedOption)); - if (focused && messages.onFocus) { - var onFocusProps = { - focused: focused, - label: getOptionLabel(focused), - isDisabled: isOptionDisabled(focused, selectValue), - isSelected: isSelected, - options: focusableOptions, - context: focused === focusedOption ? 'menu' : 'value', - selectValue: selectValue - }; - focusMsg = messages.onFocus(onFocusProps); - } - return focusMsg; - }, [focusedOption, focusedValue, getOptionLabel, isOptionDisabled, messages, focusableOptions, selectValue]); - var ariaResults = React.useMemo(function () { - var resultsMsg = ''; - if (menuIsOpen && options.length && messages.onFilter) { - var resultsMessage = screenReaderStatus({ - count: focusableOptions.length - }); - resultsMsg = messages.onFilter({ - inputValue: inputValue, - resultsMessage: resultsMessage - }); - } - return resultsMsg; - }, [focusableOptions, inputValue, menuIsOpen, messages, options, screenReaderStatus]); - var ariaGuidance = React.useMemo(function () { - var guidanceMsg = ''; - if (messages.guidance) { - var context = focusedValue ? 'value' : menuIsOpen ? 'menu' : 'input'; - guidanceMsg = messages.guidance({ - 'aria-label': ariaLabel, - context: context, - isDisabled: focusedOption && isOptionDisabled(focusedOption, selectValue), - isMulti: isMulti, - isSearchable: isSearchable, - tabSelectsValue: tabSelectsValue - }); - } - return guidanceMsg; - }, [ariaLabel, focusedOption, focusedValue, isMulti, isOptionDisabled, isSearchable, menuIsOpen, messages, selectValue, tabSelectsValue]); - var ariaContext = "".concat(ariaFocused, " ").concat(ariaResults, " ").concat(ariaGuidance); - var ScreenReaderText = react.jsx(React.Fragment, null, react.jsx("span", { - id: "aria-selection" - }, ariaSelected), react.jsx("span", { - id: "aria-context" - }, ariaContext)); - var isInitialFocus = (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus'; - return react.jsx(React.Fragment, null, react.jsx(A11yText, { - id: id - }, isInitialFocus && ScreenReaderText), react.jsx(A11yText, { - "aria-live": ariaLive, - "aria-atomic": "false", - "aria-relevant": "additions text" - }, isFocused && !isInitialFocus && ScreenReaderText)); -}; - -var diacritics = [{ - base: 'A', - letters: "A\u24B6\uFF21\xC0\xC1\xC2\u1EA6\u1EA4\u1EAA\u1EA8\xC3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\xC4\u01DE\u1EA2\xC5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F" -}, { - base: 'AA', - letters: "\uA732" -}, { - base: 'AE', - letters: "\xC6\u01FC\u01E2" -}, { - base: 'AO', - letters: "\uA734" -}, { - base: 'AU', - letters: "\uA736" -}, { - base: 'AV', - letters: "\uA738\uA73A" -}, { - base: 'AY', - letters: "\uA73C" -}, { - base: 'B', - letters: "B\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181" -}, { - base: 'C', - letters: "C\u24B8\uFF23\u0106\u0108\u010A\u010C\xC7\u1E08\u0187\u023B\uA73E" -}, { - base: 'D', - letters: "D\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779" -}, { - base: 'DZ', - letters: "\u01F1\u01C4" -}, { - base: 'Dz', - letters: "\u01F2\u01C5" -}, { - base: 'E', - letters: "E\u24BA\uFF25\xC8\xC9\xCA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\xCB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E" -}, { - base: 'F', - letters: "F\u24BB\uFF26\u1E1E\u0191\uA77B" -}, { - base: 'G', - letters: "G\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E" -}, { - base: 'H', - letters: "H\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D" -}, { - base: 'I', - letters: "I\u24BE\uFF29\xCC\xCD\xCE\u0128\u012A\u012C\u0130\xCF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197" -}, { - base: 'J', - letters: "J\u24BF\uFF2A\u0134\u0248" -}, { - base: 'K', - letters: "K\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2" -}, { - base: 'L', - letters: "L\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780" -}, { - base: 'LJ', - letters: "\u01C7" -}, { - base: 'Lj', - letters: "\u01C8" -}, { - base: 'M', - letters: "M\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C" -}, { - base: 'N', - letters: "N\u24C3\uFF2E\u01F8\u0143\xD1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4" -}, { - base: 'NJ', - letters: "\u01CA" -}, { - base: 'Nj', - letters: "\u01CB" -}, { - base: 'O', - letters: "O\u24C4\uFF2F\xD2\xD3\xD4\u1ED2\u1ED0\u1ED6\u1ED4\xD5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\xD6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\xD8\u01FE\u0186\u019F\uA74A\uA74C" -}, { - base: 'OI', - letters: "\u01A2" -}, { - base: 'OO', - letters: "\uA74E" -}, { - base: 'OU', - letters: "\u0222" -}, { - base: 'P', - letters: "P\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754" -}, { - base: 'Q', - letters: "Q\u24C6\uFF31\uA756\uA758\u024A" -}, { - base: 'R', - letters: "R\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782" -}, { - base: 'S', - letters: "S\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784" -}, { - base: 'T', - letters: "T\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786" -}, { - base: 'TZ', - letters: "\uA728" -}, { - base: 'U', - letters: "U\u24CA\uFF35\xD9\xDA\xDB\u0168\u1E78\u016A\u1E7A\u016C\xDC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244" -}, { - base: 'V', - letters: "V\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245" -}, { - base: 'VY', - letters: "\uA760" -}, { - base: 'W', - letters: "W\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72" -}, { - base: 'X', - letters: "X\u24CD\uFF38\u1E8A\u1E8C" -}, { - base: 'Y', - letters: "Y\u24CE\uFF39\u1EF2\xDD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE" -}, { - base: 'Z', - letters: "Z\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762" -}, { - base: 'a', - letters: "a\u24D0\uFF41\u1E9A\xE0\xE1\xE2\u1EA7\u1EA5\u1EAB\u1EA9\xE3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\xE4\u01DF\u1EA3\xE5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250" -}, { - base: 'aa', - letters: "\uA733" -}, { - base: 'ae', - letters: "\xE6\u01FD\u01E3" -}, { - base: 'ao', - letters: "\uA735" -}, { - base: 'au', - letters: "\uA737" -}, { - base: 'av', - letters: "\uA739\uA73B" -}, { - base: 'ay', - letters: "\uA73D" -}, { - base: 'b', - letters: "b\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253" -}, { - base: 'c', - letters: "c\u24D2\uFF43\u0107\u0109\u010B\u010D\xE7\u1E09\u0188\u023C\uA73F\u2184" -}, { - base: 'd', - letters: "d\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A" -}, { - base: 'dz', - letters: "\u01F3\u01C6" -}, { - base: 'e', - letters: "e\u24D4\uFF45\xE8\xE9\xEA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\xEB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD" -}, { - base: 'f', - letters: "f\u24D5\uFF46\u1E1F\u0192\uA77C" -}, { - base: 'g', - letters: "g\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F" -}, { - base: 'h', - letters: "h\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265" -}, { - base: 'hv', - letters: "\u0195" -}, { - base: 'i', - letters: "i\u24D8\uFF49\xEC\xED\xEE\u0129\u012B\u012D\xEF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131" -}, { - base: 'j', - letters: "j\u24D9\uFF4A\u0135\u01F0\u0249" -}, { - base: 'k', - letters: "k\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3" -}, { - base: 'l', - letters: "l\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747" -}, { - base: 'lj', - letters: "\u01C9" -}, { - base: 'm', - letters: "m\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F" -}, { - base: 'n', - letters: "n\u24DD\uFF4E\u01F9\u0144\xF1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5" -}, { - base: 'nj', - letters: "\u01CC" -}, { - base: 'o', - letters: "o\u24DE\uFF4F\xF2\xF3\xF4\u1ED3\u1ED1\u1ED7\u1ED5\xF5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\xF6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\xF8\u01FF\u0254\uA74B\uA74D\u0275" -}, { - base: 'oi', - letters: "\u01A3" -}, { - base: 'ou', - letters: "\u0223" -}, { - base: 'oo', - letters: "\uA74F" -}, { - base: 'p', - letters: "p\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755" -}, { - base: 'q', - letters: "q\u24E0\uFF51\u024B\uA757\uA759" -}, { - base: 'r', - letters: "r\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783" -}, { - base: 's', - letters: "s\u24E2\uFF53\xDF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B" -}, { - base: 't', - letters: "t\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787" -}, { - base: 'tz', - letters: "\uA729" -}, { - base: 'u', - letters: "u\u24E4\uFF55\xF9\xFA\xFB\u0169\u1E79\u016B\u1E7B\u016D\xFC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289" -}, { - base: 'v', - letters: "v\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C" -}, { - base: 'vy', - letters: "\uA761" -}, { - base: 'w', - letters: "w\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73" -}, { - base: 'x', - letters: "x\u24E7\uFF58\u1E8B\u1E8D" -}, { - base: 'y', - letters: "y\u24E8\uFF59\u1EF3\xFD\u0177\u1EF9\u0233\u1E8F\xFF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF" -}, { - base: 'z', - letters: "z\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763" -}]; -var anyDiacritic = new RegExp('[' + diacritics.map(function (d) { - return d.letters; -}).join('') + ']', 'g'); -var diacriticToBase = {}; -for (var i = 0; i < diacritics.length; i++) { - var diacritic = diacritics[i]; - for (var j = 0; j < diacritic.letters.length; j++) { - diacriticToBase[diacritic.letters[j]] = diacritic.base; - } -} -var stripDiacritics = function stripDiacritics(str) { - return str.replace(anyDiacritic, function (match) { - return diacriticToBase[match]; - }); -}; - -var memoizedStripDiacriticsForInput = memoizeOne__default['default'](stripDiacritics); -var trimString = function trimString(str) { - return str.replace(/^\s+|\s+$/g, ''); -}; -var defaultStringify = function defaultStringify(option) { - return "".concat(option.label, " ").concat(option.value); -}; -var createFilter = function createFilter(config) { - return function (option, rawInput) { - // eslint-disable-next-line no-underscore-dangle - if (option.data.__isNew__) return true; - var _ignoreCase$ignoreAcc = _objectSpread({ - ignoreCase: true, - ignoreAccents: true, - stringify: defaultStringify, - trim: true, - matchFrom: 'any' - }, config), - ignoreCase = _ignoreCase$ignoreAcc.ignoreCase, - ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents, - stringify = _ignoreCase$ignoreAcc.stringify, - trim = _ignoreCase$ignoreAcc.trim, - matchFrom = _ignoreCase$ignoreAcc.matchFrom; - var input = trim ? trimString(rawInput) : rawInput; - var candidate = trim ? trimString(stringify(option)) : stringify(option); - if (ignoreCase) { - input = input.toLowerCase(); - candidate = candidate.toLowerCase(); - } - if (ignoreAccents) { - input = memoizedStripDiacriticsForInput(input); - candidate = stripDiacritics(candidate); - } - return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1; - }; -}; - -var _excluded = ["innerRef"]; -function DummyInput(_ref) { - var innerRef = _ref.innerRef, - props = _objectWithoutProperties(_ref, _excluded); - // Remove animation props not meant for HTML elements - var filteredProps = index.removeProps(props, 'onExited', 'in', 'enter', 'exit', 'appear'); - return react.jsx("input", _extends({ - ref: innerRef - }, filteredProps, { - css: /*#__PURE__*/react.css({ - label: 'dummyInput', - // get rid of any default styles - background: 0, - border: 0, - // important! this hides the flashing cursor - caretColor: 'transparent', - fontSize: 'inherit', - gridArea: '1 / 1 / 2 / 3', - outline: 0, - padding: 0, - // important! without `width` browsers won't allow focus - width: 1, - // remove cursor on desktop - color: 'transparent', - // remove cursor on mobile whilst maintaining "scroll into view" behaviour - left: -100, - opacity: 0, - position: 'relative', - transform: 'scale(.01)' - }, "" , "" ) - })); -} - -var cancelScroll = function cancelScroll(event) { - event.preventDefault(); - event.stopPropagation(); -}; -function useScrollCapture(_ref) { - var isEnabled = _ref.isEnabled, - onBottomArrive = _ref.onBottomArrive, - onBottomLeave = _ref.onBottomLeave, - onTopArrive = _ref.onTopArrive, - onTopLeave = _ref.onTopLeave; - var isBottom = React.useRef(false); - var isTop = React.useRef(false); - var touchStart = React.useRef(0); - var scrollTarget = React.useRef(null); - var handleEventDelta = React.useCallback(function (event, delta) { - if (scrollTarget.current === null) return; - var _scrollTarget$current = scrollTarget.current, - scrollTop = _scrollTarget$current.scrollTop, - scrollHeight = _scrollTarget$current.scrollHeight, - clientHeight = _scrollTarget$current.clientHeight; - var target = scrollTarget.current; - var isDeltaPositive = delta > 0; - var availableScroll = scrollHeight - clientHeight - scrollTop; - var shouldCancelScroll = false; - - // reset bottom/top flags - if (availableScroll > delta && isBottom.current) { - if (onBottomLeave) onBottomLeave(event); - isBottom.current = false; - } - if (isDeltaPositive && isTop.current) { - if (onTopLeave) onTopLeave(event); - isTop.current = false; - } - - // bottom limit - if (isDeltaPositive && delta > availableScroll) { - if (onBottomArrive && !isBottom.current) { - onBottomArrive(event); - } - target.scrollTop = scrollHeight; - shouldCancelScroll = true; - isBottom.current = true; - - // top limit - } else if (!isDeltaPositive && -delta > scrollTop) { - if (onTopArrive && !isTop.current) { - onTopArrive(event); - } - target.scrollTop = 0; - shouldCancelScroll = true; - isTop.current = true; - } - - // cancel scroll - if (shouldCancelScroll) { - cancelScroll(event); - } - }, [onBottomArrive, onBottomLeave, onTopArrive, onTopLeave]); - var onWheel = React.useCallback(function (event) { - handleEventDelta(event, event.deltaY); - }, [handleEventDelta]); - var onTouchStart = React.useCallback(function (event) { - // set touch start so we can calculate touchmove delta - touchStart.current = event.changedTouches[0].clientY; - }, []); - var onTouchMove = React.useCallback(function (event) { - var deltaY = touchStart.current - event.changedTouches[0].clientY; - handleEventDelta(event, deltaY); - }, [handleEventDelta]); - var startListening = React.useCallback(function (el) { - // bail early if no element is available to attach to - if (!el) return; - var notPassive = index.supportsPassiveEvents ? { - passive: false - } : false; - el.addEventListener('wheel', onWheel, notPassive); - el.addEventListener('touchstart', onTouchStart, notPassive); - el.addEventListener('touchmove', onTouchMove, notPassive); - }, [onTouchMove, onTouchStart, onWheel]); - var stopListening = React.useCallback(function (el) { - // bail early if no element is available to detach from - if (!el) return; - el.removeEventListener('wheel', onWheel, false); - el.removeEventListener('touchstart', onTouchStart, false); - el.removeEventListener('touchmove', onTouchMove, false); - }, [onTouchMove, onTouchStart, onWheel]); - React.useEffect(function () { - if (!isEnabled) return; - var element = scrollTarget.current; - startListening(element); - return function () { - stopListening(element); - }; - }, [isEnabled, startListening, stopListening]); - return function (element) { - scrollTarget.current = element; - }; -} - -var STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position']; -var LOCK_STYLES = { - boxSizing: 'border-box', - // account for possible declaration `width: 100%;` on body - overflow: 'hidden', - position: 'relative', - height: '100%' -}; -function preventTouchMove(e) { - e.preventDefault(); -} -function allowTouchMove(e) { - e.stopPropagation(); -} -function preventInertiaScroll() { - var top = this.scrollTop; - var totalScroll = this.scrollHeight; - var currentScroll = top + this.offsetHeight; - if (top === 0) { - this.scrollTop = 1; - } else if (currentScroll === totalScroll) { - this.scrollTop = top - 1; - } -} - -// `ontouchstart` check works on most browsers -// `maxTouchPoints` works on IE10/11 and Surface -function isTouchDevice() { - return 'ontouchstart' in window || navigator.maxTouchPoints; -} -var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement); -var activeScrollLocks = 0; -var listenerOptions = { - capture: false, - passive: false -}; -function useScrollLock(_ref) { - var isEnabled = _ref.isEnabled, - _ref$accountForScroll = _ref.accountForScrollbars, - accountForScrollbars = _ref$accountForScroll === void 0 ? true : _ref$accountForScroll; - var originalStyles = React.useRef({}); - var scrollTarget = React.useRef(null); - var addScrollLock = React.useCallback(function (touchScrollTarget) { - if (!canUseDOM) return; - var target = document.body; - var targetStyle = target && target.style; - if (accountForScrollbars) { - // store any styles already applied to the body - STYLE_KEYS.forEach(function (key) { - var val = targetStyle && targetStyle[key]; - originalStyles.current[key] = val; - }); - } - - // apply the lock styles and padding if this is the first scroll lock - if (accountForScrollbars && activeScrollLocks < 1) { - var currentPadding = parseInt(originalStyles.current.paddingRight, 10) || 0; - var clientWidth = document.body ? document.body.clientWidth : 0; - var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0; - Object.keys(LOCK_STYLES).forEach(function (key) { - var val = LOCK_STYLES[key]; - if (targetStyle) { - targetStyle[key] = val; - } - }); - if (targetStyle) { - targetStyle.paddingRight = "".concat(adjustedPadding, "px"); - } - } - - // account for touch devices - if (target && isTouchDevice()) { - // Mobile Safari ignores { overflow: hidden } declaration on the body. - target.addEventListener('touchmove', preventTouchMove, listenerOptions); - - // Allow scroll on provided target - if (touchScrollTarget) { - touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, listenerOptions); - touchScrollTarget.addEventListener('touchmove', allowTouchMove, listenerOptions); - } - } - - // increment active scroll locks - activeScrollLocks += 1; - }, [accountForScrollbars]); - var removeScrollLock = React.useCallback(function (touchScrollTarget) { - if (!canUseDOM) return; - var target = document.body; - var targetStyle = target && target.style; - - // safely decrement active scroll locks - activeScrollLocks = Math.max(activeScrollLocks - 1, 0); - - // reapply original body styles, if any - if (accountForScrollbars && activeScrollLocks < 1) { - STYLE_KEYS.forEach(function (key) { - var val = originalStyles.current[key]; - if (targetStyle) { - targetStyle[key] = val; - } - }); - } - - // remove touch listeners - if (target && isTouchDevice()) { - target.removeEventListener('touchmove', preventTouchMove, listenerOptions); - if (touchScrollTarget) { - touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, listenerOptions); - touchScrollTarget.removeEventListener('touchmove', allowTouchMove, listenerOptions); - } - } - }, [accountForScrollbars]); - React.useEffect(function () { - if (!isEnabled) return; - var element = scrollTarget.current; - addScrollLock(element); - return function () { - removeScrollLock(element); - }; - }, [isEnabled, addScrollLock, removeScrollLock]); - return function (element) { - scrollTarget.current = element; - }; -} - -var blurSelectInput = function blurSelectInput() { - return document.activeElement && document.activeElement.blur(); -}; -var _ref2$1 = { - name: "1kfdb0e", - styles: "position:fixed;left:0;bottom:0;right:0;top:0" -} ; -function ScrollManager(_ref) { - var children = _ref.children, - lockEnabled = _ref.lockEnabled, - _ref$captureEnabled = _ref.captureEnabled, - captureEnabled = _ref$captureEnabled === void 0 ? true : _ref$captureEnabled, - onBottomArrive = _ref.onBottomArrive, - onBottomLeave = _ref.onBottomLeave, - onTopArrive = _ref.onTopArrive, - onTopLeave = _ref.onTopLeave; - var setScrollCaptureTarget = useScrollCapture({ - isEnabled: captureEnabled, - onBottomArrive: onBottomArrive, - onBottomLeave: onBottomLeave, - onTopArrive: onTopArrive, - onTopLeave: onTopLeave - }); - var setScrollLockTarget = useScrollLock({ - isEnabled: lockEnabled - }); - var targetRef = function targetRef(element) { - setScrollCaptureTarget(element); - setScrollLockTarget(element); - }; - return react.jsx(React.Fragment, null, lockEnabled && react.jsx("div", { - onClick: blurSelectInput, - css: _ref2$1 - }), children(targetRef)); -} - -var _ref2 = { - name: "1a0ro4n-requiredInput", - styles: "label:requiredInput;opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;width:100%" -} ; -var RequiredInput = function RequiredInput(_ref) { - var name = _ref.name, - onFocus = _ref.onFocus; - return react.jsx("input", { - required: true, - name: name, - tabIndex: -1, - onFocus: onFocus, - css: _ref2 - // Prevent `Switching from uncontrolled to controlled` error - , - value: "", - onChange: function onChange() {} - }); -}; - -var formatGroupLabel = function formatGroupLabel(group) { - return group.label; -}; -var getOptionLabel$1 = function getOptionLabel(option) { - return option.label; -}; -var getOptionValue$1 = function getOptionValue(option) { - return option.value; -}; -var isOptionDisabled = function isOptionDisabled(option) { - return !!option.isDisabled; -}; - -var defaultStyles = { - clearIndicator: index.clearIndicatorCSS, - container: index.containerCSS, - control: index.css, - dropdownIndicator: index.dropdownIndicatorCSS, - group: index.groupCSS, - groupHeading: index.groupHeadingCSS, - indicatorsContainer: index.indicatorsContainerCSS, - indicatorSeparator: index.indicatorSeparatorCSS, - input: index.inputCSS, - loadingIndicator: index.loadingIndicatorCSS, - loadingMessage: index.loadingMessageCSS, - menu: index.menuCSS, - menuList: index.menuListCSS, - menuPortal: index.menuPortalCSS, - multiValue: index.multiValueCSS, - multiValueLabel: index.multiValueLabelCSS, - multiValueRemove: index.multiValueRemoveCSS, - noOptionsMessage: index.noOptionsMessageCSS, - option: index.optionCSS, - placeholder: index.placeholderCSS, - singleValue: index.css$1, - valueContainer: index.valueContainerCSS -}; -// Merge Utility -// Allows consumers to extend a base Select with additional styles - -function mergeStyles(source) { - var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - // initialize with source styles - var styles = _objectSpread({}, source); - - // massage in target styles - Object.keys(target).forEach(function (keyAsString) { - var key = keyAsString; - if (source[key]) { - styles[key] = function (rsCss, props) { - return target[key](source[key](rsCss, props), props); - }; - } else { - styles[key] = target[key]; - } - }); - return styles; -} - -var colors = { - primary: '#2684FF', - primary75: '#4C9AFF', - primary50: '#B2D4FF', - primary25: '#DEEBFF', - danger: '#DE350B', - dangerLight: '#FFBDAD', - neutral0: 'hsl(0, 0%, 100%)', - neutral5: 'hsl(0, 0%, 95%)', - neutral10: 'hsl(0, 0%, 90%)', - neutral20: 'hsl(0, 0%, 80%)', - neutral30: 'hsl(0, 0%, 70%)', - neutral40: 'hsl(0, 0%, 60%)', - neutral50: 'hsl(0, 0%, 50%)', - neutral60: 'hsl(0, 0%, 40%)', - neutral70: 'hsl(0, 0%, 30%)', - neutral80: 'hsl(0, 0%, 20%)', - neutral90: 'hsl(0, 0%, 10%)' -}; -var borderRadius = 4; -// Used to calculate consistent margin/padding on elements -var baseUnit = 4; -// The minimum height of the control -var controlHeight = 38; -// The amount of space between the control and menu */ -var menuGutter = baseUnit * 2; -var spacing = { - baseUnit: baseUnit, - controlHeight: controlHeight, - menuGutter: menuGutter -}; -var defaultTheme = { - borderRadius: borderRadius, - colors: colors, - spacing: spacing -}; - -var defaultProps = { - 'aria-live': 'polite', - backspaceRemovesValue: true, - blurInputOnSelect: index.isTouchCapable(), - captureMenuScroll: !index.isTouchCapable(), - classNames: {}, - closeMenuOnSelect: true, - closeMenuOnScroll: false, - components: {}, - controlShouldRenderValue: true, - escapeClearsValue: false, - filterOption: createFilter(), - formatGroupLabel: formatGroupLabel, - getOptionLabel: getOptionLabel$1, - getOptionValue: getOptionValue$1, - isDisabled: false, - isLoading: false, - isMulti: false, - isRtl: false, - isSearchable: true, - isOptionDisabled: isOptionDisabled, - loadingMessage: function loadingMessage() { - return 'Loading...'; - }, - maxMenuHeight: 300, - minMenuHeight: 140, - menuIsOpen: false, - menuPlacement: 'bottom', - menuPosition: 'absolute', - menuShouldBlockScroll: false, - menuShouldScrollIntoView: !index.isMobileDevice(), - noOptionsMessage: function noOptionsMessage() { - return 'No options'; - }, - openMenuOnFocus: false, - openMenuOnClick: true, - options: [], - pageSize: 5, - placeholder: 'Select...', - screenReaderStatus: function screenReaderStatus(_ref) { - var count = _ref.count; - return "".concat(count, " result").concat(count !== 1 ? 's' : '', " available"); - }, - styles: {}, - tabIndex: 0, - tabSelectsValue: true, - unstyled: false -}; -function toCategorizedOption(props, option, selectValue, index) { - var isDisabled = _isOptionDisabled(props, option, selectValue); - var isSelected = _isOptionSelected(props, option, selectValue); - var label = getOptionLabel(props, option); - var value = getOptionValue(props, option); - return { - type: 'option', - data: option, - isDisabled: isDisabled, - isSelected: isSelected, - label: label, - value: value, - index: index - }; -} -function buildCategorizedOptions(props, selectValue) { - return props.options.map(function (groupOrOption, groupOrOptionIndex) { - if ('options' in groupOrOption) { - var categorizedOptions = groupOrOption.options.map(function (option, optionIndex) { - return toCategorizedOption(props, option, selectValue, optionIndex); - }).filter(function (categorizedOption) { - return isFocusable(props, categorizedOption); - }); - return categorizedOptions.length > 0 ? { - type: 'group', - data: groupOrOption, - options: categorizedOptions, - index: groupOrOptionIndex - } : undefined; - } - var categorizedOption = toCategorizedOption(props, groupOrOption, selectValue, groupOrOptionIndex); - return isFocusable(props, categorizedOption) ? categorizedOption : undefined; - }).filter(index.notNullish); -} -function buildFocusableOptionsFromCategorizedOptions(categorizedOptions) { - return categorizedOptions.reduce(function (optionsAccumulator, categorizedOption) { - if (categorizedOption.type === 'group') { - optionsAccumulator.push.apply(optionsAccumulator, _toConsumableArray(categorizedOption.options.map(function (option) { - return option.data; - }))); - } else { - optionsAccumulator.push(categorizedOption.data); - } - return optionsAccumulator; - }, []); -} -function buildFocusableOptions(props, selectValue) { - return buildFocusableOptionsFromCategorizedOptions(buildCategorizedOptions(props, selectValue)); -} -function isFocusable(props, categorizedOption) { - var _props$inputValue = props.inputValue, - inputValue = _props$inputValue === void 0 ? '' : _props$inputValue; - var data = categorizedOption.data, - isSelected = categorizedOption.isSelected, - label = categorizedOption.label, - value = categorizedOption.value; - return (!shouldHideSelectedOptions(props) || !isSelected) && _filterOption(props, { - label: label, - value: value, - data: data - }, inputValue); -} -function getNextFocusedValue(state, nextSelectValue) { - var focusedValue = state.focusedValue, - lastSelectValue = state.selectValue; - var lastFocusedIndex = lastSelectValue.indexOf(focusedValue); - if (lastFocusedIndex > -1) { - var nextFocusedIndex = nextSelectValue.indexOf(focusedValue); - if (nextFocusedIndex > -1) { - // the focused value is still in the selectValue, return it - return focusedValue; - } else if (lastFocusedIndex < nextSelectValue.length) { - // the focusedValue is not present in the next selectValue array by - // reference, so return the new value at the same index - return nextSelectValue[lastFocusedIndex]; - } - } - return null; -} -function getNextFocusedOption(state, options) { - var lastFocusedOption = state.focusedOption; - return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0]; -} -var getOptionLabel = function getOptionLabel(props, data) { - return props.getOptionLabel(data); -}; -var getOptionValue = function getOptionValue(props, data) { - return props.getOptionValue(data); -}; -function _isOptionDisabled(props, option, selectValue) { - return typeof props.isOptionDisabled === 'function' ? props.isOptionDisabled(option, selectValue) : false; -} -function _isOptionSelected(props, option, selectValue) { - if (selectValue.indexOf(option) > -1) return true; - if (typeof props.isOptionSelected === 'function') { - return props.isOptionSelected(option, selectValue); - } - var candidate = getOptionValue(props, option); - return selectValue.some(function (i) { - return getOptionValue(props, i) === candidate; - }); -} -function _filterOption(props, option, inputValue) { - return props.filterOption ? props.filterOption(option, inputValue) : true; -} -var shouldHideSelectedOptions = function shouldHideSelectedOptions(props) { - var hideSelectedOptions = props.hideSelectedOptions, - isMulti = props.isMulti; - if (hideSelectedOptions === undefined) return isMulti; - return hideSelectedOptions; -}; -var instanceId = 1; -var Select = /*#__PURE__*/function (_Component) { - _inherits(Select, _Component); - var _super = _createSuper(Select); - // Misc. Instance Properties - // ------------------------------ - - // TODO - - // Refs - // ------------------------------ - - // Lifecycle - // ------------------------------ - - function Select(_props) { - var _this; - _classCallCheck(this, Select); - _this = _super.call(this, _props); - _this.state = { - ariaSelection: null, - focusedOption: null, - focusedValue: null, - inputIsHidden: false, - isFocused: false, - selectValue: [], - clearFocusValueOnUpdate: false, - prevWasFocused: false, - inputIsHiddenAfterUpdate: undefined, - prevProps: undefined - }; - _this.blockOptionHover = false; - _this.isComposing = false; - _this.commonProps = void 0; - _this.initialTouchX = 0; - _this.initialTouchY = 0; - _this.instancePrefix = ''; - _this.openAfterFocus = false; - _this.scrollToFocusedOptionOnUpdate = false; - _this.userIsDragging = void 0; - _this.controlRef = null; - _this.getControlRef = function (ref) { - _this.controlRef = ref; - }; - _this.focusedOptionRef = null; - _this.getFocusedOptionRef = function (ref) { - _this.focusedOptionRef = ref; - }; - _this.menuListRef = null; - _this.getMenuListRef = function (ref) { - _this.menuListRef = ref; - }; - _this.inputRef = null; - _this.getInputRef = function (ref) { - _this.inputRef = ref; - }; - _this.focus = _this.focusInput; - _this.blur = _this.blurInput; - _this.onChange = function (newValue, actionMeta) { - var _this$props = _this.props, - onChange = _this$props.onChange, - name = _this$props.name; - actionMeta.name = name; - _this.ariaOnChange(newValue, actionMeta); - onChange(newValue, actionMeta); - }; - _this.setValue = function (newValue, action, option) { - var _this$props2 = _this.props, - closeMenuOnSelect = _this$props2.closeMenuOnSelect, - isMulti = _this$props2.isMulti, - inputValue = _this$props2.inputValue; - _this.onInputChange('', { - action: 'set-value', - prevInputValue: inputValue - }); - if (closeMenuOnSelect) { - _this.setState({ - inputIsHiddenAfterUpdate: !isMulti - }); - _this.onMenuClose(); - } - // when the select value should change, we should reset focusedValue - _this.setState({ - clearFocusValueOnUpdate: true - }); - _this.onChange(newValue, { - action: action, - option: option - }); - }; - _this.selectOption = function (newValue) { - var _this$props3 = _this.props, - blurInputOnSelect = _this$props3.blurInputOnSelect, - isMulti = _this$props3.isMulti, - name = _this$props3.name; - var selectValue = _this.state.selectValue; - var deselected = isMulti && _this.isOptionSelected(newValue, selectValue); - var isDisabled = _this.isOptionDisabled(newValue, selectValue); - if (deselected) { - var candidate = _this.getOptionValue(newValue); - _this.setValue(index.multiValueAsValue(selectValue.filter(function (i) { - return _this.getOptionValue(i) !== candidate; - })), 'deselect-option', newValue); - } else if (!isDisabled) { - // Select option if option is not disabled - if (isMulti) { - _this.setValue(index.multiValueAsValue([].concat(_toConsumableArray(selectValue), [newValue])), 'select-option', newValue); - } else { - _this.setValue(index.singleValueAsValue(newValue), 'select-option'); - } - } else { - _this.ariaOnChange(index.singleValueAsValue(newValue), { - action: 'select-option', - option: newValue, - name: name - }); - return; - } - if (blurInputOnSelect) { - _this.blurInput(); - } - }; - _this.removeValue = function (removedValue) { - var isMulti = _this.props.isMulti; - var selectValue = _this.state.selectValue; - var candidate = _this.getOptionValue(removedValue); - var newValueArray = selectValue.filter(function (i) { - return _this.getOptionValue(i) !== candidate; - }); - var newValue = index.valueTernary(isMulti, newValueArray, newValueArray[0] || null); - _this.onChange(newValue, { - action: 'remove-value', - removedValue: removedValue - }); - _this.focusInput(); - }; - _this.clearValue = function () { - var selectValue = _this.state.selectValue; - _this.onChange(index.valueTernary(_this.props.isMulti, [], null), { - action: 'clear', - removedValues: selectValue - }); - }; - _this.popValue = function () { - var isMulti = _this.props.isMulti; - var selectValue = _this.state.selectValue; - var lastSelectedValue = selectValue[selectValue.length - 1]; - var newValueArray = selectValue.slice(0, selectValue.length - 1); - var newValue = index.valueTernary(isMulti, newValueArray, newValueArray[0] || null); - _this.onChange(newValue, { - action: 'pop-value', - removedValue: lastSelectedValue - }); - }; - _this.getValue = function () { - return _this.state.selectValue; - }; - _this.cx = function () { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - return index.classNames.apply(void 0, [_this.props.classNamePrefix].concat(args)); - }; - _this.getOptionLabel = function (data) { - return getOptionLabel(_this.props, data); - }; - _this.getOptionValue = function (data) { - return getOptionValue(_this.props, data); - }; - _this.getStyles = function (key, props) { - var unstyled = _this.props.unstyled; - var base = defaultStyles[key](props, unstyled); - base.boxSizing = 'border-box'; - var custom = _this.props.styles[key]; - return custom ? custom(base, props) : base; - }; - _this.getClassNames = function (key, props) { - var _this$props$className, _this$props$className2; - return (_this$props$className = (_this$props$className2 = _this.props.classNames)[key]) === null || _this$props$className === void 0 ? void 0 : _this$props$className.call(_this$props$className2, props); - }; - _this.getElementId = function (element) { - return "".concat(_this.instancePrefix, "-").concat(element); - }; - _this.getComponents = function () { - return index.defaultComponents(_this.props); - }; - _this.buildCategorizedOptions = function () { - return buildCategorizedOptions(_this.props, _this.state.selectValue); - }; - _this.getCategorizedOptions = function () { - return _this.props.menuIsOpen ? _this.buildCategorizedOptions() : []; - }; - _this.buildFocusableOptions = function () { - return buildFocusableOptionsFromCategorizedOptions(_this.buildCategorizedOptions()); - }; - _this.getFocusableOptions = function () { - return _this.props.menuIsOpen ? _this.buildFocusableOptions() : []; - }; - _this.ariaOnChange = function (value, actionMeta) { - _this.setState({ - ariaSelection: _objectSpread({ - value: value - }, actionMeta) - }); - }; - _this.onMenuMouseDown = function (event) { - if (event.button !== 0) { - return; - } - event.stopPropagation(); - event.preventDefault(); - _this.focusInput(); - }; - _this.onMenuMouseMove = function (event) { - _this.blockOptionHover = false; - }; - _this.onControlMouseDown = function (event) { - // Event captured by dropdown indicator - if (event.defaultPrevented) { - return; - } - var openMenuOnClick = _this.props.openMenuOnClick; - if (!_this.state.isFocused) { - if (openMenuOnClick) { - _this.openAfterFocus = true; - } - _this.focusInput(); - } else if (!_this.props.menuIsOpen) { - if (openMenuOnClick) { - _this.openMenu('first'); - } - } else { - if (event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') { - _this.onMenuClose(); - } - } - if (event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') { - event.preventDefault(); - } - }; - _this.onDropdownIndicatorMouseDown = function (event) { - // ignore mouse events that weren't triggered by the primary button - if (event && event.type === 'mousedown' && event.button !== 0) { - return; - } - if (_this.props.isDisabled) return; - var _this$props4 = _this.props, - isMulti = _this$props4.isMulti, - menuIsOpen = _this$props4.menuIsOpen; - _this.focusInput(); - if (menuIsOpen) { - _this.setState({ - inputIsHiddenAfterUpdate: !isMulti - }); - _this.onMenuClose(); - } else { - _this.openMenu('first'); - } - event.preventDefault(); - }; - _this.onClearIndicatorMouseDown = function (event) { - // ignore mouse events that weren't triggered by the primary button - if (event && event.type === 'mousedown' && event.button !== 0) { - return; - } - _this.clearValue(); - event.preventDefault(); - _this.openAfterFocus = false; - if (event.type === 'touchend') { - _this.focusInput(); - } else { - setTimeout(function () { - return _this.focusInput(); - }); - } - }; - _this.onScroll = function (event) { - if (typeof _this.props.closeMenuOnScroll === 'boolean') { - if (event.target instanceof HTMLElement && index.isDocumentElement(event.target)) { - _this.props.onMenuClose(); - } - } else if (typeof _this.props.closeMenuOnScroll === 'function') { - if (_this.props.closeMenuOnScroll(event)) { - _this.props.onMenuClose(); - } - } - }; - _this.onCompositionStart = function () { - _this.isComposing = true; - }; - _this.onCompositionEnd = function () { - _this.isComposing = false; - }; - _this.onTouchStart = function (_ref2) { - var touches = _ref2.touches; - var touch = touches && touches.item(0); - if (!touch) { - return; - } - _this.initialTouchX = touch.clientX; - _this.initialTouchY = touch.clientY; - _this.userIsDragging = false; - }; - _this.onTouchMove = function (_ref3) { - var touches = _ref3.touches; - var touch = touches && touches.item(0); - if (!touch) { - return; - } - var deltaX = Math.abs(touch.clientX - _this.initialTouchX); - var deltaY = Math.abs(touch.clientY - _this.initialTouchY); - var moveThreshold = 5; - _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold; - }; - _this.onTouchEnd = function (event) { - if (_this.userIsDragging) return; - - // close the menu if the user taps outside - // we're checking on event.target here instead of event.currentTarget, because we want to assert information - // on events on child elements, not the document (which we've attached this handler to). - if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) { - _this.blurInput(); - } - - // reset move vars - _this.initialTouchX = 0; - _this.initialTouchY = 0; - }; - _this.onControlTouchEnd = function (event) { - if (_this.userIsDragging) return; - _this.onControlMouseDown(event); - }; - _this.onClearIndicatorTouchEnd = function (event) { - if (_this.userIsDragging) return; - _this.onClearIndicatorMouseDown(event); - }; - _this.onDropdownIndicatorTouchEnd = function (event) { - if (_this.userIsDragging) return; - _this.onDropdownIndicatorMouseDown(event); - }; - _this.handleInputChange = function (event) { - var prevInputValue = _this.props.inputValue; - var inputValue = event.currentTarget.value; - _this.setState({ - inputIsHiddenAfterUpdate: false - }); - _this.onInputChange(inputValue, { - action: 'input-change', - prevInputValue: prevInputValue - }); - if (!_this.props.menuIsOpen) { - _this.onMenuOpen(); - } - }; - _this.onInputFocus = function (event) { - if (_this.props.onFocus) { - _this.props.onFocus(event); - } - _this.setState({ - inputIsHiddenAfterUpdate: false, - isFocused: true - }); - if (_this.openAfterFocus || _this.props.openMenuOnFocus) { - _this.openMenu('first'); - } - _this.openAfterFocus = false; - }; - _this.onInputBlur = function (event) { - var prevInputValue = _this.props.inputValue; - if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) { - _this.inputRef.focus(); - return; - } - if (_this.props.onBlur) { - _this.props.onBlur(event); - } - _this.onInputChange('', { - action: 'input-blur', - prevInputValue: prevInputValue - }); - _this.onMenuClose(); - _this.setState({ - focusedValue: null, - isFocused: false - }); - }; - _this.onOptionHover = function (focusedOption) { - if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) { - return; - } - _this.setState({ - focusedOption: focusedOption - }); - }; - _this.shouldHideSelectedOptions = function () { - return shouldHideSelectedOptions(_this.props); - }; - _this.onValueInputFocus = function (e) { - e.preventDefault(); - e.stopPropagation(); - _this.focus(); - }; - _this.onKeyDown = function (event) { - var _this$props5 = _this.props, - isMulti = _this$props5.isMulti, - backspaceRemovesValue = _this$props5.backspaceRemovesValue, - escapeClearsValue = _this$props5.escapeClearsValue, - inputValue = _this$props5.inputValue, - isClearable = _this$props5.isClearable, - isDisabled = _this$props5.isDisabled, - menuIsOpen = _this$props5.menuIsOpen, - onKeyDown = _this$props5.onKeyDown, - tabSelectsValue = _this$props5.tabSelectsValue, - openMenuOnFocus = _this$props5.openMenuOnFocus; - var _this$state = _this.state, - focusedOption = _this$state.focusedOption, - focusedValue = _this$state.focusedValue, - selectValue = _this$state.selectValue; - if (isDisabled) return; - if (typeof onKeyDown === 'function') { - onKeyDown(event); - if (event.defaultPrevented) { - return; - } - } - - // Block option hover events when the user has just pressed a key - _this.blockOptionHover = true; - switch (event.key) { - case 'ArrowLeft': - if (!isMulti || inputValue) return; - _this.focusValue('previous'); - break; - case 'ArrowRight': - if (!isMulti || inputValue) return; - _this.focusValue('next'); - break; - case 'Delete': - case 'Backspace': - if (inputValue) return; - if (focusedValue) { - _this.removeValue(focusedValue); - } else { - if (!backspaceRemovesValue) return; - if (isMulti) { - _this.popValue(); - } else if (isClearable) { - _this.clearValue(); - } - } - break; - case 'Tab': - if (_this.isComposing) return; - if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption || - // don't capture the event if the menu opens on focus and the focused - // option is already selected; it breaks the flow of navigation - openMenuOnFocus && _this.isOptionSelected(focusedOption, selectValue)) { - return; - } - _this.selectOption(focusedOption); - break; - case 'Enter': - if (event.keyCode === 229) { - // ignore the keydown event from an Input Method Editor(IME) - // ref. https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode - break; - } - if (menuIsOpen) { - if (!focusedOption) return; - if (_this.isComposing) return; - _this.selectOption(focusedOption); - break; - } - return; - case 'Escape': - if (menuIsOpen) { - _this.setState({ - inputIsHiddenAfterUpdate: false - }); - _this.onInputChange('', { - action: 'menu-close', - prevInputValue: inputValue - }); - _this.onMenuClose(); - } else if (isClearable && escapeClearsValue) { - _this.clearValue(); - } - break; - case ' ': - // space - if (inputValue) { - return; - } - if (!menuIsOpen) { - _this.openMenu('first'); - break; - } - if (!focusedOption) return; - _this.selectOption(focusedOption); - break; - case 'ArrowUp': - if (menuIsOpen) { - _this.focusOption('up'); - } else { - _this.openMenu('last'); - } - break; - case 'ArrowDown': - if (menuIsOpen) { - _this.focusOption('down'); - } else { - _this.openMenu('first'); - } - break; - case 'PageUp': - if (!menuIsOpen) return; - _this.focusOption('pageup'); - break; - case 'PageDown': - if (!menuIsOpen) return; - _this.focusOption('pagedown'); - break; - case 'Home': - if (!menuIsOpen) return; - _this.focusOption('first'); - break; - case 'End': - if (!menuIsOpen) return; - _this.focusOption('last'); - break; - default: - return; - } - event.preventDefault(); - }; - _this.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId); - _this.state.selectValue = index.cleanValue(_props.value); - - // Set focusedOption if menuIsOpen is set on init (e.g. defaultMenuIsOpen) - if (_props.menuIsOpen && _this.state.selectValue.length) { - var focusableOptions = _this.buildFocusableOptions(); - var optionIndex = focusableOptions.indexOf(_this.state.selectValue[0]); - _this.state.focusedOption = focusableOptions[optionIndex]; - } - return _this; - } - _createClass(Select, [{ - key: "componentDidMount", - value: function componentDidMount() { - this.startListeningComposition(); - this.startListeningToTouch(); - if (this.props.closeMenuOnScroll && document && document.addEventListener) { - // Listen to all scroll events, and filter them out inside of 'onScroll' - document.addEventListener('scroll', this.onScroll, true); - } - if (this.props.autoFocus) { - this.focusInput(); - } - - // Scroll focusedOption into view if menuIsOpen is set on mount (e.g. defaultMenuIsOpen) - if (this.props.menuIsOpen && this.state.focusedOption && this.menuListRef && this.focusedOptionRef) { - index.scrollIntoView(this.menuListRef, this.focusedOptionRef); - } - } - }, { - key: "componentDidUpdate", - value: function componentDidUpdate(prevProps) { - var _this$props6 = this.props, - isDisabled = _this$props6.isDisabled, - menuIsOpen = _this$props6.menuIsOpen; - var isFocused = this.state.isFocused; - if ( - // ensure focus is restored correctly when the control becomes enabled - isFocused && !isDisabled && prevProps.isDisabled || - // ensure focus is on the Input when the menu opens - isFocused && menuIsOpen && !prevProps.menuIsOpen) { - this.focusInput(); - } - if (isFocused && isDisabled && !prevProps.isDisabled) { - // ensure select state gets blurred in case Select is programmatically disabled while focused - // eslint-disable-next-line react/no-did-update-set-state - this.setState({ - isFocused: false - }, this.onMenuClose); - } else if (!isFocused && !isDisabled && prevProps.isDisabled && this.inputRef === document.activeElement) { - // ensure select state gets focused in case Select is programatically re-enabled while focused (Firefox) - // eslint-disable-next-line react/no-did-update-set-state - this.setState({ - isFocused: true - }); - } - - // scroll the focused option into view if necessary - if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) { - index.scrollIntoView(this.menuListRef, this.focusedOptionRef); - this.scrollToFocusedOptionOnUpdate = false; - } - } - }, { - key: "componentWillUnmount", - value: function componentWillUnmount() { - this.stopListeningComposition(); - this.stopListeningToTouch(); - document.removeEventListener('scroll', this.onScroll, true); - } - - // ============================== - // Consumer Handlers - // ============================== - }, { - key: "onMenuOpen", - value: function onMenuOpen() { - this.props.onMenuOpen(); - } - }, { - key: "onMenuClose", - value: function onMenuClose() { - this.onInputChange('', { - action: 'menu-close', - prevInputValue: this.props.inputValue - }); - this.props.onMenuClose(); - } - }, { - key: "onInputChange", - value: function onInputChange(newValue, actionMeta) { - this.props.onInputChange(newValue, actionMeta); - } - - // ============================== - // Methods - // ============================== - }, { - key: "focusInput", - value: function focusInput() { - if (!this.inputRef) return; - this.inputRef.focus(); - } - }, { - key: "blurInput", - value: function blurInput() { - if (!this.inputRef) return; - this.inputRef.blur(); - } - - // aliased for consumers - }, { - key: "openMenu", - value: function openMenu(focusOption) { - var _this2 = this; - var _this$state2 = this.state, - selectValue = _this$state2.selectValue, - isFocused = _this$state2.isFocused; - var focusableOptions = this.buildFocusableOptions(); - var openAtIndex = focusOption === 'first' ? 0 : focusableOptions.length - 1; - if (!this.props.isMulti) { - var selectedIndex = focusableOptions.indexOf(selectValue[0]); - if (selectedIndex > -1) { - openAtIndex = selectedIndex; - } - } - - // only scroll if the menu isn't already open - this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef); - this.setState({ - inputIsHiddenAfterUpdate: false, - focusedValue: null, - focusedOption: focusableOptions[openAtIndex] - }, function () { - return _this2.onMenuOpen(); - }); - } - }, { - key: "focusValue", - value: function focusValue(direction) { - var _this$state3 = this.state, - selectValue = _this$state3.selectValue, - focusedValue = _this$state3.focusedValue; - - // Only multiselects support value focusing - if (!this.props.isMulti) return; - this.setState({ - focusedOption: null - }); - var focusedIndex = selectValue.indexOf(focusedValue); - if (!focusedValue) { - focusedIndex = -1; - } - var lastIndex = selectValue.length - 1; - var nextFocus = -1; - if (!selectValue.length) return; - switch (direction) { - case 'previous': - if (focusedIndex === 0) { - // don't cycle from the start to the end - nextFocus = 0; - } else if (focusedIndex === -1) { - // if nothing is focused, focus the last value first - nextFocus = lastIndex; - } else { - nextFocus = focusedIndex - 1; - } - break; - case 'next': - if (focusedIndex > -1 && focusedIndex < lastIndex) { - nextFocus = focusedIndex + 1; - } - break; - } - this.setState({ - inputIsHidden: nextFocus !== -1, - focusedValue: selectValue[nextFocus] - }); - } - }, { - key: "focusOption", - value: function focusOption() { - var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'first'; - var pageSize = this.props.pageSize; - var focusedOption = this.state.focusedOption; - var options = this.getFocusableOptions(); - if (!options.length) return; - var nextFocus = 0; // handles 'first' - var focusedIndex = options.indexOf(focusedOption); - if (!focusedOption) { - focusedIndex = -1; - } - if (direction === 'up') { - nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1; - } else if (direction === 'down') { - nextFocus = (focusedIndex + 1) % options.length; - } else if (direction === 'pageup') { - nextFocus = focusedIndex - pageSize; - if (nextFocus < 0) nextFocus = 0; - } else if (direction === 'pagedown') { - nextFocus = focusedIndex + pageSize; - if (nextFocus > options.length - 1) nextFocus = options.length - 1; - } else if (direction === 'last') { - nextFocus = options.length - 1; - } - this.scrollToFocusedOptionOnUpdate = true; - this.setState({ - focusedOption: options[nextFocus], - focusedValue: null - }); - } - }, { - key: "getTheme", - value: - // ============================== - // Getters - // ============================== - - function getTheme() { - // Use the default theme if there are no customisations. - if (!this.props.theme) { - return defaultTheme; - } - // If the theme prop is a function, assume the function - // knows how to merge the passed-in default theme with - // its own modifications. - if (typeof this.props.theme === 'function') { - return this.props.theme(defaultTheme); - } - // Otherwise, if a plain theme object was passed in, - // overlay it with the default theme. - return _objectSpread(_objectSpread({}, defaultTheme), this.props.theme); - } - }, { - key: "getCommonProps", - value: function getCommonProps() { - var clearValue = this.clearValue, - cx = this.cx, - getStyles = this.getStyles, - getClassNames = this.getClassNames, - getValue = this.getValue, - selectOption = this.selectOption, - setValue = this.setValue, - props = this.props; - var isMulti = props.isMulti, - isRtl = props.isRtl, - options = props.options; - var hasValue = this.hasValue(); - return { - clearValue: clearValue, - cx: cx, - getStyles: getStyles, - getClassNames: getClassNames, - getValue: getValue, - hasValue: hasValue, - isMulti: isMulti, - isRtl: isRtl, - options: options, - selectOption: selectOption, - selectProps: props, - setValue: setValue, - theme: this.getTheme() - }; - } - }, { - key: "hasValue", - value: function hasValue() { - var selectValue = this.state.selectValue; - return selectValue.length > 0; - } - }, { - key: "hasOptions", - value: function hasOptions() { - return !!this.getFocusableOptions().length; - } - }, { - key: "isClearable", - value: function isClearable() { - var _this$props7 = this.props, - isClearable = _this$props7.isClearable, - isMulti = _this$props7.isMulti; - - // single select, by default, IS NOT clearable - // multi select, by default, IS clearable - if (isClearable === undefined) return isMulti; - return isClearable; - } - }, { - key: "isOptionDisabled", - value: function isOptionDisabled(option, selectValue) { - return _isOptionDisabled(this.props, option, selectValue); - } - }, { - key: "isOptionSelected", - value: function isOptionSelected(option, selectValue) { - return _isOptionSelected(this.props, option, selectValue); - } - }, { - key: "filterOption", - value: function filterOption(option, inputValue) { - return _filterOption(this.props, option, inputValue); - } - }, { - key: "formatOptionLabel", - value: function formatOptionLabel(data, context) { - if (typeof this.props.formatOptionLabel === 'function') { - var _inputValue = this.props.inputValue; - var _selectValue = this.state.selectValue; - return this.props.formatOptionLabel(data, { - context: context, - inputValue: _inputValue, - selectValue: _selectValue - }); - } else { - return this.getOptionLabel(data); - } - } - }, { - key: "formatGroupLabel", - value: function formatGroupLabel(data) { - return this.props.formatGroupLabel(data); - } - - // ============================== - // Mouse Handlers - // ============================== - }, { - key: "startListeningComposition", - value: - // ============================== - // Composition Handlers - // ============================== - - function startListeningComposition() { - if (document && document.addEventListener) { - document.addEventListener('compositionstart', this.onCompositionStart, false); - document.addEventListener('compositionend', this.onCompositionEnd, false); - } - } - }, { - key: "stopListeningComposition", - value: function stopListeningComposition() { - if (document && document.removeEventListener) { - document.removeEventListener('compositionstart', this.onCompositionStart); - document.removeEventListener('compositionend', this.onCompositionEnd); - } - } - }, { - key: "startListeningToTouch", - value: - // ============================== - // Touch Handlers - // ============================== - - function startListeningToTouch() { - if (document && document.addEventListener) { - document.addEventListener('touchstart', this.onTouchStart, false); - document.addEventListener('touchmove', this.onTouchMove, false); - document.addEventListener('touchend', this.onTouchEnd, false); - } - } - }, { - key: "stopListeningToTouch", - value: function stopListeningToTouch() { - if (document && document.removeEventListener) { - document.removeEventListener('touchstart', this.onTouchStart); - document.removeEventListener('touchmove', this.onTouchMove); - document.removeEventListener('touchend', this.onTouchEnd); - } - } - }, { - key: "renderInput", - value: - // ============================== - // Renderers - // ============================== - function renderInput() { - var _this$props8 = this.props, - isDisabled = _this$props8.isDisabled, - isSearchable = _this$props8.isSearchable, - inputId = _this$props8.inputId, - inputValue = _this$props8.inputValue, - tabIndex = _this$props8.tabIndex, - form = _this$props8.form, - menuIsOpen = _this$props8.menuIsOpen, - required = _this$props8.required; - var _this$getComponents = this.getComponents(), - Input = _this$getComponents.Input; - var _this$state4 = this.state, - inputIsHidden = _this$state4.inputIsHidden, - ariaSelection = _this$state4.ariaSelection; - var commonProps = this.commonProps; - var id = inputId || this.getElementId('input'); - - // aria attributes makes the JSX "noisy", separated for clarity - var ariaAttributes = _objectSpread(_objectSpread(_objectSpread({ - 'aria-autocomplete': 'list', - 'aria-expanded': menuIsOpen, - 'aria-haspopup': true, - 'aria-errormessage': this.props['aria-errormessage'], - 'aria-invalid': this.props['aria-invalid'], - 'aria-label': this.props['aria-label'], - 'aria-labelledby': this.props['aria-labelledby'], - 'aria-required': required, - role: 'combobox' - }, menuIsOpen && { - 'aria-controls': this.getElementId('listbox'), - 'aria-owns': this.getElementId('listbox') - }), !isSearchable && { - 'aria-readonly': true - }), this.hasValue() ? (ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus' && { - 'aria-describedby': this.getElementId('live-region') - } : { - 'aria-describedby': this.getElementId('placeholder') - }); - if (!isSearchable) { - // use a dummy input to maintain focus/blur functionality - return /*#__PURE__*/React__namespace.createElement(DummyInput, _extends({ - id: id, - innerRef: this.getInputRef, - onBlur: this.onInputBlur, - onChange: index.noop, - onFocus: this.onInputFocus, - disabled: isDisabled, - tabIndex: tabIndex, - inputMode: "none", - form: form, - value: "" - }, ariaAttributes)); - } - return /*#__PURE__*/React__namespace.createElement(Input, _extends({}, commonProps, { - autoCapitalize: "none", - autoComplete: "off", - autoCorrect: "off", - id: id, - innerRef: this.getInputRef, - isDisabled: isDisabled, - isHidden: inputIsHidden, - onBlur: this.onInputBlur, - onChange: this.handleInputChange, - onFocus: this.onInputFocus, - spellCheck: "false", - tabIndex: tabIndex, - form: form, - type: "text", - value: inputValue - }, ariaAttributes)); - } - }, { - key: "renderPlaceholderOrValue", - value: function renderPlaceholderOrValue() { - var _this3 = this; - var _this$getComponents2 = this.getComponents(), - MultiValue = _this$getComponents2.MultiValue, - MultiValueContainer = _this$getComponents2.MultiValueContainer, - MultiValueLabel = _this$getComponents2.MultiValueLabel, - MultiValueRemove = _this$getComponents2.MultiValueRemove, - SingleValue = _this$getComponents2.SingleValue, - Placeholder = _this$getComponents2.Placeholder; - var commonProps = this.commonProps; - var _this$props9 = this.props, - controlShouldRenderValue = _this$props9.controlShouldRenderValue, - isDisabled = _this$props9.isDisabled, - isMulti = _this$props9.isMulti, - inputValue = _this$props9.inputValue, - placeholder = _this$props9.placeholder; - var _this$state5 = this.state, - selectValue = _this$state5.selectValue, - focusedValue = _this$state5.focusedValue, - isFocused = _this$state5.isFocused; - if (!this.hasValue() || !controlShouldRenderValue) { - return inputValue ? null : /*#__PURE__*/React__namespace.createElement(Placeholder, _extends({}, commonProps, { - key: "placeholder", - isDisabled: isDisabled, - isFocused: isFocused, - innerProps: { - id: this.getElementId('placeholder') - } - }), placeholder); - } - if (isMulti) { - return selectValue.map(function (opt, index) { - var isOptionFocused = opt === focusedValue; - var key = "".concat(_this3.getOptionLabel(opt), "-").concat(_this3.getOptionValue(opt)); - return /*#__PURE__*/React__namespace.createElement(MultiValue, _extends({}, commonProps, { - components: { - Container: MultiValueContainer, - Label: MultiValueLabel, - Remove: MultiValueRemove - }, - isFocused: isOptionFocused, - isDisabled: isDisabled, - key: key, - index: index, - removeProps: { - onClick: function onClick() { - return _this3.removeValue(opt); - }, - onTouchEnd: function onTouchEnd() { - return _this3.removeValue(opt); - }, - onMouseDown: function onMouseDown(e) { - e.preventDefault(); - } - }, - data: opt - }), _this3.formatOptionLabel(opt, 'value')); - }); - } - if (inputValue) { - return null; - } - var singleValue = selectValue[0]; - return /*#__PURE__*/React__namespace.createElement(SingleValue, _extends({}, commonProps, { - data: singleValue, - isDisabled: isDisabled - }), this.formatOptionLabel(singleValue, 'value')); - } - }, { - key: "renderClearIndicator", - value: function renderClearIndicator() { - var _this$getComponents3 = this.getComponents(), - ClearIndicator = _this$getComponents3.ClearIndicator; - var commonProps = this.commonProps; - var _this$props10 = this.props, - isDisabled = _this$props10.isDisabled, - isLoading = _this$props10.isLoading; - var isFocused = this.state.isFocused; - if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) { - return null; - } - var innerProps = { - onMouseDown: this.onClearIndicatorMouseDown, - onTouchEnd: this.onClearIndicatorTouchEnd, - 'aria-hidden': 'true' - }; - return /*#__PURE__*/React__namespace.createElement(ClearIndicator, _extends({}, commonProps, { - innerProps: innerProps, - isFocused: isFocused - })); - } - }, { - key: "renderLoadingIndicator", - value: function renderLoadingIndicator() { - var _this$getComponents4 = this.getComponents(), - LoadingIndicator = _this$getComponents4.LoadingIndicator; - var commonProps = this.commonProps; - var _this$props11 = this.props, - isDisabled = _this$props11.isDisabled, - isLoading = _this$props11.isLoading; - var isFocused = this.state.isFocused; - if (!LoadingIndicator || !isLoading) return null; - var innerProps = { - 'aria-hidden': 'true' - }; - return /*#__PURE__*/React__namespace.createElement(LoadingIndicator, _extends({}, commonProps, { - innerProps: innerProps, - isDisabled: isDisabled, - isFocused: isFocused - })); - } - }, { - key: "renderIndicatorSeparator", - value: function renderIndicatorSeparator() { - var _this$getComponents5 = this.getComponents(), - DropdownIndicator = _this$getComponents5.DropdownIndicator, - IndicatorSeparator = _this$getComponents5.IndicatorSeparator; - - // separator doesn't make sense without the dropdown indicator - if (!DropdownIndicator || !IndicatorSeparator) return null; - var commonProps = this.commonProps; - var isDisabled = this.props.isDisabled; - var isFocused = this.state.isFocused; - return /*#__PURE__*/React__namespace.createElement(IndicatorSeparator, _extends({}, commonProps, { - isDisabled: isDisabled, - isFocused: isFocused - })); - } - }, { - key: "renderDropdownIndicator", - value: function renderDropdownIndicator() { - var _this$getComponents6 = this.getComponents(), - DropdownIndicator = _this$getComponents6.DropdownIndicator; - if (!DropdownIndicator) return null; - var commonProps = this.commonProps; - var isDisabled = this.props.isDisabled; - var isFocused = this.state.isFocused; - var innerProps = { - onMouseDown: this.onDropdownIndicatorMouseDown, - onTouchEnd: this.onDropdownIndicatorTouchEnd, - 'aria-hidden': 'true' - }; - return /*#__PURE__*/React__namespace.createElement(DropdownIndicator, _extends({}, commonProps, { - innerProps: innerProps, - isDisabled: isDisabled, - isFocused: isFocused - })); - } - }, { - key: "renderMenu", - value: function renderMenu() { - var _this4 = this; - var _this$getComponents7 = this.getComponents(), - Group = _this$getComponents7.Group, - GroupHeading = _this$getComponents7.GroupHeading, - Menu = _this$getComponents7.Menu, - MenuList = _this$getComponents7.MenuList, - MenuPortal = _this$getComponents7.MenuPortal, - LoadingMessage = _this$getComponents7.LoadingMessage, - NoOptionsMessage = _this$getComponents7.NoOptionsMessage, - Option = _this$getComponents7.Option; - var commonProps = this.commonProps; - var focusedOption = this.state.focusedOption; - var _this$props12 = this.props, - captureMenuScroll = _this$props12.captureMenuScroll, - inputValue = _this$props12.inputValue, - isLoading = _this$props12.isLoading, - loadingMessage = _this$props12.loadingMessage, - minMenuHeight = _this$props12.minMenuHeight, - maxMenuHeight = _this$props12.maxMenuHeight, - menuIsOpen = _this$props12.menuIsOpen, - menuPlacement = _this$props12.menuPlacement, - menuPosition = _this$props12.menuPosition, - menuPortalTarget = _this$props12.menuPortalTarget, - menuShouldBlockScroll = _this$props12.menuShouldBlockScroll, - menuShouldScrollIntoView = _this$props12.menuShouldScrollIntoView, - noOptionsMessage = _this$props12.noOptionsMessage, - onMenuScrollToTop = _this$props12.onMenuScrollToTop, - onMenuScrollToBottom = _this$props12.onMenuScrollToBottom; - if (!menuIsOpen) return null; - - // TODO: Internal Option Type here - var render = function render(props, id) { - var type = props.type, - data = props.data, - isDisabled = props.isDisabled, - isSelected = props.isSelected, - label = props.label, - value = props.value; - var isFocused = focusedOption === data; - var onHover = isDisabled ? undefined : function () { - return _this4.onOptionHover(data); - }; - var onSelect = isDisabled ? undefined : function () { - return _this4.selectOption(data); - }; - var optionId = "".concat(_this4.getElementId('option'), "-").concat(id); - var innerProps = { - id: optionId, - onClick: onSelect, - onMouseMove: onHover, - onMouseOver: onHover, - tabIndex: -1 - }; - return /*#__PURE__*/React__namespace.createElement(Option, _extends({}, commonProps, { - innerProps: innerProps, - data: data, - isDisabled: isDisabled, - isSelected: isSelected, - key: optionId, - label: label, - type: type, - value: value, - isFocused: isFocused, - innerRef: isFocused ? _this4.getFocusedOptionRef : undefined - }), _this4.formatOptionLabel(props.data, 'menu')); - }; - var menuUI; - if (this.hasOptions()) { - menuUI = this.getCategorizedOptions().map(function (item) { - if (item.type === 'group') { - var _data = item.data, - options = item.options, - groupIndex = item.index; - var groupId = "".concat(_this4.getElementId('group'), "-").concat(groupIndex); - var headingId = "".concat(groupId, "-heading"); - return /*#__PURE__*/React__namespace.createElement(Group, _extends({}, commonProps, { - key: groupId, - data: _data, - options: options, - Heading: GroupHeading, - headingProps: { - id: headingId, - data: item.data - }, - label: _this4.formatGroupLabel(item.data) - }), item.options.map(function (option) { - return render(option, "".concat(groupIndex, "-").concat(option.index)); - })); - } else if (item.type === 'option') { - return render(item, "".concat(item.index)); - } - }); - } else if (isLoading) { - var message = loadingMessage({ - inputValue: inputValue - }); - if (message === null) return null; - menuUI = /*#__PURE__*/React__namespace.createElement(LoadingMessage, commonProps, message); - } else { - var _message = noOptionsMessage({ - inputValue: inputValue - }); - if (_message === null) return null; - menuUI = /*#__PURE__*/React__namespace.createElement(NoOptionsMessage, commonProps, _message); - } - var menuPlacementProps = { - minMenuHeight: minMenuHeight, - maxMenuHeight: maxMenuHeight, - menuPlacement: menuPlacement, - menuPosition: menuPosition, - menuShouldScrollIntoView: menuShouldScrollIntoView - }; - var menuElement = /*#__PURE__*/React__namespace.createElement(index.MenuPlacer, _extends({}, commonProps, menuPlacementProps), function (_ref4) { - var ref = _ref4.ref, - _ref4$placerProps = _ref4.placerProps, - placement = _ref4$placerProps.placement, - maxHeight = _ref4$placerProps.maxHeight; - return /*#__PURE__*/React__namespace.createElement(Menu, _extends({}, commonProps, menuPlacementProps, { - innerRef: ref, - innerProps: { - onMouseDown: _this4.onMenuMouseDown, - onMouseMove: _this4.onMenuMouseMove, - id: _this4.getElementId('listbox') - }, - isLoading: isLoading, - placement: placement - }), /*#__PURE__*/React__namespace.createElement(ScrollManager, { - captureEnabled: captureMenuScroll, - onTopArrive: onMenuScrollToTop, - onBottomArrive: onMenuScrollToBottom, - lockEnabled: menuShouldBlockScroll - }, function (scrollTargetRef) { - return /*#__PURE__*/React__namespace.createElement(MenuList, _extends({}, commonProps, { - innerRef: function innerRef(instance) { - _this4.getMenuListRef(instance); - scrollTargetRef(instance); - }, - isLoading: isLoading, - maxHeight: maxHeight, - focusedOption: focusedOption - }), menuUI); - })); - }); - - // positioning behaviour is almost identical for portalled and fixed, - // so we use the same component. the actual portalling logic is forked - // within the component based on `menuPosition` - return menuPortalTarget || menuPosition === 'fixed' ? /*#__PURE__*/React__namespace.createElement(MenuPortal, _extends({}, commonProps, { - appendTo: menuPortalTarget, - controlElement: this.controlRef, - menuPlacement: menuPlacement, - menuPosition: menuPosition - }), menuElement) : menuElement; - } - }, { - key: "renderFormField", - value: function renderFormField() { - var _this5 = this; - var _this$props13 = this.props, - delimiter = _this$props13.delimiter, - isDisabled = _this$props13.isDisabled, - isMulti = _this$props13.isMulti, - name = _this$props13.name, - required = _this$props13.required; - var selectValue = this.state.selectValue; - if (!name || isDisabled) return; - if (required && !this.hasValue()) { - return /*#__PURE__*/React__namespace.createElement(RequiredInput, { - name: name, - onFocus: this.onValueInputFocus - }); - } - if (isMulti) { - if (delimiter) { - var value = selectValue.map(function (opt) { - return _this5.getOptionValue(opt); - }).join(delimiter); - return /*#__PURE__*/React__namespace.createElement("input", { - name: name, - type: "hidden", - value: value - }); - } else { - var input = selectValue.length > 0 ? selectValue.map(function (opt, i) { - return /*#__PURE__*/React__namespace.createElement("input", { - key: "i-".concat(i), - name: name, - type: "hidden", - value: _this5.getOptionValue(opt) - }); - }) : /*#__PURE__*/React__namespace.createElement("input", { - name: name, - type: "hidden", - value: "" - }); - return /*#__PURE__*/React__namespace.createElement("div", null, input); - } - } else { - var _value = selectValue[0] ? this.getOptionValue(selectValue[0]) : ''; - return /*#__PURE__*/React__namespace.createElement("input", { - name: name, - type: "hidden", - value: _value - }); - } - } - }, { - key: "renderLiveRegion", - value: function renderLiveRegion() { - var commonProps = this.commonProps; - var _this$state6 = this.state, - ariaSelection = _this$state6.ariaSelection, - focusedOption = _this$state6.focusedOption, - focusedValue = _this$state6.focusedValue, - isFocused = _this$state6.isFocused, - selectValue = _this$state6.selectValue; - var focusableOptions = this.getFocusableOptions(); - return /*#__PURE__*/React__namespace.createElement(LiveRegion, _extends({}, commonProps, { - id: this.getElementId('live-region'), - ariaSelection: ariaSelection, - focusedOption: focusedOption, - focusedValue: focusedValue, - isFocused: isFocused, - selectValue: selectValue, - focusableOptions: focusableOptions - })); - } - }, { - key: "render", - value: function render() { - var _this$getComponents8 = this.getComponents(), - Control = _this$getComponents8.Control, - IndicatorsContainer = _this$getComponents8.IndicatorsContainer, - SelectContainer = _this$getComponents8.SelectContainer, - ValueContainer = _this$getComponents8.ValueContainer; - var _this$props14 = this.props, - className = _this$props14.className, - id = _this$props14.id, - isDisabled = _this$props14.isDisabled, - menuIsOpen = _this$props14.menuIsOpen; - var isFocused = this.state.isFocused; - var commonProps = this.commonProps = this.getCommonProps(); - return /*#__PURE__*/React__namespace.createElement(SelectContainer, _extends({}, commonProps, { - className: className, - innerProps: { - id: id, - onKeyDown: this.onKeyDown - }, - isDisabled: isDisabled, - isFocused: isFocused - }), this.renderLiveRegion(), /*#__PURE__*/React__namespace.createElement(Control, _extends({}, commonProps, { - innerRef: this.getControlRef, - innerProps: { - onMouseDown: this.onControlMouseDown, - onTouchEnd: this.onControlTouchEnd - }, - isDisabled: isDisabled, - isFocused: isFocused, - menuIsOpen: menuIsOpen - }), /*#__PURE__*/React__namespace.createElement(ValueContainer, _extends({}, commonProps, { - isDisabled: isDisabled - }), this.renderPlaceholderOrValue(), this.renderInput()), /*#__PURE__*/React__namespace.createElement(IndicatorsContainer, _extends({}, commonProps, { - isDisabled: isDisabled - }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField()); - } - }], [{ - key: "getDerivedStateFromProps", - value: function getDerivedStateFromProps(props, state) { - var prevProps = state.prevProps, - clearFocusValueOnUpdate = state.clearFocusValueOnUpdate, - inputIsHiddenAfterUpdate = state.inputIsHiddenAfterUpdate, - ariaSelection = state.ariaSelection, - isFocused = state.isFocused, - prevWasFocused = state.prevWasFocused; - var options = props.options, - value = props.value, - menuIsOpen = props.menuIsOpen, - inputValue = props.inputValue, - isMulti = props.isMulti; - var selectValue = index.cleanValue(value); - var newMenuOptionsState = {}; - if (prevProps && (value !== prevProps.value || options !== prevProps.options || menuIsOpen !== prevProps.menuIsOpen || inputValue !== prevProps.inputValue)) { - var focusableOptions = menuIsOpen ? buildFocusableOptions(props, selectValue) : []; - var focusedValue = clearFocusValueOnUpdate ? getNextFocusedValue(state, selectValue) : null; - var focusedOption = getNextFocusedOption(state, focusableOptions); - newMenuOptionsState = { - selectValue: selectValue, - focusedOption: focusedOption, - focusedValue: focusedValue, - clearFocusValueOnUpdate: false - }; - } - // some updates should toggle the state of the input visibility - var newInputIsHiddenState = inputIsHiddenAfterUpdate != null && props !== prevProps ? { - inputIsHidden: inputIsHiddenAfterUpdate, - inputIsHiddenAfterUpdate: undefined - } : {}; - var newAriaSelection = ariaSelection; - var hasKeptFocus = isFocused && prevWasFocused; - if (isFocused && !hasKeptFocus) { - // If `value` or `defaultValue` props are not empty then announce them - // when the Select is initially focused - newAriaSelection = { - value: index.valueTernary(isMulti, selectValue, selectValue[0] || null), - options: selectValue, - action: 'initial-input-focus' - }; - hasKeptFocus = !prevWasFocused; - } - - // If the 'initial-input-focus' action has been set already - // then reset the ariaSelection to null - if ((ariaSelection === null || ariaSelection === void 0 ? void 0 : ariaSelection.action) === 'initial-input-focus') { - newAriaSelection = null; - } - return _objectSpread(_objectSpread(_objectSpread({}, newMenuOptionsState), newInputIsHiddenState), {}, { - prevProps: props, - ariaSelection: newAriaSelection, - prevWasFocused: hasKeptFocus - }); - } - }]); - return Select; -}(React.Component); -Select.defaultProps = defaultProps; - -exports.Select = Select; -exports.createFilter = createFilter; -exports.defaultProps = defaultProps; -exports.defaultTheme = defaultTheme; -exports.getOptionLabel = getOptionLabel$1; -exports.getOptionValue = getOptionValue$1; -exports.mergeStyles = mergeStyles; diff --git a/frontend/node_modules/react-select/dist/declarations/src/Async.d.ts b/frontend/node_modules/react-select/dist/declarations/src/Async.d.ts deleted file mode 100644 index 68766ca78..000000000 --- a/frontend/node_modules/react-select/dist/declarations/src/Async.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { ReactElement, RefAttributes } from 'react'; -import Select from './Select'; -import { GroupBase } from './types'; -import useAsync from './useAsync'; -import type { AsyncProps } from './useAsync'; -export type { AsyncProps }; -declare type AsyncSelect =