diff --git a/.eslintcache b/.eslintcache new file mode 100644 index 000000000..7cd9c8982 --- /dev/null +++ b/.eslintcache @@ -0,0 +1 @@ +[{"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/_/index.ts":"1","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/_/index.ts":"2","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/anchor/index.ts":"3","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/dialog/index.ts":"4","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/header/_/index.ts":"5","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/header/index.ts":"6","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/header/title/index.ts":"7","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/index.ts":"8","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/search/index.ts":"9","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/search/query/index.ts":"10","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/search/result/index.ts":"11","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/sidebar/index.ts":"12","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/source/index.ts":"13","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/tabs/index.ts":"14","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/document/index.ts":"15","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/element/_/index.ts":"16","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/element/focus/index.ts":"17","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/element/index.ts":"18","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/element/offset/index.ts":"19","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/element/selection/index.ts":"20","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/element/size/index.ts":"21","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/index.ts":"22","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/keyboard/index.ts":"23","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/location/_/index.ts":"24","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/location/hash/index.ts":"25","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/location/index.ts":"26","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/media/index.ts":"27","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/toggle/index.ts":"28","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/viewport/_/index.ts":"29","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/viewport/index.ts":"30","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/viewport/offset/index.ts":"31","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/viewport/size/index.ts":"32","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/worker/index.ts":"33","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/_/index.ts":"34","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/content/_/index.ts":"35","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/content/code/index.ts":"36","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/content/details/index.ts":"37","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/content/index.ts":"38","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/content/table/index.ts":"39","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/dialog/index.ts":"40","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/header/_/index.ts":"41","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/header/index.ts":"42","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/header/title/index.ts":"43","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/index.ts":"44","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/main/index.ts":"45","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/search/_/index.ts":"46","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/search/index.ts":"47","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/search/query/index.ts":"48","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/search/result/index.ts":"49","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/sidebar/index.ts":"50","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/source/_/index.ts":"51","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/source/facts/_/index.ts":"52","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/source/facts/github/index.ts":"53","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/source/facts/gitlab/index.ts":"54","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/source/facts/index.ts":"55","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/source/index.ts":"56","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/tabs/index.ts":"57","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/toc/index.ts":"58","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/index.ts":"59","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/clipboard/index.ts":"60","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/index.ts":"61","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/_/index.ts":"62","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/document/index.ts":"63","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/highlighter/index.ts":"64","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/index.ts":"65","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/query/_/index.ts":"66","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/query/index.ts":"67","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/query/transform/index.ts":"68","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/worker/_/index.ts":"69","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/worker/index.ts":"70","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/worker/main/index.ts":"71","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/worker/message/index.ts":"72","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/templates/index.ts":"73","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/utilities/index.ts":"74","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/utilities/jsx/index.ts":"75","/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/utilities/string/index.ts":"76"},{"size":4419,"mtime":1612715126637,"results":"77","hashOfConfig":"78"},{"size":1699,"mtime":1612711656284,"results":"79","hashOfConfig":"78"},{"size":2205,"mtime":1612711656284,"results":"80","hashOfConfig":"78"},{"size":2005,"mtime":1612711656285,"results":"81","hashOfConfig":"78"},{"size":1719,"mtime":1612711656286,"results":"82","hashOfConfig":"78"},{"size":1199,"mtime":1612711656286,"results":"83","hashOfConfig":"78"},{"size":1748,"mtime":1612711656287,"results":"84","hashOfConfig":"78"},{"size":1349,"mtime":1612711656288,"results":"85","hashOfConfig":"78"},{"size":1204,"mtime":1612711656288,"results":"86","hashOfConfig":"78"},{"size":1806,"mtime":1612711656288,"results":"87","hashOfConfig":"78"},{"size":2624,"mtime":1612711656289,"results":"88","hashOfConfig":"78"},{"size":3097,"mtime":1612711656289,"results":"89","hashOfConfig":"78"},{"size":1803,"mtime":1612711656290,"results":"90","hashOfConfig":"78"},{"size":1694,"mtime":1612711656291,"results":"91","hashOfConfig":"78"},{"size":1929,"mtime":1612715096595,"results":"92","hashOfConfig":"78"},{"size":4107,"mtime":1612715161118,"results":"93","hashOfConfig":"94"},{"size":2168,"mtime":1612715209464,"results":"95","hashOfConfig":"78"},{"size":1275,"mtime":1612711656292,"results":"96","hashOfConfig":"78"},{"size":2446,"mtime":1612715096779,"results":"97","hashOfConfig":"78"},{"size":1560,"mtime":1612711656293,"results":"98","hashOfConfig":"78"},{"size":4310,"mtime":1612715096732,"results":"99","hashOfConfig":"78"},{"size":1363,"mtime":1611499073010,"results":"100","hashOfConfig":"78"},{"size":2606,"mtime":1612715096591,"results":"101","hashOfConfig":"78"},{"size":2135,"mtime":1612715096779,"results":"102","hashOfConfig":"78"},{"size":2812,"mtime":1612715199207,"results":"103","hashOfConfig":"78"},{"size":1198,"mtime":1612711656296,"results":"104","hashOfConfig":"78"},{"size":2083,"mtime":1612715096591,"results":"105","hashOfConfig":"78"},{"size":3248,"mtime":1612715236371,"results":"106","hashOfConfig":"78"},{"size":3455,"mtime":1612715096779,"results":"107","hashOfConfig":"78"},{"size":1223,"mtime":1586271067000,"results":"108","hashOfConfig":"78"},{"size":2770,"mtime":1612715096728,"results":"109","hashOfConfig":"78"},{"size":2307,"mtime":1612715096720,"results":"110","hashOfConfig":"78"},{"size":3415,"mtime":1612715506000,"results":"111","hashOfConfig":"78"},{"size":2380,"mtime":1612711656298,"results":"112","hashOfConfig":"78"},{"size":2925,"mtime":1612715356405,"results":"113","hashOfConfig":"78"},{"size":4369,"mtime":1612715366790,"results":"114","hashOfConfig":"78"},{"size":3393,"mtime":1612715096595,"results":"115","hashOfConfig":"78"},{"size":1222,"mtime":1612711656300,"results":"116","hashOfConfig":"78"},{"size":2314,"mtime":1612715096594,"results":"117","hashOfConfig":"78"},{"size":3549,"mtime":1612715506000,"results":"118","hashOfConfig":"78"},{"size":4186,"mtime":1612715485491,"results":"119","hashOfConfig":"78"},{"size":1199,"mtime":1612711656303,"results":"120","hashOfConfig":"78"},{"size":3912,"mtime":1612715506000,"results":"121","hashOfConfig":"78"},{"size":1395,"mtime":1612711656304,"results":"122","hashOfConfig":"78"},{"size":3993,"mtime":1612715096572,"results":"123","hashOfConfig":"78"},{"size":3410,"mtime":1612715539833,"results":"124","hashOfConfig":"78"},{"size":1224,"mtime":1612711656306,"results":"125","hashOfConfig":"78"},{"size":4328,"mtime":1612715559019,"results":"126","hashOfConfig":"78"},{"size":3998,"mtime":1612715096595,"results":"127","hashOfConfig":"78"},{"size":4788,"mtime":1612715096595,"results":"128","hashOfConfig":"78"},{"size":3738,"mtime":1612715577379,"results":"129","hashOfConfig":"78"},{"size":2412,"mtime":1612715617148,"results":"130","hashOfConfig":"78"},{"size":2593,"mtime":1612715096595,"results":"131","hashOfConfig":"78"},{"size":2192,"mtime":1612715096595,"results":"132","hashOfConfig":"78"},{"size":1225,"mtime":1612711656311,"results":"133","hashOfConfig":"78"},{"size":1199,"mtime":1612711656312,"results":"134","hashOfConfig":"78"},{"size":3828,"mtime":1612715506000,"results":"135","hashOfConfig":"78"},{"size":8066,"mtime":1612715506002,"results":"136","hashOfConfig":"78"},{"size":4713,"mtime":1612715679292,"results":"137","hashOfConfig":"78"},{"size":1901,"mtime":1612715096778,"results":"138","hashOfConfig":"78"},{"size":1208,"mtime":1612711656315,"results":"139","hashOfConfig":"78"},{"size":9508,"mtime":1612716096656,"results":"140","hashOfConfig":"141"},{"size":3186,"mtime":1612715096779,"results":"142","hashOfConfig":"78"},{"size":2810,"mtime":1612715825934,"results":"143","hashOfConfig":"78"},{"size":1281,"mtime":1611497200077,"results":"144","hashOfConfig":"78"},{"size":3020,"mtime":1612715096778,"results":"145","hashOfConfig":"146"},{"size":1203,"mtime":1611497200079,"results":"147","hashOfConfig":"78"},{"size":2971,"mtime":1612715870889,"results":"148","hashOfConfig":"149"},{"size":4223,"mtime":1612715096779,"results":"150","hashOfConfig":"78"},{"size":1201,"mtime":1611497200082,"results":"151","hashOfConfig":"78"},{"size":5008,"mtime":1612716064063,"results":"152","hashOfConfig":"153"},{"size":4105,"mtime":1612715096779,"results":"154","hashOfConfig":"78"},{"size":1257,"mtime":1612695348488,"results":"155","hashOfConfig":"78"},{"size":1202,"mtime":1612711656322,"results":"156","hashOfConfig":"78"},{"size":3494,"mtime":1612716143219,"results":"157","hashOfConfig":"158"},{"size":3066,"mtime":1612715096778,"results":"159","hashOfConfig":"78"},{"filePath":"160","messages":"161","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"hn36vk",{"filePath":"162","messages":"163","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"164","messages":"165","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"166","messages":"167","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"168","messages":"169","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"170","messages":"171","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"172","messages":"173","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"174","messages":"175","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"176","messages":"177","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"178","messages":"179","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"180","messages":"181","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"182","messages":"183","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"184","messages":"185","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"186","messages":"187","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"188","messages":"189","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"190","messages":"191","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"l8ddgs",{"filePath":"192","messages":"193","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"194","messages":"195","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"196","messages":"197","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"198","messages":"199","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"200","messages":"201","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"202","messages":"203","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"204","messages":"205","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"206","messages":"207","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"208","messages":"209","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"210","messages":"211","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"212","messages":"213","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"214","messages":"215","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"216","messages":"217","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"218","messages":"219","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"220","messages":"221","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"222","messages":"223","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"224","messages":"225","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"226","messages":"227","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"228","messages":"229","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"230","messages":"231","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"232","messages":"233","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"234","messages":"235","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"236","messages":"237","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"238","messages":"239","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"240","messages":"241","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"242","messages":"243","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"244","messages":"245","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"246","messages":"247","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"248","messages":"249","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"250","messages":"251","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"252","messages":"253","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"254","messages":"255","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"256","messages":"257","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"258","messages":"259","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"260","messages":"261","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"262","messages":"263","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"264","messages":"265","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"266","messages":"267","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"268","messages":"269","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"270","messages":"271","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"272","messages":"273","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"274","messages":"275","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"276","messages":"277","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"278","messages":"279","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"280","messages":"281","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"282","messages":"283","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"k2vza5",{"filePath":"284","messages":"285","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"286","messages":"287","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"288","messages":"289","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"290","messages":"291","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"andtps",{"filePath":"292","messages":"293","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"294","messages":"295","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"t3nyoe",{"filePath":"296","messages":"297","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"298","messages":"299","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"300","messages":"301","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"lgftyz",{"filePath":"302","messages":"303","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"304","messages":"305","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"306","messages":"307","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"308","messages":"309","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"q54qxl",{"filePath":"310","messages":"311","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/_/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/_/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/anchor/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/dialog/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/header/_/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/header/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/header/title/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/search/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/search/query/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/search/result/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/sidebar/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/source/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/actions/tabs/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/document/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/element/_/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/element/focus/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/element/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/element/offset/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/element/selection/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/element/size/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/keyboard/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/location/_/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/location/hash/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/location/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/media/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/toggle/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/viewport/_/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/viewport/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/viewport/offset/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/viewport/size/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/browser/worker/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/_/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/content/_/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/content/code/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/content/details/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/content/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/content/table/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/dialog/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/header/_/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/header/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/header/title/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/main/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/search/_/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/search/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/search/query/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/search/result/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/sidebar/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/source/_/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/source/facts/_/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/source/facts/github/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/source/facts/gitlab/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/source/facts/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/source/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/tabs/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/components/toc/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/clipboard/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/_/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/document/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/highlighter/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/query/_/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/query/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/query/transform/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/worker/_/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/worker/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/worker/main/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/integrations/search/worker/message/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/templates/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/utilities/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/utilities/jsx/index.ts",[],"/Users/squidfunk/Desktop/Projects/Personal/Sources/mkdocs-material-refactor-instant/src/assets/javascripts/utilities/string/index.ts",[]] \ No newline at end of file diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 000000000..c749ebb25 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,351 @@ +{ + "root": true, + "parser": "@typescript-eslint/parser", + "parserOptions": { + "project": "tsconfig.json" + }, + "plugins": [ + "@typescript-eslint", + "eslint-plugin-eslint-comments", + "eslint-plugin-import", + "eslint-plugin-jsdoc", + "eslint-plugin-no-null" + ], + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/eslint-recommended", + "plugin:@typescript-eslint/recommended" + ], + "settings": { + "import/extensions": [ + ".ts", + ".tsx", + ".js", + ".jsx", + ".json" + ], + "import/parsers": { + "@typescript-eslint/parser": [ + ".ts", + ".tsx" + ] + } + }, + "rules": { + "array-bracket-spacing": "warn", + "arrow-parens": [ + "warn", + "as-needed" + ], + "block-spacing": "warn", + "brace-style": [ + "warn", + "1tbs", + { + "allowSingleLine": true + } + ], + "comma-dangle": [ + "error", + "never" + ], + "comma-spacing": "warn", + "comma-style": "error", + "computed-property-spacing": "warn", + "curly": "off", + "eqeqeq": [ + "error", + "smart" + ], + "func-call-spacing": "warn", + "keyword-spacing": "warn", + "lines-around-comment": [ + "error", + { + "allowBlockStart": true, + "allowBlockEnd": true, + "beforeBlockComment": true, + "ignorePattern": "@ts-ignore" + } + ], + "lines-between-class-members": "warn", + "max-classes-per-file": "error", + "new-parens": "error", + "no-caller": "error", + "no-case-declarations": "off", + "no-console": "error", + "no-duplicate-imports": "error", + "no-eval": "error", + "no-extra-bind": "error", + "no-multiple-empty-lines": [ + "error", + { + "max": 1 + } + ], + "no-new-func": "error", + "no-new-wrappers": "error", + "no-restricted-globals": [ + "error", + { + "name": "fdescribe", + "message": "Did you mean 'describe'?" + }, + { + "name": "xdescribe", + "message": "Did you mean 'describe'?" + }, + { + "name": "fit", + "message": "Did you mean 'it'?" + }, + { + "name": "xit", + "message": "Did you mean 'xit'?" + } + ], + "no-return-await": "error", + "no-sequences": "error", + "no-shadow": "off", + "no-tabs": "error", + "no-template-curly-in-string": "error", + "no-throw-literal": "off", + "no-trailing-spaces": "warn", + "no-undef-init": "error", + "no-underscore-dangle": "error", + "no-var": "error", + "no-whitespace-before-property": "warn", + "object-shorthand": "error", + "one-var": [ + "error", + "never" + ], + "prefer-exponentiation-operator": "error", + "prefer-object-spread": "error", + "prefer-template": "error", + "quote-props": [ + "error", + "consistent-as-needed" + ], + "quotes": [ + "error", + "double", + { + "avoidEscape": true + } + ], + "radix": "error", + "semi": "off", + "sort-imports": [ + "error", + { + "ignoreDeclarationSort": true + } + ], + "space-before-blocks": "warn", + "space-before-function-paren": [ + "warn", + { + "anonymous": "always", + "named": "never", + "asyncArrow": "always" + } + ], + "space-in-parens": "warn", + "space-infix-ops": "warn", + "space-unary-ops": "warn", + "spaced-comment": "warn", + "switch-colon-spacing": "warn", + "template-tag-spacing": "warn", + + /* Plugin: @typescript-eslint */ + "@typescript-eslint/array-type": "off", + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/ban-ts-comment": "off", + "@typescript-eslint/ban-types": "off", + "@typescript-eslint/consistent-type-assertions": "error", + "@typescript-eslint/dot-notation": "error", + "@typescript-eslint/explicit-member-accessibility": "error", + "@typescript-eslint/indent": [ + "warn", + 2, + { + "FunctionDeclaration": { + "parameters": 1, + "body": 1 + }, + "FunctionExpression": { + "parameters": 1, + "body": 1 + }, + "MemberExpression": "off", + "ObjectExpression": 1, + "SwitchCase": 1, + "ignoreComments": true, + "ignoredNodes": [ + "ArrowFunctionExpression > *", + "CallExpression > ObjectExpression", + "ConditionalExpression > ConditionalExpression", + "TSTypeReference > *" + ], + "offsetTernaryExpressions": true + } + ], + "@typescript-eslint/member-delimiter-style": [ + "error", + { + "multiline": { + "delimiter": "none" + }, + "singleline": { + "delimiter": "comma", + "requireLast": false + } + } + ], + "@typescript-eslint/naming-convention": [ + "error", + { + "selector": "enumMember", + "format": [ + "UPPER_CASE" + ] + } + ], + "@typescript-eslint/no-empty-interface": "off", + "@typescript-eslint/no-extraneous-class": "error", + "@typescript-eslint/no-misused-promises": "error", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-parameter-properties": "off", + "@typescript-eslint/no-floating-promises": "error", + "@typescript-eslint/no-shadow": [ + "error", + { + "hoist": "never" + } + ], + "@typescript-eslint/no-throw-literal": "error", + "@typescript-eslint/no-unnecessary-type-assertion": "error", + "@typescript-eslint/no-unused-expressions": "error", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-var-requires": "off", + "@typescript-eslint/prefer-for-of": "off", + "@typescript-eslint/prefer-function-type": "error", + "@typescript-eslint/semi": [ + "error", + "never" + ], + "@typescript-eslint/triple-slash-reference": "off", + "@typescript-eslint/type-annotation-spacing": "error", + "@typescript-eslint/unbound-method": "error", + "@typescript-eslint/unified-signatures": "error", + /* Plugin: eslint-plugin-eslint-comments */ + "eslint-comments/no-unused-disable": "error", + "eslint-comments/no-unused-enable": "error", + "eslint-comments/no-use": [ + "warn", + { + "allow": [ + "eslint-disable-line", + "eslint-disable-next-line" + ] + } + ], + + /* Plugin: eslint-plugin-import */ + "import/first": "error", + "import/newline-after-import": "error", + "import/no-default-export": "error", + "import/no-duplicates": "error", + "import/no-mutable-exports": "error", + "import/no-self-import": "error", + "import/order": [ + "error", + { + "alphabetize": { + "order": "asc" + }, + "newlines-between": "always", + "groups": [ + [ + "builtin", + "external" + ], + [ + "internal" + ], + [ + "index" + ], + [ + "parent" + ], + [ + "sibling" + ] + ], + "pathGroups": [ + { + "pattern": "~/**", + "group": "index", + "position": "before" + }, + { + "pattern": "_/**", + "group": "index", + "position": "after" + } + ], + "pathGroupsExcludedImportTypes": [ + "builtin" + ] + } + ], + + /* Plugin: eslint-plugin-jsdoc */ + "jsdoc/check-alignment": "warn", + "jsdoc/check-param-names": [ + "warn", + { + "checkDestructured": false + } + ], + "jsdoc/check-syntax": "warn", + "jsdoc/check-tag-names": [ + "warn", + { + "definedTags": [ + "internal" + ] + } + ], + "jsdoc/empty-tags": "warn", + "jsdoc/newline-after-description": "warn", + "jsdoc/no-bad-blocks": "warn", + "jsdoc/no-defaults": "warn", + "jsdoc/no-types": "warn", + "jsdoc/require-hyphen-before-param-description": "warn", + "jsdoc/require-jsdoc": "warn", + "jsdoc/require-param-description": "warn", + "jsdoc/require-param-name": "warn", + "jsdoc/require-param": [ + "warn", + { + "checkDestructured": false, + "checkDestructuredRoots": true + } + ], + "jsdoc/require-returns-check": "warn", + "jsdoc/require-returns-description": "warn", + "jsdoc/require-returns": [ + "warn", + { + "checkGetters": false, + "forceReturnsWithAsync": true + } + ], + + /* Plugin: eslint-plugin-no-null */ + "no-null/no-null": "error" + } +} diff --git a/.stylelintrc b/.stylelintrc index f71aff2d3..fc65c2ac3 100644 --- a/.stylelintrc +++ b/.stylelintrc @@ -1,41 +1,138 @@ { "extends": [ "stylelint-config-recommended", + "stylelint-config-standard", "stylelint-config-rational-order" ], "plugins": [ - "stylelint-order", "stylelint-scss" ], "rules": { - "at-rule-empty-line-before": null, + "at-rule-empty-line-before": [ + "always", + { + "except": [ + "blockless-after-same-name-blockless", + "first-nested" + ], + "ignore": [ + "after-comment" + ], + "ignoreAtRules": [ + "if", + "else", + "elseif" + ] + } + ], "at-rule-no-unknown": null, - "at-rule-no-vendor-prefix": true, - "block-opening-brace-space-before": null, - "block-closing-brace-newline-after": ["always", { - "ignoreAtRules": [ - "if", - "else", - "elseif" - ] - }], - "color-hex-case": "upper", + "block-closing-brace-newline-after": [ + "always", + { + "ignoreAtRules": [ + "if", + "else", + "elseif" + ] + } + ], "color-hex-length": "long", "color-named": "never", - "comment-empty-line-before": ["always", { - "ignore": ["stylelint-commands"] - }], + "comment-empty-line-before": [ + "always", + { + "ignore": [ + "stylelint-commands" + ] + } + ], + "custom-property-empty-line-before": null, + "custom-property-pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$", + "declaration-no-important": true, + "declaration-block-single-line-max-declarations": 0, + "function-url-no-scheme-relative": true, + "function-url-quotes": "always", "font-family-name-quotes": "always-where-recommended", "font-weight-notation": "numeric", - "function-url-quotes": "always", - "no-descending-specificity": null, + "keyframes-name-pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$", + "linebreaks": "unix", + "media-feature-name-no-unknown": null, + "no-empty-first-line": true, "no-unknown-animations": true, - "property-no-vendor-prefix": [true, {"ignoreProperties": ["line-clamp", "box-orient"]}], - "selector-class-pattern": "^[a-z0-9]+(-[a-z0-9]+)*(__[a-z]+)?(--[a-z]+)?$", - "selector-descendant-combinator-no-non-space": null, + "property-no-unknown": null, + "property-no-vendor-prefix": [ + true, + { + "ignoreProperties": [ + "line-clamp", + "box-orient" + ] + } + ], + "selector-max-empty-lines": 0, + "selector-max-id": 0, + "selector-max-type": 1, + "selector-max-universal": 1, + "selector-no-qualifying-type": true, + "selector-pseudo-class-no-unknown": null, + "selector-pseudo-element-no-unknown": null, "string-quotes": "double", - "unit-allowed-list": ["px", "em", "deg", "ms", "%", "mm", "vh", "vw", "dppx"], - "value-keyword-case": "lower", - "value-no-vendor-prefix": [true, {"ignoreValues": ["box"]}] + "unicode-bom": "never", + "unit-allowed-list": [ + "%", + "dppx", + "deg", + "em", + "mm", + "ms", + "px", + "vh", + "vw" + ], + "value-no-vendor-prefix": true, + "scss/at-each-key-value-single-line": true, + "scss/at-else-closing-brace-newline-after": "always-last-in-chain", + "scss/at-extend-no-missing-placeholder": true, + "scss/at-function-parentheses-space-before": "never", + "scss/at-function-pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$", + "scss/at-if-closing-brace-newline-after": "always-last-in-chain", + "scss/at-if-no-null": true, + "scss/at-import-no-partial-leading-underscore": true, + "scss/at-import-partial-extension": "never", + "scss/at-mixin-argumentless-call-parentheses": "always", + "scss/at-mixin-parentheses-space-before": "never", + "scss/at-mixin-pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$", + "scss/at-rule-conditional-no-parentheses": true, + "scss/comment-no-empty": true, + "scss/comment-no-loud": true, + "scss/declaration-nested-properties": "never", + "scss/dimension-no-non-numeric-values": true, + "scss/dollar-variable-colon-newline-after": "always-multi-line", + "scss/dollar-variable-colon-space-after": "always-single-line", + "scss/dollar-variable-colon-space-before": "never", + "scss/dollar-variable-default": [ + true, + { + "ignore": "local" + } + ], + "scss/dollar-variable-first-in-block": [ + true, + { + "ignore": ["comments"], + "except": ["function"] + } + ], + "scss/dollar-variable-no-missing-interpolation": true, + "scss/dollar-variable-pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$", + "scss/double-slash-comment-whitespace-inside": "always", + "scss/no-dollar-variables": true, + "scss/no-global-function-names": true, + "scss/no-duplicate-dollar-variables": true, + "scss/no-duplicate-mixins": true, + "scss/operator-no-unspaced": true, + "scss/partial-no-import": true, + "scss/percent-placeholder-pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$", + "scss/selector-no-redundant-nesting-selector": true } } diff --git a/docs/setup/setting-up-site-search.md b/docs/setup/setting-up-site-search.md index c121bb521..7aeb6dd79 100644 --- a/docs/setup/setting-up-site-search.md +++ b/docs/setup/setting-up-site-search.md @@ -294,7 +294,7 @@ following transformations, which can be customized by [extending the theme][20]: * * @param query - Query value * - * @return Transformed query value + * @returns Transformed query value */ export function defaultTransform(query: string): string { return query diff --git a/package-lock.json b/package-lock.json index 9686674ad..4ae28c3c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -246,6 +246,81 @@ "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", "dev": true }, + "@eslint/eslintrc": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", + "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.20", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, "@fortawesome/fontawesome-free": { "version": "5.15.2", "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.2.tgz", @@ -659,6 +734,267 @@ } } }, + "@typescript-eslint/eslint-plugin": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.14.0.tgz", + "integrity": "sha512-IJ5e2W7uFNfg4qh9eHkHRUCbgZ8VKtGwD07kannJvM5t/GU8P8+24NX8gi3Hf5jST5oWPY8kyV1s/WtfiZ4+Ww==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.14.0", + "@typescript-eslint/scope-manager": "4.14.0", + "debug": "^4.1.1", + "functional-red-black-tree": "^1.0.1", + "lodash": "^4.17.15", + "regexpp": "^3.0.0", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.20.0.tgz", + "integrity": "sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.14.0.tgz", + "integrity": "sha512-6i6eAoiPlXMKRbXzvoQD5Yn9L7k9ezzGRvzC/x1V3650rUk3c3AOjQyGYyF9BDxQQDK2ElmKOZRD0CbtdkMzQQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/scope-manager": "4.14.0", + "@typescript-eslint/types": "4.14.0", + "@typescript-eslint/typescript-estree": "4.14.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.14.2.tgz", + "integrity": "sha512-ipqSP6EuUsMu3E10EZIApOJgWSpcNXeKZaFeNKQyzqxnQl8eQCbV+TSNsl+s2GViX2d18m1rq3CWgnpOxDPgHg==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "4.14.2", + "@typescript-eslint/types": "4.14.2", + "@typescript-eslint/typescript-estree": "4.14.2", + "debug": "^4.1.1" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.14.2.tgz", + "integrity": "sha512-cuV9wMrzKm6yIuV48aTPfIeqErt5xceTheAgk70N1V4/2Ecj+fhl34iro/vIssJlb7XtzcaD07hWk7Jk0nKghg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.14.2", + "@typescript-eslint/visitor-keys": "4.14.2" + } + }, + "@typescript-eslint/types": { + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.14.2.tgz", + "integrity": "sha512-LltxawRW6wXy4Gck6ZKlBD05tCHQUj4KLn4iR69IyRiDHX3d3NCAhO+ix5OR2Q+q9bjCrHE/HKt+riZkd1At8Q==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.14.2.tgz", + "integrity": "sha512-ESiFl8afXxt1dNj8ENEZT12p+jl9PqRur+Y19m0Z/SPikGL6rqq4e7Me60SU9a2M28uz48/8yct97VQYaGl0Vg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.14.2", + "@typescript-eslint/visitor-keys": "4.14.2", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.14.2.tgz", + "integrity": "sha512-KBB+xLBxnBdTENs/rUgeUKO0UkPBRs2vD09oMRRIkj5BEN8PX1ToXV532desXfpQnZsYTyLLviS7JrPhdL154w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.14.2", + "eslint-visitor-keys": "^2.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.20.0.tgz", + "integrity": "sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.14.0.tgz", + "integrity": "sha512-/J+LlRMdbPh4RdL4hfP1eCwHN5bAhFAGOTsvE6SxsrM/47XQiPSgF5MDgLyp/i9kbZV9Lx80DW0OpPkzL+uf8Q==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.14.0", + "@typescript-eslint/visitor-keys": "4.14.0" + } + }, + "@typescript-eslint/types": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.14.0.tgz", + "integrity": "sha512-VsQE4VvpldHrTFuVPY1ZnHn/Txw6cZGjL48e+iBxTi2ksa9DmebKjAeFmTVAYoSkTk7gjA7UqJ7pIsyifTsI4A==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.14.0.tgz", + "integrity": "sha512-wRjZ5qLao+bvS2F7pX4qi2oLcOONIB+ru8RGBieDptq/SudYwshveORwCVU4/yMAd4GK7Fsf8Uq1tjV838erag==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.14.0", + "@typescript-eslint/visitor-keys": "4.14.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.20.0.tgz", + "integrity": "sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.14.0.tgz", + "integrity": "sha512-MeHHzUyRI50DuiPgV9+LxcM52FCJFYjJiWHtXlbyC27b80mfOwKeiKI+MHOTEpcpfmoPFm/vvQS88bYIx6PZTA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.14.0", + "eslint-visitor-keys": "^2.0.0" + } + }, "@webassemblyjs/ast": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", @@ -876,6 +1212,12 @@ "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true + }, "aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -1009,6 +1351,97 @@ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", "dev": true }, + "array-includes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.2.tgz", + "integrity": "sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "get-intrinsic": "^1.0.1", + "is-string": "^1.0.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", + "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.1", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.3", + "string.prototype.trimstart": "^1.0.3" + } + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, + "is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + } + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", + "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", + "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + } + } + }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -1030,6 +1463,95 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, + "array.prototype.flat": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", + "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.1", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.3", + "string.prototype.trimstart": "^1.0.3" + } + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, + "is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + } + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", + "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", + "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + } + } + }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -1783,12 +2305,6 @@ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", "dev": true }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -1932,6 +2448,16 @@ } } }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "call-me-maybe": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", @@ -2274,6 +2800,12 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "comment-parser": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.2.tgz", + "integrity": "sha512-AOdq0i8ghZudnYv8RUnHrhTgafUGs61Rdz9jemU5x2lnZwAWyOq7vySo626K59e1fVKH1xSRorJwPVRLSWOoAQ==", + "dev": true + }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -2332,6 +2864,12 @@ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", "dev": true }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -2939,6 +3477,12 @@ } } }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, "defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", @@ -3053,6 +3597,16 @@ "path-type": "^3.0.0" } }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, "dom-serializer": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", @@ -3330,6 +3884,545 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "eslint": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.19.0.tgz", + "integrity": "sha512-CGlMgJY56JZ9ZSYhJuhow61lMPPjUzWmChFya71Z/jilVos7mR/jPgaEfVGgMBY5DshbKdG8Ezb8FDCHcoMEMg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^0.3.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.0", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.20", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "table": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", + "dev": true, + "requires": { + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "ajv": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.4.tgz", + "integrity": "sha512-xzzzaqgEQfmuhbhAoqjJ8T/1okb6gAzXn/eQRNpAN1AEUoHJTNF9xCDRTtf/s3SKldtZfa+RJeTs+BQq+eZ/sw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + } + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "eslint-import-resolver-node": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + } + } + }, + "eslint-plugin-eslint-comments": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", + "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "ignore": "^5.0.5" + }, + "dependencies": { + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", + "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "array.prototype.flat": "^1.2.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.4", + "eslint-module-utils": "^2.6.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.1", + "read-pkg-up": "^2.0.0", + "resolve": "^1.17.0", + "tsconfig-paths": "^3.9.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + } + } + }, + "eslint-plugin-jsdoc": { + "version": "31.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-31.6.1.tgz", + "integrity": "sha512-5hCV3u+1VSEUMyfdTl+dpWsioD7tqQr2ILQw+KbXrF42AVxCLO8gnNLR6zDCDjqGGpt79V1sgY0RRchCWuCigg==", + "dev": true, + "requires": { + "comment-parser": "1.1.2", + "debug": "^4.3.1", + "jsdoctypeparser": "^9.0.0", + "lodash": "^4.17.20", + "regextras": "^0.7.1", + "semver": "^7.3.4", + "spdx-expression-parse": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "eslint-plugin-no-null": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-null/-/eslint-plugin-no-null-1.0.2.tgz", + "integrity": "sha1-EjaoEjkTkKGHetQAfCbnRTQclR8=", + "dev": true + }, "eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -3340,12 +4433,77 @@ "estraverse": "^4.1.1" } }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, "esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -3369,6 +4527,12 @@ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, "event-hooks-webpack-plugin": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/event-hooks-webpack-plugin/-/event-hooks-webpack-plugin-2.2.0.tgz", @@ -3775,6 +4939,12 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, "fastest-levenshtein": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", @@ -4101,12 +5271,29 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, "gensync": { "version": "1.0.0-beta.1", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", "dev": true }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "get-proxy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", @@ -4997,12 +6184,6 @@ "webpack-sources": "^1.1.0" } }, - "immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=", - "dev": true - }, "import-fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", @@ -5364,6 +6545,12 @@ "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=", "dev": true }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -5430,6 +6617,12 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, "is-supported-regexp-flag": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz", @@ -5545,6 +6738,12 @@ "esprima": "^4.0.0" } }, + "jsdoctypeparser": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", + "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", + "dev": true + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -5575,6 +6774,12 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -5627,6 +6832,16 @@ "node-fetch": "^2.6.0" } }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, "li": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/li/-/li-1.3.0.tgz", @@ -6526,6 +7741,12 @@ "to-regex": "^3.0.1" } }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -6795,6 +8016,20 @@ "mimic-fn": "^2.1.0" } }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, "optipng-bin": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/optipng-bin/-/optipng-bin-5.1.0.tgz", @@ -8023,6 +9258,12 @@ "integrity": "sha512-A6SITnHaj5CS4JPLVroQDNOEozq4Y0B4yQSGHLznxHe66Jb2DvoeTEibLjXmfeofgQE3BZ2zurltBIapzCMlwg==", "dev": true }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, "prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", @@ -8041,6 +9282,12 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", @@ -8346,6 +9593,18 @@ "safe-regex": "^1.1.0" } }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "regextras": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.1.tgz", + "integrity": "sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==", + "dev": true + }, "relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", @@ -8415,6 +9674,12 @@ "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", "dev": true }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, "resolve": { "version": "1.16.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.16.0.tgz", @@ -9307,6 +10572,12 @@ "min-indent": "^1.0.0" } }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, "strip-outer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", @@ -10275,49 +11546,6 @@ "stylelint-config-recommended": "^3.0.0" } }, - "stylelint-order": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-4.1.0.tgz", - "integrity": "sha512-sVTikaDvMqg2aJjh4r48jsdfmqLT+nqB1MOsaBnvM3OwLx4S+WXcsxsgk5w18h/OZoxZCxuyXMh61iBHcj9Qiw==", - "dev": true, - "requires": { - "lodash": "^4.17.15", - "postcss": "^7.0.31", - "postcss-sorting": "^5.0.1" - }, - "dependencies": { - "postcss": { - "version": "7.0.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", - "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-sorting": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-5.0.1.tgz", - "integrity": "sha512-Y9fUFkIhfrm6i0Ta3n+89j56EFqaNRdUKqXyRp6kvTcSXnmgEjaVowCXH+JBe9+YKWqd4nc28r2sgwnzJalccA==", - "dev": true, - "requires": { - "lodash": "^4.17.14", - "postcss": "^7.0.17" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "stylelint-scss": { "version": "3.18.0", "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.18.0.tgz", @@ -10636,6 +11864,12 @@ } } }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -10927,61 +12161,6 @@ "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", "dev": true }, - "tslint": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", - "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.3", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.13.0", - "tsutils": "^2.29.0" - }, - "dependencies": { - "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", - "dev": true - } - } - }, - "tslint-sonarts": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/tslint-sonarts/-/tslint-sonarts-1.9.0.tgz", - "integrity": "sha512-CJWt+IiYI8qggb2O/JPkS6CkC5DY1IcqRsm9EHJ+AxoWK70lvtP7jguochyNDMP2vIz/giGdWCfEM39x/I/Vnw==", - "dev": true, - "requires": { - "immutable": "^3.8.2" - } - }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", - "dev": true - } - } - }, "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", @@ -10997,6 +12176,15 @@ "safe-buffer": "^5.0.1" } }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, "type-fest": { "version": "0.18.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", @@ -11945,6 +13133,12 @@ "isexe": "^2.0.0" } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "worker-farm": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", diff --git a/package.json b/package.json index 9e379ddb5..a785171c6 100644 --- a/package.json +++ b/package.json @@ -24,12 +24,12 @@ "url": "https://github.com/squidfunk/mkdocs-material.git" }, "scripts": { - "build": "npm run clean && npx webpack --mode production", - "clean": "npx rimraf material", - "lint": "npm run lint:ts && npm run lint:scss", - "lint:scss": "npx stylelint \"src/assets/**/*.scss\"", - "lint:ts": "npx tslint -p tsconfig.json \"src/**/*.ts\"", - "start": "npx webpack --mode development --watch" + "build": "npm run clean && webpack --mode production", + "clean": "rimraf material", + "lint": "npm run lint:*", + "lint:scss": "stylelint \"src/assets/**/*.scss\"", + "lint:ts": "eslint --cache \"src/**/*.ts\"", + "start": "webpack --mode development --watch" }, "dependencies": { "clipboard": "^2.0.6", @@ -55,9 +55,16 @@ "@types/resize-observer-browser": "^0.1.5", "@types/webpack": "^4.41.26", "@types/webpack-assets-manifest": "^3.0.1", + "@typescript-eslint/eslint-plugin": "4.14.0", + "@typescript-eslint/parser": "^4.14.0", "autoprefixer": "10.2.1", "copy-webpack-plugin": "^6.4.1", "css-loader": "^5.0.1", + "eslint": "^7.19.0", + "eslint-plugin-eslint-comments": "^3.2.0", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-jsdoc": "^31.0.8", + "eslint-plugin-no-null": "^1.0.2", "event-hooks-webpack-plugin": "^2.2.0", "expose-loader": "^1.0.3", "github-types": "^1.0.0", @@ -79,8 +86,8 @@ "sass-loader": "^10.1.1", "stylelint": "^13.8.0", "stylelint-config-rational-order": "^0.1.2", + "stylelint-config-recommended": "^3.0.0", "stylelint-config-standard": "^20.0.0", - "stylelint-order": "^4.1.0", "stylelint-scss": "^3.18.0", "ts-loader": "^8.0.14", "ts-node": "^9.1.1", diff --git a/src/assets/javascripts/_/index.ts b/src/assets/javascripts/_/index.ts index bd59af4cd..4fb121d0d 100644 --- a/src/assets/javascripts/_/index.ts +++ b/src/assets/javascripts/_/index.ts @@ -78,7 +78,7 @@ export interface Config { /** * Retrieve global configuration and make base URL absolute */ -let config: Config = JSON.parse(getElementOrThrow("#__config").textContent!) +const config: Config = JSON.parse(getElementOrThrow("#__config").textContent!) config.base = new URL(config.base, getLocation()) .toString() .replace(/\/$/, "") @@ -90,7 +90,7 @@ config.base = new URL(config.base, getLocation()) /** * Retrieve global configuration * - * @return Global configuration + * @returns Global configuration */ export function configuration(): Config { return config @@ -113,7 +113,7 @@ export function flag(feature: Feature): boolean { * @param key - Key to be translated * @param value - Value to be replaced * - * @return Translation + * @returns Translation */ export function translation( key: Translation, value?: string | number diff --git a/src/assets/javascripts/browser/document/index.ts b/src/assets/javascripts/browser/document/index.ts index 92b5c6d64..544106bea 100644 --- a/src/assets/javascripts/browser/document/index.ts +++ b/src/assets/javascripts/browser/document/index.ts @@ -34,7 +34,7 @@ import { mapTo } from "rxjs/operators" * automatically updated when a new document is emitted. This enabled features * like instant loading. * - * @return Document subject + * @returns Document subject */ export function watchDocument(): Subject { const document$ = new ReplaySubject() diff --git a/src/assets/javascripts/browser/element/_/.eslintrc b/src/assets/javascripts/browser/element/_/.eslintrc new file mode 100644 index 000000000..82472629d --- /dev/null +++ b/src/assets/javascripts/browser/element/_/.eslintrc @@ -0,0 +1,5 @@ +{ + "rules": { + "jsdoc/require-jsdoc": "off" + } +} diff --git a/src/assets/javascripts/browser/element/_/index.ts b/src/assets/javascripts/browser/element/_/index.ts index a377af7fb..eb4488e0d 100644 --- a/src/assets/javascripts/browser/element/_/index.ts +++ b/src/assets/javascripts/browser/element/_/index.ts @@ -32,7 +32,7 @@ * @param selector - Query selector * @param node - Node of reference * - * @return Element or nothing + * @returns Element or nothing */ export function getElement( selector: T, node?: ParentNode @@ -56,7 +56,7 @@ export function getElement( * @param selector - Query selector * @param node - Node of reference * - * @return Element + * @returns Element */ export function getElementOrThrow( selector: T, node?: ParentNode @@ -80,7 +80,7 @@ export function getElementOrThrow( /** * Retrieve the currently active element * - * @return Element or nothing + * @returns Element or nothing */ export function getActiveElement(): HTMLElement | undefined { return document.activeElement instanceof HTMLElement @@ -96,7 +96,7 @@ export function getActiveElement(): HTMLElement | undefined { * @param selector - Query selector * @param node - Node of reference * - * @return Elements + * @returns Elements */ export function getElements( selector: T, node?: ParentNode @@ -121,7 +121,7 @@ export function getElements( * * @param tagName - Tag name * - * @return Element + * @returns Element */ export function createElement( tagName: T diff --git a/src/assets/javascripts/browser/element/focus/index.ts b/src/assets/javascripts/browser/element/focus/index.ts index 5f0d57eba..baee9feab 100644 --- a/src/assets/javascripts/browser/element/focus/index.ts +++ b/src/assets/javascripts/browser/element/focus/index.ts @@ -36,7 +36,7 @@ import { getActiveElement } from "../_" * @param value - Whether the element should be focused */ export function setElementFocus( - el: HTMLElement, value: boolean = true + el: HTMLElement, value = true ): void { if (value) el.focus() @@ -51,7 +51,7 @@ export function setElementFocus( * * @param el - Element * - * @return Element focus observable + * @returns Element focus observable */ export function watchElementFocus( el: HTMLElement diff --git a/src/assets/javascripts/browser/element/offset/index.ts b/src/assets/javascripts/browser/element/offset/index.ts index 0f473d882..703539fb1 100644 --- a/src/assets/javascripts/browser/element/offset/index.ts +++ b/src/assets/javascripts/browser/element/offset/index.ts @@ -44,7 +44,7 @@ export interface ElementOffset { * * @param el - Element * - * @return Element offset + * @returns Element offset */ export function getElementOffset(el: HTMLElement): ElementOffset { return { @@ -60,7 +60,7 @@ export function getElementOffset(el: HTMLElement): ElementOffset { * * @param el - Element * - * @return Element offset observable + * @returns Element offset observable */ export function watchElementOffset( el: HTMLElement diff --git a/src/assets/javascripts/browser/element/size/index.ts b/src/assets/javascripts/browser/element/size/index.ts index 9dbf35d15..6b96b066d 100644 --- a/src/assets/javascripts/browser/element/size/index.ts +++ b/src/assets/javascripts/browser/element/size/index.ts @@ -92,7 +92,7 @@ const observer$ = defer(() => of( * * @param el - Element * - * @return Element size + * @returns Element size */ export function getElementSize(el: HTMLElement): ElementSize { return { @@ -106,7 +106,7 @@ export function getElementSize(el: HTMLElement): ElementSize { * * @param el - Element * - * @return Element size + * @returns Element size */ export function getElementContentSize(el: HTMLElement): ElementSize { return { @@ -127,7 +127,7 @@ export function getElementContentSize(el: HTMLElement): ElementSize { * * @param el - Element * - * @return Element size observable + * @returns Element size observable */ export function watchElementSize( el: HTMLElement diff --git a/src/assets/javascripts/browser/keyboard/index.ts b/src/assets/javascripts/browser/keyboard/index.ts index fb3c15b93..972552fb3 100644 --- a/src/assets/javascripts/browser/keyboard/index.ts +++ b/src/assets/javascripts/browser/keyboard/index.ts @@ -44,7 +44,7 @@ export interface Key { * * @param el - Element * - * @return Test result + * @returns Test result */ export function isSusceptibleToKeyboard(el: HTMLElement): boolean { switch (el.tagName) { @@ -66,7 +66,7 @@ export function isSusceptibleToKeyboard(el: HTMLElement): boolean { /** * Watch keyboard * - * @return Keyboard observable + * @returns Keyboard observable */ export function watchKeyboard(): Observable { return fromEvent(window, "keydown") diff --git a/src/assets/javascripts/browser/location/_/index.ts b/src/assets/javascripts/browser/location/_/index.ts index 0326f0bbf..d2dad8ec4 100644 --- a/src/assets/javascripts/browser/location/_/index.ts +++ b/src/assets/javascripts/browser/location/_/index.ts @@ -34,7 +34,7 @@ import { BehaviorSubject, Subject } from "rxjs" * tracked without setting them and `Location` is a singleton which represents * the current location. * - * @return URL + * @returns URL */ export function getLocation(): URL { return new URL(location.href) @@ -54,7 +54,7 @@ export function setLocation(url: URL): void { /** * Watch location * - * @return Location subject + * @returns Location subject */ export function watchLocation(): Subject { return new BehaviorSubject(getLocation()) diff --git a/src/assets/javascripts/browser/location/hash/index.ts b/src/assets/javascripts/browser/location/hash/index.ts index 51c33a124..b44baafda 100644 --- a/src/assets/javascripts/browser/location/hash/index.ts +++ b/src/assets/javascripts/browser/location/hash/index.ts @@ -23,8 +23,7 @@ import { Observable, fromEvent, of } from "rxjs" import { filter, map, share, startWith, switchMap } from "rxjs/operators" -import { createElement } from "browser" -import { getElement } from "~/browser/element" +import { createElement, getElement } from "~/browser" /* ---------------------------------------------------------------------------- * Functions @@ -33,7 +32,7 @@ import { getElement } from "~/browser/element" /** * Retrieve location hash * - * @return Location hash + * @returns Location hash */ export function getLocationHash(): string { return location.hash.substring(1) @@ -61,7 +60,7 @@ export function setLocationHash(hash: string): void { /** * Watch location hash * - * @return Location hash observable + * @returns Location hash observable */ export function watchLocationHash(): Observable { return fromEvent(window, "hashchange") @@ -76,7 +75,7 @@ export function watchLocationHash(): Observable { /** * Watch location target * - * @return Location target observable + * @returns Location target observable */ export function watchLocationTarget(): Observable { return watchLocationHash() diff --git a/src/assets/javascripts/browser/media/index.ts b/src/assets/javascripts/browser/media/index.ts index e641a09c3..ff6ab4f6d 100644 --- a/src/assets/javascripts/browser/media/index.ts +++ b/src/assets/javascripts/browser/media/index.ts @@ -32,7 +32,7 @@ import { filter, map, mapTo, startWith } from "rxjs/operators" * * @param query - Media query * - * @return Media observable + * @returns Media observable */ export function watchMedia(query: string): Observable { const media = matchMedia(query) @@ -46,7 +46,7 @@ export function watchMedia(query: string): Observable { /** * Watch print mode, cross-browser * - * @return Print observable + * @returns Print observable */ export function watchPrint(): Observable { return merge( diff --git a/src/assets/javascripts/browser/toggle/index.ts b/src/assets/javascripts/browser/toggle/index.ts index f3de0b6da..a2d3bc2c9 100644 --- a/src/assets/javascripts/browser/toggle/index.ts +++ b/src/assets/javascripts/browser/toggle/index.ts @@ -44,8 +44,8 @@ export type Toggle = * Toggle map */ const toggles: Record = { - drawer: getElementOrThrow(`[data-md-toggle=drawer]`), - search: getElementOrThrow(`[data-md-toggle=search]`) + drawer: getElementOrThrow("[data-md-toggle=drawer]"), + search: getElementOrThrow("[data-md-toggle=search]") } /* ---------------------------------------------------------------------------- @@ -57,7 +57,7 @@ const toggles: Record = { * * @param name - Toggle * - * @return Toggle value + * @returns Toggle value */ export function getToggle(name: Toggle): boolean { return toggles[name].checked @@ -86,7 +86,7 @@ export function setToggle(name: Toggle, value: boolean): void { * * @param name - Toggle * - * @return Toggle value observable + * @returns Toggle value observable */ export function watchToggle(name: Toggle): Observable { const el = toggles[name] diff --git a/src/assets/javascripts/browser/viewport/_/index.ts b/src/assets/javascripts/browser/viewport/_/index.ts index 1ea39bdc2..75850902c 100644 --- a/src/assets/javascripts/browser/viewport/_/index.ts +++ b/src/assets/javascripts/browser/viewport/_/index.ts @@ -69,7 +69,7 @@ interface WatchAtOptions { /** * Watch viewport * - * @return Viewport observable + * @returns Viewport observable */ export function watchViewport(): Observable { return combineLatest([ @@ -88,7 +88,7 @@ export function watchViewport(): Observable { * @param el - Element * @param options - Options * - * @return Viewport observable + * @returns Viewport observable */ export function watchViewportAt( el: HTMLElement, { viewport$, header$ }: WatchAtOptions diff --git a/src/assets/javascripts/browser/viewport/offset/index.ts b/src/assets/javascripts/browser/viewport/offset/index.ts index 0c4097b55..0f0d57697 100644 --- a/src/assets/javascripts/browser/viewport/offset/index.ts +++ b/src/assets/javascripts/browser/viewport/offset/index.ts @@ -45,7 +45,7 @@ export interface ViewportOffset { * On iOS Safari, viewport offset can be negative due to overflow scrolling. * As this may induce strange behaviors downstream, we'll just limit it to 0. * - * @return Viewport offset + * @returns Viewport offset */ export function getViewportOffset(): ViewportOffset { return { @@ -70,7 +70,7 @@ export function setViewportOffset( /** * Watch viewport offset * - * @return Viewport offset observable + * @returns Viewport offset observable */ export function watchViewportOffset(): Observable { return merge( diff --git a/src/assets/javascripts/browser/viewport/size/index.ts b/src/assets/javascripts/browser/viewport/size/index.ts index 8bd89d09a..3dd037047 100644 --- a/src/assets/javascripts/browser/viewport/size/index.ts +++ b/src/assets/javascripts/browser/viewport/size/index.ts @@ -42,7 +42,7 @@ export interface ViewportSize { /** * Retrieve viewport size * - * @return Viewport size + * @returns Viewport size */ export function getViewportSize(): ViewportSize { return { @@ -56,7 +56,7 @@ export function getViewportSize(): ViewportSize { /** * Watch viewport size * - * @return Viewport size observable + * @returns Viewport size observable */ export function watchViewportSize(): Observable { return fromEvent(window, "resize", { passive: true }) diff --git a/src/assets/javascripts/browser/worker/index.ts b/src/assets/javascripts/browser/worker/index.ts index 705ab8f97..e7c886d18 100644 --- a/src/assets/javascripts/browser/worker/index.ts +++ b/src/assets/javascripts/browser/worker/index.ts @@ -81,7 +81,7 @@ interface WatchOptions { * @param worker - Web worker * @param options - Options * - * @return Worker message observable + * @returns Worker message observable */ export function watchWorker( worker: Worker, { tx$ }: WatchOptions @@ -90,8 +90,8 @@ export function watchWorker( /* Intercept messages from worker-like objects */ const rx$ = fromEvent(worker, "message") .pipe( - map(({ data }) => data) - ) + map(({ data }) => data) + ) /* Send and receive messages, return hot observable */ return tx$ diff --git a/src/assets/javascripts/components/content/_/index.ts b/src/assets/javascripts/components/content/_/index.ts index c4a94458a..8f9a13372 100644 --- a/src/assets/javascripts/components/content/_/index.ts +++ b/src/assets/javascripts/components/content/_/index.ts @@ -22,7 +22,7 @@ import { Observable, merge } from "rxjs" -import { getElements, Viewport } from "~/browser" +import { Viewport, getElements } from "~/browser" import { Component } from "../../_" import { CodeBlock, mountCodeBlock } from "../code" @@ -64,7 +64,7 @@ interface MountOptions { * @param el - Content element * @param options - Options * - * @return Content component observable + * @returns Content component observable */ export function mountContent( el: HTMLElement, { target$, viewport$, print$ }: MountOptions diff --git a/src/assets/javascripts/components/content/code/index.ts b/src/assets/javascripts/components/content/code/index.ts index 9b0b68d77..e1525c9b3 100644 --- a/src/assets/javascripts/components/content/code/index.ts +++ b/src/assets/javascripts/components/content/code/index.ts @@ -32,9 +32,9 @@ import { import { resetFocusable, setFocusable } from "~/actions" import { + Viewport, getElementContentSize, getElementSize, - Viewport, watchMedia } from "~/browser" import { renderClipboardButton } from "~/templates" @@ -89,7 +89,7 @@ let index = 0 * @param el - Code block element * @param options - Options * - * @return Code block observable + * @returns Code block observable */ export function watchCodeBlock( el: HTMLElement, { viewport$ }: WatchOptions @@ -117,7 +117,7 @@ export function watchCodeBlock( * @param el - Code block element * @param options - Options * - * @return Code block component observable + * @returns Code block component observable */ export function mountCodeBlock( el: HTMLElement, options: MountOptions diff --git a/src/assets/javascripts/components/content/details/index.ts b/src/assets/javascripts/components/content/details/index.ts index d14d6d132..5d3c5f489 100644 --- a/src/assets/javascripts/components/content/details/index.ts +++ b/src/assets/javascripts/components/content/details/index.ts @@ -71,7 +71,7 @@ interface MountOptions { * @param el - Details element * @param options - Options * - * @return Details observable + * @returns Details observable */ export function watchDetails( el: HTMLDetailsElement, { target$, print$ }: WatchOptions @@ -94,7 +94,7 @@ export function watchDetails( * @param el - Details element * @param options - Options * - * @return Details component observable + * @returns Details component observable */ export function mountDetails( el: HTMLDetailsElement, options: MountOptions diff --git a/src/assets/javascripts/components/content/table/index.ts b/src/assets/javascripts/components/content/table/index.ts index 8d96ad8e3..07fc88259 100644 --- a/src/assets/javascripts/components/content/table/index.ts +++ b/src/assets/javascripts/components/content/table/index.ts @@ -54,7 +54,7 @@ const sentinel = createElement("table") * * @param el - Data table element * - * @return Data table component observable + * @returns Data table component observable */ export function mountDataTable( el: HTMLElement diff --git a/src/assets/javascripts/components/dialog/index.ts b/src/assets/javascripts/components/dialog/index.ts index fc8237895..eb268e39e 100644 --- a/src/assets/javascripts/components/dialog/index.ts +++ b/src/assets/javascripts/components/dialog/index.ts @@ -23,8 +23,8 @@ import { Observable, Subject, - merge, animationFrameScheduler, + merge, of } from "rxjs" import { @@ -81,10 +81,10 @@ interface MountOptions { /** * Watch dialog * - * @param el - Dialog element + * @param _el - Dialog element * @param options - Options * - * @return Dialog observable + * @returns Dialog observable */ export function watchDialog( _el: HTMLElement, { message$ }: WatchOptions @@ -102,14 +102,13 @@ export function watchDialog( ) } - /** * Mount dialog * * @param el - Dialog element * @param options - Options * - * @return Dialog component observable + * @returns Dialog component observable */ export function mountDialog( el: HTMLElement, { message$ }: MountOptions diff --git a/src/assets/javascripts/components/header/_/index.ts b/src/assets/javascripts/components/header/_/index.ts index 28d24c81f..cd897bc23 100644 --- a/src/assets/javascripts/components/header/_/index.ts +++ b/src/assets/javascripts/components/header/_/index.ts @@ -20,7 +20,13 @@ * IN THE SOFTWARE. */ -import { Observable, defer, of, Subject, animationFrameScheduler } from "rxjs" +import { + Observable, + Subject, + animationFrameScheduler, + defer, + of +} from "rxjs" import { combineLatestWith, distinctUntilChanged, @@ -70,7 +76,7 @@ interface MountOptions { * * @param el - Header element * - * @return Header observable + * @returns Header observable */ export function watchHeader( el: HTMLElement @@ -106,7 +112,7 @@ export function watchHeader( * @param el - Header element * @param options - Options * - * @return Header component observable + * @returns Header component observable */ export function mountHeader( el: HTMLElement, { header$, main$ }: MountOptions diff --git a/src/assets/javascripts/components/header/title/index.ts b/src/assets/javascripts/components/header/title/index.ts index ccea96065..f06061549 100644 --- a/src/assets/javascripts/components/header/title/index.ts +++ b/src/assets/javascripts/components/header/title/index.ts @@ -20,7 +20,7 @@ * IN THE SOFTWARE. */ -import { Observable, animationFrameScheduler, Subject } from "rxjs" +import { Observable, Subject, animationFrameScheduler } from "rxjs" import { distinctUntilKeyChanged, finalize, @@ -84,7 +84,7 @@ interface MountOptions { * @param el - Heading element * @param options - Options * - * @return Header title observable + * @returns Header title observable */ export function watchHeaderTitle( el: HTMLHeadingElement, { viewport$, header$ }: WatchOptions @@ -107,7 +107,7 @@ export function watchHeaderTitle( * @param el - Header title element * @param options - Options * - * @return Header title component observable + * @returns Header title component observable */ export function mountHeaderTitle( el: HTMLElement, options: MountOptions diff --git a/src/assets/javascripts/components/main/index.ts b/src/assets/javascripts/components/main/index.ts index 81f409417..a2c3f0d0d 100644 --- a/src/assets/javascripts/components/main/index.ts +++ b/src/assets/javascripts/components/main/index.ts @@ -75,7 +75,7 @@ interface WatchOptions { * @param el - Main area element * @param options - Options * - * @return Main area observable + * @returns Main area observable */ export function watchMain( el: HTMLElement, { viewport$, header$ }: WatchOptions diff --git a/src/assets/javascripts/components/search/_/index.ts b/src/assets/javascripts/components/search/_/index.ts index 51cb60d4a..b2ccc889b 100644 --- a/src/assets/javascripts/components/search/_/index.ts +++ b/src/assets/javascripts/components/search/_/index.ts @@ -25,11 +25,15 @@ import { filter, sample, take } from "rxjs/operators" import { configuration } from "~/_" import { getElementOrThrow } from "~/browser" -import { isSearchQueryMessage, isSearchReadyMessage, setupSearchWorker } from "~/integrations" +import { + isSearchQueryMessage, + isSearchReadyMessage, + setupSearchWorker +} from "~/integrations" import { Component } from "../../_" -import { mountSearchQuery, SearchQuery } from "../query" -import { mountSearchResult, SearchResult } from "../result" +import { SearchQuery, mountSearchQuery } from "../query" +import { SearchResult, mountSearchResult } from "../result" /* ---------------------------------------------------------------------------- * Types @@ -51,7 +55,7 @@ export type Search = * * @param url - Search index URL * - * @return Promise resolving with search index + * @returns Promise resolving with search index */ function fetchSearchIndex(url: string) { return __search?.index || fetch(url, { credentials: "same-origin" }) @@ -67,7 +71,7 @@ function fetchSearchIndex(url: string) { * * @param el - Search element * - * @return Search component observable + * @returns Search component observable */ export function mountSearch( el: HTMLElement diff --git a/src/assets/javascripts/components/search/query/index.ts b/src/assets/javascripts/components/search/query/index.ts index 3dd56bf16..825f9ebdc 100644 --- a/src/assets/javascripts/components/search/query/index.ts +++ b/src/assets/javascripts/components/search/query/index.ts @@ -49,10 +49,10 @@ import { watchElementFocus } from "~/browser" import { - defaultTransform, - SearchWorker, + SearchMessageType, SearchQueryMessage, - SearchMessageType + SearchWorker, + defaultTransform } from "~/integrations" import { Component } from "../../_" @@ -80,9 +80,8 @@ export interface SearchQuery { * is delayed by `1ms` so the input's empty state is allowed to propagate. * * @param el - Search query element - * @param transform - Transformation function * - * @return Search query observable + * @returns Search query observable */ export function watchSearchQuery( el: HTMLInputElement @@ -113,9 +112,8 @@ export function watchSearchQuery( * * @param el - Search query element * @param worker - Search worker - * @param transform - Transformation function * - * @return Search query component observable + * @returns Search query component observable */ export function mountSearchQuery( el: HTMLInputElement, { tx$ }: SearchWorker diff --git a/src/assets/javascripts/components/search/result/index.ts b/src/assets/javascripts/components/search/result/index.ts index 0a7a26de5..9de5b89ad 100644 --- a/src/assets/javascripts/components/search/result/index.ts +++ b/src/assets/javascripts/components/search/result/index.ts @@ -80,7 +80,7 @@ interface MountOptions { * @param worker - Search worker * @param options - Options * - * @return Search result list component observable + * @returns Search result list component observable */ export function mountSearchResult( el: HTMLElement, { rx$ }: SearchWorker, { query$ }: MountOptions diff --git a/src/assets/javascripts/components/sidebar/index.ts b/src/assets/javascripts/components/sidebar/index.ts index e37978b1d..c1ece90f3 100644 --- a/src/assets/javascripts/components/sidebar/index.ts +++ b/src/assets/javascripts/components/sidebar/index.ts @@ -95,7 +95,7 @@ interface MountOptions { * @param el - Sidebar element * @param options - Options * - * @return Sidebar observable + * @returns Sidebar observable */ export function watchSidebar( el: HTMLElement, { viewport$, main$ }: WatchOptions @@ -129,7 +129,7 @@ export function watchSidebar( * @param el - Sidebar element * @param options - Options * - * @return Sidebar component observable + * @returns Sidebar component observable */ export function mountSidebar( el: HTMLElement, { header$, ...options }: MountOptions diff --git a/src/assets/javascripts/components/source/_/index.ts b/src/assets/javascripts/components/source/_/index.ts index ab0a1fb02..75e640816 100644 --- a/src/assets/javascripts/components/source/_/index.ts +++ b/src/assets/javascripts/components/source/_/index.ts @@ -20,7 +20,7 @@ * IN THE SOFTWARE. */ -import { Observable, Subject, defer, of, NEVER } from "rxjs" +import { NEVER, Observable, Subject, defer, of } from "rxjs" import { catchError, filter, @@ -35,10 +35,7 @@ import { renderSourceFacts } from "~/templates" import { hash } from "~/utilities" import { Component } from "../../_" -import { - fetchSourceFacts, - SourceFacts -} from "../facts" +import { SourceFacts, fetchSourceFacts } from "../facts" /* ---------------------------------------------------------------------------- * Types @@ -69,7 +66,7 @@ let fetch$: Observable * * @param el - Repository information element * - * @return Repository information observable + * @returns Repository information observable */ export function watchSource( el: HTMLAnchorElement @@ -108,7 +105,7 @@ export function watchSource( * * @param el - Repository information element * - * @return Repository information component observable + * @returns Repository information component observable */ export function mountSource( el: HTMLAnchorElement diff --git a/src/assets/javascripts/components/source/facts/_/index.ts b/src/assets/javascripts/components/source/facts/_/index.ts index e9501a52e..0eb2016d5 100644 --- a/src/assets/javascripts/components/source/facts/_/index.ts +++ b/src/assets/javascripts/components/source/facts/_/index.ts @@ -43,7 +43,7 @@ export type SourceFacts = string[] * * @param url - Repository URL * - * @return Repository facts observable + * @returns Repository facts observable */ export function fetchSourceFacts( url: string @@ -53,12 +53,12 @@ export function fetchSourceFacts( /* GitHub repository */ case "github": - const [, user, repo] = url.match(/^.+github\.com\/([^\/]+)\/?([^\/]+)?/i)! + const [, user, repo] = url.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i)! return fetchSourceFactsFromGitHub(user, repo) /* GitLab repository */ case "gitlab": - const [, base, slug] = url.match(/^.+?([^\/]*gitlab[^\/]+)\/(.+?)\/?$/i)! + const [, base, slug] = url.match(/^.+?([^/]*gitlab[^/]+)\/(.+?)\/?$/i)! return fetchSourceFactsFromGitLab(base, slug) /* Everything else */ diff --git a/src/assets/javascripts/components/source/facts/github/index.ts b/src/assets/javascripts/components/source/facts/github/index.ts index bf33ded38..d7eaa587d 100644 --- a/src/assets/javascripts/components/source/facts/github/index.ts +++ b/src/assets/javascripts/components/source/facts/github/index.ts @@ -43,7 +43,7 @@ import { SourceFacts } from "../_" * @param user - GitHub user * @param repo - GitHub repository * - * @return Repository facts observable + * @returns Repository facts observable */ export function fetchSourceFactsFromGitHub( user: string, repo?: string diff --git a/src/assets/javascripts/components/source/facts/gitlab/index.ts b/src/assets/javascripts/components/source/facts/gitlab/index.ts index e32adb5f6..464c4b68f 100644 --- a/src/assets/javascripts/components/source/facts/gitlab/index.ts +++ b/src/assets/javascripts/components/source/facts/gitlab/index.ts @@ -43,7 +43,7 @@ import { SourceFacts } from "../_" * @param base - GitLab base * @param project - GitLab project * - * @return Repository facts observable + * @returns Repository facts observable */ export function fetchSourceFactsFromGitLab( base: string, project: string diff --git a/src/assets/javascripts/components/tabs/index.ts b/src/assets/javascripts/components/tabs/index.ts index d09384464..ce30017e6 100644 --- a/src/assets/javascripts/components/tabs/index.ts +++ b/src/assets/javascripts/components/tabs/index.ts @@ -20,7 +20,7 @@ * IN THE SOFTWARE. */ -import { Observable, animationFrameScheduler, Subject } from "rxjs" +import { Observable, Subject, animationFrameScheduler } from "rxjs" import { distinctUntilKeyChanged, finalize, @@ -76,7 +76,7 @@ interface MountOptions { * @param el - Navigation tabs element * @param options - Options * - * @return Navigation tabs observable + * @returns Navigation tabs observable */ export function watchTabs( el: HTMLElement, { viewport$, header$ }: WatchOptions @@ -98,7 +98,7 @@ export function watchTabs( * @param el - Navigation tabs element * @param options - Options * - * @return Navigation tabs component observable + * @returns Navigation tabs component observable */ export function mountTabs( el: HTMLElement, options: MountOptions diff --git a/src/assets/javascripts/components/toc/index.ts b/src/assets/javascripts/components/toc/index.ts index 97607afd1..54d6310f3 100644 --- a/src/assets/javascripts/components/toc/index.ts +++ b/src/assets/javascripts/components/toc/index.ts @@ -46,9 +46,9 @@ import { setAnchorState } from "~/actions" import { + Viewport, getElement, getElements, - Viewport, watchElementSize } from "~/browser" @@ -109,7 +109,7 @@ interface MountOptions { * @param anchors - Anchor elements * @param options - Options * - * @return Table of contents observable + * @returns Table of contents observable */ export function watchTableOfContents( anchors: HTMLAnchorElement[], { viewport$, header$ }: WatchOptions @@ -236,7 +236,7 @@ export function watchTableOfContents( * @param el - Anchor list element * @param options - Options * - * @return Table of contents component observable + * @returns Table of contents component observable */ export function mountTableOfContents( el: HTMLElement, options: MountOptions diff --git a/src/assets/javascripts/index.ts b/src/assets/javascripts/index.ts index 5ed476dd1..730691f58 100644 --- a/src/assets/javascripts/index.ts +++ b/src/assets/javascripts/index.ts @@ -21,9 +21,10 @@ */ import "focus-visible" -import { merge, NEVER, Observable, Subject } from "rxjs" +import { NEVER, Observable, Subject, merge } from "rxjs" import { switchMap } from "rxjs/operators" +import { translation } from "./_" import { getElementOrThrow, getElements, @@ -48,7 +49,6 @@ import { import { setupClipboardJS } from "./integrations" -import { translation } from "./_" /* ---------------------------------------------------------------------------- * Program @@ -72,7 +72,7 @@ const header = getElementOrThrow("[data-md-component=header]") const main = getElementOrThrow("[data-md-component=main]") const header$ = watchHeader(header) -const main$ = watchMain(main, { header$: header$, viewport$ }) +const main$ = watchMain(main, { header$, viewport$ }) /* Setup Clipboard.js integration */ const message$ = new Subject() @@ -127,12 +127,19 @@ const app$ = merge( .map(child => mountTableOfContents(child, { viewport$, header$ })), ) +// eslint-disable-next-line app$.subscribe(console.log) - /* ------------------------------------------------------------------------- */ -// put this somewhere else +/** + * Test + * + * @param toggle$ - Toggle observable + * @param factory - Observable factory + * + * @returns New observable + */ function at( toggle$: Observable, factory: () => Observable ) { diff --git a/src/assets/javascripts/integrations/clipboard/index.ts b/src/assets/javascripts/integrations/clipboard/index.ts index 5c2924a00..88b693338 100644 --- a/src/assets/javascripts/integrations/clipboard/index.ts +++ b/src/assets/javascripts/integrations/clipboard/index.ts @@ -31,7 +31,7 @@ import { share } from "rxjs/operators" /** * Set up Clipboard.js integration * - * @return Clipboard.js event observable + * @returns Clipboard.js event observable */ export function setupClipboardJS(): Observable { if (!ClipboardJS.isSupported()) diff --git a/src/assets/javascripts/integrations/search/_/.eslintrc b/src/assets/javascripts/integrations/search/_/.eslintrc new file mode 100644 index 000000000..fd92bace6 --- /dev/null +++ b/src/assets/javascripts/integrations/search/_/.eslintrc @@ -0,0 +1,6 @@ +{ + "rules": { + "@typescript-eslint/no-explicit-any": "off", + "no-console": "off" + } +} diff --git a/src/assets/javascripts/integrations/search/_/index.ts b/src/assets/javascripts/integrations/search/_/index.ts index f6ba0070d..fdf87e4cf 100644 --- a/src/assets/javascripts/integrations/search/_/index.ts +++ b/src/assets/javascripts/integrations/search/_/index.ts @@ -113,7 +113,7 @@ export type SearchResult = Array * @param a - 1st list of strings * @param b - 2nd list of strings * - * @return Difference + * @returns Difference */ function difference(a: string[], b: string[]): string[] { const [x, y] = [new Set(a), new Set(b)] @@ -168,7 +168,7 @@ export class Search { /* If no index was given, create it */ if (typeof index === "undefined") { - this.index = lunr(function() { + this.index = lunr(function () { /* Set up multi-language support */ if (config.lang.length === 1 && config.lang[0] !== "en") { @@ -222,7 +222,7 @@ export class Search { * * @param query - Query value * - * @return Search results + * @returns Search results */ public search(query: string): SearchResult[] { if (query) { @@ -283,7 +283,6 @@ export class Search { /* Log errors to console (for now) */ } catch { - // tslint:disable-next-line no-console console.warn(`Invalid query: ${query} – see https://bit.ly/2s3ChXG`) } } diff --git a/src/assets/javascripts/integrations/search/document/index.ts b/src/assets/javascripts/integrations/search/document/index.ts index 9d0d5c702..c97e3543e 100644 --- a/src/assets/javascripts/integrations/search/document/index.ts +++ b/src/assets/javascripts/integrations/search/document/index.ts @@ -51,7 +51,7 @@ export type SearchDocumentMap = Map * * @param docs - Search index documents * - * @return Search document map + * @returns Search document map */ export function setupSearchDocumentMap( docs: SearchIndexDocument[] diff --git a/src/assets/javascripts/integrations/search/highlighter/index.ts b/src/assets/javascripts/integrations/search/highlighter/index.ts index e52d9c01c..5c31ade67 100644 --- a/src/assets/javascripts/integrations/search/highlighter/index.ts +++ b/src/assets/javascripts/integrations/search/highlighter/index.ts @@ -31,7 +31,7 @@ import { SearchIndexConfig } from "../_" * * @param value - Value * - * @return Highlighted value + * @returns Highlighted value */ export type SearchHighlightFn = (value: string) => string @@ -40,7 +40,7 @@ export type SearchHighlightFn = (value: string) => string * * @param query - Query value * - * @return Search highlight function + * @returns Search highlight function */ export type SearchHighlightFactoryFn = (query: string) => SearchHighlightFn @@ -53,7 +53,7 @@ export type SearchHighlightFactoryFn = (query: string) => SearchHighlightFn * * @param config - Search index configuration * - * @return Search highlight factory function + * @returns Search highlight factory function */ export function setupSearchHighlighter( config: SearchIndexConfig @@ -79,6 +79,6 @@ export function setupSearchHighlighter( /* Highlight string value */ return value => value .replace(match, highlight) - .replace(/<\/mark>(\s+)]*>/img, "\$1") + .replace(/<\/mark>(\s+)]*>/img, "$1") } } diff --git a/src/assets/javascripts/integrations/search/query/_/.eslintrc b/src/assets/javascripts/integrations/search/query/_/.eslintrc new file mode 100644 index 000000000..8b8e4250e --- /dev/null +++ b/src/assets/javascripts/integrations/search/query/_/.eslintrc @@ -0,0 +1,5 @@ +{ + "rules": { + "@typescript-eslint/no-explicit-any": "off" + } +} diff --git a/src/assets/javascripts/integrations/search/query/_/index.ts b/src/assets/javascripts/integrations/search/query/_/index.ts index 1090c39bc..a9b62677d 100644 --- a/src/assets/javascripts/integrations/search/query/_/index.ts +++ b/src/assets/javascripts/integrations/search/query/_/index.ts @@ -48,7 +48,7 @@ export type SearchQueryTerms = Record * * @param value - Query value * - * @return Search query clauses + * @returns Search query clauses */ export function parseSearchQuery( value: string @@ -67,7 +67,7 @@ export function parseSearchQuery( * @param query - Search query clauses * @param terms - Search terms * - * @return Search query terms + * @returns Search query terms */ export function getSearchQueryTerms( query: SearchQueryClause[], terms: string[] diff --git a/src/assets/javascripts/integrations/search/query/transform/.eslintrc b/src/assets/javascripts/integrations/search/query/transform/.eslintrc new file mode 100644 index 000000000..5645b172f --- /dev/null +++ b/src/assets/javascripts/integrations/search/query/transform/.eslintrc @@ -0,0 +1,5 @@ +{ + "rules": { + "no-control-regex": "off" + } +} diff --git a/src/assets/javascripts/integrations/search/query/transform/index.ts b/src/assets/javascripts/integrations/search/query/transform/index.ts index e3472eb6e..e37443907 100644 --- a/src/assets/javascripts/integrations/search/query/transform/index.ts +++ b/src/assets/javascripts/integrations/search/query/transform/index.ts @@ -29,7 +29,7 @@ * * @param value - Query value * - * @return Transformed query value + * @returns Transformed query value */ export type SearchTransformFn = (value: string) => string @@ -56,7 +56,7 @@ export type SearchTransformFn = (value: string) => string * * @param query - Query value * - * @return Transformed query value + * @returns Transformed query value */ export function defaultTransform(query: string): string { return query diff --git a/src/assets/javascripts/integrations/search/worker/_/index.ts b/src/assets/javascripts/integrations/search/worker/_/index.ts index be5ba02e6..a0e5ffac0 100644 --- a/src/assets/javascripts/integrations/search/worker/_/index.ts +++ b/src/assets/javascripts/integrations/search/worker/_/index.ts @@ -52,7 +52,7 @@ export type SearchWorker = WorkerHandler * * @param data - Search index * - * @return Search index + * @returns Search index */ function setupSearchIndex( { config, docs, index }: SearchIndex @@ -91,7 +91,7 @@ function setupSearchIndex( * @param url - Worker URL * @param index - Promise resolving with search index * - * @return Search worker + * @returns Search worker */ export function setupSearchWorker( url: string, index: Promise diff --git a/src/assets/javascripts/integrations/search/worker/main/.eslintrc b/src/assets/javascripts/integrations/search/worker/main/.eslintrc new file mode 100644 index 000000000..09c579193 --- /dev/null +++ b/src/assets/javascripts/integrations/search/worker/main/.eslintrc @@ -0,0 +1,5 @@ +{ + "rules": { + "@typescript-eslint/no-misused-promises": "off" + } +} diff --git a/src/assets/javascripts/integrations/search/worker/main/index.ts b/src/assets/javascripts/integrations/search/worker/main/index.ts index 875ef5901..f56bfc4da 100644 --- a/src/assets/javascripts/integrations/search/worker/main/index.ts +++ b/src/assets/javascripts/integrations/search/worker/main/index.ts @@ -72,7 +72,7 @@ let index: Search * * @param config - Search index configuration * - * @return Promise resolving with no result + * @returns Promise resolving with no result */ async function setupSearchLanguages( config: SearchIndexConfig @@ -116,7 +116,7 @@ async function setupSearchLanguages( * * @param message - Source message * - * @return Target message + * @returns Target message */ export async function handler( message: SearchMessage diff --git a/src/assets/javascripts/integrations/search/worker/message/index.ts b/src/assets/javascripts/integrations/search/worker/message/index.ts index 715c72879..3aee8480e 100644 --- a/src/assets/javascripts/integrations/search/worker/message/index.ts +++ b/src/assets/javascripts/integrations/search/worker/message/index.ts @@ -89,7 +89,7 @@ export type SearchMessage = * * @param message - Search worker message * - * @return Test result + * @returns Test result */ export function isSearchSetupMessage( message: SearchMessage @@ -102,7 +102,7 @@ export function isSearchSetupMessage( * * @param message - Search worker message * - * @return Test result + * @returns Test result */ export function isSearchReadyMessage( message: SearchMessage @@ -115,7 +115,7 @@ export function isSearchReadyMessage( * * @param message - Search worker message * - * @return Test result + * @returns Test result */ export function isSearchQueryMessage( message: SearchMessage @@ -128,7 +128,7 @@ export function isSearchQueryMessage( * * @param message - Search worker message * - * @return Test result + * @returns Test result */ export function isSearchResultMessage( message: SearchMessage diff --git a/src/assets/javascripts/templates/clipboard/index.tsx b/src/assets/javascripts/templates/clipboard/index.tsx index 0effe63ee..016dd7b38 100644 --- a/src/assets/javascripts/templates/clipboard/index.tsx +++ b/src/assets/javascripts/templates/clipboard/index.tsx @@ -32,7 +32,7 @@ import { h } from "~/utilities" * * @param id - Unique identifier * - * @return Element + * @returns Element */ export function renderClipboardButton(id: string) { return ( diff --git a/src/assets/javascripts/templates/search/index.tsx b/src/assets/javascripts/templates/search/index.tsx index b1d991b98..51f49229b 100644 --- a/src/assets/javascripts/templates/search/index.tsx +++ b/src/assets/javascripts/templates/search/index.tsx @@ -50,7 +50,7 @@ const enum Flag { * @param section - Search document * @param flag - Render flags * - * @return Element + * @returns Element */ function renderSearchDocument( document: SearchDocument & SearchMetadata, flag: Flag @@ -103,7 +103,7 @@ function renderSearchDocument( * @param result - Search result * @param threshold - Score threshold * - * @return Element + * @returns Element */ export function renderSearchResult( result: SearchResult, threshold: number = Infinity diff --git a/src/assets/javascripts/templates/source/index.tsx b/src/assets/javascripts/templates/source/index.tsx index 8100f7d70..9232d2e9e 100644 --- a/src/assets/javascripts/templates/source/index.tsx +++ b/src/assets/javascripts/templates/source/index.tsx @@ -32,7 +32,7 @@ import { h } from "~/utilities" * * @param facts - Repository facts * - * @return Element + * @returns Element */ export function renderSourceFacts(facts: SourceFacts) { return ( diff --git a/src/assets/javascripts/templates/table/index.tsx b/src/assets/javascripts/templates/table/index.tsx index 78e5c464b..61e87e273 100644 --- a/src/assets/javascripts/templates/table/index.tsx +++ b/src/assets/javascripts/templates/table/index.tsx @@ -31,7 +31,7 @@ import { h } from "utilities" * * @param table - Table element * - * @return Element + * @returns Element */ export function renderTable(table: HTMLElement) { return ( diff --git a/src/assets/javascripts/utilities/jsx/.eslintrc b/src/assets/javascripts/utilities/jsx/.eslintrc new file mode 100644 index 000000000..242e7556b --- /dev/null +++ b/src/assets/javascripts/utilities/jsx/.eslintrc @@ -0,0 +1,6 @@ +{ + "rules": { + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-namespace": "off" + } +} diff --git a/src/assets/javascripts/utilities/jsx/index.ts b/src/assets/javascripts/utilities/jsx/index.ts index ed986bf6b..89038c62f 100644 --- a/src/assets/javascripts/utilities/jsx/index.ts +++ b/src/assets/javascripts/utilities/jsx/index.ts @@ -81,7 +81,7 @@ function appendChild(el: HTMLElement, child: Child | Child[]): void { * @param attributes - HTML attributes * @param children - Child elements * - * @return Element + * @returns Element */ export function h( tag: string, attributes: Attributes | null, ...children: Child[] diff --git a/src/assets/javascripts/utilities/string/index.ts b/src/assets/javascripts/utilities/string/index.ts index a9d020785..81513b134 100644 --- a/src/assets/javascripts/utilities/string/index.ts +++ b/src/assets/javascripts/utilities/string/index.ts @@ -35,7 +35,7 @@ * @param value - Value to be truncated * @param n - Number of characters * - * @return Truncated value + * @returns Truncated value */ export function truncate(value: string, n: number): string { let i = n @@ -60,7 +60,7 @@ export function truncate(value: string, n: number): string { * * @param value - Original value * - * @return Rounded value + * @returns Rounded value */ export function round(value: number): string { if (value > 999) { @@ -78,7 +78,7 @@ export function round(value: number): string { * * @param value - Value to be hashed * - * @return Hash as 32bit integer + * @returns Hash as 32bit integer */ export function hash(value: string): number { let h = 0 diff --git a/src/assets/stylesheets/utilities/_break.scss b/src/assets/stylesheets/utilities/_break.scss index 0f8c8dbb4..237d9668a 100644 --- a/src/assets/stylesheets/utilities/_break.scss +++ b/src/assets/stylesheets/utilities/_break.scss @@ -78,7 +78,7 @@ $break-devices: () !default; @error "Invalid value: #{$value}"; } } - @return $min, $max; + @returns $min, $max; } /// @@ -96,7 +96,7 @@ $break-devices: () !default; @if type-of($current) == list or type-of($current) == number { $current: (default: $current); } - @return break-select-min-max($current); + @returns break-select-min-max($current); } // ---------------------------------------------------------------------------- diff --git a/src/assets/stylesheets/utilities/_convert.scss b/src/assets/stylesheets/utilities/_convert.scss index 5b7452a69..078e850b0 100644 --- a/src/assets/stylesheets/utilities/_convert.scss +++ b/src/assets/stylesheets/utilities/_convert.scss @@ -28,7 +28,7 @@ /// Strip units from a number /// @function strip-units($number) { - @return $number / ($number * 0 + 1); + @returns $number / ($number * 0 + 1); } /// @@ -52,7 +52,7 @@ @function px2em($size, $base: 16px) { @if unit($size) == px { @if unit($base) == px { - @return ($size / $base) * 1em; + @returns ($size / $base) * 1em; } @else { @error "Invalid base: #{$base} - unit must be 'px'"; } @@ -67,7 +67,7 @@ @function px2rem($size, $base: 20px) { @if unit($size) == px { @if unit($base) == px { - @return ($size / $base) * 1.0rem; + @returns ($size / $base) * 1.0rem; } @else { @error "Invalid base: #{$base} - unit must be 'px'"; } diff --git a/tslint.json b/tslint.json deleted file mode 100644 index 6af495454..000000000 --- a/tslint.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "extends": [ - "tslint:latest", - "tslint-sonarts" - ], - "rules": { - "arrow-parens": [ - true, - "ban-single-arg-parens" - ], - "ban": [ - true, - ["fit"], - ["fdescribe"], - ["xit"], - ["xdescribe"], - { - "name": "Object.assign", - "message": "Use the spread operator instead." - } - ], - "class-name": true, - "comment-format": [ - true, - "check-space" - ], - "cognitive-complexity": false, - "curly": false, - "indent": [ - true, - "spaces" - ], - "interface-name": false, - "jsdoc-format": true, - "max-union-size": false, - "no-big-function": false, - "no-bitwise": false, - "no-duplicate-string": false, - "no-implicit-dependencies": false, - "no-identical-functions": false, - "no-internal-module": true, - "no-namespace": false, - "no-null-keyword": true, - "no-reference": false, - "no-submodule-imports": false, - "no-trailing-whitespace": true, - "no-var-keyword": true, - "object-literal-key-quotes": [ - true, - "consistent-as-needed" - ], - "object-literal-sort-keys": false, - "one-line": [ - true, - "check-open-brace", - "check-whitespace" - ], - "ordered-imports": [ - true, - { - "import-sources-order": "case-insensitive-legacy", - "named-imports-order": "lowercase-last" - } - ], - "prefer-const": true, - "prefer-for-of": false, - "quotemark": [ - true, - "double", - "avoid-escape" - ], - "semicolon": [ - true, - "never" - ], - "trailing-comma": [ - true, - { - "multiline": { - "objects": "never", - "arrays": "never", - "functions": "never", - "typeLiterals": "never" - }, - "esSpecCompliant": true - } - ], - "typedef-whitespace": [ - true, - { - "call-signature": "nospace", - "index-signature": "nospace", - "parameter": "nospace", - "property-declaration": "nospace", - "variable-declaration": "nospace" - }, - { - "call-signature": "onespace", - "index-signature": "onespace", - "parameter": "onespace", - "property-declaration": "onespace", - "variable-declaration": "onespace" - } - ], - "variable-name": false, - "whitespace": [ - true, - "check-branch", - "check-decl", - "check-operator", - "check-module", - "check-separator", - "check-type" - ] - } -} diff --git a/webpack.config.ts b/webpack.config.ts index dbb75c2e1..35b4d20c5 100644 --- a/webpack.config.ts +++ b/webpack.config.ts @@ -43,7 +43,7 @@ import AssetsManifestPlugin from "webpack-assets-manifest" * * @param args - Command-line arguments * - * @return Webpack configuration + * @returns Webpack configuration */ function config(args: Configuration): Configuration { const assets = {} @@ -188,7 +188,7 @@ function config(args: Configuration): Configuration { * @param env - Webpack environment arguments * @param args - Command-line arguments * - * @return Webpack configurations + * @returns Webpack configurations */ export default (_env: never, args: Configuration): Configuration[] => { const hash = args.mode === "production" ? ".[chunkhash].min" : ""